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>
This commit is contained in:
124
GameTools/Zallad3D SceneClass/Collision.h
Normal file
124
GameTools/Zallad3D SceneClass/Collision.h
Normal file
@@ -0,0 +1,124 @@
|
||||
#ifndef __CCOLLISION_H__
|
||||
#define __CCOLLISION_H__
|
||||
#include <d3dx8.h>
|
||||
#include "matrix.h"
|
||||
class triangle {
|
||||
public:
|
||||
D3DXVECTOR3 a;
|
||||
D3DXVECTOR3 b;
|
||||
D3DXVECTOR3 c;
|
||||
D3DXVECTOR3 normal;
|
||||
triangle() {
|
||||
a.x = a.y = a.z = 0.0f;
|
||||
b.x = b.y = b.z = 0.0f;
|
||||
c.x = c.y = c.z = 0.0f;
|
||||
normal.x = normal.y = normal.z = 0.0f;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
enum CCOLLISIONSIDE {
|
||||
CCOLLISIONFRONTSIDE,
|
||||
CCOLLISIONBACKSIDE,
|
||||
CCOLLISIONONSIDE
|
||||
};
|
||||
|
||||
////////////////////////////////////////////
|
||||
// sphere triangle collision detection //
|
||||
////////////////////////////////////////////
|
||||
|
||||
class CCollisionUnit { // collision test unit
|
||||
public:
|
||||
D3DXVECTOR3 m_UnitPos; // unit <20><>ġ;
|
||||
|
||||
D3DXVECTOR3 m_UnitBeforePos;
|
||||
float m_NearDistPolytoSphere; // <20>ּҰŸ<D2B0> <20><>ġ<EFBFBD><C4A1> polygon <20>Ÿ<EFBFBD>
|
||||
|
||||
|
||||
D3DXVECTOR3 m_UnitVelocity; // unit <20>ӵ<EFBFBD>
|
||||
D3DXVECTOR3 m_UnitRad; // unit sphere <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
bool m_bCollision; // collision detection <20><>/<2F><>
|
||||
bool m_bError; // float error
|
||||
int m_Index;
|
||||
D3DXVECTOR3 m_SphereCollisionPoint; // unit sphere <20><><EFBFBD><EFBFBD> <20>浹<EFBFBD><E6B5B9>
|
||||
D3DXVECTOR3 m_TriangleCollisionPoint; // <20>浹 <20>Ͼ triangle <20><><EFBFBD><EFBFBD> <20>浹 <20><>
|
||||
|
||||
D3DXVECTOR3 m_PlaneOrigin;
|
||||
D3DXVECTOR3 m_PlaneNormal;
|
||||
|
||||
CCollisionUnit() {
|
||||
m_UnitPos.x = m_UnitPos.y = m_UnitPos.z = 0.0f;
|
||||
m_UnitVelocity.x = m_UnitVelocity.y = m_UnitVelocity.z = 0.0f;
|
||||
m_UnitRad.x= m_UnitRad.y = m_UnitRad.z = 1.0f;
|
||||
|
||||
m_bCollision = false;
|
||||
m_bError = false;
|
||||
|
||||
m_SphereCollisionPoint.x = m_SphereCollisionPoint.y = m_SphereCollisionPoint.z = 0.0f;
|
||||
m_TriangleCollisionPoint.x = m_TriangleCollisionPoint.y = m_TriangleCollisionPoint.z = 0.0f;
|
||||
m_UnitBeforePos.x = m_UnitBeforePos.y = m_UnitBeforePos.z = 0.0f;
|
||||
m_NearDistPolytoSphere = -1.0f;
|
||||
|
||||
m_PlaneOrigin.x = m_PlaneOrigin.y = m_PlaneOrigin.z = 0.0f;
|
||||
m_PlaneNormal.x = m_PlaneNormal.y = m_PlaneNormal.z = 0.0f;
|
||||
|
||||
m_Index = -1;
|
||||
|
||||
}
|
||||
~CCollisionUnit() {}
|
||||
|
||||
};
|
||||
class NewCCollisionDetection {
|
||||
public:
|
||||
|
||||
CCollisionUnit *object;
|
||||
triangle *faces;
|
||||
triangle col;
|
||||
D3DXVECTOR3 m_LocalPos;
|
||||
D3DXVECTOR3 m_LocalVelocityNormalize;
|
||||
|
||||
matrix m_LocalInvPosMatrix;
|
||||
matrix m_LocalInvRotMatrix;
|
||||
|
||||
float m_LocalVelocityLength;
|
||||
|
||||
int m_FaceNum;
|
||||
|
||||
int m_bs;
|
||||
int m_fs;
|
||||
|
||||
|
||||
NewCCollisionDetection();
|
||||
~NewCCollisionDetection();
|
||||
|
||||
D3DXVECTOR3 GetDistanceClosetPointOnLine(D3DXVECTOR3 pos,D3DXVECTOR3 a,D3DXVECTOR3 b); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>浹 <20><> <20><><EFBFBD>ϱ<EFBFBD>
|
||||
D3DXVECTOR3 GetDistanceClosetPointOnTriangle(D3DXVECTOR3 pos,D3DXVECTOR3 a,D3DXVECTOR3 b,D3DXVECTOR3 c); // triangle <20><><EFBFBD><EFBFBD> <20>浹<EFBFBD><E6B5B9> <20><><EFBFBD>ϱ<EFBFBD>
|
||||
void SetLocalVector(float x,float y,float z,float vx,float vy,float vz,float length,matrix pos,matrix rot);
|
||||
|
||||
bool CheckCollisionSphere(D3DXVECTOR3 pos,D3DXVECTOR3 spherecenter,float sphererad); // sphere<72><65><EFBFBD><EFBFBD> <20>浹 üũ
|
||||
bool CheckInTriangle(D3DXVECTOR3 pos,D3DXVECTOR3 a,D3DXVECTOR3 b,D3DXVECTOR3 c); // triangle <20><><EFBFBD><EFBFBD> <20>浹 üũ
|
||||
|
||||
float RayCollisionPlane(D3DXVECTOR3 rcenter,D3DXVECTOR3 rfwd,
|
||||
D3DXVECTOR3 plane,D3DXVECTOR3 plane_normal);
|
||||
float RayCollisionSphere(D3DXVECTOR3 rcenter,D3DXVECTOR3 rfwd,
|
||||
D3DXVECTOR3 sphercenter,float sphererad);
|
||||
|
||||
D3DXVECTOR3 SlidePolygonVector(D3DXVECTOR3 Velocity,D3DXVECTOR3 PlaneNormal); // <20><><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
CCOLLISIONSIDE ClassifyPoint(D3DXVECTOR3 point, D3DXVECTOR3 plane, D3DXVECTOR3 plane_normal); // point<6E><74> plane<6E><65> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//bool CollisionCheck(D3DXVECTOR3 pos,D3DXVECTOR3 rad,D3DXVECTOR3 velocity,triangle *polylist,int facenum,bool &col);
|
||||
bool CollisionCheck(CCollisionUnit *,int facenum);
|
||||
|
||||
D3DXVECTOR3 Check(D3DXVECTOR3 pos,D3DXVECTOR3 rad,D3DXVECTOR3 vel,D3DXVECTOR3 gravity);
|
||||
void SetMeshInfo(triangle *polygon,int facenum);
|
||||
float GetHeight(float x,float y,float z);
|
||||
|
||||
D3DXVECTOR3 Collision(D3DXVECTOR3 pos,D3DXVECTOR3 velocity);
|
||||
|
||||
D3DXVECTOR3 SetVectorEllipsoidSpace(D3DXVECTOR3 vector,D3DXVECTOR3 spacerad);
|
||||
bool CheckPointInSphere(D3DXVECTOR3 point,D3DXVECTOR3 scenter,float srad);
|
||||
void SetVectorLength(D3DXVECTOR3 &vec,float veclength);
|
||||
|
||||
};
|
||||
#endif
|
||||
Reference in New Issue
Block a user