Files
Client/GameTools/Zallad3D SceneClass/CollisionDetection.h
LGram16 dd97ddec92 Restructure repository to include all source folders
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>
2025-11-29 20:17:20 +09:00

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_)