📄 motion.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 + -