Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
77 lines
2.0 KiB
C++
77 lines
2.0 KiB
C++
// CollisionDetection.h: interface for the CCollisionDetection class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#if !defined(AFX_COLLISIONDETECTION_H__747BC78B_816E_4F60_A14B_A17C5A7C63B6__INCLUDED_)
|
|
#define AFX_COLLISIONDETECTION_H__747BC78B_816E_4F60_A14B_A17C5A7C63B6__INCLUDED_
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
#include "3DMath.h"
|
|
#include "HeightFieldScene.h"
|
|
|
|
enum CollisionType
|
|
{
|
|
CT_BOTTOM = 0,
|
|
CT_SIDE,
|
|
CT_TERRAIN,
|
|
CT_CHRSIDE,
|
|
CT_NONE,
|
|
CT_WATER
|
|
};
|
|
#define COLLEPSILON 0.000001f
|
|
|
|
|
|
class CCollisionDetection
|
|
{
|
|
class CCollisionList
|
|
{
|
|
public:
|
|
float m_fDistance;
|
|
vector3 m_vecIntersectionPoint;
|
|
vector3 m_vecPlaneNormal;
|
|
vector3 m_vecPlanePoint;
|
|
CollisionType m_CollisionType;
|
|
};
|
|
public:
|
|
vector3 m_vecMinMove,m_vecMaxMove;
|
|
|
|
float m_fMinYBound,m_fMaxYBound;
|
|
|
|
bool m_CollisionDetectionDetail;
|
|
void CheckInHouseObject(CHouseObject *pHouse,matrix matParent);
|
|
void CheckSectorHeightCollision();
|
|
void CheckBspCollision();
|
|
bool CheckSectorWater(vector3 vecPos,bool bUpper);
|
|
void CheckCharacterCollision(bool bChrMode);
|
|
void CheckSectorPlantCollision();
|
|
void CheckSectorMeshCollision();
|
|
List<CCollisionList> m_CollisionList;
|
|
vector3 CollideWithWorld(vector3 vecPos,vector3 vecVelocity,vector3 vecBefore,int Depth,CollisionType &CT,bool ChrCollision);
|
|
vector3 GetPosition(vector3 vecPos,vector3 vecVelocity,vector3 vecBefore,CollisionType &CT,bool ChrCollision);
|
|
void CheckHouseCollision();
|
|
vector3 m_vecVelocity;
|
|
vector3 m_vecSourcePoint;
|
|
vector3 m_vecRadius;
|
|
vector3 m_vecLastSafePosition;
|
|
bool m_bStuck;
|
|
vector3 m_vecStuckPlaneNormal;
|
|
float m_fStuckDistance;
|
|
bool m_bFoundCollision;
|
|
matrix m_matInHouse;
|
|
bool m_bHeightGradient;
|
|
|
|
|
|
int m_SelfChr;
|
|
CHeightFieldScene *m_HeightField;
|
|
CCollisionDetection();
|
|
void SetZoneBound(float min,float max); // Zone Bound Y value
|
|
void ZoneBoundApply(vector3 &vecPoint,CollisionType &);
|
|
|
|
virtual ~CCollisionDetection();
|
|
};
|
|
|
|
#endif // !defined(AFX_COLLISIONDETECTION_H__747BC78B_816E_4F60_A14B_A17C5A7C63B6__INCLUDED_)
|