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

📄 motion.h

📁 c++程序
💻 H
字号:
// Motion.h: Schnittstelle f黵 die Klasse CMotion.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_MOTION_H__19897502_A3B2_11D1_8F4C_A07973C10800__INCLUDED_)
#define AFX_MOTION_H__19897502_A3B2_11D1_8F4C_A07973C10800__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "Camera.h"
#include "Force.h"

class CMotion : public CCamera  
{
public:
	// Member data acess functions
	void SetAccelerationTime(unsigned int iAccelerationTime) { m_AccelerationTime = iAccelerationTime; };
	void SetSmallestForce(float fSmallestForce) { m_SmallestForce = fSmallestForce; };
	void SetGravity(CForce cGravity) { m_Gravity = cGravity; };
	void SetSlowDown(float fSlowDown) { m_SlowDown = fSlowDown; };
	void SetJumpForce(float fJumpForce) { m_JumpForce[y] = fJumpForce; };
	void SetGravityAcceleration(float fGravityAcceleration) { m_GravityAcceleration = fGravityAcceleration; };
	void SetMidAirAccelerationTime(unsigned int iMidAirAccelerationTime) 
		{ m_MidAirAccelerationTime = iMidAirAccelerationTime; };
	void SetMidAirSlowDown(float fMidAirSlowDown) { m_MidAirSlowDown = fMidAirSlowDown; };
	void SetMaxAccelerationFactor(float fMaxAccelerationFactor) 
		{ m_MaxAccelerationFactor = fMaxAccelerationFactor; };
	void SetMinimumHeight(float fMinimumHeight) { m_MinimumHeight = fMinimumHeight; };
	unsigned int GetAccelerationTime() { return m_AccelerationTime; };
	float GetSmallestForce() { return m_SmallestForce; };
	CForce GetGravity() { return m_Gravity; };
	float GetSlowDown() { return m_SlowDown; };
	float GetJumpForce() { return m_JumpForce[y]; };
	float GetGravityAcceleration() { return m_GravityAcceleration; };
	unsigned int GetMidAirAccelerationTime() { return m_MidAirAccelerationTime; };
	float GetMidAirSlowDown() { return m_MidAirSlowDown; };
	float GetMaxAccelerationFactor() { return m_MaxAccelerationFactor; };
	float GetMinimumHeight() { return m_MinimumHeight; };
	// Motion control functions
	void Jump();
	void SetCustomMotion(float fForwardSpeed, float fBackwardSpeed, float fLeftSpeed, 
		float fRightSpeed, float fUpSpeed, float fDownSpeed, DWORD dwTimeElapsed);
	void SetDefaultMotion(bool bForward, bool bBackward, bool bLeft, bool bRight,
		bool bUp, bool bDown, DWORD dwTimeElapsed);
	void ApplyMotionPhysics(const DWORD dwTimeElapsed);
	CMotion();
	virtual ~CMotion();
private:
	float GetHeightDifference();
	// Get gradient of the current motion
	float GetGradient(CForce cMotion);
	// Timescaling
	float ScaleToElapsedTime(float fUnscaledValue, DWORD dwTimeElapsed) 
		{ return (fUnscaledValue / 1000) * dwTimeElapsed; };
	// Motion behavior
	CForce m_Gravity;
	CForce m_JumpForce;
	float m_SmallestForce;
	float m_MinimumHeight;
	float m_SlowDown;
	float m_MidAirSlowDown;
	float m_GravityAcceleration;
	CForce m_CurrentGravity;
	unsigned int m_AccelerationTime;
	unsigned int m_MidAirAccelerationTime;
	float m_MaxAccelerationFactor;
	// Is camera in the air ?
	void CheckMidAir();
	bool m_MidAir;
	// Force that applies on the camera
	CForce m_Force;
};

#endif // !defined(AFX_MOTION_H__19897502_A3B2_11D1_8F4C_A07973C10800__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -