topical media & game development 
  
 
 
 
 
  
    
    
  
 lib-game-delta3d-sdk-examples-testAAR-testaarmessageprocessor.h / h
  /* -*-c++-*-
   * testAAR - testaarmessageprocessor (.h & .cpp) - Using 'The MIT License'
   * Copyright (C) 2006-2008, Alion Science and Technology Corporation
   *
   * Permission is hereby granted, free of charge, to any person obtaining a copy
   * of this software and associated documentation files (the "Software"), to deal
   * in the Software without restriction, including without limitation the rights
   * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   * copies of the Software, and to permit persons to whom the Software is
   * furnished to do so, subject to the following conditions:
   *
   * The above copyright notice and this permission notice shall be included in
   * all copies or substantial portions of the Software.
   *
   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   * THE SOFTWARE.
   * 
   * This software was developed by Alion Science and Technology Corporation under
   * circumstances in which the U. S. Government may have rights in the software.
   *
   * William E. Johnson II
   */
  
  ifndef DELTA_TEST_AAR_MESSAGE_PROCESSOR
  define DELTA_TEST_AAR_MESSAGE_PROCESSOR
  
  include <dtGame/defaultmessageprocessor.h>
  include <export.h>
  
  // Foward declarations
  namespace dtGame
  {
     class LogController;
     class LogStatus;
     class LogTag;
     class LogKeyframe;
     class ServerLoggerComponent;
     class Message;
  }
  
  namespace dtDAL
  {
     class GameEvent;
  }
  
  namespace dtActors
  {
     class TaskActor;
     class TaskActorProxy;
  }
  
  namespace dtLMS
  {
     class LmsComponent;
  }
  
  class TestAARHUD;
  
  class TEST_AAR_EXPORT TestAARMessageProcessor : public dtGame::DefaultMessageProcessor
  {
     public:
  
   Constructor
      TestAARMessageProcessor(dtLMS::LmsComponent& lmsComp, 
                              dtGame::LogController& logCtrl, 
                              dtGame::ServerLoggerComponent& srvrCtrl);
        
 Override to handle messages from the input component
	 parameter:  msg The message to handle
  
        virtual void ProcessMessage(const dtGame::Message& msg);
  
        
 Initializes the tasks associated with the demo
  
        void SetupTasks();
  
        
 Displays the current active tasks and their status to the console.
  
        void PrintTasks();
  
        
 Clears the actors from the game manager and recreates the player and the tasks.
 @note This is used when going from playback to idle since playback takes control
  therefore owning all the actors in the scene.
  
        void Reset();
  
        
 Slot method called from the log controller when a status message is received
 from the logging component.
	 parameter:  newStatus Contains the status object received from the logging component.
  
        void OnReceivedStatus(const dtGame::LogStatus& newStatus);
  
        
 Slot method called from the log controller when a Tags List message is sent
 from the logging component to the log controller.
	 parameter:  The Tags List vector.
  
        void OnReceivedTags(const std::vector<dtGame::LogTag>& newTagList);
  
        
 Slot method called from the log controller when a Keyframes List message is sent
 from the logging component to the log controller.
	 parameter:  The Keyframes List vector.
  
        void OnReceivedKeyframes(const std::vector<dtGame::LogKeyframe>& newKeyframeList);
  
        
 Slot method called from the log controller when a rejection message is sent
 from the logging component to the log controller.
	 parameter:  The rejection message.  Note, this has the causing message in it as well.
  
        void OnReceivedRejection(const dtGame::Message& newMessage);
  
        
 Force a request of status, tags, keys, etc...
  
        void RequestAllControllerUpdates();
  
        
 Callback function called when this component enters the GM
  
        virtual void OnAddedToGM();
  
        
 Sets the player actor that this component references
	 parameter:  gap The new actor proxy
  
        void SetPlayerActor(dtGame::GameActorProxy& gap) { mPlayer = ⪆ }
  
     protected:
  
   Destructor
      virtual ~TestAARMessageProcessor();
        
 Called by the Delta3D system each time a frame is about to be rendered.
 @deltaFrameTime The tick time between frames.
  
        void PreFrame(const double deltaFrameTime);
  
     private:
  
        
 Helper method to update the task camera
  
        void UpdateTaskCamera();
  
        
 Helper method to update the player
  
        void UpdatePlayerActor(const dtGame::ActorUpdateMessage& aum);
  
        
 Helper method that creates an actor with random movement behavior.
	 parameter:  ignored True means the actor will be ignored from recording.
  
        void PlaceActor(bool ignored = false);
  
        
 Helper method to create a new actor to put in the scene.
  
        dtCore::RefPtr<dtGame::GameActorProxy> CreateNewMovingActor(const std::string& meshName, 
           float velocity, 
           float turnRate, 
           bool bSetLocation,
           bool ignoreRecording = false);
  
        //Our tasks and objectives
        dtCore::RefPtr<dtActors::TaskActorProxy> mTaskMoveCameraProxy;
        dtCore::RefPtr<dtActors::TaskActor> mTaskMoveCamera;
  
        dtGame::LogController* mLogController;
        dtLMS::LmsComponent* mLmsComponent; 
        double mLastAutoRequestStatus;
        dtGame::ServerLoggerComponent* mServerLogger;
        dtGame::GameActorProxy* mPlayer;
  };
  
  endif
  
  
  
(C) Æliens 
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher. 
In case of other copyright issues, contact the author.