123
This commit is contained in:
291
CrySystem/ScriptObjectEntity.h
Normal file
291
CrySystem/ScriptObjectEntity.h
Normal file
@@ -0,0 +1,291 @@
|
||||
// ScriptObjectEntity.h: interface for the CScriptObjectEntity class.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if !defined(AFX_SCRIPTOBJECTENTITY_H__870B7388_021A_46C0_84B4_734EEB08DE7D__INCLUDED_)
|
||||
#define AFX_SCRIPTOBJECTENTITY_H__870B7388_021A_46C0_84B4_734EEB08DE7D__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
#include <IScriptSystem.h>
|
||||
#include <_ScriptableEx.h>
|
||||
|
||||
#define PHYSICPARAM_PARTICLE 0x00000001
|
||||
#define PHYSICPARAM_VEHICLE 0x00000002
|
||||
#define PHYSICPARAM_PLAYERDYN 0x00000003
|
||||
#define PHYSICPARAM_PLAYERDIM 0x00000004
|
||||
#define PHYSICPARAM_SIMULATION 0x00000005
|
||||
#define PHYSICPARAM_ARTICULATED 0x00000006
|
||||
#define PHYSICPARAM_JOINT 0x00000007
|
||||
#define PHYSICPARAM_ROPE 0x00000008
|
||||
#define PHYSICPARAM_BUOYANCY 0x00000009
|
||||
#define PHYSICPARAM_CONSTRAINT 0x0000000A
|
||||
#define PHYSICPARAM_REMOVE_CONSTRAINT 0x00000B
|
||||
#define PHYSICPARAM_FLAGS 0x0000000C
|
||||
#define PHYSICPARAM_WHEEL 0x0000000D
|
||||
#define PHYSICPARAM_SOFTBODY 0x0000000E
|
||||
#define PHYSICPARAM_VELOCITY 0x0000000F
|
||||
#define PHYSICPARAM_PART_FLAGS 0x00000010
|
||||
|
||||
#define AIPARAM_SIGHTRANGE 1
|
||||
#define AIPARAM_ATTACKRANGE 2
|
||||
#define AIPARAM_ACCURACY 3
|
||||
#define AIPARAM_AGGRESION 4
|
||||
#define AIPARAM_GROUPID 5
|
||||
#define AIPARAM_SOUNDRANGE 6
|
||||
#define AIPARAM_FOV 7
|
||||
#define AIPARAM_COMMRANGE 8
|
||||
#define AIPARAM_FWDSPEED 9
|
||||
#define AIPARAM_RESPONSIVENESS 10
|
||||
#define AIPARAM_SPECIES 11
|
||||
|
||||
struct IEntity;
|
||||
struct ISystem;
|
||||
class CScriptObjectVector;
|
||||
#include <IPhysics.h>
|
||||
|
||||
#define USE_MEMBER_POS
|
||||
#define ENTITYPROP_CASTSHADOWS 0x00000001
|
||||
#define ENTITYPROP_DONOTCHECKVIS 0x00000002
|
||||
|
||||
enum SOE_MEMBER_LUA_TABLES {
|
||||
SOE_MEMBER_HELPER_POS,
|
||||
SOE_MEMBER_BONE_POS,
|
||||
SOE_MEMBER_BONE_DIR,
|
||||
SOE_MEMBER_OBJ_VEL,
|
||||
|
||||
SOE_MEMBER_LAST
|
||||
};
|
||||
|
||||
/*! In this class are all entity-related script-functions implemented in order tos expose all functionalities provided by an entity.
|
||||
|
||||
IMPLEMENTATIONS NOTES:
|
||||
These function will never be called from C-Code. They're script-exclusive.
|
||||
*/
|
||||
class CScriptObjectEntity :
|
||||
public _ScriptableEx<CScriptObjectEntity>,
|
||||
public IScriptObjectSink
|
||||
{
|
||||
public:
|
||||
CScriptObjectEntity();
|
||||
virtual ~CScriptObjectEntity();
|
||||
bool Create(IScriptSystem *pScriptSystem, ISystem *pSystem);
|
||||
void SetEntity(IEntity *pEntity);
|
||||
void SetContainer(IScriptObject *pContainer);
|
||||
//IScriptObjectSink
|
||||
void OnRelease()
|
||||
{
|
||||
m_pScriptThis->Clear();
|
||||
m_pScriptThis=NULL;
|
||||
delete this;
|
||||
}
|
||||
static void InitializeTemplate(IScriptSystem *pSS);
|
||||
static void ReleaseTemplate();
|
||||
public:
|
||||
int SelectPipe(IFunctionHandler *pH);
|
||||
int EnableUpdate(IFunctionHandler *pH);
|
||||
int SetUpdateIfPotentiallyVisible(IFunctionHandler *pH);
|
||||
int SetUpdateType(IFunctionHandler *pH);
|
||||
int SetBBox(IFunctionHandler *pH);
|
||||
int GetBBox(IFunctionHandler *pH);
|
||||
int GetLocalBBox(IFunctionHandler *pH);
|
||||
int SetRadius(IFunctionHandler *pH);
|
||||
int SetUpdateRadius(IFunctionHandler *pH);
|
||||
int GetUpdateRadius(IFunctionHandler *pH);
|
||||
int LoadBreakable(IFunctionHandler *pH);
|
||||
int BreakEntity(IFunctionHandler *pH);
|
||||
int TriggerEvent(IFunctionHandler *pH);
|
||||
int GetHelperPos(IFunctionHandler *pH);
|
||||
int GetBonePos(IFunctionHandler *pH);
|
||||
int GetBoneDir(IFunctionHandler *pH);
|
||||
int GetBoneNameFromTable(IFunctionHandler *pH);
|
||||
int LoadVehicle(IFunctionHandler *pH);
|
||||
//int SetDamage(IFunctionHandler *pH);
|
||||
int CreateParticleEntity(IFunctionHandler *pH);
|
||||
int GetPos(IFunctionHandler *pH);
|
||||
int GetCenterOfMassPos(IFunctionHandler *pH);
|
||||
//int GetWorldPos(IFunctionHandler *pH);
|
||||
int SetPos(IFunctionHandler *pH);
|
||||
int SetName(IFunctionHandler *pH);
|
||||
int GetName(IFunctionHandler *pH);
|
||||
int SetAIName(IFunctionHandler *pH);
|
||||
int GetAIName(IFunctionHandler *pH);
|
||||
int PhysicalizeCharacter(IFunctionHandler *pH);
|
||||
int LoadObject(IFunctionHandler *pH);
|
||||
int LoadObjectPiece(IFunctionHandler *pH);
|
||||
int GetObjectPos(IFunctionHandler *pH);
|
||||
int SetObjectPos(IFunctionHandler *pH);
|
||||
int GetObjectAngles(IFunctionHandler *pH);
|
||||
int SetObjectAngles(IFunctionHandler *pH);
|
||||
int DrawObject(IFunctionHandler *pH);
|
||||
int CreateParticlePhys(IFunctionHandler *pH);
|
||||
int CreateLivingEntity(IFunctionHandler *pH);
|
||||
int CreateRigidBody(IFunctionHandler *pH);
|
||||
int CreateArticulatedBody(IFunctionHandler *pH);
|
||||
int CreateRigidBodyPiece(IFunctionHandler *pH);
|
||||
int CreateSoftEntity(IFunctionHandler *pH);
|
||||
int ResetPhysics(IFunctionHandler *pH);
|
||||
int AwakePhysics(IFunctionHandler *pH);
|
||||
int AwakeCharacterPhysics(IFunctionHandler *pH);
|
||||
int CreateStaticEntity(IFunctionHandler *pH);
|
||||
int SetAngles(IFunctionHandler *pH);
|
||||
int GetAngles(IFunctionHandler *pH);
|
||||
//int GetAnglesReal(IFunctionHandler *pH);
|
||||
int Bind(IFunctionHandler *pH);
|
||||
int Unbind(IFunctionHandler *pH);
|
||||
int IsBound(IFunctionHandler *pH);
|
||||
int NetPresent(IFunctionHandler *pH);
|
||||
int RenderShadow(IFunctionHandler *pH);
|
||||
int SetRegisterInSectors(IFunctionHandler *pH);
|
||||
int SetPhysicParams(IFunctionHandler *pH);
|
||||
int SetCharacterPhysicParams(IFunctionHandler *pH);
|
||||
int GetParticleCollisionStatus(IFunctionHandler *pH);
|
||||
int GetObjectStatus(IFunctionHandler *pH);
|
||||
int SetObjectStatus(IFunctionHandler *pH);
|
||||
int GetDirectionVector(IFunctionHandler *pH);
|
||||
int IsAnimationRunning(IFunctionHandler *pH);
|
||||
int AddImpulse(IFunctionHandler *pH);
|
||||
int AddImpulseObj(IFunctionHandler *pH);
|
||||
int IsPointWithinRadius(IFunctionHandler *pH);
|
||||
// int RegisterWithAI(IFunctionHandler *pH);
|
||||
int GetDistanceFromPoint(IFunctionHandler *pH);
|
||||
int DestroyPhysics(IFunctionHandler *pH);
|
||||
int EnablePhysics(IFunctionHandler *pH);
|
||||
int SetSecondShader(IFunctionHandler *pH);
|
||||
int SetShader(IFunctionHandler *pH);
|
||||
int GetShader(IFunctionHandler *pH);
|
||||
int GetCameraPosition(IFunctionHandler *pH);
|
||||
int SetShaderFloat(IFunctionHandler *pH);
|
||||
int SetColor(IFunctionHandler *pH);
|
||||
int SetStatObjScale(IFunctionHandler *pH);
|
||||
int EnableSave(IFunctionHandler *pH);
|
||||
|
||||
int PlaySound(IFunctionHandler *pH);
|
||||
|
||||
int KillCharacter(IFunctionHandler *pH);
|
||||
int DrawCharacter(IFunctionHandler *pH);
|
||||
int LoadCharacter(IFunctionHandler *pH);
|
||||
int StartAnimation(IFunctionHandler *pH);
|
||||
int ResetAnimation(IFunctionHandler *pH);
|
||||
int SetAnimationEvent(IFunctionHandler *pH);
|
||||
int SetAnimationKeyEvent(IFunctionHandler *pH);
|
||||
int DisableAnimationEvent(IFunctionHandler *pH);
|
||||
int SetAnimationSpeed(IFunctionHandler *pH);
|
||||
int SetAnimationTime(IFunctionHandler *pH);
|
||||
int GetAnimationTime(IFunctionHandler *pH);
|
||||
int GetCurAnimation(IFunctionHandler *pH);
|
||||
int GetAnimationLength(IFunctionHandler *pH);
|
||||
int ReleaseLipSync(IFunctionHandler *pH);
|
||||
int DoRandomExpressions(IFunctionHandler *pH);
|
||||
int DoExpression(IFunctionHandler *pH);
|
||||
int SayDialog(IFunctionHandler *pH);
|
||||
int StopDialog(IFunctionHandler *pH);
|
||||
int SetTimer(IFunctionHandler *pH);
|
||||
int KillTimer(IFunctionHandler *pH);
|
||||
int SetScriptUpdateRate(IFunctionHandler *pH);
|
||||
// State managment.
|
||||
int GotoState(IFunctionHandler *pH);
|
||||
int IsInState(IFunctionHandler *pH);
|
||||
int GetState(IFunctionHandler *pH);
|
||||
int RegisterState(IFunctionHandler *pH);
|
||||
int ApplyForceToEnvironment(IFunctionHandler *pH);
|
||||
|
||||
int IsVisible(IFunctionHandler *pH);
|
||||
//
|
||||
int GetTouchedSurfaceID(IFunctionHandler *pH);
|
||||
//
|
||||
//retrieves point of collision for rigid body
|
||||
int GetTouchedPoint(IFunctionHandler *pH);
|
||||
|
||||
int AttachToBone(IFunctionHandler *pH);
|
||||
int AttachObjectToBone(IFunctionHandler *pH);
|
||||
int DetachObjectToBone(IFunctionHandler *pH);
|
||||
// int TranslatePartIdToDeadBody(IFunctionHandler *pH);
|
||||
|
||||
int InitDynamicLight(IFunctionHandler *pH);
|
||||
int AddDynamicLight(IFunctionHandler *pH);
|
||||
int AddDynamicLight2(IFunctionHandler *pH);
|
||||
int RemoveLight(IFunctionHandler *pH);
|
||||
|
||||
//
|
||||
// proseeding humming rockets
|
||||
int DoHam(IFunctionHandler *pH);
|
||||
int ResetHam(IFunctionHandler *pH);
|
||||
|
||||
int LoadBoat(IFunctionHandler *pH);
|
||||
|
||||
// int GetBuildingId(IFunctionHandler *pH);
|
||||
// int GetSectorId(IFunctionHandler *pH);
|
||||
int Damage(IFunctionHandler *pH);
|
||||
// int UpdateInSector(IFunctionHandler *pH);
|
||||
int GetCameraAngles(IFunctionHandler *pH);
|
||||
int CreateParticleEmitter(IFunctionHandler *pH);
|
||||
int CreateParticleEmitterEffect(IFunctionHandler *pH);
|
||||
int DeleteParticleEmitter(IFunctionHandler *pH);
|
||||
int GetEntitiesInContact(IFunctionHandler *pH);
|
||||
int IsAffectedByExplosion(IFunctionHandler *pH);
|
||||
int SetMaterial(IFunctionHandler *pH);
|
||||
int GetMaterial(IFunctionHandler *pH);
|
||||
int TrackColliders(IFunctionHandler *pH);
|
||||
int CheckCollisions(IFunctionHandler *pH);
|
||||
int AwakeEnvironment(IFunctionHandler *pH);
|
||||
|
||||
int GetViewDistRatio(IFunctionHandler *pH);
|
||||
int SetViewDistRatio(IFunctionHandler *pH);
|
||||
int SetViewDistUnlimited(IFunctionHandler *pH);
|
||||
int SetStateClientside(IFunctionHandler *pH);
|
||||
|
||||
private: // -------------------------------------------------------------------------------
|
||||
|
||||
int SetEntityPhysicParams(IPhysicalEntity *pe, IFunctionHandler *pH,int iOffs=0, ICryCharInstance *pIChar=0);
|
||||
int CreateRigidOrArticulatedBody(pe_type type, IFunctionHandler *pH);
|
||||
|
||||
void SetMemberVector( SOE_MEMBER_LUA_TABLES member,const Vec3 &vec );
|
||||
|
||||
IEntity *m_pEntity;
|
||||
IEntitySystem *m_pEntitySystem;
|
||||
ISystem *m_pISystem;
|
||||
ISoundSystem *m_pSoundSystem;
|
||||
int m_nCurrSoundId;
|
||||
#ifdef USE_MEMBER_POS
|
||||
static IScriptObject *m_pObjectPos;
|
||||
static IScriptObject *m_pObjectAngles;
|
||||
static IScriptObject *m_pCameraPosition;
|
||||
static IScriptObject *m_pGenVector;
|
||||
#endif
|
||||
|
||||
// member script objects (preallocated)
|
||||
static IScriptObject* m_memberSO[SOE_MEMBER_LAST];
|
||||
|
||||
// copy of function from ScriptObjectParticle
|
||||
bool ReadParticleTable(IScriptObject *pITable, struct ParticleParams &sParamOut);
|
||||
|
||||
// pe_params_particle m_RocketParticlePar; // quick fix for hamming rockets
|
||||
//float m_ControlTime;
|
||||
//float m_ControlTimeLimit;
|
||||
//Vec3d m_Control;
|
||||
// char m_tonno[256];
|
||||
public:
|
||||
// Enable/ disable various entity features
|
||||
int EnableProp(IFunctionHandler * pH);
|
||||
int InsertSubpipe(IFunctionHandler * pH);
|
||||
int ChangeAIParameter(IFunctionHandler * pH);
|
||||
int SetAICustomFloat(IFunctionHandler *pH);
|
||||
int ActivatePhysics(IFunctionHandler *pH);
|
||||
int SetHandsIKTarget(IFunctionHandler *pH);
|
||||
int SetDefaultIdleAnimations(IFunctionHandler *pH);
|
||||
int GetVelocity(IFunctionHandler *pH);
|
||||
|
||||
int ApplyImpulseToEnvironment(IFunctionHandler * pH);
|
||||
int RemoveDecals(IFunctionHandler * pH);
|
||||
int SwitchLight(IFunctionHandler * pH);
|
||||
int ForceCharacterUpdate(IFunctionHandler * pH);
|
||||
int Hide(IFunctionHandler * pH);
|
||||
int NoExplosionCollision(IFunctionHandler * pH);
|
||||
|
||||
};
|
||||
|
||||
#endif // !defined(AFX_SCRIPTOBJECTENTITY_H__870B7388_021A_46C0_84B4_734EEB08DE7D__INCLUDED_)
|
||||
|
||||
Reference in New Issue
Block a user