Initial commit: ROW Client source code
Game client codebase including: - CharacterActionControl: Character and creature management - GlobalScript: Network, items, skills, quests, utilities - RYLClient: Main client application with GUI and event handlers - Engine: 3D rendering engine (RYLGL) - MemoryManager: Custom memory allocation - Library: Third-party dependencies (DirectX, boost, etc.) - Tools: Development utilities 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
108
Engine/Zalla3D Scene Class/CollisionDetection.h
Normal file
108
Engine/Zalla3D Scene Class/CollisionDetection.h
Normal file
@@ -0,0 +1,108 @@
|
||||
// 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_bFirstBottom; // First Bottom.
|
||||
bool m_bFirstScene;
|
||||
|
||||
// build <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
bool m_bBuild;
|
||||
|
||||
|
||||
|
||||
bool m_CollisionDetectionDetail;
|
||||
void CheckInHouseObject(CHouseObject *pHouse,matrix matParent);
|
||||
void CheckSectorHeightCollision(CollisionType &CT);
|
||||
void CheckBspCollision();
|
||||
bool CheckSectorWater(vector3& vecPos,bool bUpper);
|
||||
void CheckCharacterCollision(bool bChrMode);
|
||||
void CheckSectorPlantCollision();
|
||||
void CheckSectorMeshCollision();
|
||||
std::vector<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();
|
||||
void CheckFirstHouseCollision();
|
||||
|
||||
vector3 m_vecVelocity;
|
||||
vector3 m_vecSourcePoint; // <20>浹üũ<C3BC><C5A9> <20><><EFBFBD>ϴ<EFBFBD> <20><>ġ. GetPosition <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
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 &);
|
||||
void SetFirstBottom(bool bEnable) {m_bFirstBottom = bEnable; }
|
||||
bool GetBuildEnable() { return m_bBuild;}
|
||||
bool GetHeightGradient() { return m_bHeightGradient;}
|
||||
|
||||
virtual ~CCollisionDetection();
|
||||
|
||||
// 2005.01.11 yundi : Octree <20>ε<EFBFBD><CEB5><EFBFBD> <20>浹ó<E6B5B9><C3B3> <20><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD> <20>߰<EFBFBD>
|
||||
void LockDetection();
|
||||
void UnlockDetection();
|
||||
bool IsDetectionLocked();
|
||||
|
||||
// 2005.12.19 yundi : <20><><EFBFBD><EFBFBD> <20>ߺ<EFBFBD><DFBA>ڵ带 utility function <20><><EFBFBD><EFBFBD> extract method
|
||||
|
||||
/*!
|
||||
(pointX, pointY) <20><> <20><><EFBFBD><EFBFBD> (minX, minY)<29><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sizeX, sizeY <20><>
|
||||
<09><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD> ũ<>⸦ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>簢<EFBFBD><E7B0A2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ԵǴ<D4B5><C7B4><EFBFBD> üũ.
|
||||
|
||||
<09><>, üũ<C3BC><C5A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ּҰ<D6BC> <= <20><><EFBFBD><EFBFBD> < <20>ִ밪 <20><><EFBFBD>´<EFBFBD>(<28>̻<EFBFBD>/<2F≯<EFBFBD> <20><>)
|
||||
|
||||
<09><><EFBFBD>Ե<EFBFBD> <20><><EFBFBD><EFBFBD> true, <20><EFBFBD><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> false <20><>ȯ
|
||||
*/
|
||||
static bool IsPointInRect2D(float pointX, float pointY, float minX, float minY, float sizeX, float sizeY);
|
||||
|
||||
|
||||
protected:
|
||||
int m_nLockCount;
|
||||
};
|
||||
|
||||
#endif // !defined(AFX_COLLISIONDETECTION_H__747BC78B_816E_4F60_A14B_A17C5A7C63B6__INCLUDED_)
|
||||
Reference in New Issue
Block a user