void ForestWindEmitter::_onMountObjectGhostReceived( SceneObject *object )
{
   if ( !object )
      return;

   attachToObject( object );
}
Пример #2
0
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();
   }
}
Пример #3
0
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();
      }
   }
}