Torque3D Documentation / _generateds / razerHydraFrameStore.cpp

razerHydraFrameStore.cpp

Engine/source/platform/input/razerHydra/razerHydraFrameStore.cpp

More...

Detailed Description

Public Variables

 MODULE_END 
 MODULE_INIT 
 MODULE_SHUTDOWN 
  1
  2//
  3// Permission is hereby granted, free of charge, to any person obtaining a copy
  4// of this software and associated documentation files (the "Software"), to
  5// deal in the Software without restriction, including without limitation the
  6// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  7// sell copies of the Software, and to permit persons to whom the Software is
  8// furnished to do so, subject to the following conditions:
  9//
 10// The above copyright notice and this permission notice shall be included in
 11// all copies or substantial portions of the Software.
 12//
 13// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 14// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 15// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 16// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 17// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 18// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 19// IN THE SOFTWARE.
 20//-----------------------------------------------------------------------------
 21
 22#include "platform/input/razerHydra/razerHydraFrameStore.h"
 23#include "platform/input/razerHydra/razerHydraFrame.h"
 24#include "core/module.h"
 25#include "console/simSet.h"
 26#include "console/consoleTypes.h"
 27
 28MODULE_BEGIN( RazerHydraFrameStore )
 29
 30   MODULE_INIT_AFTER( RazerHydraDevice )
 31   MODULE_INIT_AFTER( Sim )
 32   MODULE_SHUTDOWN_BEFORE( Sim )
 33   MODULE_SHUTDOWN_BEFORE( RazerHydraDevice )
 34
 35   MODULE_INIT
 36   {
 37      RazerHydraFrameStore::staticInit();
 38      ManagedSingleton< RazerHydraFrameStore >::createSingleton();
 39   }
 40   
 41   MODULE_SHUTDOWN
 42   {
 43      ManagedSingleton< RazerHydraFrameStore >::deleteSingleton();
 44   }
 45
 46MODULE_END;
 47
 48S32 RazerHydraFrameStore::smMaximumFramesStored = 30;
 49
 50SimGroup* RazerHydraFrameStore::smFrameGroup = NULL;
 51
 52RazerHydraFrameStore::RazerHydraFrameStore()
 53{
 54   // Set up the SimGroup to store our frames
 55   smFrameGroup = new SimGroup();
 56   smFrameGroup->registerObject("RazerHydraFrameGroup");
 57   smFrameGroup->setNameChangeAllowed(false);
 58   Sim::getRootGroup()->addObject(smFrameGroup);
 59}
 60
 61RazerHydraFrameStore::~RazerHydraFrameStore()
 62{
 63   if(smFrameGroup)
 64   {
 65      smFrameGroup->deleteObject();
 66      smFrameGroup = NULL;
 67   }
 68}
 69
 70void RazerHydraFrameStore::staticInit()
 71{
 72   Con::addVariable("RazerHydra::MaximumFramesStored", TypeS32, &smMaximumFramesStored, 
 73      "@brief The maximum number of frames to keep when $RazerHydra::GenerateWholeFrameEvents is true.\n\n"
 74      "@ingroup Game");
 75}
 76
 77S32 RazerHydraFrameStore::generateNewFrame(const sixenseAllControllerData& frame, const F32& maxAxisRadius)
 78{
 79   // Make sure our group has been created
 80   if(!smFrameGroup)
 81      return 0;
 82
 83   // Either create a new frame object or pull one off the end
 84   S32 frameID = 0;
 85   if(smFrameGroup->size() >= smMaximumFramesStored)
 86   {
 87      // Make the last frame the first and update
 88      RazerHydraFrame* frameObj = static_cast<RazerHydraFrame*>(smFrameGroup->last());
 89      smFrameGroup->bringObjectToFront(frameObj);
 90      frameObj->copyFromFrame(frame, maxAxisRadius);
 91      frameID = frameObj->getId();
 92   }
 93   else
 94   {
 95      // Create a new frame and add it to the front of the list
 96      RazerHydraFrame* frameObj = new RazerHydraFrame();
 97      frameObj->registerObject();
 98      smFrameGroup->addObject(frameObj);
 99      smFrameGroup->bringObjectToFront(frameObj);
100      frameObj->copyFromFrame(frame, maxAxisRadius);
101      frameID = frameObj->getId();
102   }
103
104   return frameID;
105}
106