Tiberian Technologies Scripts Reference Revision: 9000
Loading...
Searching...
No Matches
PhysicalGameObj.h
1/* Renegade Scripts.dll
2 Copyright 2013 Tiberian Technologies
3
4 This file is part of the Renegade scripts.dll
5 The Renegade scripts.dll is free software; you can redistribute it and/or modify it under
6 the terms of the GNU General Public License as published by the Free
7 Software Foundation; either version 2, or (at your option) any later
8 version. See the file COPYING for more details.
9 In addition, an exemption is given to allow Run Time Dynamic Linking of this code with any closed source module that does not contain code covered by this licence.
10 Only the source code to the module(s) containing the licenced code has to be released.
11*/
12#ifndef TT_INCLUDE_PHYSICALGAMEOBJ_H
13#define TT_INCLUDE_PHYSICALGAMEOBJ_H
14#include "DamageableGameObj.h"
15#include "PhysObserverClass.h"
16#include "PhysicalGameObjDef.h"
17#include "PhysClass.h"
18#include "AnimControlClass.h"
19class ActiveConversationClass;
20class PowerUpGameObj;
21class C4GameObj;
22class BeaconGameObj;
23class ArmedGameObj;
24class CinematicGameObj;
25class SimpleGameObj;
26class Matrix3D;
27class RenderObjClass;
28class PhysicalGameObj : public DamageableGameObj, public CombatPhysObserverClass {
29public:
30 PhysicalGameObj( void );
31 virtual ~PhysicalGameObj( void );
32 void Init( const PhysicalGameObjDef & definition );
33 void Copy_Settings( const PhysicalGameObjDef & definition );
34 void Re_Init( const PhysicalGameObjDef & definition );
35 const PhysicalGameObjDef SCRIPTS_API & Get_Definition( void ) const ;
36 virtual bool Save( ChunkSaveClass & csave );
37 virtual bool Load( ChunkLoadClass & cload );
38 virtual void On_Post_Load(void);
39 virtual void Startup( void ) {}
40 inline PhysClass * Peek_Physical_Object( void ) const { return PhysObj; }
41 void Attach_To_Object_Bone( PhysicalGameObj * host, const char * bone_name );
42 bool Is_Attached_To_An_Object( void ) { return (HostGameObj.Get_Ptr () != NULL); }
43 void Teleport_To_Host_Bone( void );
44 SCRIPTS_API void Set_Transform(const Matrix3D & tm);
45 SCRIPTS_API const Matrix3D & Get_Transform(void) const;
46 virtual void Get_Position(Vector3 * set_pos) const;
47 SCRIPTS_API Vector3 Get_Position() { Vector3 Return; Peek_Physical_Object()->Get_Position(&Return); return Return; }
48 SCRIPTS_API void Set_Position(const Vector3 & pos);
49 SCRIPTS_API float Get_Facing(void) const;
50 inline RenderObjClass * Peek_Model( void ) { return Peek_Physical_Object()->Peek_Model(); }
51 SCRIPTS_API AnimControlClass* Get_Anim_Control( void );
52 void Set_Anim_Control( AnimControlClass * anim_control );
53 virtual void Set_Animation( const char *animation_name, bool looping = true, float frame_offset = 0.0f );
54 virtual void Set_Animation_Frame ( const char *animation_name, int frame );
55 float Get_Bullseye_Offset_Z( void ) const { return Get_Definition().BullseyeOffsetZ; }
56 virtual Vector3 Get_Bullseye_Position( void );
57 virtual void Get_Information( StringClass & string );
58 virtual void Apply_Damage( const OffenseObjectClass & damager, float scale = 1.0f, int alternate_skin = -1 );
59 virtual void Apply_Damage_Extended( const OffenseObjectClass & offense, float scale = 1.0f,
60 const Vector3 & direction = Vector3( 0,0,0 ), const char * collision_box_name = NULL );
61 virtual void Completely_Damaged( const OffenseObjectClass & damager );
62 bool Is_Soft( void );
63 virtual bool Takes_Explosion_Damage( void ) { return true; }
64 int Get_Type() const { return Get_Definition().Type; }
65 virtual void Post_Think();
66 void SCRIPTS_API Set_Collision_Group( int group );
67 Collision_Group_Type Get_Collision_Group() const { return PhysObj->Get_Collision_Group(); }
68 virtual ExpirationReactionType Object_Expired( PhysClass * observed_obj ) { Set_Delete_Pending(); return 1; }
69 virtual PhysicalGameObj *As_PhysicalGameObj( void ) { return this; }
70 virtual DamageableGameObj *As_DamageableGameObj( void ) { return this; } // Re-implement for CombatPhysObserverClass
71 virtual SoldierGameObj *As_SoldierGameObj( void ) { return (SoldierGameObj *)NULL; }
72 virtual PowerUpGameObj *As_PowerUpGameObj( void ) { return (PowerUpGameObj *)NULL; }
73 virtual VehicleGameObj *As_VehicleGameObj( void ) { return (VehicleGameObj *)NULL; }
74 virtual C4GameObj *As_C4GameObj( void ) { return (C4GameObj *)NULL; }
75 virtual BeaconGameObj *As_BeaconGameObj (void) { return (BeaconGameObj *)NULL; }
76 virtual ArmedGameObj *As_ArmedGameObj( void ) { return (ArmedGameObj *)NULL; }
77 virtual CinematicGameObj *As_CinematicGameObj( void ) { return NULL; }
78 virtual SimpleGameObj *As_SimpleGameObj( void ) { return NULL; }
79 BYTE Get_Server_Skips(void) {return ServerUpdateSkips;}
80 void Reset_Server_Skips(BYTE value);
81 void Increment_Server_Skips(void);
82 virtual bool Is_Hibernating( void ) { return HibernationTimer <= 0; }
83 void Enable_Hibernation( bool enable ) { HibernationEnable = enable; if ( Is_Hibernating() ) HibernationTimer = 1;}
84 void Reset_Hibernating( void );
85 void Do_Not_Hibernate( void ) { if ( HibernationTimer < 1 ) HibernationTimer = 1; }
86 virtual void Begin_Hibernation( void );
87 virtual void End_Hibernation( void );
88 int Get_Radar_Blip_Shape_Type( void ) { return RadarBlipShapeType; }
89 void Set_Radar_Blip_Shape_Type( int type ) { RadarBlipShapeType = type; Set_Object_Dirty_Bit(NetworkObjectClass::BIT_RARE,true);}
90 void Reset_Radar_Blip_Shape_Type( void ) { RadarBlipShapeType = Get_Definition().RadarBlipType; Set_Object_Dirty_Bit(NetworkObjectClass::BIT_RARE,true);}
91 int Get_Radar_Blip_Color_Type( void ) { return RadarBlipColorType; }
92 void Set_Radar_Blip_Color_Type( int type ) { RadarBlipColorType = type; Set_Object_Dirty_Bit(NetworkObjectClass::BIT_RARE,true);}
93 void Reset_Radar_Blip_Color_Type( void );
94 float Get_Radar_Blip_Intensity( void ) { return RadarBlipIntensity; }
95 void Set_Radar_Blip_Intensity( float value ) { RadarBlipIntensity = value; }
96 virtual void Export_Creation( BitStreamClass &packet );
97 virtual void Import_Creation( BitStreamClass &packet );
98 virtual void Export_Rare( BitStreamClass &packet );
99 virtual void Import_Rare( BitStreamClass &packet );
100 virtual void Export_Frequent( BitStreamClass &packet );
101 virtual void Import_Frequent( BitStreamClass &packet );
102 virtual int Get_Vis_ID(void);
103 virtual bool Get_World_Position (Vector3 &pos) const { Get_Position (&pos); return true; }
104 bool Are_Innate_Conversations_Enabled( void ) { return Get_Definition().AllowInnateConversations && IsInnateConversationsEnabled; }
105 void Enable_Innate_Conversations( bool enable ) { IsInnateConversationsEnabled = enable; }
106 bool Is_In_Conversation( void ) const { return ActiveConversation != NULL; }
107 void Set_Conversation( ActiveConversationClass *conversation );
108 void Hide_Muzzle_Flashes( bool hide = true );
109 void Enable_HUD_Pokable_Indicator( bool enable );
110 bool Is_HUD_Pokable_Indicator_Enabled( void ) { return HUDPokableIndicatorEnabled; }
111 virtual void Set_Player_Type(int type);
112 virtual void Object_Shattered_Something(PhysClass * observed_obj, PhysClass * shattered_obj, int surface_type);
113 void Clear_Animation() {if (AnimControl) {AnimControl->Set_Animation((const char*)NULL, 0, 0);AnimControl->Set_Mode(ANIM_MODE_STOP,0);ClearAnimation = true;Set_Object_Dirty_Bit(NetworkObjectClass::BIT_RARE,true);}}
114 void Set_Team_Visibility(TeamVisibilitySetting setting) {TeamVisibility = (char)setting;Set_Object_Dirty_Bit(NetworkObjectClass::BIT_RARE,true);}
115 void Set_Player_Visible(bool visible) {PlayerVisible = visible;}
116 GameObject * Get_Parent_Object(){return HostGameObj;}
117protected:
118 ActiveConversationClass *ActiveConversation;
119private:
120 PhysClass * PhysObj;
121 AnimControlClass * AnimControl;
122 BYTE ServerUpdateSkips;
123 float HibernationTimer;
124 bool HibernationEnable;
125 char TeamVisibility;
126 ReferencerClass HostGameObj;
127 int HostGameObjBone;
128 int RadarBlipShapeType;
129 int RadarBlipColorType;
130 float RadarBlipIntensity;
131 int PendingHostObjID;
132 bool HUDPokableIndicatorEnabled;
133 bool IsInnateConversationsEnabled;
134 bool ClearAnimation;
135 bool PlayerVisible;
136}; // 07B0
137
138#endif