Files
FC1/CryPhysics/geoman.h
romkazvo 34d6c5d489 123
2023-08-07 19:29:24 +08:00

37 lines
1.3 KiB
C++

#ifndef geoman_h
#define geoman_h
#pragma once
const int GEOM_CHUNK_SZ = 64;
class CGeomManager : public IGeomManager {
public:
CGeomManager() { InitGeoman(); }
~CGeomManager() { ShutDownGeoman(); }
void InitGeoman();
void ShutDownGeoman();
virtual IGeometry *CreateMesh(strided_pointer<const vectorf> pVertices,index_t *pIndices,const short *pIds,int nTris, int flags,bool bCopyTriangles=true,
bool bCopyVertices=true, float approx_tolerance=0.05f, int nMinTrisPerNode=2,int nMaxTrisPerNode=4, float favorAABB=1.0f);
virtual IGeometry *CreatePrimitive(int type, const primitive *pprim);
virtual void DestroyGeometry(IGeometry *pGeom);
virtual phys_geometry *RegisterGeometry(IGeometry *pGeom,int defSurfaceIdx=0);
virtual int AddRefGeometry(phys_geometry *pgeom);
virtual int UnregisterGeometry(phys_geometry *pgeom);
virtual void SaveGeometry(CMemStream &stm, IGeometry *pGeom);
virtual IGeometry *LoadGeometry(CMemStream &stm);
virtual void SavePhysGeometry(CMemStream &stm, phys_geometry *pgeom);
virtual phys_geometry *LoadPhysGeometry(CMemStream &stm);
virtual void RemapPhysGeometryFaceIds(phys_geometry *pgeom,short *pMap,int sz) { pgeom->pGeom->RemapFaceIds(pMap,sz); }
phys_geometry *GetFreeGeomSlot();
phys_geometry **m_pGeoms;
int m_nGeomChunks,m_nGeomsInLastChunk;
};
#endif