123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- //-----------------------------------------------------------------------------
- // Copyright (c) 2012 GarageGames, LLC
- //
- // 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.
- //-----------------------------------------------------------------------------
- #ifndef _RAZERHYDRAFRAME_H_
- #define _RAZERHYDRAFRAME_H_
- #include "platform/input/razerHydra/razerHydraConstants.h"
- #include "console/simObject.h"
- #include "math/mPoint3.h"
- #include "math/mMatrix.h"
- #include "math/mQuat.h"
- #include "sixense.h"
- class RazerHydraFrame : public SimObject
- {
- typedef SimObject Parent;
- protected:
- struct ControllerData
- {
- // Position
- Point3F mRawPos;
- Point3I mPos;
- // Rotation
- MatrixF mRot;
- QuatF mRotQuat;
- // Controller rotation as axis x, y
- Point2F mRotAxis;
- // Thumb stick x, y and trigger
- Point2F mThumbStick;
- F32 mTrigger;
- // Buttons
- bool mShoulder;
- bool mThumb;
- bool mStart;
- bool mButton1;
- bool mButton2;
- bool mButton3;
- bool mButton4;
- // Other data
- U8 mSequenceNum;
- bool mEnabled;
- bool mIsDocked;
- };
- static U32 smNextInternalFrameId;
- // Sixense Frame
- bool mFrameValid;
- // Torque 3D frame information
- U32 mFrameInternalId;
- S32 mFrameSimTime;
- S32 mFrameRealTime;
- // Controller data for the frame
- ControllerData mControllerData[RazerHydraConstants::MaxControllers];
- public:
- RazerHydraFrame();
- virtual ~RazerHydraFrame();
- static void initPersistFields();
- virtual bool onAdd();
- virtual void onRemove();
- void clear();
- /// Copy a Leap Frame into our data structures
- void copyFromFrame(const sixenseAllControllerData& frame, const F32& maxAxisRadius);
- // Frame
- bool isFrameValid() const { return mFrameValid; }
- U32 getFrameInternalId() const { return mFrameInternalId; }
- S32 getFrameSimTime() const { return mFrameSimTime; }
- S32 getFrameRealTime() const { return mFrameRealTime; }
- // Controller
- const Point3F& getRawPos(U32 index) const;
- const Point3I& getPos(U32 index) const;
- const MatrixF& getRot(U32 index) const;
- const QuatF& getRotQuat(U32 index) const;
- const Point2F& getRotAxis(U32 index) const;
- // Controller variable controls
- const Point2F& getThumbStick(U32 Index) const;
- F32 getTrigger(U32 index) const;
- // Controller buttons
- bool getShoulder(U32 index) const;
- bool getThumb(U32 index) const;
- bool getStart(U32 index) const;
- bool getButton1(U32 index) const;
- bool getButton2(U32 index) const;
- bool getButton3(U32 index) const;
- bool getButton4(U32 index) const;
- // Controller other
- bool getEnabled(U32 index) const;
- bool getDocked(U32 index) const;
- S32 getSequenceNum(U32 index) const;
- DECLARE_CONOBJECT(RazerHydraFrame);
- };
- //-----------------------------------------------------------------------------
- inline const Point3F& RazerHydraFrame::getRawPos(U32 index) const
- {
- return (index >= RazerHydraConstants::MaxControllers) ? Point3F::Zero : mControllerData[index].mRawPos;
- }
- inline const Point3I& RazerHydraFrame::getPos(U32 index) const
- {
- return (index >= RazerHydraConstants::MaxControllers) ? Point3I::Zero : mControllerData[index].mPos;
- }
- inline const MatrixF& RazerHydraFrame::getRot(U32 index) const
- {
- return (index >= RazerHydraConstants::MaxControllers) ? MatrixF::Identity : mControllerData[index].mRot;
- }
- inline const QuatF& RazerHydraFrame::getRotQuat(U32 index) const
- {
- return (index >= RazerHydraConstants::MaxControllers) ? QuatF::Identity : mControllerData[index].mRotQuat;
- }
- inline const Point2F& RazerHydraFrame::getRotAxis(U32 index) const
- {
- return (index >= RazerHydraConstants::MaxControllers) ? Point2F::Zero : mControllerData[index].mRotAxis;
- }
- inline const Point2F& RazerHydraFrame::getThumbStick(U32 index) const
- {
- return (index >= RazerHydraConstants::MaxControllers) ? Point2F::Zero : mControllerData[index].mThumbStick;
- }
- inline F32 RazerHydraFrame::getTrigger(U32 index) const
- {
- return (index >= RazerHydraConstants::MaxControllers) ? 0.0f : mControllerData[index].mTrigger;
- }
- inline bool RazerHydraFrame::getShoulder(U32 index) const
- {
- return (index >= RazerHydraConstants::MaxControllers) ? false : mControllerData[index].mShoulder;
- }
- inline bool RazerHydraFrame::getThumb(U32 index) const
- {
- return (index >= RazerHydraConstants::MaxControllers) ? false : mControllerData[index].mThumb;
- }
- inline bool RazerHydraFrame::getStart(U32 index) const
- {
- return (index >= RazerHydraConstants::MaxControllers) ? false : mControllerData[index].mStart;
- }
- inline bool RazerHydraFrame::getButton1(U32 index) const
- {
- return (index >= RazerHydraConstants::MaxControllers) ? false : mControllerData[index].mButton1;
- }
- inline bool RazerHydraFrame::getButton2(U32 index) const
- {
- return (index >= RazerHydraConstants::MaxControllers) ? false : mControllerData[index].mButton2;
- }
- inline bool RazerHydraFrame::getButton3(U32 index) const
- {
- return (index >= RazerHydraConstants::MaxControllers) ? false : mControllerData[index].mButton3;
- }
- inline bool RazerHydraFrame::getButton4(U32 index) const
- {
- return (index >= RazerHydraConstants::MaxControllers) ? false : mControllerData[index].mButton4;
- }
- inline bool RazerHydraFrame::getEnabled(U32 index) const
- {
- return (index >= RazerHydraConstants::MaxControllers) ? false : mControllerData[index].mEnabled;
- }
- inline bool RazerHydraFrame::getDocked(U32 index) const
- {
- return (index >= RazerHydraConstants::MaxControllers) ? false : mControllerData[index].mIsDocked;
- }
- inline S32 RazerHydraFrame::getSequenceNum(U32 index) const
- {
- return (index >= RazerHydraConstants::MaxControllers) ? -1 : mControllerData[index].mSequenceNum;
- }
- #endif // _RAZERHYDRAFRAME_H_
|