14#include "NetworkObjectClass.h"
21class ScriptableGameObj;
25class BaseGameObj:
public PersistClass,
public NetworkObjectClass
30 virtual ~BaseGameObj();
32 virtual void Init() = 0;
33 void Init(
const BaseGameObjDef & definition);
35 virtual bool Save(ChunkSaveClass& csave);
36 virtual bool Load(ChunkLoadClass& cload);
37 virtual void Think() { IsPostThinkAllowed =
true; }
38 virtual void Post_Think() {};
39 virtual bool Is_Hibernating() {
return false; }
41 virtual PhysicalGameObj* As_PhysicalGameObj() {
return nullptr; }
42 virtual VehicleGameObj* As_VehicleGameObj() {
return nullptr; }
43 virtual SmartGameObj* As_SmartGameObj() {
return nullptr; }
44 virtual ScriptableGameObj* As_ScriptableGameObj() {
return nullptr; }
46 virtual uint32 Get_Network_Class_ID()
const {
return 0x3E8; }
47 virtual void Delete() {
delete this; }
49 const BaseGameObjDef& Get_Definition()
const {
return *Definition; };
50 void Set_ID(
int id) { Set_Network_ID(
id); }
51 int Get_ID()
const {
return Get_Network_ID(); }
53 bool Is_Post_Think_Allowed() {
return IsPostThinkAllowed; }
54 void Enable_Cinematic_Freeze(
bool enable) { EnableCinematicFreeze = enable; }
55 bool Is_Cinematic_Freeze_Enabled() {
return EnableCinematicFreeze; }
59 const BaseGameObjDef* Definition;
60 bool IsPostThinkAllowed;
61 bool EnableCinematicFreeze;