Mr. Hasselhoff
03-26-2011, 12:17 PM
I did not reverse these myself. Credit to UC-forum & GameDeception
BF2 Classes
#ifndef bf2_classes_h
#define bf2_classes_h
#include <map>
#include <list>
#include <vector>
#include <D3dx9math.h>
#include "BF2Defines.h"
using namespace std;
// unfortunately, STL's templates generate objects with different sizes in the
// debug and release versions, so we have to force them to be the same as of
// bf2 by not compiling in debug (I couldn't find a #define that control this
// behavior.)
#ifdef _DEBUG
#error this can't be compiled with the _DEBUG directive
#undef _DEBUG
#define NDEBUG
#endif
#include <windows.h>
#include <D3dx9math.h>
#include <string>
#include <map>
#include <list>
#include <vector>
using namespace std;
class CClassManager;
class CWorldMatrix;
class CDebugTextWriter;
class CRenderer;
class CPostProductionFrameWork;
class CNametagManager;
class CDebugLineDrawer;
class CHeightmapCluster;
class CControlMapManager;
class CControlMap;
class CInputDeviceManger;
class CInputDevice;
class CMouseDevice;
class CRayTest;
class CInputManager;
class CActionBuffer;
class CMaterialManager;
class CMaterial;
class CCollisionDamageCache;
class CPlayerManager;
class CPlayer;
class CSoldierMgr;
class CInfoMgr;
class CScoreBoard;
class CPhysicsManager;
class CPhysicsNode;
class CVehicle;
class CCollisionMesh;
class CObjectManager;
class CObject;
class CObject_Soldier;
class CObject_PlayerControlObject;
class CObject_RotationalBundle;
class CWeapon;
class CObject_Weapon1;
class CObject_Projectile;
class CObject_Target;
class CObject_Camera;
class CObject_Wing;
class CObject_Engine;
class COComponent;
class COComponent_Ammo;
class COComponent_Recoil;
class CGameConfig;
class COComponent_Deviation;
class COComponent_Collision;
class COComponent_Detonation;
class COComponent_Target;
class COComponent_Follow;
class CTemplateManager;
class CTemplate;
class CTemplateInfo;
class CBundleTemplate;
class CTemplate_Soldier;
class CTemplate_PlayerControlableObject;
class CTemplate_GenericFireArm;
class CTemplate_GenericProjectile;
class CTemplate_RotationalBundle;
class CTemplate_Camera;
class CTemplate_Engine;
class CTemplate_Wing;
class CTComponent;
class CTComponent_Ammo;
class CTComponent_Animation;
class CTComponent_Deviation;
class CTComponent_Fire;
class CTComponent_Zoom;
class CTComponent_Recoil;
class CTComponent_Target;
class CTComponent_Follow;
class CTComponent_Detonation;
class CArmor;
class CSkeleton;
class CSkeletonInfo;
class CBone;
class CHudManager;
class CHudMouse;
class CCommander_Assets;
class CMinimap;
class CCrosshair;
class CCamera;
class CGeometry;
class CInputDeviceManger;
class CObject;
class CMaterial;
class CMainConsole;
class CDebugTextWriter;
class CProfileManager;
class CAccount;
class CViewMatrix;
//extern CScoreBoard cScoreBoard;
extern CViewMatrix* cViewMatrix;
extern CClassManager* cManager;
extern CDebugLineDrawer* cLine;
extern CPlayerManager* cPlayerManager;
extern CObjectManager* cObjectManager;
extern CRenderer* cRenderer;
extern CPlayer* cLocal;
extern CDebugTextWriter* cDebugTextWriter;
extern CPhysicsManager* cPhysicsManager;
extern CInputDeviceManger* cInputDeviceManager;
extern CInputManager* cInputManager;
extern CControlMapManager* cControlMapManager;
extern CTemplateManager* cTemplateManager;
extern CHudManager* cHudManager;
extern CCrosshair* cCrosshair;
extern CCommander_Assets* cAssets ;
extern CPostProductionFrameWork* cPostProduction;
extern CActionBuffer* cActionBuffer;
extern CMainConsole* cConsole;
extern float yawW, pitchW;
// extern DWORD wtsfunc;
extern float inputBuffer[255];
extern CDebugTextWriter* cTextWriter;
extern CProfileManager* cProfile;
extern DWORD g_dwWorldToScreenNew;
extern CWeapon* cWeapon;
bool InitObjects();
void* GetObjectFromName(char* name);
PBYTE detourVTable( PDWORD* dwVTable, PBYTE dwHook, INT Index );
void* UpdateDevice();
// bool WINAPI World2Screen(D3DXVECTOR3* pVecInOut);
PBYTE HookVTableFunction( PDWORD* dwVTable, PBYTE dwHook, INT Index );
class CProfileManager
{
public:
char cUnknown1[8];
CAccount* ActiveAccount; //0008
};
class CAccount
{
public:
char cUnknown1[4];
char EMail[16]; //0004
char cUnknown2[12];
char Password[16]; //0020
char cUnknown3[24];
int PID; //0048
char cUnknown[4];
char Name[16]; //0050
};
// class CProfileManager
// {
// public:
// char unknown0[8]; //0x0000
// CAccount* Account; //0x0008
// char unknown12[52]; //0x000C
// };//Size=0x0040(64)
//
// class CAccount
// {
// public:
// char unknown0[72]; //0x0000
// __int32 pid; //0x0048
// char unknown1; //0x004C
// string Name; //0x0050
// char unknown96[56]; //0x0060
// };//Size=0x0098(152)
class CClassManager
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
//virtual void Function12();
virtual void* CreateOverlay( DWORD dwID1 = 0x13C70, DWORD dwID2 = 0x13882, DWORD dwID3 = 0 );
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void* GetObjectByName( const string* name );
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void* GetInternalObjectByName( const string* name );// aimhelper
};
class COverlay
{
public:
virtual void AddRef( void );
virtual int GetRef( void );
virtual void OverlayDestroy( void );
virtual bool bCheckClassUniqueID( DWORD dwUniqueID = 0x13882 );
virtual void OverlayTextureDraw( void );
virtual void ScaleW( float* flBuffer );
virtual void SetDimensions( float* pflBuffer );
virtual void ScaleH( float* flBuffer );
virtual void Overlay_08( void );
virtual float flGetAlpha( void );
virtual void SetAlpha( float flAlpha );
virtual void LoadOverlay( string* pszOverlayName ); // todo... check if bool
virtual void Overlay_12( void );
void SetSize( float flXPos, float flYPos, float flWidth, float flHeight )
{
m_flAlpha = 1.0f;
float flBuffer[ 4 ] = { flWidth / 1000.0f, flHeight / 1000.0f, flWidth / 1000.0f, flHeight / 1000.0f };
m_flXPos = flXPos / 1000.0f;
m_flYPos = flYPos / 1000.0f;
SetDimensions( flBuffer );
}
private:
DWORD m_dwSecondVMT;//004
int m_iUnknown; //0008
float m_flXPos; //000c
float m_flYPos; //0010
float m_flWidth; //0014
float m_flHeight; //0018
__int32 m_iUnknown5; //001C
float m_flAlpha; //0020
int m_iUnknown6; //0024
int m_iUnknown7; //0028
int m_iUnknown8; //002C
int m_iUnknown9; //0030
const char* m_pszObjectName; //0034
int m_iUnknown10; //0038
int m_iUnknown11; //003C
int m_iUnknown12; //0040
};
class CRenderer
{
public:
virtual void AddRef( void ); //
virtual void GetRef( void ); //
virtual void function2(); //
virtual void function3(); //
virtual void function4(); //
virtual void function5(); //
virtual void function6(); //
virtual void function7(); //
virtual void function8(); //
virtual void function9(); //
virtual void RenderScreen (void* param1, void* param2, void* param3); //
virtual void function11(); //
virtual void function12(); //
virtual void function13(); //
virtual void function14(); //
virtual void function15(); //
virtual void function16(); //
virtual void function17(); //
virtual void function18(); //
virtual void function19(); //
virtual void function20(); //
virtual void function21(); //
virtual void function22(); //
virtual void function23(); //
virtual void function24(); //
virtual void DrawConsole( void ); //
virtual void function26(); //
virtual void function27(); //
virtual void function28(); //
virtual void function29(); //
virtual void function30(); //
virtual void function31(); //
virtual void function32(); //
virtual void function33(); //
virtual void function34(); //
virtual void function35(); //
virtual void function36(); //
virtual void function37(); //
virtual void function38(); //
virtual void function39(); //
virtual void function40(); //
virtual void function41(); //
virtual void function42(); //
virtual void function43(); //
virtual void function44(); //
virtual void function45(); //
virtual void function46(); //
virtual void function47(); //
virtual void function48(); //
virtual void function49(); //
virtual void function50(); //
virtual void function51(); //
virtual void function52(); //
virtual void function53(); //
virtual BYTE DrawOverlay( void ); //
virtual BYTE Present( int code ); //
char unknown0[12]; //0x0000
void* m_pDevice; //0x000C
char unknown16[20]; //0x0010
__int32 flWindowWidth; //0x0024
__int32 flWindowHeight; //0x0028
char unknown44[204]; //0x002C
CWorldMatrix* GetWorldMatrix; //0x00F8
char unknown252[1020]; //0x00FC
float flCurrentViewDistance; //0x04F8 Max = 5.0
char unknown1276[148]; //0x04FC
float TweakNearPlane; //0x0590 Removes the wall if someone is Xmeters near the wall
char unknown1428[280]; //0x0594
__int32 DrawFramesPerSecond; //0x06AC
char unknown1712[1]; //0x06B0
BYTE DrawIngameHud; //0x06B1
BYTE DrawIngameSky; //0x06B2
BYTE DrawIngameSunFlare; //0x06B3
BYTE RenderConsole; //0x06B4 if = 0 it doesn't Render the Console
BYTE DrawIngamePostProduction; //0x06B5
char unknown1718[13]; //0x06B6
BYTE RemoveObjects; //0x06C3 Removes objects form X Meters ( I think )
};//Size=0x06C4(1732)
class CWorldMatrix
{
public:
char unknown0[944]; //0x0000
float matrix[26]; //0x03B0
};
class CNametagManager
{
public:
virtual void Function0();
char unknown0[992];
CObject* aimed_object; //03E4
};
class CHeightmapCluster
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void Function22();
virtual void Function23();
virtual float GetSeaWaterLevel(void);
virtual void Function25();
virtual void Function26();
virtual void Function27();
virtual void Function28();
virtual void Function29();
virtual void Function30();
virtual void Function31();
virtual void Function32();
virtual void Function33();
virtual void Function34();
virtual void Function35();
virtual void Function36();
virtual void Function37();
float GetWaterHeightAtCoord( float x, float z );
};
class CPostProductionFrameWork
{
public:
virtual void Function0();
byte unknown0[24];
BYTE Unknown1; //001C
BYTE Unknown2; //001D
BYTE Unknown3; //001E
BYTE Unknown4; //001F
float fogColor_r; //0020
float fogColor_g; //0024
float fogColor_b; //0028
float fogStart; //002C
float fogEnd; //0030
float fogBase1; //0034
float fogBase2; //0038
};
//////////////////////////////////////////////////////////////////////////
class CControlMapManager
{
public:
virtual void Function0();
byte unknown0[32];
CControlMap* active_controlmap; //0024
};
class CControlMap
{
public:
virtual void Function0();
byte unknown0[4];
string map_name; //0008
byte unknown3[28];
float Unknown4; //0040
float Unknown5; //0044
float Unknown6; //0048
BYTE invertMouse; //004C
byte unknown7[3];
float mouse_sensitivity; //0050
float Unknown8; //0054
float deg_per_pixel_x; //0058
float deg_per_pixel_y; //005C
float Unknown9; //0060
float Unknown10; //0064
float yaw_factor; //0068
float pitch_factor; //006C
};
class CInputDeviceManger
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual CInputDevice* GetDevice(int code);
byte unknown0[4];
map<int, CInputDevice*> devices; //0008
};
class CInputDevice
{
};
class CMouseDevice: CInputDevice
{
public:
byte unknown0[16];
__int32 actual_buttons; //0010
__int32 last_buttons; //0014
float disp_x; //0018
float disp_y; //001C
byte unknown1[16];
BYTE active; //0030
byte unknown2[3];
float Unknown3; //0034
byte unknown4[16];
float Unknown5; //0048
};
class CActionBuffer
{
public:
float inputKeys[64]; //0000
__int32 Unknown1; //0100
__int32 Unknown2; //0104
__int32 Unknown3; //0108
__int32 Unknown4; //010C
BYTE Unknown5; //0110
};
//////////////////////////////////////////////////////////////////////////
class CMaterialManager
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual CMaterial* GetActiveMaterial(void);
virtual CMaterial* GetMaterial(unsigned int mat_num);
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function22();
virtual float GetCollisionDamageMultiplier( int projectile, int collided);
char unknown0[4];
list<CMaterial*> material_list; //0008
__int32 active_material; //0014
};
class CMaterial
{
public:
virtual void Function0();
string name; //0004
__int32 type; //0020
float friction; //0024
float elasticity; //0028
float resistance; //002C
float projectileCollisionHardness; //0030
float damageLoss; //0034
float minDamageLoss; //0038
float maxDamageLoss; //003C
float penetrationDeviation; //0040
BYTE overridNeverPenetrate; //0044
BYTE hasWaterPhysics; //0045
BYTE isBarbWire; //0046
BYTE isOneSided; //0047
BYTE isSeeThrough; //0048
};
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
class List
{
public:
List* ptr;
char unknown1[4];
CPlayer* player;
};
class CPlayerManager
{
public:
virtual void AddRef();
virtual int GetRef();
virtual void Release();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual CPlayer* GetPlayerByIndex(int Index);
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual CPlayer* GetLocalPlayer();
char unknown0[12];
List* player_list; //0010
char unknown2[76];
CPlayer* LocalPlayer; //0x0060
};
class CPlayer
{
public:
virtual void AddRef();
virtual int GetRef();
virtual void Release();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual char* GetName();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void* Vehicle();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void Remote();
virtual void Function23();
virtual bool AI();
virtual void Function25();
virtual bool Alive();
virtual void Function27();
virtual void Suicide();
virtual bool Connected();
virtual void Function30();
virtual void Function31();
virtual void Function32();
virtual void Function33();
virtual void Function34();
virtual void Function35();
virtual void Function36();
virtual void Function37();
virtual void Function38();
virtual void Function39();
virtual void* GetKit();
virtual void Function41();
virtual void Function42();
virtual void Function43();
virtual void Function44();
virtual void Function45();
virtual void Function46();
virtual void Function47();
virtual void Function48();
virtual void Function49();
virtual void Function50();
virtual void Function51();
virtual void Function52();
virtual void Function53();
virtual void Function54();
virtual int GetTeam();
virtual void Function56();
virtual void Function57();
virtual void tts();
virtual void Function59();
virtual void Function60();
virtual bool Mandown();
virtual void Function62();
virtual void Function63();
virtual int SquadID();
virtual void Function65();
virtual bool IsCommander();
virtual void Function67();
virtual void Function68();
virtual void Function69();
virtual void Function70();
virtual void Function71();
virtual void Function72();
virtual void Function73();
virtual void Function74();
virtual void Function75();
virtual bool isql();
virtual void Function77();
virtual bool IsInsideCP();
virtual void Function79();
virtual void Function80();
virtual void Function81();
virtual void sgr();
virtual void Function83();
virtual void Function84();
virtual void Function85();
virtual int Ping();
virtual void Function87();
virtual void Function88();
virtual void Function89();
virtual void Function90();
virtual int FlagHolder();
virtual CCamera* GetViewMatrix();
virtual void Function93();
virtual void Function94();
//virtual void Function95();
virtual CCamera* GetPlayerView(void);
virtual void Function96();
virtual void Function97();
virtual void Function98();
virtual void Function99();
virtual void Function100();
virtual void Function101();
virtual void Function102();
virtual void Function103();
virtual void Function104();
virtual void Function105();
virtual void Function106();
virtual void Function107();
virtual void Function108();
virtual void Function109();
virtual void Function110();
virtual void Function111();
virtual void Function112();
virtual void Function113();
virtual void Function114();
virtual void Function115();
virtual void Function116();
virtual void Function117();
virtual void Function118();
virtual void Function119();
virtual void Function120();
virtual void Function121();
virtual void Function122();
virtual void Function123();
virtual void Function124();
virtual void Function125();
virtual void Function126();
virtual void Function127();
virtual void Function128();
virtual void Function129();
virtual void Function130();
virtual void Function131();
virtual void Function132();
virtual void Function133();
virtual void Function134();
virtual void Function135();
virtual void Function136();
virtual void Function137();
virtual void Function138();
virtual void Function139();
virtual void Function140();
virtual void Function141();
virtual void Function142();
virtual void Function143();
virtual void Function144();
virtual void Function145();
virtual void Function146();
virtual void Function147();
virtual void Function148();
virtual void Function149();
virtual void Addr();
virtual void Function151();
virtual void Function152();
virtual void Function153();
virtual void Function154();
virtual void Function155();
virtual void Function156();
virtual void Function157();
virtual void Function158();
virtual void Function159();
virtual void Function160();
virtual void Function161();
virtual void Function162();
virtual void Function163();
virtual void Function164();
virtual void Function165();
virtual void Function166();
virtual int ProfileID();
virtual void Function168();
virtual void Function169();
virtual void Function170();
virtual void Function171();
virtual void Function172();
virtual void Function173();
virtual void Function174();
virtual void Function175();
virtual void Function176();
virtual void Function177();
virtual void Function178();
virtual void Function179();
virtual void Function180();
virtual void Function181();
virtual void Function182();
virtual void Function183();
virtual void Function184();
//byte unknown0[88];
byte unknown0[84];
__int32 kit_num; //0058
byte unknown1[4];
string player_name; //0060
byte unknown3[4];
CInfoMgr* player_object; //0080
CCamera* player_view; //0084
CCamera* multiplayer_free_camera; //0088
byte unknown4[1];
BYTE CommanderMenu; //008D
BYTE CommanderMenu2; //008E
byte unknown5[37];
__int32 vehicle_seat_num; //00B4
__int32 player_code; //00B8
byte unknown6[4];
float view_fov; //00C0
float zoom1;
float zoom2;
CSoldierMgr* player_soldier; //00CC
byte unknown8[5];
BYTE player_alive; //00D5
byte unknown9[2];
__int32 player_team; //00D8
byte unknown10[12];
BYTE player_down; //00E8
byte unknown11[15];
DWORD player_ping; //00F8
byte unknown12[16];
__int32 squad_num; //010C
BYTE commander; //0110
BYTE squad_leader; //0111
byte unknown13[18];
BYTE inside_control_point; //0124
byte unknown14[95];
BYTE primary_fire_down; //0184
BYTE secondary_fire_down; //0185
byte unknown15[1];
BYTE sprinting; //0187
BYTE sprinting_cur; //0188
//byte unknown16[175];
BYTE Unknown16; //0189
BYTE Unknown17; //018A
BYTE Unknown18; //018B
byte unknown19[64];
__int32 weapon_online_ammo; //01CC
byte unknown20[8];
__int32 weapon_online_max_ammo; //01D8
byte unknown21[8];
__int32 weapon_online_firemode; //01E4
byte unknown22[8];
__int32 weapon_online_zoomed; //01F0
byte unknown23[8];
__int32 weapon_online_magazines; //01FC
byte unknown24[8];
__int32 weapon_online_max_magazines; //0208
byte unknown25[8];
float weapon_online_heat_primary; //0214
byte unknown26[32];
__int32 weapon_fire_num; //0238
__int32 weapon_ammo; //023C
byte unknown27[8];
__int32 weapon_fire_mode; //0248
byte unknown28[4];
__int32 vehicle_pilot; //0250
BYTE weapon_finite_ammo; //0254
byte unknown29[3];
float weapon_heat_primary; //0258
float weapon_heat_secondary; //025C
};
class CSoldierMgr
{
public:
virtual void Function0();
CObject_Soldier* ObjectInfo; //0004
};
class CInfoMgr
{
public:
virtual void Function0();
CObject* ObjectInfo; //0004
};
class CScoreboard
{
public:
__int32 totalscore; //0000
__int32 teamworkscore; //0004
char unknown0[8];
__int32 deaths; //0010
__int32 kills; //0014
__int32 teamkills; //0018
char unknown1[4];
__int32 rank; //0020
};
//////////////////////////////////////////////////////////////////////////
class CPhysicsManager
{
public:
byte unknown0[8];
float gravity; //0008
};
class CPhysicsNode
{
public:
//byte unknown0[32];
float unknown0[8];
D3DXVECTOR3 impulse_force; //0020
//float Unknown3; //002C
//float Unknown4; //0030
//float Unknown5; //0034
//float u1[3];
//byte unknown6[52];
D3DXVECTOR3 gravity;
D3DXVECTOR3 obstacle_impulse;
D3DXVECTOR3 unknown3;
float unknown_multi31;
float mass;
float gravity_multip;
float unknown5[4];
D3DXVECTOR3 position; //006C
D3DXVECTOR3 speed; //0078
//byte unknown11[16];
float unknown_multi4;
float unknown6[3];
D3DXVECTOR3 rotation; //0094
};
class CCollisionMesh
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual BYTE Intersect( int unknown0_0, int unknown1_0,
D3DXMATRIX* in_object_matrix, D3DXMATRIX* in_object_matrix_transpose,
D3DXVECTOR3* in_ray_start, D3DXVECTOR3* in_ray_dir_end,
D3DXVECTOR3* out_inter_normal, D3DXVECTOR3* out_inter_point,
float* out_unknown2, float* out_unknown3,
int* out_material, BOOL in_unknown4_0, BOOL in_unknown5_1, BOOL in_unknown6_1 );
};
class CVehicle
{
public:
char unknown0[394];
string VehicleName; //0190
};
class CHealth
{
public:
char unknown0[16];
float Health; //0010
float unknown1; //0014
float Height; //0018
__int32 FloorType1; //001C
__int32 FloorType2; //0020
};
class CViewMatrix
{
public:
char unknown0[184];
float matrix[16]; //00B8
};
//////////////////////////////////////////////////////////////////////////
class CObjectManager
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual CObject* GetObjectFromGrid(UINT Index);
virtual map<int,CObject*>* create_object_map();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void Function22();
virtual void Function23();
virtual void Function24();
virtual void Function25();
virtual BYTE Intersect( CObject** inter_obj, D3DXVECTOR3* inter_point, D3DXVECTOR3* inter_angle, int* inter_mat, D3DXVECTOR3* ray_start, D3DXVECTOR3* ray_end, CRayTest* ray, BOOL unk1, BOOL unk2, BOOL unk3, BOOL unk4, BOOL unk5 = FALSE );
virtual void Function27();
virtual void Function28();
virtual void Function29();
virtual void Function30();
virtual void Function31();
virtual void Function32();
virtual void Function33();
virtual void Function34();
virtual CObject* GetLocalObject();
char unknown0[28];
CObject* active_object; //0020
char unknown1[60];
vector<CObject*> object_list; //0060
};
class CObject
{
public:
virtual void function0();
DWORD flags;
char z_cUnknown0[4];
CObject* object_root;
__int32 object_id;
CTemplate* object_template;
char z_cUnknown1[16];
CObject* object_hierarchy_root;
CObject* object_hierarchy_left;
CObject* object_hierarchy_right;
char z_cUnknown2[4];
CGeometry* object_mesh;
CArmor* Armor;
CCollisionMesh* object_collision;
CPhysicsNode* Physics;
char z_cUnknown3[64];
D3DXMATRIX Matrix;
char z_cUnknown4[32];
float boundingSphereRadius;
char z_cUnknown5[28];
string object_name;
char z_cUnknown6[40];
__int32 object_end;
};
class CObject_Soldier: public CObject
{
public:
char z_cUnknown8[104]; //0x0150
CWeapon* ActiveWeapon; //0x01B8
char z_cUnknown9[8]; //0x01BC
CWeapon* PrevWeapon; //0x01C4
char z_cUnknown10[24]; //0x01C8
__int32 SelectedWeapon; //0x01E0
char z_cUnknown11[64]; //0x01E4
float DegreesRight; //0x0224
float RightSpeed; //0x0228
float ForwardSpeed; //0x022C
__int32 Posture; //0x0230
__int32 Posture_cur; //0x0234
float degrees_up; //0x0238
float HeadPitchChange; //0x023C
float HeadYaw; //0x0240
float HeadYawChange; //0x0244
char z_cUnknown12[4]; //0x0248
__int32 PostureKey; //0x024C
char z_cUnknown13[56]; //0x0250
CSkeleton* skeleton1p; //0x0288
char z_cUnknown14[4]; //0x028C
CSkeleton* skeleton3p; //0x0290
};
class CObject_PlayerControlObject: public CObject
{
public:
byte unknown10[32];
CRef<CPlayer>* vehicle_player; //0170
CRef<CObject_Soldier>* vehicle_soldier; //0174
byte unknown11[132];
CWeapon* vehicle_primary_weapon; //01FC
CWeapon* vehicle_secondary_weapon; //0200
};
class CObject_RotationalBundle: public CObject
{
public:
byte unknown10[8];
D3DXVECTOR3 rotation; //0158
D3DXVECTOR3 rot_speed; //0164
D3DXVECTOR3 rot_mouse; //0170
};
class CWeapon : public CObject
{
public:
char z_cUnknown7[40];
BYTE WeaponActivated;
char z_cUnknown8[27];
COComponent_Ammo* AmmoComponent;
COComponent_Recoil* RecoilComponent;
COComponent_Target* Target;
COComponent_Deviation* weapon_deviation;
char z_cUnknown9[20];
float weapon_heat_primary;
float weapon_heat_secondary;
char z_cUnknown10[12];
BYTE weapon_is_controlled;
};
class CObject_Projectile: public CObject
{
public:
virtual void Function0();
char unknown0[560];
__int32 timeToLive_0; //0234
float timeToLive_1; //0238
float timeToLive_2; //023C
float timeToLive_3; //0240
char unknown9[120];
float damage; //02BC
};
class CObject_Target: public CObject
{
};
class CObject_Camera: public CObject_RotationalBundle
{
};
class CObject_Wing: public CObject_RotationalBundle
{
};
class CObject_Engine: public CObject
{
};
class COComponent
{
};
class COComponent_Target
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void Function22();
virtual void Function23();
virtual void Function24();
virtual void Function25();
virtual void Function26();
virtual void Function27();
virtual void Function28();
virtual void Function29();
virtual void Function30();
virtual void Function31();
virtual void Function32();
virtual void Function33();
virtual void Function34();
virtual void Function35();
virtual void Function36();
virtual void Function37();
virtual void Function38();
virtual void Function39();
virtual void Function40();
virtual void TargetByIntersection( D3DXVECTOR3 from, D3DXVECTOR3 to);
virtual void Function42();
virtual void Function43();
virtual void Function44();
virtual void Function45();
virtual CObject_Projectile* GetGuidedProjectile(void);
char unknown0[24];
CRef<CObject>* target_object; //001C
char unknown1[20];
BYTE target_locked; //0034
BYTE target_active; //0035
char unknown2[2];
CTComponent_Target* target_template; //0038
char unknown3[8];
CRef<CObject_Projectile>* target_projectile; //0044
};
class COComponent_Recoil: public COComponent
{
public:
//char unknown0[8];
byte unknown0[4]; // maybe vtable
float unknown00;
float recoilForce; //0008
float recoilSpeed; //000C
//char unknown1[4];
float unknown1;
float recoilSize; //0014
//char unknown2[4];
float unknown2;
float recoilSpeedGB; //001C
float cameraRecoilSpeed; //0020
float cameraRecoilSize; //0024
};
class COComponent_Ammo: public COComponent
{
public:
char unknown0[4];
vector<int> cartridges; //0004
char unknown2[44];
BYTE cartridge_in_slot; //0040
BYTE slot_cartridge_empty; //0041
};
class DeviX
{
public:
float f1; // 0
float f2; // 4
float f3; // 8
float f4; // c
float f5; // 10
float f6; // 14
float f7; // 18
float f8; // 1C
};
class CGameConfig
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void Function22();
virtual void Function23();
virtual void Function24();
virtual void Function25();
virtual DWORD counter(); // < - No Spread Function ... .
};
class COComponent_Deviation: public COComponent
{
public:
virtual void function0(); //
virtual void function1(); //
virtual void function2(); //
virtual void function3(); //
virtual void function4(); //
virtual void function5(); //
virtual void function6(); //
virtual void function7(); //
virtual void function8(); //
virtual void function9(); //
virtual void function10(); //
virtual void function11(); //
virtual void function12(); //
virtual void function13(); //
virtual void CalculateDeviation(); //
virtual void function15(); //
virtual void function16(); //
virtual void function17(); //
virtual void function18(); //
virtual void function19(); //
virtual void function20(); //
virtual void function21(); //
virtual void function22(); //
virtual void function23(); //
virtual void function24(); //
virtual void function25(); //
virtual void function26(); //
virtual void function27(); //
virtual void function28(); //
virtual void function29(); //
virtual void function30(); //
virtual void function31(); //
virtual void function32(); //
virtual void function33(); //
virtual void function34(); //
virtual void function35(); //
virtual void function36(); //
virtual void function37(); //
virtual void function38(); //
virtual void function39(); //
virtual float GetTotalDeviation(); //
virtual void function41(); //
virtual void function42(); //
virtual void function43(); //
virtual void function44(); //
virtual void function45(); //
virtual void function46(); //
virtual void function47(); //
virtual void function48(); //
virtual void function49(); //
virtual void function50(); //
virtual void function51(); //
virtual void function52(); //
virtual void function53(); //
virtual void function54(); //
virtual void function55(); //
virtual void function56(); //
float total_deviation; //0x0004
float ID026A2048; //0x0008
float up_devi_add; //0x000C
float right_devi_add; //0x0010
float ID026A7670; //0x0014
DeviX* aux_add; //0x0018
float ID026A7770; //0x001C
float ID02718270; //0x0020
float ID0267DFA0; //0x0024
float ID0267E020; //0x0028
float ID0267E0A0; //0x002C
float ID0270F6C0; //0x0030
float ID026B1D20; //0x0034
char unknown56[4]; //0x0038
float ID0270E150; //0x003C
void* ID026B1CA0; //0x0040
};
class CObject_Weapon2
{
public:
CObject *weapon_root;
};
class CObject_Weapon1
{
public:
virtual void Function0(); // 0
byte unknown0[112]; // 4
CRef<CObject_Weapon2> w1; //74
};
class COComponent_Collision: public COComponent
{
public:
};
class COComponent_Detonation: public COComponent
{
public:
};
class COComponent_Follow: public COComponent
{
public:
virtual void Function0();
char unknown0[4];
CTComponent_Follow* follow_template; //0008
float follow_change_yaw; //000C
float follow_change_pitch; //0010
CRef<CObject_Target>* follow_target; //0014
};
//////////////////////////////////////////////////////////////////////////
class CTemplateManager
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void Function22();
virtual void Function23();
virtual void Function24();
virtual void Function25();
byte unknown0[80];
CTemplate* active_template; //0054
};
class CTemplate
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual int GetTemplateType(void);
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
//virtual void Function16();
virtual int getTemplateId(void); //
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual CTComponent* GetComponent(int code);
char unknown4[8]; //0x0004
string Name; //0x000C
char unknown40[592]; //0x0028
float weapon_velocity; //0x0278
char unknown636[12]; //0x027C
};//Size=0x0288(648)
class CTemplateInfo
{
public:
byte unknown0[4];
string template_name; //0004
CRef<CTemplate>* template_pointer;
};
class CTemplate_Soldier: public CTemplate
{
public:
byte unknown6[184];
CSkeleton* skeleton; //02E0
};
class CTemplate_PlayerControlableObject: public CTemplate
{
public:
byte unknown6[104];
void* pco_seat_animation; //0290
};
class CTemplate_GenericFireArm: public CTemplate
{
public:
char unknown01[80];
float velocity;
char unknown02[12];
string Name2;
char unknown03[28];
CTemplate_GenericProjectile* Projectile;
};
class CTemplate_GenericProjectile: public CTemplate
{
public:
byte unknown8[12];
__int32 timeToLive_0; //0234
float timeToLive_1; //0238
float timeToLive_2; //023C
float timeToLive_3; //0240
byte unknown9[120];
float damage; //02BC
};
class CTemplate_RotationalBundle: public CTemplate
{
public:
byte unknown5[4];
D3DXVECTOR3 minRotation; //022C
D3DXVECTOR3 maxRotation; //0238
D3DXVECTOR3 PivotPosition; //0244
D3DXVECTOR3 max_speed; //0250
D3DXVECTOR3 maxResetSpeed; //025C
D3DXVECTOR3 acceleration; //0268
D3DXVECTOR3 deAcceleration; //0274
D3DXVECTOR3 continousRotationSpeed; //0280
DWORD inputToYaw; //028C
DWORD inputToPitch; //0290
DWORD inputToRoll; //0294
BYTE automaticReset; //0298
BYTE snapToZeroOnNoInput; //0299
BYTE useDeAcceleration; //029A
BYTE Unknown22; //029B
BYTE automaticYawStabilization; //029C
BYTE automaticPitchStabilization; //029D
BYTE rememberExcessInput; //029E
BYTE lesserYawAtSpeedSet; //029F
float lesserYawAtSpeed; //02A0
BYTE startAutoRotateOnEnter; //02A4
BYTE debugAutoRotate; //02A5
char unknown23[2];
D3DXVECTOR2 regulateYaw; //02A8
D3DXVECTOR2 regulatePitch; //02B0
D3DXVECTOR2 regulateRoll; //02B8
};
class CTemplate_Camera: public CTemplate_RotationalBundle
{
public:
char unknown0[8];
__int32 cameraId; //02C8
BYTE CVMInside; //02CC
BYTE CVMChase; //02CD
BYTE CVMFlyBy; //02CE
BYTE CVMTrace; //02CF
BYTE CVMExternTrace; //02D0
BYTE CVMFrontChase; //02D1
BYTE CVMNose; //02D2
char unknown14[1];
D3DXVECTOR3 nosePos; //02D4
BYTE toggleMouseLook; //02E0
char unknown16[3];
float followStiffness; //02E4
float chaseDistance; //02E8
float chaseAngle; //02EC
D3DXVECTOR3 chaseOffset; //02F0
char unknown23[140];
float worldFOV; //038C
float insideFOV; //0390
};
class CTemplate_Engine: public CTemplate_RotationalBundle
{
public:
char unknown26[440];
__int32 numberOfGears; //0478
float differential; //047C
float torque; //0480
char unknown27[444];
__int32 engineType; //0640
char unknown28[20];
BYTE Unknown29; //0658
BYTE pureRotational; //0659
char unknown30[26];
float spinWhenNoEngineInAir; //0674
};
class CTemplate_Wing: public CTemplate_RotationalBundle
{
public:
char unknown0[4];
float wingLift; //02C0
float flapLift; //02C4
float pitchOffset; //02C8
D3DXVECTOR3 positionOffset; //02CC
BYTE liftRegulated; //02D8
char unknown28[3];
float regulateToLift; //02DC
float wingToRegulatorRatio; //02E0
float startDelay; //02E4
};
class CTComponent
{
public:
};
class CTComponent_Ammo: public CTComponent
{
public:
byte unknown0[8];
__int32 ammoType; //0008
float reloadTime; //000C
__int32 reloadTime_1; //0010
float firstShotExtraTime; //0014
__int32 firstShotExtraTime_1; //0018
float lastShotExtraTime; //001C
__int32 lastShotExtraTime_1; //0020
float changeMagAt; //0024
BYTE autoReload; //0028
BYTE instantReloadOnEnable; //0029
byte unknown1[2];
float minimumTimeUntilReload; //002C
__int32 minimumTimeUntilReload_1; //0030
__int32 nrOfMags; //0034
__int32 magSize; //0038
__int32 reloadAmount; //003C
BYTE toggleWhenNoAmmo; //0040
BYTE reloadWithoutPlayer; //0041
};
class CTComponent_Animation: public CTComponent
{
public:
byte unknown0[16];
BYTE useShiftAnimation; //0010
byte unknown1[3];
float shiftDelay; //0014
};
class CTComponent_Deviation: public CTComponent
{
public:
byte unknown0[8];
float fireDevAdd; //0008
float fireDevSub; //000C
float fireDevMax; //0010
float minDev; //0014
float subProjectileDev; //0018
byte unknown1[4];
float turnDevAddPitch; //0020
float turnDevAddYaw; //0024
float turnDevSub; //0028
float turnDevMax; //002C
float speedDevAddForward; //0030
float speedDevAddStrafe; //0034
float speedDevSub; //0038
float speedDevMax; //003C
float miscDevAddJump; //0040
float miscDevSub; //0044
float miscDevMax; //0048
float devModStand; //004C
float devModCrouch; //0050
float devModLie; //0054
float devModZoom; //0058
};
class CTComponent_Fire: public CTComponent
{
public:
byte unknown0[8];
__int32 fireStartDelay_0; //0008
float fireStartDelay_1; //000C
float fireStartDelay_2; //0010
__int32 fireStartDelay_3; //0014
byte unknown1[4];
float fireLaunchDelay; //001C
__int32 fireLaunchDelay_1; //0020
byte unknown2[24];
__int32 roundsPerMinute; //003C
byte unknown3[4];
BYTE fireInCameraDof; //0044
BYTE fireInCameraDofLocked; //0045
byte unknown4[2];
__int32 batchSize; //0048
__int32 burstSize; //004C
__int32 fireInput; //0050
__int32 altfireInput; //0054
__int32 ignoreFireButton; //0058
D3DXVECTOR3 projectileStartPosition; //005C
byte unknown7[12];
__int32 maxProjectilesInWorld; //0074
byte unknown8[20];
BYTE busyUntilButtonRelease; //008C
BYTE onlyFireWhenProne; //008D
};
class CTComponent_Recoil: public CTComponent
{
public:
//byte unknown0[12];
byte unknown0[4]; // vtable??
int unknown00;
int unknown01;
__int32 recoilForceUp_0; //000C
float recoilForceUp_1; //0010
float recoilForceUp_2; //0014
__int32 recoilForceUp_3; //0018
//byte unknown1[4];
int unknown1;
__int32 recoilForceLeftRight_0; //0020
float recoilForceLeftRight_1; //0024
float recoilForceLeftRight_2; //0028
__int32 recoilForceLeftRight_3; //002C
//byte unknown2[4];
int unknown2;
BYTE hasRecoilForce; //0034
BYTE goBackOnRecoil; //0035
//byte unknown3[2];
short unknown3;
float zoomModifier; //0038
__int32 recoilGraphFrameCount; //003C
float recoilGraphExponent; //0040
float recoilGraphTotalMovement; //0044
};
class CTComponent_Target: public CTComponent
{
public:
byte unknown0[12];
__int32 targetInput; //000C
byte unknown1[40];
string launcher_tv; //0038
BYTE Unknown4; //0054
BYTE sendVehicleLockWarning; //0055
byte unknown5[30];
BYTE connectionEffectOnlyWhenZoomed; //0074
byte unknown6[3];
float maxDistance; //0078
BYTE setTargetAtMaxDistance; //007C
BYTE useCameraDirectionToTarget; //007D
byte unknown7[2];
__int32 targetSystem; //0080
byte unknown8[4];
float lockAngle; //0088
float lockDelay; //008C
__int32 lockDelay_1; //0090
float looseLockDelay; //0094
__int32 looseLockDelay_1; //0098
};
class CTComponent_Zoom: public CTComponent
{
public:
byte unknown0[8];
__int32 zoomInput; //0008
__int32 onlyZoomWhenProne; //000C
byte unknown1[20];
float zoomDelay; //0024
__int32 zoomDelay_1; //0028
__int32 zoomLod; //002C
__int32 zoomOutAfterFire; //0030
float changeFovDelay; //0034
__int32 ChangeFovDelay_1; //0038
float mouseSpeedMod; //003C
__int32 disableMuzzleWhenZoomed; //0040
};
class CTComponent_Detonation: public CTComponent
{
public:
byte unknown0[80];
__int32 explosionMaterial; //0050
float explosionForce; //0054
float explosionYMod; //0058
float explosionRadius; //005C
byte unknown1[4];
float flashbangRadiusWithNightVision; //0064
byte unknown2[20];
float explosionDamage; //007C
byte unknown3[56];
float flashbangMinAlpha; //00B8
float flashbangMaxAlpha; //00BC
float flashbandMaxRampTime; //00C0
byte unknown4[12];
float flashbangMaxHealTime; //00D0
};
class CTComponent_Follow: public CTComponent
{
public:
char unknown0[12];
float maxYaw; //000C
float maxPitch; //0010
float changeYaw; //0014
float changePitch; //0018
float minDist; //001C
};
//////////////////////////////////////////////////////////////////////////
class CArmor
{
public:
byte unknown0[16];
float Health; //0010
};
class CSkeleton
{
public:
byte unknown0[4];
CSkeletonInfo* unk_info; //0004
CBone* bones; //0008
byte unknown1[4];
D3DXMATRIX* matrices; //000C
__int32 number_of_bones; //0010
};
class CSkeletonInfo
{
public:
D3DXMATRIX matrix; //0000
__int32 Unknown1; //0040
__int8 Unknown2; //0044
__int8 Unknown3; //0045
WORD Unknown4; //0046
};
class CBone
{
public:
__int32 bone_num; //0000
__int16 bone_code; //0004
__int16 parent; //0006
__int32 unknown; //0008
float offset_x; //000C
float offset_y; //0010
float offset_z; //0014
float length; //0018
float radius; //001C
__int32 material; //0020
};
class CTVCrosshair
{
public:
char unknown0[56]; //0x0000
float mouseX; //0x0038
float mouseY; //0x003C
float unknown1; //0x0040
float unknown2; //0x0044
};//Size=0x0048(72)
//.rdata:00880EE8 aHudmanager db 'HudManager',0
class CHudManager
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void Function22();
virtual void Function23();
virtual void Function24();
virtual void Function25();
virtual void Function26();
virtual void Function27();
virtual void Function28();
virtual void Function29();
virtual void Function30();
virtual void Function31();
virtual void Function32();
virtual void Function33();
virtual void Function34();
virtual void Function35();
virtual void Function36();
virtual void Function37();
virtual void Function38();
virtual void Function39();
virtual void Function40();
virtual void Function41();
virtual void Function42();
virtual void Function43();
virtual void Function44();
virtual void Function45();
virtual void Function46();
virtual void Function47();
virtual void Function48();
virtual void Function49();
virtual void Function50();
virtual void Function51();
virtual void Function52();
virtual void Function53();
virtual void Function54();
virtual void Function55();
virtual void Function56();
virtual void Function57();
virtual void Function58();
virtual void Function59();
virtual void Function60();
virtual void Function61();
virtual void Function62();
virtual void Function63();
virtual void Function64();
virtual void Function65();
virtual void Function66();
virtual void Function67();
virtual void Function68();
virtual void Function69();
virtual void Function70();
virtual void Function71();
virtual void Function72();
virtual void Function73();
virtual void Function74();
virtual void Function75();
virtual void Function76();
virtual void Function77();
virtual void Function78();
virtual void Function79();
virtual void Function80();
virtual void Function81();
virtual void Function82();
virtual void Function83();
virtual void Function84();
virtual void Function85();
virtual void Function86();
virtual void Function87();
virtual void Function88();
virtual void Function89();
virtual void Function90();
virtual void Function91();
virtual void Function92();
virtual void Function93();
virtual void Function94();
virtual void Function95();
virtual void Function96();
virtual void Function97();
virtual void Function98();
virtual void Function99();
virtual void Function100();
virtual void Function101();
virtual void Function102();
virtual void Function103();
virtual void Function104();
virtual void Function105();
virtual void Function106();
virtual void Function107();
virtual void Function108();
virtual void Function109();
virtual void Function110();
virtual void Function111();
virtual void Function112();
virtual void Function113();
virtual void Function114();
virtual void Function115();
virtual void Function116();
virtual void Function117();
virtual void Function118();
virtual void Function119();
virtual void Function120();
virtual void Function121();
virtual void Function122();
virtual void Function123();
virtual void Function124();
virtual void Function125();
virtual void Function126();
virtual void Function127();
virtual void Function128();
virtual void Function129();
virtual void Function130();
virtual void Function131();
virtual void Function132();
virtual void Function133();
virtual void Function134();
virtual void Function135();
virtual void Function136();
virtual void Function137();
virtual void Function138();
virtual void Function139();
virtual void Function140();
virtual void Function141();
virtual void Function142();
virtual void Function143();
virtual void Function144();
virtual void Function145();
virtual void Function146();
virtual void Function147();
virtual void Function148();
virtual void Function149();
virtual void Function150();
virtual void Function151();
virtual void Function152();
virtual void Function153();
virtual void Function154();
virtual void Function155();
virtual void Function156();
virtual void Function157();
virtual void Function158();
virtual void Function159();
virtual void Function160();
virtual void Function161();
virtual void Function162();
virtual void Function163();
virtual void Function164();
virtual void Function165();
virtual void Function166();
virtual void Function167();
virtual void Function168();
virtual void Function169();
virtual void Function170();
virtual void Function171();
virtual void Function172();
virtual void Function173();
virtual void Function174();
virtual void Function175();
virtual void ResignCommander(); //0x2C0
char unknown0[240];
CTVCrosshair* TVCrosshair; //00F4
char unknown1[68];
CCommander_Assets* assets; //013C
char unknown2[272];
__int32 menuOpened; //0250
};
#define CROSSHAIR_NORMAL 0x04 // Normal
#define CROSSHAIR_SHOTGUN 0x09 // Shotgun
#define CROSSHAIR_CN_AA 0x17 // PLA-AA
#define CROSSHAIR_US_AA 0x22 // US-AA
#define CROSSHAIR_LASER 0x35 // RedDot
#define CROSSHAIR_TOW 0x3B // TOW
class CCrosshair
{
public:
char unknown0[368];
BYTE Type;//170
};
class CHudMouse
{
public:
char unknown0[56];
float mouse_pos_x; //0038
float mouse_pos_y; //003C
float Unknown1; //0040
float Unknown2; //0044
};
class CMinimap
{
public:
virtual void Function0();
char unknown0[905];
BYTE showKits; //038D
};
class CCommander_Assets
{
public:
virtual void Function0();
byte unknown0[12];
float Artillery1Health; //0010 16
byte unknown1[4]; // 20
float Artillery2Health; //0018 24
//byte unknown2[36]; // 28
byte unknown2[20];
BYTE UAVLoading; //0030 48
char unknown8[15];// 31 49
float ArtilleryReloadTime; //0040 64
BYTE ArtilleryLoading; //0044
byte unknown3[11];
float SuppliesReloadTime; //0050
byte unknown4[8];
BYTE SuppliesLoading; //005C
byte unknown5[7];
BYTE Unknown6; //0064
byte unknown7[19];
float CarsLoadTime; //0078
float CarsHealth; //007C
};
class CCamera
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual CObject* DynamicCast(int type_id = 1);
virtual D3DXMATRIX* Shake(int);
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual float GetInsideFOV(void);
int IsValidCamera;
__int32 perspective; //0008
byte unknown1[172];
D3DXMATRIX matrix;
};
class CGeometry
{
};
class CInputManager
{
public:
virtual void IncRef();
virtual int iGetRef();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void ImportMiscStuff();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual CActionBuffer* GetActionBuffer_nextFrame( void );
virtual CActionBuffer* GetActionBuffer_thisFrame( void );
virtual bool bsIsCurrentFrame();
virtual void AdvanceToNextFrame();
virtual void Function17();
virtual int iGetDelta( void );
virtual void ConstructSelf( DWORD dwDontCare );
char unknown0[36];
__int32 dividend; //0028
__int32 divisor; //002C
char unknown1[4];
CActionBuffer* actionBuffer; //0034
};
class CRayTest
{
public:
CRayTest(CObject* obj);
virtual BYTE TestObject(CObject* obj);
virtual int iGetMask(void);
virtual BYTE function2(int a);
virtual BYTE TestMaterial(int material);
DWORD mask;
CObject* ignore_object;
};
class CDebugTextWriter
{
public:
virtual void AddRef( void );
virtual int GetRef( void );
virtual void Destructor( void );
virtual bool bVerifyGUID( DWORD dwId );
virtual bool bSetFontNeedsReload( bool bTest );
virtual bool bIsFontLoaded( void );
virtual bool bSetVisible( bool bVisible );
virtual DWORD dwGetTextColor();
virtual void SetColor( DWORD dwColor );
virtual void DrawColouredTextin3dSpaceEX( void );
virtual void DrawColouredTextin3dSpace( D3DXVECTOR3* pPos, DWORD dwColor, string* strText, float flTest );
virtual void DrawTextColouredEX();
virtual void DrawTextColoured( int x, int y, DWORD dwTextColor, string* strText, BOOL bIsConFont = 0 );
virtual void DrawTextCenteredin3dSpaceEX();
virtual void DrawTextCenteredin3dSpace( D3DXVECTOR3* pPos, string* strText, float flTest );
virtual void DrawTextEx( int x, int y, BOOL bIsConFont, BOOL bIsUnknown = 0, string* strText = NULL, BOOL bIsUnknown2 = 0 );
virtual void DrawText( int x, int y, string* strText, BOOL bIsConFont = 0 );
virtual void LoadFont();
virtual void DestroyFont();
DWORD m_dwUnknown;
void* m_pOverlay;
void LoadNewFont( string* /*pstrFont */) // Fonts/BF1942.font // Fonts/system_8x11
{
// if( m_pOverlay )
// m_pOverlay->Load( pstrFont );
}
// 2D is font loaded
// 30 is color
};
class CDebugLineDrawer
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void DrawLine( void* pLine, DWORD dwColor, float flLength );
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void Function22();
virtual void Function23();
virtual void Function24();
virtual void Function25();
virtual void Function26();
virtual void Function27();
virtual void Function28();
virtual void Function29();
virtual void Function30();
virtual void Function31();
DWORD dwUnknown; // 4
DWORD dwUnknown1; // 8
ID3DXLine* m_pLine;
void DrawFilledRect( float x0, float y0, float x1, float y1, DWORD dwColor )
{
float w = x1 - x0;
float h = y1 - y0;
m_pLine->SetWidth( h );
m_pLine->SetAntialias( 0 );
D3DXVECTOR2 VertexList[ 2 ];
VertexList[0].x = x0;
VertexList[0].y = y0 + (h / 2.0f );
VertexList[1].x = x0 + w;
VertexList[1].y = y0 + (h / 2.0f );
m_pLine->Begin();
m_pLine->Draw( VertexList, 2, dwColor );
m_pLine->End();
}
void DrawLine2 ( float x1, float y1, float x2, float y2, DWORD Color, float lineW )
{
D3DXVECTOR2 vLine[ 2 ];
m_pLine->SetAntialias( 0 );
m_pLine->SetWidth( lineW );
m_pLine->Begin();
vLine[ 0 ][ 0 ] = x1;
vLine[ 0 ][ 1 ] = y1;
vLine[ 1 ][ 0 ] = x2;
vLine[ 1 ][ 1 ] = y2;
m_pLine->Draw( vLine, 2, Color );
m_pLine->End();
}
void OutlineRect( float x, float y, float w, float h, DWORD dwColor, float flLineWidth = 1.0f )
{
m_pLine->SetWidth( flLineWidth );
m_pLine->SetAntialias( 0 );
D3DXVECTOR2 VertexList[ 5 ];
VertexList[0].x = x;
VertexList[0].y = y;
VertexList[1].x = x + ( w / 2.0f );
VertexList[1].y = y;
VertexList[2].x = x + ( w / 2.0f );
VertexList[2].y = y + ( h / 2.0f );
VertexList[3].x = x;
VertexList[3].y = y + ( h / 2.0f );
VertexList[4].x = x;
VertexList[4].y = y;
m_pLine->Begin();
m_pLine->Draw( VertexList, 5, dwColor );
m_pLine->End();
}
};
class CMainConsole
{
public:
virtual void Function0();// 0
virtual void Function1(); // 4
virtual void Exec( string* strCommand /*&string("command")*/,string* strUnknown/* = &string("")*/,int iUnknown1 = 0,int iUnknown2 = 0,int iUnknown3 = 0,int iUnknown4 = 0,int iUnknown5 = 0 ); // 8
virtual void Function3(); // C
virtual void Print( string* strText ); // 10
virtual void Function5();// 14
virtual void Function6();// 18
virtual void Function7();// 1C
virtual void Draw( int iNumOfLines );// 20
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void Function22();
virtual void Function23();
virtual void Function24();
virtual void Function25();
virtual void Function26();
virtual void Function27();
virtual void Function28();
virtual void Function29();
virtual void Function30();
virtual void Function31();
virtual void Function32();
virtual void Function33();
virtual void Function34();
virtual void Function35();
virtual void Function36();
virtual void Function37();
virtual void Function38();
virtual void Function39();
virtual void Function40();
virtual bool bIsConsoleOpen( void );
__int32 iConsoleIsOpen; //0x0004 1 = Open
char unknown8[32]; //0x0008
__int32 iLinesUsed1; //0x0028
char unknown44[4]; //0x002C
__int32 iLinesUsed2; //0x0030
char unknown52[12]; //0x0034
__int32 iDifferentUsedCommands; //0x0040
char unknown68[8]; //0x0044
char cConsoleText[128]; //0x004C
char unknown204[8]; //0x00CC
__int32 iCharCounter; //0x00D4
};
struct CGameVec
{
/*
DWORD m_dwUnknown[33];
float* m_pflMatrix; // + 0x84
DWORD m_dwUnknown1[12];
float m_flXPos; // + 0xB4
float m_flYPos; // + 0xB8
float m_flZPos; // + 0xBC
*/
char unknown0[20];
CVehicle* Vehicle; //0014
char unknown1[36];
CHealth* VehicleHealth; //003C
char unknown2[72];
float Matrix; //0088
char unknown3[44];
float m_flXPos; //00B8
float m_flYPos; //00BC
float m_flZPos; //00C0
char unknown4[284];
BYTE SelectedWeapon; //01E0
char unknown5[79];
BYTE Posture; //0230
};
struct CInfo
{
DWORD m_dwUnkown;
CGameVec* m_pPosition; //0004
};
BF2 Defines
/*
Game-Deception Property License 1.0
2005-2008 Game-Deception( www.gamedeception.net )
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN REGARD TO THE SOFTWARE.
Permission is hereby granted, free of charge, to any person obtaining a copy of this
software and associated documentation files (the "Software"), to deal in the Software
without restriction, including without limitation the rights to use, copy, modify,
merge and publish copies of the Software, and to permit persons to whom the Software
is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies
or substantial portions of the Software.
The Software must be redistributed free of charge to third parties.
*/
#ifndef bf2_general_defines_h
#define bf2_general_defines_h
using namespace std;
//////////////////////////////////////////////////////////////////////////
// Common section:
// I doubt those classes and constants will change between versions
#ifndef _CLASS_NAME_DEF_
#define _CLASS_NAME_DEF_
#define NAME_CLASSMANAGER "ClassManager"
#define NAME_PHYSICSSYSTEM "BasicPhysicsSystem"
#define NAME_INPUTDEVICEMANAGER "InputDeviceManager"
#define NAME_CONTROLMAPMANAGER "ControlMapManager"
#define NAME_OBJECTMANAGER "ObjectManager"
#define NAME_TEMPLATEMANAGER "ObjectTemplateManager"
#define NAME_PLAYERMANAGER "PlayerManager"
#define NAME_HUDMANAGER "HudManager"
#define NAME_RENDERER "Renderer"
#define NAME_POSTPRODUCTION "PostProductionFrameWork"
#define NAME_NAMETAGMANAGER "NametagManager"
#define NAME_MATERIAL_MANAGER "MaterialManager"
#define NAME_INPUT_MANAGER "InputManager"
#define NAME_MAIN_CONSOLE "MainConsole"
#define NAME_DEBUG_TEXT_WRITER "DebugTextWriter"
#define NAME_DEBUG_LINE_DRAWER "DebugLineDrawer"
#endif
#define PHY_STEP 0.033333333333333333333333333333333
#define PHY_INV_STEP 30
#define PHY_FREQ 10
//////////////////////////////////////////////////////////////////////////
// the player input keys
#define PINumKeys 64
#define PIYaw 0
#define PIPitch 1
#define PIRoll 2
#define PIThrottle 3
#define PIMouseLookX 4
#define PIMouseLookY 5
#define PICameraX 6
#define PICameraY 7
#define PIFire 8
#define PIAction 9
#define PIUse 10
#define PIMouseLook 11
#define PIAltSprint 12
#define PISprint 13
#define PIWeaponSelect1 14
#define PIWeaponSelect2 15
#define PIWeaponSelect3 16
#define PIWeaponSelect4 17
#define PIWeaponSelect5 18
#define PIWeaponSelect6 19
#define PIWeaponSelect7 20
#define PIWeaponSelect8 21
#define PIWeaponSelect9 22
#define PIPositionSelect1 23
#define PIPositionSelect2 24
#define PIPositionSelect3 25
#define PIPositionSelect4 26
#define PIPositionSelect5 27
#define PIPositionSelect6 28
#define PIPositionSelect7 29
#define PIPositionSelect8 30
#define PIAltFire 31
#define PIReload 32
#define PISelectFunc 33
#define PIDrop 34
#define PIToggleCameraMode 35
#define PIToggleCamera 36
#define PILie 37
#define PICrouch 38
#define PICameraMode1 39
#define PICameraMode2 40
#define PICameraMode3 41
#define PICameraMode4 42
#define PISelectPrimWeapon 43
#define PISelectSecWeapon 44
#define PIToggleWeapon 45
#define PIToggleFireRate 46
#define PIFlareFire 47
#define PIRadio1 48
#define PIRadio2 49
#define PIRadio3 50
#define PIRadio4 51
#define PIRadio5 52
#define PIRadio6 53
#define PIRadio7 54
#define PIRadio8 55
#define PIScreenShot 56
#define PIToolTip 57
#define PISayAll 58
#define PISayTeam 59
#define PINextItem 60
#define PIPrevItem 61
#define PICommunication 62
#define PIShowScoreBoard 63
#define PINone 64
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// weapons' target system types
#define TSNone 00
#define TSHeatSeeking 01
#define TSLaserGuided 02
#define TSWireGuided 03
#define TSTVGuided 04
#define TSParabellic 05
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// input devices
#define IDFAll -1
#define IDFNone 00
#define IDFMouse 01
#define IDFKeyboard 02
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// engine types
#define ETPlane 1
#define ETCar 2
#define ETTank 6
#define ETShip 9
#define ETRocket 17
#define ETTorpedo 25
#define ETHelicopter 33
#define ETNewCar 42
#define ETNewTank 69
#define ETNewCar2 194
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// vehicle categories
#define VCLand 0
#define VCSea 1
#define VCAir 2
#define VCHelicopter 3
#define VCNoVehicleCategory 4
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// vehicle types
#define VTHeavyTank 0
#define VTLightTank 1
#define VTArtillery 2
#define VTApc 3
#define VTScoutCar 4
#define VTFighter 5
#define VTDiveBomber 6
#define VTBomber 7
#define VTAAGun 8
#define VTStationaryMG 9
#define VTDestroyer 10
#define VTBattleship 11
#define VTCarrier 12
#define VTSubmarine 13
#define VTLcvp 14
#define VTDefGun 15
#define VTLevelBomber 16
#define VTArmoredCar 17
#define VTTankHunter 18
#define VTATGun 19
#define VTAA 20
#define VTBoat 21
#define VTHelicopterAttack 22
#define VTHelicopterTransport 23
#define VTSniper 24
#define VTInfantry 25
#define VTNoVehicleType 26
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// classes types
//#define TEMPLATE_FLOATINGBUNDLE_ID 0x9478
//#define TEMPLATE_SPRING_ID 0x9481
//#define TEMPLATE_FORCEOBJECT_ID 0x9489
#define TEMPLATE_ITEM_ID 0x9492
#define TEMPLATE_SIMPLEOBJECT_ID 0x947E
#define TEMPLATE_CAMERA_ID 0x9472
#define TEMPLATE_ENGINE_ID 0x9476
#define TEMPLATE_ROTATIONALBUNDLE_ID 0x947D
#define TEMPLATE_WING_ID 0x9483
#define TEMPLATE_FREECAMERA_ID 0x948B
#define TEMPLATE_OVERHEADCAMERA_ID 0x948C
#define TEMPLATE_SOLDIER_ID 0x9493
#define TEMPLATE_KIT_ID 0x9496
#define TEMPLATE_ITEMCONTAINER_ID 0x9499
#define TEMPLATE_ANTENNABUNDLE_ID 0x949C
#define TEMPLATE_ANTENNA_ID 0x949D
#define TEMPLATE_OBJECTSPAWNER_ID 0x94A1
#define TEMPLATE_KITPART_ID 0x94A3
#define TEMPLATE_SUPPLYDEPOT_ID 0x94A4
#define TEMPLATE_CONTROLPOINT_ID 0x94A5
#define TEMPLATE_LANDINGGEAR_ID 0x94AE
#define TEMPLATE_OBSTACLE_ID 0x94AF
#define TEMPLATE_TARGETOBJECT_ID 0x94BE
#define TEMPLATE_ROTOR_ID 0x94CB
#define TEMPLATE_GENERICFIREARM_ID 0x94D3
#define TEMPLATE_GENERICPROJECTILE_ID 0x9539
#define TEMPLATE_LADDER_ID 0x9C40
#define TEMPLATE_REMOTECONTROLEDOBJECT_ID 0x9C42
#define TEMPLATE_TURNABLEREMOTECONTROLEDOBJECT_ID 0x9C43
#define TEMPLATE_LADDERCONTAINER_ID 0x9C46
#define TEMPLATE_SUPPLYOBJECT_ID 0x9C47
#define TEMPLATE_PLAYERCONTROLOBJECT_ID 0xc4C2
#define TEMPLATE_DESTROYABLEOBJECT_ID 0xC4D0
#define TEMPLATE_DESTROYABLEWINDOWSBUNDLE_ID 0xC4DC
#define TEMPLATE_DESTROYABLEWINDOW_ID 0xC4DD
#define TEMPLATE_PARACHUTE_ID 0xC5A8
#define PHYSICS_DYNAMIC_NODE_ID 0xc422
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#define COMPONENT_TOGGLECAMERA_ID 0x94E6
#define COMPONENT_AMMO_ID 0xC4F4
#define COMPONENT_DEVIATION_ID 0xC4FC
#define COMPONENT_FIRE_ID 0xC4F1
#define COMPONENT_RECOIL_ID 0xC4F8
#define COMPONENT_ANIMATION_ID 0xC504
#define COMPONENT_ZOOM_ID 0xC508
#define COMPONENT_TARGET_ID 0xC50C
#define COMPONENT_DETONATION_ID 0xC54F
#define COMPONENT_FOLLOW_ID 0xC55B
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// skeleton's bones
#define SKELETON_BONE_FOOTL 5
#define SKELETON_BONE_FOOTR 10
#define SKELETON_BONE_STOMACH 11
#define SKELETON_BONE_BREAST 12
#define SKELETON_BONE_HANDL 20
#define SKELETON_BONE_HANDR 35
#define SKELETON_BONE_NECK 47
#define SKELETON_BONE_CHIN 50
#define SKELETON_BONE_HEAD 56
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#define OVERLAY_CONSOLE_ID1 0x13C70
#define OVERLAY_CONSOLE_ID2 0x13882
#define OVERLAY_HUD_ID1 0x13C88
#define OVERLAY_HUD_ID2 0x138A0
#define OVERLAY_DYNAMIC_ID1 0x13C90
#define OVERLAY_DYNAMIC_ID2 0x138A7
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// forward declarations of the classes needed
//template<class T> class CRef;
template<class T> class CRef
{
public:
__int32 href; //0000
T* ptr; //0004
};
class CClassManager;
class CRenderer;
class CPostProductionFrameWork;
class CNametagManager;
class CHeightmapCluster;
class CControlMapManager;
class CControlMap;
class CInputDeviceManger;
class CInputDevice;
class CMouseDevice;
class CInputManager;
class CActionBuffer;
class CMaterialManager;
class CMaterial;
class CCollisionDamageCache;
class CPlayerManager;
class CPlayer;
class CInfoMgr;
class CPhysicsManager;
class CPhysicsNode;
class CVehicle;
class CCollisionMesh;
class CObjectManager;
class CObject;
class CObject_Soldier;
class CObject_PlayerControlObject;
class CObject_RotationalBundle;
class CObject_Weapon;
class CObject_Projectile;
class CObject_Target;
class CObject_Camera;
class CObject_Wing;
class CObject_Engine;
class COComponent;
class COComponent_Ammo;
class COComponent_Recoil;
class COComponent_Deviation;
class COComponent_Collision;
class COComponent_Detonation;
class COComponent_Target;
class COComponent_Follow;
class CTemplateManager;
class CTemplate;
class CTemplateInfo;
class CBundleTemplate;
class CTemplate_Soldier;
class CTemplate_PlayerControlableObject;
class CTemplate_GenericFireArm;
class CTemplate_GenericProjectile;
class CTemplate_RotationalBundle;
class CTemplate_Camera;
class CTemplate_Engine;
class CTemplate_Wing;
class CTComponent;
class CTComponent_Ammo;
class CTComponent_Animation;
class CTComponent_Deviation;
class CTComponent_Fire;
class CTComponent_Zoom;
class CTComponent_Recoil;
class CTComponent_Target;
class CTComponent_Follow;
class CTComponent_Detonation;
class CArmor;
class CSkeleton;
class CSkeletonInfo;
class CBone;
class CHudManager;
class CHudMouse;
class CCommander_Assets;
class CMinimap;
class CCrosshair;
class CCamera;
class CGeometry;
class CInputDeviceManger;
class CObject;
class CMaterial;
//////////////////////////////////////////////////////////////////////////
extern CClassManager* pClassManager;
extern CPhysicsManager* physics_manager;
extern CInputDeviceManger* input_device_manager;
extern CControlMapManager* controlmap_manager;
extern CObjectManager* object_manager;
extern CTemplateManager* template_manager;
extern CPlayerManager* player_manager;
extern CHudManager* hud_manager;
extern CCommander_Assets* cassets;
extern CCrosshair* ccrosshair;
extern CRenderer* renderer;
extern CPostProductionFrameWork* postproduction;
extern CPlayer* local_player;
extern CNametagManager* nametag_manager;
extern DWORD wtsfunc;
extern CMaterialManager* material_manager;
extern CInputManager* input_manager;
extern BOOL got_all_global_objects;
#define CLAMP(v, mi, ma) MAX( mi, MIN( v, ma ) )
#define SAFECALL( x, y ) if( x ) x->##y;
#endif //bf2_general_defines_h
BF2 Classes
#ifndef bf2_classes_h
#define bf2_classes_h
#include <map>
#include <list>
#include <vector>
#include <D3dx9math.h>
#include "BF2Defines.h"
using namespace std;
// unfortunately, STL's templates generate objects with different sizes in the
// debug and release versions, so we have to force them to be the same as of
// bf2 by not compiling in debug (I couldn't find a #define that control this
// behavior.)
#ifdef _DEBUG
#error this can't be compiled with the _DEBUG directive
#undef _DEBUG
#define NDEBUG
#endif
#include <windows.h>
#include <D3dx9math.h>
#include <string>
#include <map>
#include <list>
#include <vector>
using namespace std;
class CClassManager;
class CWorldMatrix;
class CDebugTextWriter;
class CRenderer;
class CPostProductionFrameWork;
class CNametagManager;
class CDebugLineDrawer;
class CHeightmapCluster;
class CControlMapManager;
class CControlMap;
class CInputDeviceManger;
class CInputDevice;
class CMouseDevice;
class CRayTest;
class CInputManager;
class CActionBuffer;
class CMaterialManager;
class CMaterial;
class CCollisionDamageCache;
class CPlayerManager;
class CPlayer;
class CSoldierMgr;
class CInfoMgr;
class CScoreBoard;
class CPhysicsManager;
class CPhysicsNode;
class CVehicle;
class CCollisionMesh;
class CObjectManager;
class CObject;
class CObject_Soldier;
class CObject_PlayerControlObject;
class CObject_RotationalBundle;
class CWeapon;
class CObject_Weapon1;
class CObject_Projectile;
class CObject_Target;
class CObject_Camera;
class CObject_Wing;
class CObject_Engine;
class COComponent;
class COComponent_Ammo;
class COComponent_Recoil;
class CGameConfig;
class COComponent_Deviation;
class COComponent_Collision;
class COComponent_Detonation;
class COComponent_Target;
class COComponent_Follow;
class CTemplateManager;
class CTemplate;
class CTemplateInfo;
class CBundleTemplate;
class CTemplate_Soldier;
class CTemplate_PlayerControlableObject;
class CTemplate_GenericFireArm;
class CTemplate_GenericProjectile;
class CTemplate_RotationalBundle;
class CTemplate_Camera;
class CTemplate_Engine;
class CTemplate_Wing;
class CTComponent;
class CTComponent_Ammo;
class CTComponent_Animation;
class CTComponent_Deviation;
class CTComponent_Fire;
class CTComponent_Zoom;
class CTComponent_Recoil;
class CTComponent_Target;
class CTComponent_Follow;
class CTComponent_Detonation;
class CArmor;
class CSkeleton;
class CSkeletonInfo;
class CBone;
class CHudManager;
class CHudMouse;
class CCommander_Assets;
class CMinimap;
class CCrosshair;
class CCamera;
class CGeometry;
class CInputDeviceManger;
class CObject;
class CMaterial;
class CMainConsole;
class CDebugTextWriter;
class CProfileManager;
class CAccount;
class CViewMatrix;
//extern CScoreBoard cScoreBoard;
extern CViewMatrix* cViewMatrix;
extern CClassManager* cManager;
extern CDebugLineDrawer* cLine;
extern CPlayerManager* cPlayerManager;
extern CObjectManager* cObjectManager;
extern CRenderer* cRenderer;
extern CPlayer* cLocal;
extern CDebugTextWriter* cDebugTextWriter;
extern CPhysicsManager* cPhysicsManager;
extern CInputDeviceManger* cInputDeviceManager;
extern CInputManager* cInputManager;
extern CControlMapManager* cControlMapManager;
extern CTemplateManager* cTemplateManager;
extern CHudManager* cHudManager;
extern CCrosshair* cCrosshair;
extern CCommander_Assets* cAssets ;
extern CPostProductionFrameWork* cPostProduction;
extern CActionBuffer* cActionBuffer;
extern CMainConsole* cConsole;
extern float yawW, pitchW;
// extern DWORD wtsfunc;
extern float inputBuffer[255];
extern CDebugTextWriter* cTextWriter;
extern CProfileManager* cProfile;
extern DWORD g_dwWorldToScreenNew;
extern CWeapon* cWeapon;
bool InitObjects();
void* GetObjectFromName(char* name);
PBYTE detourVTable( PDWORD* dwVTable, PBYTE dwHook, INT Index );
void* UpdateDevice();
// bool WINAPI World2Screen(D3DXVECTOR3* pVecInOut);
PBYTE HookVTableFunction( PDWORD* dwVTable, PBYTE dwHook, INT Index );
class CProfileManager
{
public:
char cUnknown1[8];
CAccount* ActiveAccount; //0008
};
class CAccount
{
public:
char cUnknown1[4];
char EMail[16]; //0004
char cUnknown2[12];
char Password[16]; //0020
char cUnknown3[24];
int PID; //0048
char cUnknown[4];
char Name[16]; //0050
};
// class CProfileManager
// {
// public:
// char unknown0[8]; //0x0000
// CAccount* Account; //0x0008
// char unknown12[52]; //0x000C
// };//Size=0x0040(64)
//
// class CAccount
// {
// public:
// char unknown0[72]; //0x0000
// __int32 pid; //0x0048
// char unknown1; //0x004C
// string Name; //0x0050
// char unknown96[56]; //0x0060
// };//Size=0x0098(152)
class CClassManager
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
//virtual void Function12();
virtual void* CreateOverlay( DWORD dwID1 = 0x13C70, DWORD dwID2 = 0x13882, DWORD dwID3 = 0 );
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void* GetObjectByName( const string* name );
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void* GetInternalObjectByName( const string* name );// aimhelper
};
class COverlay
{
public:
virtual void AddRef( void );
virtual int GetRef( void );
virtual void OverlayDestroy( void );
virtual bool bCheckClassUniqueID( DWORD dwUniqueID = 0x13882 );
virtual void OverlayTextureDraw( void );
virtual void ScaleW( float* flBuffer );
virtual void SetDimensions( float* pflBuffer );
virtual void ScaleH( float* flBuffer );
virtual void Overlay_08( void );
virtual float flGetAlpha( void );
virtual void SetAlpha( float flAlpha );
virtual void LoadOverlay( string* pszOverlayName ); // todo... check if bool
virtual void Overlay_12( void );
void SetSize( float flXPos, float flYPos, float flWidth, float flHeight )
{
m_flAlpha = 1.0f;
float flBuffer[ 4 ] = { flWidth / 1000.0f, flHeight / 1000.0f, flWidth / 1000.0f, flHeight / 1000.0f };
m_flXPos = flXPos / 1000.0f;
m_flYPos = flYPos / 1000.0f;
SetDimensions( flBuffer );
}
private:
DWORD m_dwSecondVMT;//004
int m_iUnknown; //0008
float m_flXPos; //000c
float m_flYPos; //0010
float m_flWidth; //0014
float m_flHeight; //0018
__int32 m_iUnknown5; //001C
float m_flAlpha; //0020
int m_iUnknown6; //0024
int m_iUnknown7; //0028
int m_iUnknown8; //002C
int m_iUnknown9; //0030
const char* m_pszObjectName; //0034
int m_iUnknown10; //0038
int m_iUnknown11; //003C
int m_iUnknown12; //0040
};
class CRenderer
{
public:
virtual void AddRef( void ); //
virtual void GetRef( void ); //
virtual void function2(); //
virtual void function3(); //
virtual void function4(); //
virtual void function5(); //
virtual void function6(); //
virtual void function7(); //
virtual void function8(); //
virtual void function9(); //
virtual void RenderScreen (void* param1, void* param2, void* param3); //
virtual void function11(); //
virtual void function12(); //
virtual void function13(); //
virtual void function14(); //
virtual void function15(); //
virtual void function16(); //
virtual void function17(); //
virtual void function18(); //
virtual void function19(); //
virtual void function20(); //
virtual void function21(); //
virtual void function22(); //
virtual void function23(); //
virtual void function24(); //
virtual void DrawConsole( void ); //
virtual void function26(); //
virtual void function27(); //
virtual void function28(); //
virtual void function29(); //
virtual void function30(); //
virtual void function31(); //
virtual void function32(); //
virtual void function33(); //
virtual void function34(); //
virtual void function35(); //
virtual void function36(); //
virtual void function37(); //
virtual void function38(); //
virtual void function39(); //
virtual void function40(); //
virtual void function41(); //
virtual void function42(); //
virtual void function43(); //
virtual void function44(); //
virtual void function45(); //
virtual void function46(); //
virtual void function47(); //
virtual void function48(); //
virtual void function49(); //
virtual void function50(); //
virtual void function51(); //
virtual void function52(); //
virtual void function53(); //
virtual BYTE DrawOverlay( void ); //
virtual BYTE Present( int code ); //
char unknown0[12]; //0x0000
void* m_pDevice; //0x000C
char unknown16[20]; //0x0010
__int32 flWindowWidth; //0x0024
__int32 flWindowHeight; //0x0028
char unknown44[204]; //0x002C
CWorldMatrix* GetWorldMatrix; //0x00F8
char unknown252[1020]; //0x00FC
float flCurrentViewDistance; //0x04F8 Max = 5.0
char unknown1276[148]; //0x04FC
float TweakNearPlane; //0x0590 Removes the wall if someone is Xmeters near the wall
char unknown1428[280]; //0x0594
__int32 DrawFramesPerSecond; //0x06AC
char unknown1712[1]; //0x06B0
BYTE DrawIngameHud; //0x06B1
BYTE DrawIngameSky; //0x06B2
BYTE DrawIngameSunFlare; //0x06B3
BYTE RenderConsole; //0x06B4 if = 0 it doesn't Render the Console
BYTE DrawIngamePostProduction; //0x06B5
char unknown1718[13]; //0x06B6
BYTE RemoveObjects; //0x06C3 Removes objects form X Meters ( I think )
};//Size=0x06C4(1732)
class CWorldMatrix
{
public:
char unknown0[944]; //0x0000
float matrix[26]; //0x03B0
};
class CNametagManager
{
public:
virtual void Function0();
char unknown0[992];
CObject* aimed_object; //03E4
};
class CHeightmapCluster
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void Function22();
virtual void Function23();
virtual float GetSeaWaterLevel(void);
virtual void Function25();
virtual void Function26();
virtual void Function27();
virtual void Function28();
virtual void Function29();
virtual void Function30();
virtual void Function31();
virtual void Function32();
virtual void Function33();
virtual void Function34();
virtual void Function35();
virtual void Function36();
virtual void Function37();
float GetWaterHeightAtCoord( float x, float z );
};
class CPostProductionFrameWork
{
public:
virtual void Function0();
byte unknown0[24];
BYTE Unknown1; //001C
BYTE Unknown2; //001D
BYTE Unknown3; //001E
BYTE Unknown4; //001F
float fogColor_r; //0020
float fogColor_g; //0024
float fogColor_b; //0028
float fogStart; //002C
float fogEnd; //0030
float fogBase1; //0034
float fogBase2; //0038
};
//////////////////////////////////////////////////////////////////////////
class CControlMapManager
{
public:
virtual void Function0();
byte unknown0[32];
CControlMap* active_controlmap; //0024
};
class CControlMap
{
public:
virtual void Function0();
byte unknown0[4];
string map_name; //0008
byte unknown3[28];
float Unknown4; //0040
float Unknown5; //0044
float Unknown6; //0048
BYTE invertMouse; //004C
byte unknown7[3];
float mouse_sensitivity; //0050
float Unknown8; //0054
float deg_per_pixel_x; //0058
float deg_per_pixel_y; //005C
float Unknown9; //0060
float Unknown10; //0064
float yaw_factor; //0068
float pitch_factor; //006C
};
class CInputDeviceManger
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual CInputDevice* GetDevice(int code);
byte unknown0[4];
map<int, CInputDevice*> devices; //0008
};
class CInputDevice
{
};
class CMouseDevice: CInputDevice
{
public:
byte unknown0[16];
__int32 actual_buttons; //0010
__int32 last_buttons; //0014
float disp_x; //0018
float disp_y; //001C
byte unknown1[16];
BYTE active; //0030
byte unknown2[3];
float Unknown3; //0034
byte unknown4[16];
float Unknown5; //0048
};
class CActionBuffer
{
public:
float inputKeys[64]; //0000
__int32 Unknown1; //0100
__int32 Unknown2; //0104
__int32 Unknown3; //0108
__int32 Unknown4; //010C
BYTE Unknown5; //0110
};
//////////////////////////////////////////////////////////////////////////
class CMaterialManager
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual CMaterial* GetActiveMaterial(void);
virtual CMaterial* GetMaterial(unsigned int mat_num);
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function22();
virtual float GetCollisionDamageMultiplier( int projectile, int collided);
char unknown0[4];
list<CMaterial*> material_list; //0008
__int32 active_material; //0014
};
class CMaterial
{
public:
virtual void Function0();
string name; //0004
__int32 type; //0020
float friction; //0024
float elasticity; //0028
float resistance; //002C
float projectileCollisionHardness; //0030
float damageLoss; //0034
float minDamageLoss; //0038
float maxDamageLoss; //003C
float penetrationDeviation; //0040
BYTE overridNeverPenetrate; //0044
BYTE hasWaterPhysics; //0045
BYTE isBarbWire; //0046
BYTE isOneSided; //0047
BYTE isSeeThrough; //0048
};
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
class List
{
public:
List* ptr;
char unknown1[4];
CPlayer* player;
};
class CPlayerManager
{
public:
virtual void AddRef();
virtual int GetRef();
virtual void Release();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual CPlayer* GetPlayerByIndex(int Index);
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual CPlayer* GetLocalPlayer();
char unknown0[12];
List* player_list; //0010
char unknown2[76];
CPlayer* LocalPlayer; //0x0060
};
class CPlayer
{
public:
virtual void AddRef();
virtual int GetRef();
virtual void Release();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual char* GetName();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void* Vehicle();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void Remote();
virtual void Function23();
virtual bool AI();
virtual void Function25();
virtual bool Alive();
virtual void Function27();
virtual void Suicide();
virtual bool Connected();
virtual void Function30();
virtual void Function31();
virtual void Function32();
virtual void Function33();
virtual void Function34();
virtual void Function35();
virtual void Function36();
virtual void Function37();
virtual void Function38();
virtual void Function39();
virtual void* GetKit();
virtual void Function41();
virtual void Function42();
virtual void Function43();
virtual void Function44();
virtual void Function45();
virtual void Function46();
virtual void Function47();
virtual void Function48();
virtual void Function49();
virtual void Function50();
virtual void Function51();
virtual void Function52();
virtual void Function53();
virtual void Function54();
virtual int GetTeam();
virtual void Function56();
virtual void Function57();
virtual void tts();
virtual void Function59();
virtual void Function60();
virtual bool Mandown();
virtual void Function62();
virtual void Function63();
virtual int SquadID();
virtual void Function65();
virtual bool IsCommander();
virtual void Function67();
virtual void Function68();
virtual void Function69();
virtual void Function70();
virtual void Function71();
virtual void Function72();
virtual void Function73();
virtual void Function74();
virtual void Function75();
virtual bool isql();
virtual void Function77();
virtual bool IsInsideCP();
virtual void Function79();
virtual void Function80();
virtual void Function81();
virtual void sgr();
virtual void Function83();
virtual void Function84();
virtual void Function85();
virtual int Ping();
virtual void Function87();
virtual void Function88();
virtual void Function89();
virtual void Function90();
virtual int FlagHolder();
virtual CCamera* GetViewMatrix();
virtual void Function93();
virtual void Function94();
//virtual void Function95();
virtual CCamera* GetPlayerView(void);
virtual void Function96();
virtual void Function97();
virtual void Function98();
virtual void Function99();
virtual void Function100();
virtual void Function101();
virtual void Function102();
virtual void Function103();
virtual void Function104();
virtual void Function105();
virtual void Function106();
virtual void Function107();
virtual void Function108();
virtual void Function109();
virtual void Function110();
virtual void Function111();
virtual void Function112();
virtual void Function113();
virtual void Function114();
virtual void Function115();
virtual void Function116();
virtual void Function117();
virtual void Function118();
virtual void Function119();
virtual void Function120();
virtual void Function121();
virtual void Function122();
virtual void Function123();
virtual void Function124();
virtual void Function125();
virtual void Function126();
virtual void Function127();
virtual void Function128();
virtual void Function129();
virtual void Function130();
virtual void Function131();
virtual void Function132();
virtual void Function133();
virtual void Function134();
virtual void Function135();
virtual void Function136();
virtual void Function137();
virtual void Function138();
virtual void Function139();
virtual void Function140();
virtual void Function141();
virtual void Function142();
virtual void Function143();
virtual void Function144();
virtual void Function145();
virtual void Function146();
virtual void Function147();
virtual void Function148();
virtual void Function149();
virtual void Addr();
virtual void Function151();
virtual void Function152();
virtual void Function153();
virtual void Function154();
virtual void Function155();
virtual void Function156();
virtual void Function157();
virtual void Function158();
virtual void Function159();
virtual void Function160();
virtual void Function161();
virtual void Function162();
virtual void Function163();
virtual void Function164();
virtual void Function165();
virtual void Function166();
virtual int ProfileID();
virtual void Function168();
virtual void Function169();
virtual void Function170();
virtual void Function171();
virtual void Function172();
virtual void Function173();
virtual void Function174();
virtual void Function175();
virtual void Function176();
virtual void Function177();
virtual void Function178();
virtual void Function179();
virtual void Function180();
virtual void Function181();
virtual void Function182();
virtual void Function183();
virtual void Function184();
//byte unknown0[88];
byte unknown0[84];
__int32 kit_num; //0058
byte unknown1[4];
string player_name; //0060
byte unknown3[4];
CInfoMgr* player_object; //0080
CCamera* player_view; //0084
CCamera* multiplayer_free_camera; //0088
byte unknown4[1];
BYTE CommanderMenu; //008D
BYTE CommanderMenu2; //008E
byte unknown5[37];
__int32 vehicle_seat_num; //00B4
__int32 player_code; //00B8
byte unknown6[4];
float view_fov; //00C0
float zoom1;
float zoom2;
CSoldierMgr* player_soldier; //00CC
byte unknown8[5];
BYTE player_alive; //00D5
byte unknown9[2];
__int32 player_team; //00D8
byte unknown10[12];
BYTE player_down; //00E8
byte unknown11[15];
DWORD player_ping; //00F8
byte unknown12[16];
__int32 squad_num; //010C
BYTE commander; //0110
BYTE squad_leader; //0111
byte unknown13[18];
BYTE inside_control_point; //0124
byte unknown14[95];
BYTE primary_fire_down; //0184
BYTE secondary_fire_down; //0185
byte unknown15[1];
BYTE sprinting; //0187
BYTE sprinting_cur; //0188
//byte unknown16[175];
BYTE Unknown16; //0189
BYTE Unknown17; //018A
BYTE Unknown18; //018B
byte unknown19[64];
__int32 weapon_online_ammo; //01CC
byte unknown20[8];
__int32 weapon_online_max_ammo; //01D8
byte unknown21[8];
__int32 weapon_online_firemode; //01E4
byte unknown22[8];
__int32 weapon_online_zoomed; //01F0
byte unknown23[8];
__int32 weapon_online_magazines; //01FC
byte unknown24[8];
__int32 weapon_online_max_magazines; //0208
byte unknown25[8];
float weapon_online_heat_primary; //0214
byte unknown26[32];
__int32 weapon_fire_num; //0238
__int32 weapon_ammo; //023C
byte unknown27[8];
__int32 weapon_fire_mode; //0248
byte unknown28[4];
__int32 vehicle_pilot; //0250
BYTE weapon_finite_ammo; //0254
byte unknown29[3];
float weapon_heat_primary; //0258
float weapon_heat_secondary; //025C
};
class CSoldierMgr
{
public:
virtual void Function0();
CObject_Soldier* ObjectInfo; //0004
};
class CInfoMgr
{
public:
virtual void Function0();
CObject* ObjectInfo; //0004
};
class CScoreboard
{
public:
__int32 totalscore; //0000
__int32 teamworkscore; //0004
char unknown0[8];
__int32 deaths; //0010
__int32 kills; //0014
__int32 teamkills; //0018
char unknown1[4];
__int32 rank; //0020
};
//////////////////////////////////////////////////////////////////////////
class CPhysicsManager
{
public:
byte unknown0[8];
float gravity; //0008
};
class CPhysicsNode
{
public:
//byte unknown0[32];
float unknown0[8];
D3DXVECTOR3 impulse_force; //0020
//float Unknown3; //002C
//float Unknown4; //0030
//float Unknown5; //0034
//float u1[3];
//byte unknown6[52];
D3DXVECTOR3 gravity;
D3DXVECTOR3 obstacle_impulse;
D3DXVECTOR3 unknown3;
float unknown_multi31;
float mass;
float gravity_multip;
float unknown5[4];
D3DXVECTOR3 position; //006C
D3DXVECTOR3 speed; //0078
//byte unknown11[16];
float unknown_multi4;
float unknown6[3];
D3DXVECTOR3 rotation; //0094
};
class CCollisionMesh
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual BYTE Intersect( int unknown0_0, int unknown1_0,
D3DXMATRIX* in_object_matrix, D3DXMATRIX* in_object_matrix_transpose,
D3DXVECTOR3* in_ray_start, D3DXVECTOR3* in_ray_dir_end,
D3DXVECTOR3* out_inter_normal, D3DXVECTOR3* out_inter_point,
float* out_unknown2, float* out_unknown3,
int* out_material, BOOL in_unknown4_0, BOOL in_unknown5_1, BOOL in_unknown6_1 );
};
class CVehicle
{
public:
char unknown0[394];
string VehicleName; //0190
};
class CHealth
{
public:
char unknown0[16];
float Health; //0010
float unknown1; //0014
float Height; //0018
__int32 FloorType1; //001C
__int32 FloorType2; //0020
};
class CViewMatrix
{
public:
char unknown0[184];
float matrix[16]; //00B8
};
//////////////////////////////////////////////////////////////////////////
class CObjectManager
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual CObject* GetObjectFromGrid(UINT Index);
virtual map<int,CObject*>* create_object_map();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void Function22();
virtual void Function23();
virtual void Function24();
virtual void Function25();
virtual BYTE Intersect( CObject** inter_obj, D3DXVECTOR3* inter_point, D3DXVECTOR3* inter_angle, int* inter_mat, D3DXVECTOR3* ray_start, D3DXVECTOR3* ray_end, CRayTest* ray, BOOL unk1, BOOL unk2, BOOL unk3, BOOL unk4, BOOL unk5 = FALSE );
virtual void Function27();
virtual void Function28();
virtual void Function29();
virtual void Function30();
virtual void Function31();
virtual void Function32();
virtual void Function33();
virtual void Function34();
virtual CObject* GetLocalObject();
char unknown0[28];
CObject* active_object; //0020
char unknown1[60];
vector<CObject*> object_list; //0060
};
class CObject
{
public:
virtual void function0();
DWORD flags;
char z_cUnknown0[4];
CObject* object_root;
__int32 object_id;
CTemplate* object_template;
char z_cUnknown1[16];
CObject* object_hierarchy_root;
CObject* object_hierarchy_left;
CObject* object_hierarchy_right;
char z_cUnknown2[4];
CGeometry* object_mesh;
CArmor* Armor;
CCollisionMesh* object_collision;
CPhysicsNode* Physics;
char z_cUnknown3[64];
D3DXMATRIX Matrix;
char z_cUnknown4[32];
float boundingSphereRadius;
char z_cUnknown5[28];
string object_name;
char z_cUnknown6[40];
__int32 object_end;
};
class CObject_Soldier: public CObject
{
public:
char z_cUnknown8[104]; //0x0150
CWeapon* ActiveWeapon; //0x01B8
char z_cUnknown9[8]; //0x01BC
CWeapon* PrevWeapon; //0x01C4
char z_cUnknown10[24]; //0x01C8
__int32 SelectedWeapon; //0x01E0
char z_cUnknown11[64]; //0x01E4
float DegreesRight; //0x0224
float RightSpeed; //0x0228
float ForwardSpeed; //0x022C
__int32 Posture; //0x0230
__int32 Posture_cur; //0x0234
float degrees_up; //0x0238
float HeadPitchChange; //0x023C
float HeadYaw; //0x0240
float HeadYawChange; //0x0244
char z_cUnknown12[4]; //0x0248
__int32 PostureKey; //0x024C
char z_cUnknown13[56]; //0x0250
CSkeleton* skeleton1p; //0x0288
char z_cUnknown14[4]; //0x028C
CSkeleton* skeleton3p; //0x0290
};
class CObject_PlayerControlObject: public CObject
{
public:
byte unknown10[32];
CRef<CPlayer>* vehicle_player; //0170
CRef<CObject_Soldier>* vehicle_soldier; //0174
byte unknown11[132];
CWeapon* vehicle_primary_weapon; //01FC
CWeapon* vehicle_secondary_weapon; //0200
};
class CObject_RotationalBundle: public CObject
{
public:
byte unknown10[8];
D3DXVECTOR3 rotation; //0158
D3DXVECTOR3 rot_speed; //0164
D3DXVECTOR3 rot_mouse; //0170
};
class CWeapon : public CObject
{
public:
char z_cUnknown7[40];
BYTE WeaponActivated;
char z_cUnknown8[27];
COComponent_Ammo* AmmoComponent;
COComponent_Recoil* RecoilComponent;
COComponent_Target* Target;
COComponent_Deviation* weapon_deviation;
char z_cUnknown9[20];
float weapon_heat_primary;
float weapon_heat_secondary;
char z_cUnknown10[12];
BYTE weapon_is_controlled;
};
class CObject_Projectile: public CObject
{
public:
virtual void Function0();
char unknown0[560];
__int32 timeToLive_0; //0234
float timeToLive_1; //0238
float timeToLive_2; //023C
float timeToLive_3; //0240
char unknown9[120];
float damage; //02BC
};
class CObject_Target: public CObject
{
};
class CObject_Camera: public CObject_RotationalBundle
{
};
class CObject_Wing: public CObject_RotationalBundle
{
};
class CObject_Engine: public CObject
{
};
class COComponent
{
};
class COComponent_Target
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void Function22();
virtual void Function23();
virtual void Function24();
virtual void Function25();
virtual void Function26();
virtual void Function27();
virtual void Function28();
virtual void Function29();
virtual void Function30();
virtual void Function31();
virtual void Function32();
virtual void Function33();
virtual void Function34();
virtual void Function35();
virtual void Function36();
virtual void Function37();
virtual void Function38();
virtual void Function39();
virtual void Function40();
virtual void TargetByIntersection( D3DXVECTOR3 from, D3DXVECTOR3 to);
virtual void Function42();
virtual void Function43();
virtual void Function44();
virtual void Function45();
virtual CObject_Projectile* GetGuidedProjectile(void);
char unknown0[24];
CRef<CObject>* target_object; //001C
char unknown1[20];
BYTE target_locked; //0034
BYTE target_active; //0035
char unknown2[2];
CTComponent_Target* target_template; //0038
char unknown3[8];
CRef<CObject_Projectile>* target_projectile; //0044
};
class COComponent_Recoil: public COComponent
{
public:
//char unknown0[8];
byte unknown0[4]; // maybe vtable
float unknown00;
float recoilForce; //0008
float recoilSpeed; //000C
//char unknown1[4];
float unknown1;
float recoilSize; //0014
//char unknown2[4];
float unknown2;
float recoilSpeedGB; //001C
float cameraRecoilSpeed; //0020
float cameraRecoilSize; //0024
};
class COComponent_Ammo: public COComponent
{
public:
char unknown0[4];
vector<int> cartridges; //0004
char unknown2[44];
BYTE cartridge_in_slot; //0040
BYTE slot_cartridge_empty; //0041
};
class DeviX
{
public:
float f1; // 0
float f2; // 4
float f3; // 8
float f4; // c
float f5; // 10
float f6; // 14
float f7; // 18
float f8; // 1C
};
class CGameConfig
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void Function22();
virtual void Function23();
virtual void Function24();
virtual void Function25();
virtual DWORD counter(); // < - No Spread Function ... .
};
class COComponent_Deviation: public COComponent
{
public:
virtual void function0(); //
virtual void function1(); //
virtual void function2(); //
virtual void function3(); //
virtual void function4(); //
virtual void function5(); //
virtual void function6(); //
virtual void function7(); //
virtual void function8(); //
virtual void function9(); //
virtual void function10(); //
virtual void function11(); //
virtual void function12(); //
virtual void function13(); //
virtual void CalculateDeviation(); //
virtual void function15(); //
virtual void function16(); //
virtual void function17(); //
virtual void function18(); //
virtual void function19(); //
virtual void function20(); //
virtual void function21(); //
virtual void function22(); //
virtual void function23(); //
virtual void function24(); //
virtual void function25(); //
virtual void function26(); //
virtual void function27(); //
virtual void function28(); //
virtual void function29(); //
virtual void function30(); //
virtual void function31(); //
virtual void function32(); //
virtual void function33(); //
virtual void function34(); //
virtual void function35(); //
virtual void function36(); //
virtual void function37(); //
virtual void function38(); //
virtual void function39(); //
virtual float GetTotalDeviation(); //
virtual void function41(); //
virtual void function42(); //
virtual void function43(); //
virtual void function44(); //
virtual void function45(); //
virtual void function46(); //
virtual void function47(); //
virtual void function48(); //
virtual void function49(); //
virtual void function50(); //
virtual void function51(); //
virtual void function52(); //
virtual void function53(); //
virtual void function54(); //
virtual void function55(); //
virtual void function56(); //
float total_deviation; //0x0004
float ID026A2048; //0x0008
float up_devi_add; //0x000C
float right_devi_add; //0x0010
float ID026A7670; //0x0014
DeviX* aux_add; //0x0018
float ID026A7770; //0x001C
float ID02718270; //0x0020
float ID0267DFA0; //0x0024
float ID0267E020; //0x0028
float ID0267E0A0; //0x002C
float ID0270F6C0; //0x0030
float ID026B1D20; //0x0034
char unknown56[4]; //0x0038
float ID0270E150; //0x003C
void* ID026B1CA0; //0x0040
};
class CObject_Weapon2
{
public:
CObject *weapon_root;
};
class CObject_Weapon1
{
public:
virtual void Function0(); // 0
byte unknown0[112]; // 4
CRef<CObject_Weapon2> w1; //74
};
class COComponent_Collision: public COComponent
{
public:
};
class COComponent_Detonation: public COComponent
{
public:
};
class COComponent_Follow: public COComponent
{
public:
virtual void Function0();
char unknown0[4];
CTComponent_Follow* follow_template; //0008
float follow_change_yaw; //000C
float follow_change_pitch; //0010
CRef<CObject_Target>* follow_target; //0014
};
//////////////////////////////////////////////////////////////////////////
class CTemplateManager
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void Function22();
virtual void Function23();
virtual void Function24();
virtual void Function25();
byte unknown0[80];
CTemplate* active_template; //0054
};
class CTemplate
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual int GetTemplateType(void);
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
//virtual void Function16();
virtual int getTemplateId(void); //
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual CTComponent* GetComponent(int code);
char unknown4[8]; //0x0004
string Name; //0x000C
char unknown40[592]; //0x0028
float weapon_velocity; //0x0278
char unknown636[12]; //0x027C
};//Size=0x0288(648)
class CTemplateInfo
{
public:
byte unknown0[4];
string template_name; //0004
CRef<CTemplate>* template_pointer;
};
class CTemplate_Soldier: public CTemplate
{
public:
byte unknown6[184];
CSkeleton* skeleton; //02E0
};
class CTemplate_PlayerControlableObject: public CTemplate
{
public:
byte unknown6[104];
void* pco_seat_animation; //0290
};
class CTemplate_GenericFireArm: public CTemplate
{
public:
char unknown01[80];
float velocity;
char unknown02[12];
string Name2;
char unknown03[28];
CTemplate_GenericProjectile* Projectile;
};
class CTemplate_GenericProjectile: public CTemplate
{
public:
byte unknown8[12];
__int32 timeToLive_0; //0234
float timeToLive_1; //0238
float timeToLive_2; //023C
float timeToLive_3; //0240
byte unknown9[120];
float damage; //02BC
};
class CTemplate_RotationalBundle: public CTemplate
{
public:
byte unknown5[4];
D3DXVECTOR3 minRotation; //022C
D3DXVECTOR3 maxRotation; //0238
D3DXVECTOR3 PivotPosition; //0244
D3DXVECTOR3 max_speed; //0250
D3DXVECTOR3 maxResetSpeed; //025C
D3DXVECTOR3 acceleration; //0268
D3DXVECTOR3 deAcceleration; //0274
D3DXVECTOR3 continousRotationSpeed; //0280
DWORD inputToYaw; //028C
DWORD inputToPitch; //0290
DWORD inputToRoll; //0294
BYTE automaticReset; //0298
BYTE snapToZeroOnNoInput; //0299
BYTE useDeAcceleration; //029A
BYTE Unknown22; //029B
BYTE automaticYawStabilization; //029C
BYTE automaticPitchStabilization; //029D
BYTE rememberExcessInput; //029E
BYTE lesserYawAtSpeedSet; //029F
float lesserYawAtSpeed; //02A0
BYTE startAutoRotateOnEnter; //02A4
BYTE debugAutoRotate; //02A5
char unknown23[2];
D3DXVECTOR2 regulateYaw; //02A8
D3DXVECTOR2 regulatePitch; //02B0
D3DXVECTOR2 regulateRoll; //02B8
};
class CTemplate_Camera: public CTemplate_RotationalBundle
{
public:
char unknown0[8];
__int32 cameraId; //02C8
BYTE CVMInside; //02CC
BYTE CVMChase; //02CD
BYTE CVMFlyBy; //02CE
BYTE CVMTrace; //02CF
BYTE CVMExternTrace; //02D0
BYTE CVMFrontChase; //02D1
BYTE CVMNose; //02D2
char unknown14[1];
D3DXVECTOR3 nosePos; //02D4
BYTE toggleMouseLook; //02E0
char unknown16[3];
float followStiffness; //02E4
float chaseDistance; //02E8
float chaseAngle; //02EC
D3DXVECTOR3 chaseOffset; //02F0
char unknown23[140];
float worldFOV; //038C
float insideFOV; //0390
};
class CTemplate_Engine: public CTemplate_RotationalBundle
{
public:
char unknown26[440];
__int32 numberOfGears; //0478
float differential; //047C
float torque; //0480
char unknown27[444];
__int32 engineType; //0640
char unknown28[20];
BYTE Unknown29; //0658
BYTE pureRotational; //0659
char unknown30[26];
float spinWhenNoEngineInAir; //0674
};
class CTemplate_Wing: public CTemplate_RotationalBundle
{
public:
char unknown0[4];
float wingLift; //02C0
float flapLift; //02C4
float pitchOffset; //02C8
D3DXVECTOR3 positionOffset; //02CC
BYTE liftRegulated; //02D8
char unknown28[3];
float regulateToLift; //02DC
float wingToRegulatorRatio; //02E0
float startDelay; //02E4
};
class CTComponent
{
public:
};
class CTComponent_Ammo: public CTComponent
{
public:
byte unknown0[8];
__int32 ammoType; //0008
float reloadTime; //000C
__int32 reloadTime_1; //0010
float firstShotExtraTime; //0014
__int32 firstShotExtraTime_1; //0018
float lastShotExtraTime; //001C
__int32 lastShotExtraTime_1; //0020
float changeMagAt; //0024
BYTE autoReload; //0028
BYTE instantReloadOnEnable; //0029
byte unknown1[2];
float minimumTimeUntilReload; //002C
__int32 minimumTimeUntilReload_1; //0030
__int32 nrOfMags; //0034
__int32 magSize; //0038
__int32 reloadAmount; //003C
BYTE toggleWhenNoAmmo; //0040
BYTE reloadWithoutPlayer; //0041
};
class CTComponent_Animation: public CTComponent
{
public:
byte unknown0[16];
BYTE useShiftAnimation; //0010
byte unknown1[3];
float shiftDelay; //0014
};
class CTComponent_Deviation: public CTComponent
{
public:
byte unknown0[8];
float fireDevAdd; //0008
float fireDevSub; //000C
float fireDevMax; //0010
float minDev; //0014
float subProjectileDev; //0018
byte unknown1[4];
float turnDevAddPitch; //0020
float turnDevAddYaw; //0024
float turnDevSub; //0028
float turnDevMax; //002C
float speedDevAddForward; //0030
float speedDevAddStrafe; //0034
float speedDevSub; //0038
float speedDevMax; //003C
float miscDevAddJump; //0040
float miscDevSub; //0044
float miscDevMax; //0048
float devModStand; //004C
float devModCrouch; //0050
float devModLie; //0054
float devModZoom; //0058
};
class CTComponent_Fire: public CTComponent
{
public:
byte unknown0[8];
__int32 fireStartDelay_0; //0008
float fireStartDelay_1; //000C
float fireStartDelay_2; //0010
__int32 fireStartDelay_3; //0014
byte unknown1[4];
float fireLaunchDelay; //001C
__int32 fireLaunchDelay_1; //0020
byte unknown2[24];
__int32 roundsPerMinute; //003C
byte unknown3[4];
BYTE fireInCameraDof; //0044
BYTE fireInCameraDofLocked; //0045
byte unknown4[2];
__int32 batchSize; //0048
__int32 burstSize; //004C
__int32 fireInput; //0050
__int32 altfireInput; //0054
__int32 ignoreFireButton; //0058
D3DXVECTOR3 projectileStartPosition; //005C
byte unknown7[12];
__int32 maxProjectilesInWorld; //0074
byte unknown8[20];
BYTE busyUntilButtonRelease; //008C
BYTE onlyFireWhenProne; //008D
};
class CTComponent_Recoil: public CTComponent
{
public:
//byte unknown0[12];
byte unknown0[4]; // vtable??
int unknown00;
int unknown01;
__int32 recoilForceUp_0; //000C
float recoilForceUp_1; //0010
float recoilForceUp_2; //0014
__int32 recoilForceUp_3; //0018
//byte unknown1[4];
int unknown1;
__int32 recoilForceLeftRight_0; //0020
float recoilForceLeftRight_1; //0024
float recoilForceLeftRight_2; //0028
__int32 recoilForceLeftRight_3; //002C
//byte unknown2[4];
int unknown2;
BYTE hasRecoilForce; //0034
BYTE goBackOnRecoil; //0035
//byte unknown3[2];
short unknown3;
float zoomModifier; //0038
__int32 recoilGraphFrameCount; //003C
float recoilGraphExponent; //0040
float recoilGraphTotalMovement; //0044
};
class CTComponent_Target: public CTComponent
{
public:
byte unknown0[12];
__int32 targetInput; //000C
byte unknown1[40];
string launcher_tv; //0038
BYTE Unknown4; //0054
BYTE sendVehicleLockWarning; //0055
byte unknown5[30];
BYTE connectionEffectOnlyWhenZoomed; //0074
byte unknown6[3];
float maxDistance; //0078
BYTE setTargetAtMaxDistance; //007C
BYTE useCameraDirectionToTarget; //007D
byte unknown7[2];
__int32 targetSystem; //0080
byte unknown8[4];
float lockAngle; //0088
float lockDelay; //008C
__int32 lockDelay_1; //0090
float looseLockDelay; //0094
__int32 looseLockDelay_1; //0098
};
class CTComponent_Zoom: public CTComponent
{
public:
byte unknown0[8];
__int32 zoomInput; //0008
__int32 onlyZoomWhenProne; //000C
byte unknown1[20];
float zoomDelay; //0024
__int32 zoomDelay_1; //0028
__int32 zoomLod; //002C
__int32 zoomOutAfterFire; //0030
float changeFovDelay; //0034
__int32 ChangeFovDelay_1; //0038
float mouseSpeedMod; //003C
__int32 disableMuzzleWhenZoomed; //0040
};
class CTComponent_Detonation: public CTComponent
{
public:
byte unknown0[80];
__int32 explosionMaterial; //0050
float explosionForce; //0054
float explosionYMod; //0058
float explosionRadius; //005C
byte unknown1[4];
float flashbangRadiusWithNightVision; //0064
byte unknown2[20];
float explosionDamage; //007C
byte unknown3[56];
float flashbangMinAlpha; //00B8
float flashbangMaxAlpha; //00BC
float flashbandMaxRampTime; //00C0
byte unknown4[12];
float flashbangMaxHealTime; //00D0
};
class CTComponent_Follow: public CTComponent
{
public:
char unknown0[12];
float maxYaw; //000C
float maxPitch; //0010
float changeYaw; //0014
float changePitch; //0018
float minDist; //001C
};
//////////////////////////////////////////////////////////////////////////
class CArmor
{
public:
byte unknown0[16];
float Health; //0010
};
class CSkeleton
{
public:
byte unknown0[4];
CSkeletonInfo* unk_info; //0004
CBone* bones; //0008
byte unknown1[4];
D3DXMATRIX* matrices; //000C
__int32 number_of_bones; //0010
};
class CSkeletonInfo
{
public:
D3DXMATRIX matrix; //0000
__int32 Unknown1; //0040
__int8 Unknown2; //0044
__int8 Unknown3; //0045
WORD Unknown4; //0046
};
class CBone
{
public:
__int32 bone_num; //0000
__int16 bone_code; //0004
__int16 parent; //0006
__int32 unknown; //0008
float offset_x; //000C
float offset_y; //0010
float offset_z; //0014
float length; //0018
float radius; //001C
__int32 material; //0020
};
class CTVCrosshair
{
public:
char unknown0[56]; //0x0000
float mouseX; //0x0038
float mouseY; //0x003C
float unknown1; //0x0040
float unknown2; //0x0044
};//Size=0x0048(72)
//.rdata:00880EE8 aHudmanager db 'HudManager',0
class CHudManager
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void Function22();
virtual void Function23();
virtual void Function24();
virtual void Function25();
virtual void Function26();
virtual void Function27();
virtual void Function28();
virtual void Function29();
virtual void Function30();
virtual void Function31();
virtual void Function32();
virtual void Function33();
virtual void Function34();
virtual void Function35();
virtual void Function36();
virtual void Function37();
virtual void Function38();
virtual void Function39();
virtual void Function40();
virtual void Function41();
virtual void Function42();
virtual void Function43();
virtual void Function44();
virtual void Function45();
virtual void Function46();
virtual void Function47();
virtual void Function48();
virtual void Function49();
virtual void Function50();
virtual void Function51();
virtual void Function52();
virtual void Function53();
virtual void Function54();
virtual void Function55();
virtual void Function56();
virtual void Function57();
virtual void Function58();
virtual void Function59();
virtual void Function60();
virtual void Function61();
virtual void Function62();
virtual void Function63();
virtual void Function64();
virtual void Function65();
virtual void Function66();
virtual void Function67();
virtual void Function68();
virtual void Function69();
virtual void Function70();
virtual void Function71();
virtual void Function72();
virtual void Function73();
virtual void Function74();
virtual void Function75();
virtual void Function76();
virtual void Function77();
virtual void Function78();
virtual void Function79();
virtual void Function80();
virtual void Function81();
virtual void Function82();
virtual void Function83();
virtual void Function84();
virtual void Function85();
virtual void Function86();
virtual void Function87();
virtual void Function88();
virtual void Function89();
virtual void Function90();
virtual void Function91();
virtual void Function92();
virtual void Function93();
virtual void Function94();
virtual void Function95();
virtual void Function96();
virtual void Function97();
virtual void Function98();
virtual void Function99();
virtual void Function100();
virtual void Function101();
virtual void Function102();
virtual void Function103();
virtual void Function104();
virtual void Function105();
virtual void Function106();
virtual void Function107();
virtual void Function108();
virtual void Function109();
virtual void Function110();
virtual void Function111();
virtual void Function112();
virtual void Function113();
virtual void Function114();
virtual void Function115();
virtual void Function116();
virtual void Function117();
virtual void Function118();
virtual void Function119();
virtual void Function120();
virtual void Function121();
virtual void Function122();
virtual void Function123();
virtual void Function124();
virtual void Function125();
virtual void Function126();
virtual void Function127();
virtual void Function128();
virtual void Function129();
virtual void Function130();
virtual void Function131();
virtual void Function132();
virtual void Function133();
virtual void Function134();
virtual void Function135();
virtual void Function136();
virtual void Function137();
virtual void Function138();
virtual void Function139();
virtual void Function140();
virtual void Function141();
virtual void Function142();
virtual void Function143();
virtual void Function144();
virtual void Function145();
virtual void Function146();
virtual void Function147();
virtual void Function148();
virtual void Function149();
virtual void Function150();
virtual void Function151();
virtual void Function152();
virtual void Function153();
virtual void Function154();
virtual void Function155();
virtual void Function156();
virtual void Function157();
virtual void Function158();
virtual void Function159();
virtual void Function160();
virtual void Function161();
virtual void Function162();
virtual void Function163();
virtual void Function164();
virtual void Function165();
virtual void Function166();
virtual void Function167();
virtual void Function168();
virtual void Function169();
virtual void Function170();
virtual void Function171();
virtual void Function172();
virtual void Function173();
virtual void Function174();
virtual void Function175();
virtual void ResignCommander(); //0x2C0
char unknown0[240];
CTVCrosshair* TVCrosshair; //00F4
char unknown1[68];
CCommander_Assets* assets; //013C
char unknown2[272];
__int32 menuOpened; //0250
};
#define CROSSHAIR_NORMAL 0x04 // Normal
#define CROSSHAIR_SHOTGUN 0x09 // Shotgun
#define CROSSHAIR_CN_AA 0x17 // PLA-AA
#define CROSSHAIR_US_AA 0x22 // US-AA
#define CROSSHAIR_LASER 0x35 // RedDot
#define CROSSHAIR_TOW 0x3B // TOW
class CCrosshair
{
public:
char unknown0[368];
BYTE Type;//170
};
class CHudMouse
{
public:
char unknown0[56];
float mouse_pos_x; //0038
float mouse_pos_y; //003C
float Unknown1; //0040
float Unknown2; //0044
};
class CMinimap
{
public:
virtual void Function0();
char unknown0[905];
BYTE showKits; //038D
};
class CCommander_Assets
{
public:
virtual void Function0();
byte unknown0[12];
float Artillery1Health; //0010 16
byte unknown1[4]; // 20
float Artillery2Health; //0018 24
//byte unknown2[36]; // 28
byte unknown2[20];
BYTE UAVLoading; //0030 48
char unknown8[15];// 31 49
float ArtilleryReloadTime; //0040 64
BYTE ArtilleryLoading; //0044
byte unknown3[11];
float SuppliesReloadTime; //0050
byte unknown4[8];
BYTE SuppliesLoading; //005C
byte unknown5[7];
BYTE Unknown6; //0064
byte unknown7[19];
float CarsLoadTime; //0078
float CarsHealth; //007C
};
class CCamera
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual CObject* DynamicCast(int type_id = 1);
virtual D3DXMATRIX* Shake(int);
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual float GetInsideFOV(void);
int IsValidCamera;
__int32 perspective; //0008
byte unknown1[172];
D3DXMATRIX matrix;
};
class CGeometry
{
};
class CInputManager
{
public:
virtual void IncRef();
virtual int iGetRef();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void ImportMiscStuff();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual CActionBuffer* GetActionBuffer_nextFrame( void );
virtual CActionBuffer* GetActionBuffer_thisFrame( void );
virtual bool bsIsCurrentFrame();
virtual void AdvanceToNextFrame();
virtual void Function17();
virtual int iGetDelta( void );
virtual void ConstructSelf( DWORD dwDontCare );
char unknown0[36];
__int32 dividend; //0028
__int32 divisor; //002C
char unknown1[4];
CActionBuffer* actionBuffer; //0034
};
class CRayTest
{
public:
CRayTest(CObject* obj);
virtual BYTE TestObject(CObject* obj);
virtual int iGetMask(void);
virtual BYTE function2(int a);
virtual BYTE TestMaterial(int material);
DWORD mask;
CObject* ignore_object;
};
class CDebugTextWriter
{
public:
virtual void AddRef( void );
virtual int GetRef( void );
virtual void Destructor( void );
virtual bool bVerifyGUID( DWORD dwId );
virtual bool bSetFontNeedsReload( bool bTest );
virtual bool bIsFontLoaded( void );
virtual bool bSetVisible( bool bVisible );
virtual DWORD dwGetTextColor();
virtual void SetColor( DWORD dwColor );
virtual void DrawColouredTextin3dSpaceEX( void );
virtual void DrawColouredTextin3dSpace( D3DXVECTOR3* pPos, DWORD dwColor, string* strText, float flTest );
virtual void DrawTextColouredEX();
virtual void DrawTextColoured( int x, int y, DWORD dwTextColor, string* strText, BOOL bIsConFont = 0 );
virtual void DrawTextCenteredin3dSpaceEX();
virtual void DrawTextCenteredin3dSpace( D3DXVECTOR3* pPos, string* strText, float flTest );
virtual void DrawTextEx( int x, int y, BOOL bIsConFont, BOOL bIsUnknown = 0, string* strText = NULL, BOOL bIsUnknown2 = 0 );
virtual void DrawText( int x, int y, string* strText, BOOL bIsConFont = 0 );
virtual void LoadFont();
virtual void DestroyFont();
DWORD m_dwUnknown;
void* m_pOverlay;
void LoadNewFont( string* /*pstrFont */) // Fonts/BF1942.font // Fonts/system_8x11
{
// if( m_pOverlay )
// m_pOverlay->Load( pstrFont );
}
// 2D is font loaded
// 30 is color
};
class CDebugLineDrawer
{
public:
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void DrawLine( void* pLine, DWORD dwColor, float flLength );
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void Function22();
virtual void Function23();
virtual void Function24();
virtual void Function25();
virtual void Function26();
virtual void Function27();
virtual void Function28();
virtual void Function29();
virtual void Function30();
virtual void Function31();
DWORD dwUnknown; // 4
DWORD dwUnknown1; // 8
ID3DXLine* m_pLine;
void DrawFilledRect( float x0, float y0, float x1, float y1, DWORD dwColor )
{
float w = x1 - x0;
float h = y1 - y0;
m_pLine->SetWidth( h );
m_pLine->SetAntialias( 0 );
D3DXVECTOR2 VertexList[ 2 ];
VertexList[0].x = x0;
VertexList[0].y = y0 + (h / 2.0f );
VertexList[1].x = x0 + w;
VertexList[1].y = y0 + (h / 2.0f );
m_pLine->Begin();
m_pLine->Draw( VertexList, 2, dwColor );
m_pLine->End();
}
void DrawLine2 ( float x1, float y1, float x2, float y2, DWORD Color, float lineW )
{
D3DXVECTOR2 vLine[ 2 ];
m_pLine->SetAntialias( 0 );
m_pLine->SetWidth( lineW );
m_pLine->Begin();
vLine[ 0 ][ 0 ] = x1;
vLine[ 0 ][ 1 ] = y1;
vLine[ 1 ][ 0 ] = x2;
vLine[ 1 ][ 1 ] = y2;
m_pLine->Draw( vLine, 2, Color );
m_pLine->End();
}
void OutlineRect( float x, float y, float w, float h, DWORD dwColor, float flLineWidth = 1.0f )
{
m_pLine->SetWidth( flLineWidth );
m_pLine->SetAntialias( 0 );
D3DXVECTOR2 VertexList[ 5 ];
VertexList[0].x = x;
VertexList[0].y = y;
VertexList[1].x = x + ( w / 2.0f );
VertexList[1].y = y;
VertexList[2].x = x + ( w / 2.0f );
VertexList[2].y = y + ( h / 2.0f );
VertexList[3].x = x;
VertexList[3].y = y + ( h / 2.0f );
VertexList[4].x = x;
VertexList[4].y = y;
m_pLine->Begin();
m_pLine->Draw( VertexList, 5, dwColor );
m_pLine->End();
}
};
class CMainConsole
{
public:
virtual void Function0();// 0
virtual void Function1(); // 4
virtual void Exec( string* strCommand /*&string("command")*/,string* strUnknown/* = &string("")*/,int iUnknown1 = 0,int iUnknown2 = 0,int iUnknown3 = 0,int iUnknown4 = 0,int iUnknown5 = 0 ); // 8
virtual void Function3(); // C
virtual void Print( string* strText ); // 10
virtual void Function5();// 14
virtual void Function6();// 18
virtual void Function7();// 1C
virtual void Draw( int iNumOfLines );// 20
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void Function22();
virtual void Function23();
virtual void Function24();
virtual void Function25();
virtual void Function26();
virtual void Function27();
virtual void Function28();
virtual void Function29();
virtual void Function30();
virtual void Function31();
virtual void Function32();
virtual void Function33();
virtual void Function34();
virtual void Function35();
virtual void Function36();
virtual void Function37();
virtual void Function38();
virtual void Function39();
virtual void Function40();
virtual bool bIsConsoleOpen( void );
__int32 iConsoleIsOpen; //0x0004 1 = Open
char unknown8[32]; //0x0008
__int32 iLinesUsed1; //0x0028
char unknown44[4]; //0x002C
__int32 iLinesUsed2; //0x0030
char unknown52[12]; //0x0034
__int32 iDifferentUsedCommands; //0x0040
char unknown68[8]; //0x0044
char cConsoleText[128]; //0x004C
char unknown204[8]; //0x00CC
__int32 iCharCounter; //0x00D4
};
struct CGameVec
{
/*
DWORD m_dwUnknown[33];
float* m_pflMatrix; // + 0x84
DWORD m_dwUnknown1[12];
float m_flXPos; // + 0xB4
float m_flYPos; // + 0xB8
float m_flZPos; // + 0xBC
*/
char unknown0[20];
CVehicle* Vehicle; //0014
char unknown1[36];
CHealth* VehicleHealth; //003C
char unknown2[72];
float Matrix; //0088
char unknown3[44];
float m_flXPos; //00B8
float m_flYPos; //00BC
float m_flZPos; //00C0
char unknown4[284];
BYTE SelectedWeapon; //01E0
char unknown5[79];
BYTE Posture; //0230
};
struct CInfo
{
DWORD m_dwUnkown;
CGameVec* m_pPosition; //0004
};
BF2 Defines
/*
Game-Deception Property License 1.0
2005-2008 Game-Deception( www.gamedeception.net )
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN REGARD TO THE SOFTWARE.
Permission is hereby granted, free of charge, to any person obtaining a copy of this
software and associated documentation files (the "Software"), to deal in the Software
without restriction, including without limitation the rights to use, copy, modify,
merge and publish copies of the Software, and to permit persons to whom the Software
is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies
or substantial portions of the Software.
The Software must be redistributed free of charge to third parties.
*/
#ifndef bf2_general_defines_h
#define bf2_general_defines_h
using namespace std;
//////////////////////////////////////////////////////////////////////////
// Common section:
// I doubt those classes and constants will change between versions
#ifndef _CLASS_NAME_DEF_
#define _CLASS_NAME_DEF_
#define NAME_CLASSMANAGER "ClassManager"
#define NAME_PHYSICSSYSTEM "BasicPhysicsSystem"
#define NAME_INPUTDEVICEMANAGER "InputDeviceManager"
#define NAME_CONTROLMAPMANAGER "ControlMapManager"
#define NAME_OBJECTMANAGER "ObjectManager"
#define NAME_TEMPLATEMANAGER "ObjectTemplateManager"
#define NAME_PLAYERMANAGER "PlayerManager"
#define NAME_HUDMANAGER "HudManager"
#define NAME_RENDERER "Renderer"
#define NAME_POSTPRODUCTION "PostProductionFrameWork"
#define NAME_NAMETAGMANAGER "NametagManager"
#define NAME_MATERIAL_MANAGER "MaterialManager"
#define NAME_INPUT_MANAGER "InputManager"
#define NAME_MAIN_CONSOLE "MainConsole"
#define NAME_DEBUG_TEXT_WRITER "DebugTextWriter"
#define NAME_DEBUG_LINE_DRAWER "DebugLineDrawer"
#endif
#define PHY_STEP 0.033333333333333333333333333333333
#define PHY_INV_STEP 30
#define PHY_FREQ 10
//////////////////////////////////////////////////////////////////////////
// the player input keys
#define PINumKeys 64
#define PIYaw 0
#define PIPitch 1
#define PIRoll 2
#define PIThrottle 3
#define PIMouseLookX 4
#define PIMouseLookY 5
#define PICameraX 6
#define PICameraY 7
#define PIFire 8
#define PIAction 9
#define PIUse 10
#define PIMouseLook 11
#define PIAltSprint 12
#define PISprint 13
#define PIWeaponSelect1 14
#define PIWeaponSelect2 15
#define PIWeaponSelect3 16
#define PIWeaponSelect4 17
#define PIWeaponSelect5 18
#define PIWeaponSelect6 19
#define PIWeaponSelect7 20
#define PIWeaponSelect8 21
#define PIWeaponSelect9 22
#define PIPositionSelect1 23
#define PIPositionSelect2 24
#define PIPositionSelect3 25
#define PIPositionSelect4 26
#define PIPositionSelect5 27
#define PIPositionSelect6 28
#define PIPositionSelect7 29
#define PIPositionSelect8 30
#define PIAltFire 31
#define PIReload 32
#define PISelectFunc 33
#define PIDrop 34
#define PIToggleCameraMode 35
#define PIToggleCamera 36
#define PILie 37
#define PICrouch 38
#define PICameraMode1 39
#define PICameraMode2 40
#define PICameraMode3 41
#define PICameraMode4 42
#define PISelectPrimWeapon 43
#define PISelectSecWeapon 44
#define PIToggleWeapon 45
#define PIToggleFireRate 46
#define PIFlareFire 47
#define PIRadio1 48
#define PIRadio2 49
#define PIRadio3 50
#define PIRadio4 51
#define PIRadio5 52
#define PIRadio6 53
#define PIRadio7 54
#define PIRadio8 55
#define PIScreenShot 56
#define PIToolTip 57
#define PISayAll 58
#define PISayTeam 59
#define PINextItem 60
#define PIPrevItem 61
#define PICommunication 62
#define PIShowScoreBoard 63
#define PINone 64
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// weapons' target system types
#define TSNone 00
#define TSHeatSeeking 01
#define TSLaserGuided 02
#define TSWireGuided 03
#define TSTVGuided 04
#define TSParabellic 05
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// input devices
#define IDFAll -1
#define IDFNone 00
#define IDFMouse 01
#define IDFKeyboard 02
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// engine types
#define ETPlane 1
#define ETCar 2
#define ETTank 6
#define ETShip 9
#define ETRocket 17
#define ETTorpedo 25
#define ETHelicopter 33
#define ETNewCar 42
#define ETNewTank 69
#define ETNewCar2 194
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// vehicle categories
#define VCLand 0
#define VCSea 1
#define VCAir 2
#define VCHelicopter 3
#define VCNoVehicleCategory 4
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// vehicle types
#define VTHeavyTank 0
#define VTLightTank 1
#define VTArtillery 2
#define VTApc 3
#define VTScoutCar 4
#define VTFighter 5
#define VTDiveBomber 6
#define VTBomber 7
#define VTAAGun 8
#define VTStationaryMG 9
#define VTDestroyer 10
#define VTBattleship 11
#define VTCarrier 12
#define VTSubmarine 13
#define VTLcvp 14
#define VTDefGun 15
#define VTLevelBomber 16
#define VTArmoredCar 17
#define VTTankHunter 18
#define VTATGun 19
#define VTAA 20
#define VTBoat 21
#define VTHelicopterAttack 22
#define VTHelicopterTransport 23
#define VTSniper 24
#define VTInfantry 25
#define VTNoVehicleType 26
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// classes types
//#define TEMPLATE_FLOATINGBUNDLE_ID 0x9478
//#define TEMPLATE_SPRING_ID 0x9481
//#define TEMPLATE_FORCEOBJECT_ID 0x9489
#define TEMPLATE_ITEM_ID 0x9492
#define TEMPLATE_SIMPLEOBJECT_ID 0x947E
#define TEMPLATE_CAMERA_ID 0x9472
#define TEMPLATE_ENGINE_ID 0x9476
#define TEMPLATE_ROTATIONALBUNDLE_ID 0x947D
#define TEMPLATE_WING_ID 0x9483
#define TEMPLATE_FREECAMERA_ID 0x948B
#define TEMPLATE_OVERHEADCAMERA_ID 0x948C
#define TEMPLATE_SOLDIER_ID 0x9493
#define TEMPLATE_KIT_ID 0x9496
#define TEMPLATE_ITEMCONTAINER_ID 0x9499
#define TEMPLATE_ANTENNABUNDLE_ID 0x949C
#define TEMPLATE_ANTENNA_ID 0x949D
#define TEMPLATE_OBJECTSPAWNER_ID 0x94A1
#define TEMPLATE_KITPART_ID 0x94A3
#define TEMPLATE_SUPPLYDEPOT_ID 0x94A4
#define TEMPLATE_CONTROLPOINT_ID 0x94A5
#define TEMPLATE_LANDINGGEAR_ID 0x94AE
#define TEMPLATE_OBSTACLE_ID 0x94AF
#define TEMPLATE_TARGETOBJECT_ID 0x94BE
#define TEMPLATE_ROTOR_ID 0x94CB
#define TEMPLATE_GENERICFIREARM_ID 0x94D3
#define TEMPLATE_GENERICPROJECTILE_ID 0x9539
#define TEMPLATE_LADDER_ID 0x9C40
#define TEMPLATE_REMOTECONTROLEDOBJECT_ID 0x9C42
#define TEMPLATE_TURNABLEREMOTECONTROLEDOBJECT_ID 0x9C43
#define TEMPLATE_LADDERCONTAINER_ID 0x9C46
#define TEMPLATE_SUPPLYOBJECT_ID 0x9C47
#define TEMPLATE_PLAYERCONTROLOBJECT_ID 0xc4C2
#define TEMPLATE_DESTROYABLEOBJECT_ID 0xC4D0
#define TEMPLATE_DESTROYABLEWINDOWSBUNDLE_ID 0xC4DC
#define TEMPLATE_DESTROYABLEWINDOW_ID 0xC4DD
#define TEMPLATE_PARACHUTE_ID 0xC5A8
#define PHYSICS_DYNAMIC_NODE_ID 0xc422
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#define COMPONENT_TOGGLECAMERA_ID 0x94E6
#define COMPONENT_AMMO_ID 0xC4F4
#define COMPONENT_DEVIATION_ID 0xC4FC
#define COMPONENT_FIRE_ID 0xC4F1
#define COMPONENT_RECOIL_ID 0xC4F8
#define COMPONENT_ANIMATION_ID 0xC504
#define COMPONENT_ZOOM_ID 0xC508
#define COMPONENT_TARGET_ID 0xC50C
#define COMPONENT_DETONATION_ID 0xC54F
#define COMPONENT_FOLLOW_ID 0xC55B
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// skeleton's bones
#define SKELETON_BONE_FOOTL 5
#define SKELETON_BONE_FOOTR 10
#define SKELETON_BONE_STOMACH 11
#define SKELETON_BONE_BREAST 12
#define SKELETON_BONE_HANDL 20
#define SKELETON_BONE_HANDR 35
#define SKELETON_BONE_NECK 47
#define SKELETON_BONE_CHIN 50
#define SKELETON_BONE_HEAD 56
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#define OVERLAY_CONSOLE_ID1 0x13C70
#define OVERLAY_CONSOLE_ID2 0x13882
#define OVERLAY_HUD_ID1 0x13C88
#define OVERLAY_HUD_ID2 0x138A0
#define OVERLAY_DYNAMIC_ID1 0x13C90
#define OVERLAY_DYNAMIC_ID2 0x138A7
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// forward declarations of the classes needed
//template<class T> class CRef;
template<class T> class CRef
{
public:
__int32 href; //0000
T* ptr; //0004
};
class CClassManager;
class CRenderer;
class CPostProductionFrameWork;
class CNametagManager;
class CHeightmapCluster;
class CControlMapManager;
class CControlMap;
class CInputDeviceManger;
class CInputDevice;
class CMouseDevice;
class CInputManager;
class CActionBuffer;
class CMaterialManager;
class CMaterial;
class CCollisionDamageCache;
class CPlayerManager;
class CPlayer;
class CInfoMgr;
class CPhysicsManager;
class CPhysicsNode;
class CVehicle;
class CCollisionMesh;
class CObjectManager;
class CObject;
class CObject_Soldier;
class CObject_PlayerControlObject;
class CObject_RotationalBundle;
class CObject_Weapon;
class CObject_Projectile;
class CObject_Target;
class CObject_Camera;
class CObject_Wing;
class CObject_Engine;
class COComponent;
class COComponent_Ammo;
class COComponent_Recoil;
class COComponent_Deviation;
class COComponent_Collision;
class COComponent_Detonation;
class COComponent_Target;
class COComponent_Follow;
class CTemplateManager;
class CTemplate;
class CTemplateInfo;
class CBundleTemplate;
class CTemplate_Soldier;
class CTemplate_PlayerControlableObject;
class CTemplate_GenericFireArm;
class CTemplate_GenericProjectile;
class CTemplate_RotationalBundle;
class CTemplate_Camera;
class CTemplate_Engine;
class CTemplate_Wing;
class CTComponent;
class CTComponent_Ammo;
class CTComponent_Animation;
class CTComponent_Deviation;
class CTComponent_Fire;
class CTComponent_Zoom;
class CTComponent_Recoil;
class CTComponent_Target;
class CTComponent_Follow;
class CTComponent_Detonation;
class CArmor;
class CSkeleton;
class CSkeletonInfo;
class CBone;
class CHudManager;
class CHudMouse;
class CCommander_Assets;
class CMinimap;
class CCrosshair;
class CCamera;
class CGeometry;
class CInputDeviceManger;
class CObject;
class CMaterial;
//////////////////////////////////////////////////////////////////////////
extern CClassManager* pClassManager;
extern CPhysicsManager* physics_manager;
extern CInputDeviceManger* input_device_manager;
extern CControlMapManager* controlmap_manager;
extern CObjectManager* object_manager;
extern CTemplateManager* template_manager;
extern CPlayerManager* player_manager;
extern CHudManager* hud_manager;
extern CCommander_Assets* cassets;
extern CCrosshair* ccrosshair;
extern CRenderer* renderer;
extern CPostProductionFrameWork* postproduction;
extern CPlayer* local_player;
extern CNametagManager* nametag_manager;
extern DWORD wtsfunc;
extern CMaterialManager* material_manager;
extern CInputManager* input_manager;
extern BOOL got_all_global_objects;
#define CLAMP(v, mi, ma) MAX( mi, MIN( v, ma ) )
#define SAFECALL( x, y ) if( x ) x->##y;
#endif //bf2_general_defines_h