#else
bool collision = false;
- for(int i=0; i<(int)objects.size(); i++)
+ // NOTE that this deletes the object on mouse down instead of mouse up. Have to
+ // check to see how it feels to do it that way...
+ if (deleteActive)
{
- if (objects[i]->Collided(point))
- collision = true;
+ for(int i=0; i<(int)objects.size(); i++)
+ {
+ if (objects[i]->Collided(point))
+ {
+ objects.erase(objects.begin() + i); // Calls the destructor, (deletes the object, I presume... O_o)
+ break;
+ }
+ }
+ }
+ else
+ {
+ for(int i=0; i<(int)objects.size(); i++)
+ {
+ if (objects[i]->Collided(point))
+ collision = true;
+ }
}
#endif
- // Do we decouple the state of the generic container from the objects inside???
+ // Do we decouple the state of the generic container from the objects inside??? Mebbe.
state = OSInactive;
// return false;
return collision;
}
+// The TLC is passing all mouse movement here, so we're doing the same here.
+// Need to adjust all other objects to handle things correctly.
+// One optimization that will need to be done eventually is to subdivide the screen
+// into parts and keep subdividing until an acceptable number of objects lie within
+// the slice. This way, the GUI will still be responsive and *not* have to test
+// every object for collision.
/*virtual*/ void Container::PointerMoved(Vector point)
{
- objectWasDragged = true;
-#if 0
- if (dragging)
- {
- // Here we need to check whether or not we're dragging a handle or the object itself...
-// Vector delta = point - oldPoint;
-
-// position += delta;
-// endpoint += delta;
- radius = Vector(point - position).Magnitude();
+// objectWasDragged = true;
+//printf("CONTAINER: PointerMoved()\n");
- oldPoint = point;
- needUpdate = true;
- }
- else if (draggingHandle1)
- {
- Vector delta = point - oldPoint;
- position += delta;
- oldPoint = point;
- needUpdate = true;
- }
-/* else if (draggingHandle2)
- {
- Vector delta = point - oldPoint;
-
- endpoint += delta;
-
- oldPoint = point;
- needUpdate = true;
- }*/
- else
- needUpdate = false;
-#else
for(int i=0; i<(int)objects.size(); i++)
{
- if (objects[i]->GetState() == OSSelected)
+// if (objects[i]->GetState() == OSSelected)
objects[i]->PointerMoved(point);
}
-#endif
+
// Generic container doesn't need this???
// needUpdate = false;
}
return needUpdate;
}
-void Container::Add(Object * object)
+/*virtual*/ void Container::Add(Object * object)
{
objects.push_back(object);
}