if (obj)
{
if (obj->GetParent())
- {
- //check elevator doors (door bumpers feature)
- ElevatorDoor::DoorWrapper *wrapper = dynamic_cast<ElevatorDoor::DoorWrapper*>(obj->GetParent());
-
- if (wrapper)
- {
- ElevatorDoor* door = wrapper->parent;
-
- //make sure both internal and external doors are closing
- if (door->OpenDoor == -1 && door->GetWhichDoors() == 1)
- {
- //either open doors if the hit door was an internal door or a shaft door on the elevator floor
- if (wrapper->IsShaftDoor == false || (wrapper->IsShaftDoor == true && wrapper->floor == door->car->GetFloor()))
- door->car->OpenDoors(door->Number, 1);
- }
- }
- }
+ obj->GetParent()->OnHit();
}
}
}
}
}
+void ElevatorDoor::DoorWrapper::OnHit()
+{
+ //check elevator doors (door bumpers feature)
+
+ //make sure both internal and external doors are closing
+ if (parent->OpenDoor == -1 && parent->GetWhichDoors() == 1)
+ {
+ //either open doors if the hit door was an internal door or a shaft door on the elevator floor
+ if (IsShaftDoor == false || (IsShaftDoor == true && floor == parent->car->GetFloor()))
+ parent->car->OpenDoors(parent->Number, 1);
+ }
+}
+
ElevatorDoor::DoorWrapper* ElevatorDoor::GetDoorWrapper()
{
//return door wrapper object
void StopDoors();
void ResetState();
void OnClick(Ogre::Vector3 &position, bool shift, bool ctrl, bool alt, bool right);
+ void OnHit();
std::vector<DoorObject*> doors;
std::string name;
virtual void OnRotate(bool parent) {} //called when object is rotated
virtual void OnClick(Ogre::Vector3 &position, bool shift, bool ctrl, bool alt, bool right) {} //called when object is clicked on
virtual void OnUnclick(bool right) {} //called when mouse is held and released on object
+ virtual void OnHit() {} //called when user hits/collides with object
void NotifyMove(bool parent = false);
void NotifyRotate(bool parent = false);
virtual void ResetState() {} //resets the internal state of an object