123
This commit is contained in:
119
CryPhysics/softentity.h
Normal file
119
CryPhysics/softentity.h
Normal file
@@ -0,0 +1,119 @@
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Soft Entity header
|
||||
//
|
||||
// File: softentity.h
|
||||
// Description : SoftEntity class declaration
|
||||
//
|
||||
// History:
|
||||
// -:Created by Anton Knyazev
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef softentity_h
|
||||
#define softentity_h
|
||||
#pragma once
|
||||
|
||||
struct se_vertex {
|
||||
~se_vertex() { if (pContactEnt) pContactEnt->Release(); }
|
||||
vectorf pos,pos0,posorg;
|
||||
vectorf vel,vel0;
|
||||
float massinv;
|
||||
float volume;
|
||||
vectorf n,ncontact;
|
||||
int bSeparating;
|
||||
int iSorted,iSorted0;
|
||||
float area;
|
||||
int iStartEdge,iEndEdge,bFullFan;
|
||||
float rnEdges;
|
||||
CPhysicalEntity *pContactEnt;
|
||||
int iContactPart;
|
||||
int iContactNode;
|
||||
vectorf vcontact;
|
||||
int surface_idx[2];
|
||||
int bAttached;
|
||||
vectorf ptAttach;
|
||||
vectorf P,dv,r,d;
|
||||
};
|
||||
|
||||
struct se_edge {
|
||||
int ivtx[2];
|
||||
float len0;
|
||||
float len,rlen;
|
||||
float kd;
|
||||
};
|
||||
|
||||
|
||||
class CSoftEntity : public CPhysicalEntity {
|
||||
public:
|
||||
CSoftEntity(CPhysicalWorld *pworld);
|
||||
virtual ~CSoftEntity();
|
||||
virtual pe_type GetType() { return PE_SOFT; }
|
||||
|
||||
virtual int AddGeometry(phys_geometry *pgeom, pe_geomparams* params,int id=-1);
|
||||
virtual void RemoveGeometry(int id);
|
||||
virtual int SetParams(pe_params *_params);
|
||||
virtual int GetParams(pe_params *_params);
|
||||
virtual int Action(pe_action*);
|
||||
virtual int GetStatus(pe_status*);
|
||||
|
||||
virtual int Awake(int bAwake=1,int iSource=0) { if (m_bAwake=bAwake) m_nSlowFrames=0; return 1; }
|
||||
virtual int IsAwake(int ipart=-1) { return m_bAwake; }
|
||||
virtual void AlertNeighbourhoodND();
|
||||
|
||||
virtual void StartStep(float time_interval);
|
||||
virtual float GetMaxTimeStep(float time_interval);
|
||||
virtual int Step(float time_interval);
|
||||
virtual int RayTrace(CRayGeom *pRay, geom_contact *&pcontacts);
|
||||
virtual void ApplyVolumetricPressure(const vectorf &epicenter, float kr, float rmin);
|
||||
|
||||
enum snapver { SNAPSHOT_VERSION = 10 };
|
||||
virtual int GetStateSnapshot(CStream &stm, float time_back=0,int flags=0);
|
||||
virtual int SetStateFromSnapshot(CStream &stm, int flags);
|
||||
|
||||
virtual void DrawHelperInformation(void (*DrawLineFunc)(float*,float*), int flags);
|
||||
virtual void GetMemoryStatistics(ICrySizer *pSizer);
|
||||
|
||||
se_vertex *m_vtx;
|
||||
se_edge *m_edges;
|
||||
int *m_pVtxEdges;
|
||||
int m_nVtx,m_nEdges;
|
||||
vectorf m_offs0;
|
||||
quaternionf m_qrot0;
|
||||
int m_bMeshUpdated;
|
||||
|
||||
float m_timeStepFull;
|
||||
float m_timeStepPerformed;
|
||||
|
||||
vectorf m_gravity;
|
||||
float m_Emin;
|
||||
float m_maxAllowedStep;
|
||||
int m_bAwake,m_nSlowFrames;
|
||||
float m_damping;
|
||||
float m_accuracy;
|
||||
int m_nMaxIters;
|
||||
float m_prevTimeInterval;
|
||||
|
||||
float m_thickness;
|
||||
float m_ks,m_kdRatio;
|
||||
float m_maxSafeStep;
|
||||
float m_density;
|
||||
float m_coverage;
|
||||
float m_friction;
|
||||
float m_impulseScale;
|
||||
float m_explosionScale;
|
||||
float m_collImpulseScale;
|
||||
float m_maxCollImpulse;
|
||||
int m_collTypes;
|
||||
|
||||
plane m_waterPlane;
|
||||
float m_waterDensity;
|
||||
float m_waterDamping;
|
||||
float m_waterResistance;
|
||||
vectorf m_waterFlow;
|
||||
|
||||
float m_airResistance;
|
||||
vectorf m_wind;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user