void ForestWindEmitter::_onMountObjectGhostReceived( SceneObject *object ) { if ( !object ) return; attachToObject( object ); }
void FlyingCamera::nextObservable(bool fForward) { SimCameraMountSet *observables; reset(); // Have to re-get the group every time, b/c of new joins observables = dynamic_cast<SimCameraMountSet *> (manager->findObject(SimCameraMountSetId)); if (observables && !observables->empty()) { if (fForward) { // Try to go to next observable object for (iCurrentObserved ++; iCurrentObserved < observables->size(); iCurrentObserved ++) { if (attachToObject((*observables)[iCurrentObserved])) { return; } } } else { // If we're in free-fly mode, go to end of list of observables if (iCurrentObserved == -1) { iCurrentObserved = observables->size(); } // Try to go to next observable object for (iCurrentObserved --; iCurrentObserved >= 0; iCurrentObserved --) { if (attachToObject((*observables)[iCurrentObserved])) { return; } } } // If we couldn't find an attachable object, go to freefly mode setFreeFlyMode(); } }
void FlyingCamera::activate(bool fFreeFly) { SimCameraMountSet *observables; static bool fAdded = false; // Can't do this in onAdd, because adding ourselves to // the camera set crashes the game (???) if (fAdded == false) { addToSet(SimCameraSetId); addToSet(SimFrameEndNotifySetId); } reset(); iCurrentObserved = 0; if (fFreeFly) { setFreeFlyMode(); } else { // Get the observable group and bind to the first observable object observables = dynamic_cast<SimCameraMountSet *> (manager->findObject(SimCameraMountSetId)); // If we can't attach to the first observable object, we're freeflying if (NULL == observables || observables->empty() || false == attachToObject((*observables)[iCurrentObserved])) { setFreeFlyMode(); } } }