⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rotating.h

📁 Blood 2全套源码
💻 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 + -