#ifndef __ORDEVICE_INPUT_DEVICE_H__
#define __ORDEVICE_INPUT_DEVICE_H__
#include "ordeviceinput_hardware.h"
#define ORDEVICEINPUT__CLASSNAME ORDeviceInput
#define ORDEVICEINPUT__CLASSSTR "ORDeviceInput"
class DataChannel
{
public:
DataChannel()
{
mName = "NoName";
mIsUsed = false;
}
~DataChannel()
{
}
public:
FBString mName;
FBAnimationNode* mTAnimNode;
FBAnimationNode* mRAnimNode;
FBModelTemplate* mModelTemplate;
bool mIsUsed;
private:
double mPos[3];
double mRot[3];
};
class ORDeviceInput : public FBDevice
{
public:
virtual bool FBCreate();
virtual void FBDestroy();
bool Init();
bool Done();
bool Reset();
bool Stop();
bool Start();
virtual bool AnimationNodeNotify( FBAnimationNode* pAnimationNode,FBEvaluateInfo* pEvaluateInfo );
virtual void DeviceIONotify ( kDeviceIOs pAction, FBDeviceNotifyInfo &pDeviceNotifyInfo );
virtual bool DeviceOperation ( kDeviceOperations pOperation );
virtual bool FbxStore ( FBFbxObject* pFbxObject,
kFbxObjectStore pStoreWhat );
virtual bool FbxRetrieve( FBFbxObject* pFbxObject,
kFbxObjectStore pStoreWhat );
void DefineHierarchy ();
void BeginChannelSetDefinition ();
void EndChannelSetDefinition () ;
int UseChannel (char *pName);
void DeviceRecordFrame (FBTime &pTime,FBDeviceNotifyInfo &pDeviceNotifyInfo);
double GetDataTX(int pChannelIndex) { return mHardware.GetDataTX(pChannelIndex); }
double GetDataTY(int pChannelIndex) { return mHardware.GetDataTY(pChannelIndex); }
double GetDataTZ(int pChannelIndex) { return mHardware.GetDataTZ(pChannelIndex); }
double GetDataRX(int pChannelIndex) { return mHardware.GetDataRX(pChannelIndex); }
double GetDataRY(int pChannelIndex) { return mHardware.GetDataRY(pChannelIndex); }
double GetDataRZ(int pChannelIndex) { return mHardware.GetDataRZ(pChannelIndex); }
int GetChannelCount() { return mHardware.GetChannelCount(); }
char * GetChannelName(int pMarkerIndex) { return mHardware.GetChannelName(pMarkerIndex); }
public:
FBModelTemplate* mRootTemplate;
FBArrayTemplate<DataChannel *> mChannels;
private:
ORDeviceInputHardware mHardware;
FBPlayerControl mPlayerControl;
bool mHierarchyIsDefined;
FBSystem mSystem;
};
#endif