📄 rotating.h
字号:
// ----------------------------------------------------------------------- //
//
// MODULE : Rotating.h
//
// PURPOSE : Rotating definition
//
// CREATED : 4/29/99
//
// ----------------------------------------------------------------------- //
#ifndef __ROTATING_H__
#define __ROTATING_H__
#include "cpp_aggregate_de.h"
#include "cpp_engineobjects_de.h"
#define ADD_ROTATING_AGGREGATE() \
PROP_DEFINEGROUP(RotatingStuff, PF_GROUP1) \
ADD_BOOLPROP_FLAG(StartOn, DTRUE, PF_GROUP1) \
ADD_STRINGPROP_FLAG(SpinUpSound, "", PF_GROUP1) \
ADD_STRINGPROP_FLAG(BusySound, "", PF_GROUP1) \
ADD_STRINGPROP_FLAG(SpinDownSound, "", PF_GROUP1) \
ADD_REALPROP_FLAG(SoundRadius, 1000.0f, PF_RADIUS | PF_GROUP1) \
ADD_REALPROP_FLAG(XAxisRevTime, 0.0f, PF_GROUP1) \
ADD_REALPROP_FLAG(XAxisSpinUpTime, 0.0f, PF_GROUP1) \
ADD_REALPROP_FLAG(XAxisSpinDownTime, 0.0f, PF_GROUP1) \
ADD_BOOLPROP_FLAG(XRotateForward, DTRUE, PF_GROUP1) \
ADD_REALPROP_FLAG(YAxisRevTime, 0.0f, PF_GROUP1) \
ADD_REALPROP_FLAG(YAxisSpinUpTime, 0.0f, PF_GROUP1) \
ADD_REALPROP_FLAG(YAxisSpinDownTime, 0.0f, PF_GROUP1) \
ADD_BOOLPROP_FLAG(YRotateForward, DTRUE, PF_GROUP1) \
ADD_REALPROP_FLAG(ZAxisRevTime, 0.0f, PF_GROUP1) \
ADD_REALPROP_FLAG(ZAxisSpinUpTime, 0.0f, PF_GROUP1) \
ADD_REALPROP_FLAG(ZAxisSpinDownTime, 0.0f, PF_GROUP1) \
ADD_BOOLPROP_FLAG(ZRotateForward, DTRUE, PF_GROUP1) \
class Rotating : public Aggregate
{
public :
Rotating();
virtual ~Rotating();
DBOOL Init(HOBJECT hObject);
void SetNormalRotation();
void SetSpinUp();
void SetSpinDown();
void SetOff();
protected :
enum RWMState { RWM_OFF, RWM_NORMAL, RWM_SPINUP, RWM_SPINDOWN };
DDWORD EngineMessageFn(LPBASECLASS pObject, DDWORD messageID, void *pData, DFLOAT fData);
DDWORD ObjectMessageFn(LPBASECLASS pObject, HOBJECT hSender, DDWORD messageID, HMESSAGEREAD hRead);
HOBJECT m_hObject;
DVector m_vVelocity; // Current Rotation velocity
DVector m_vSaveVelocity; // Normal Rotation velocity
DVector m_vSign; // Direction of rotation
DVector m_vSpinUpTime; // Time to go from zero to full velocity
DVector m_vSpinDownTime; // Time to go from full to zero velocity
DVector m_vSpinTimeLeft; // How much time left to spin up/down
DFLOAT m_fLastTime; // Last update time
DFLOAT m_fStartTime; // When did we start the current state
DFLOAT m_fPitch; // Object pitch (X)
DFLOAT m_fYaw; // Object yaw (Y)
DFLOAT m_fRoll; // Object roll (Z)
RWMState m_eState; // What state are we in.
HSTRING m_hstrBusySound; // Sound played while rotating
HSTRING m_hstrSpinUpSound; // Sound played when spinning up
HSTRING m_hstrSpinDownSound;// Sound played when spinning down
HSOUNDDE m_sndLastSound; // Handle of last sound playing
DFLOAT m_fSoundRadius; // Radius of sound
void UpdateNormalRotation();
void UpdateSpinUp();
void UpdateSpinDown();
void StartSound(HSTRING hstrSoundName, DBOOL bLoop);
private :
DBOOL ReadProp(ObjectCreateStruct *pInfo);
void InitialUpdate();
void Update();
void Save(HMESSAGEWRITE hWrite, DDWORD dwSaveFlags);
void Load(HMESSAGEREAD hWrite, DDWORD dwLoadFlags);
void HandleTrigger(HOBJECT hSender, HSTRING hMsg);
};
#endif // __ROTATING_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -