Nuclide
Software Development Kit for id Technology (BETA)
Loading...
Searching...
No Matches
RenderableEntity.h
1/*
2 * Copyright (c) 2016-2022 Vera Visions LLC.
3 *
4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
13 * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
14 * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15*/
16
17typedef enumflags
18{
19 RDENT_CHANGED_ORIGIN_X,
20 RDENT_CHANGED_ORIGIN_Y,
21 RDENT_CHANGED_ORIGIN_Z,
22 RDENT_CHANGED_ANGLES_X,
23 RDENT_CHANGED_ANGLES_Y,
24 RDENT_CHANGED_ANGLES_Z,
25 RDENT_CHANGED_MODELINDEX,
26 RDENT_CHANGED_SIZE,
27 RDENT_CHANGED_FLAGS,
28 RDENT_CHANGED_SOLIDMOVETYPE,
29 RDENT_CHANGED_FRAME,
30 RDENT_CHANGED_SKIN,
31 RDENT_CHANGED_EFFECTS,
32 RDENT_CHANGED_BODY,
33 RDENT_CHANGED_SCALE,
34 RDENT_CHANGED_VELOCITY,
35 RDENT_CHANGED_ANGULARVELOCITY,
36 RDENT_CHANGED_RENDERCOLOR,
37 RDENT_CHANGED_RENDERAMT,
38 RDENT_CHANGED_RENDERMODE,
39 RDENT_CHANGED_CONTROLLER
40} nsrenderableentity_changed_t;
41
42typedef enum
43{
44 RM_NORMAL = 0,
45 RM_COLOR = 1,
46 RM_TEXTURE = 2,
47 RM_GLOW = 3,
48 RM_SOLID = 4,
49 RM_ADDITIVE = 5,
50 RM_FULLBRIGHT = 6,
51 RM_ADDFRAC = 7, /* Source 2004 */
52 RM_WORLDGLOW = 9, /* Source 2004 */
53 RM_DONTRENDER = 10, /* Source 2004 */
54} rendermode_t;
55
56typedef enum
57{
58 RFX_NORMAL = 0,
59 RFX_SLOWPULSE = 1,
60 RFX_FASTPULSE = 2,
61 RFX_SLOWWIDEPULSE = 3,
62 RFX_FASTWIDEPULSE = 4,
63 RFX_SLOWFADEAWAY = 5,
64 RFX_FASTFADEAWAY = 6,
65 RFX_SLOWBECOMESOLID = 7,
66 RFX_FASTBECOMESOLID = 8,
67 RFX_SLOWSTROBE = 9,
68 RFX_FASTSTROBE = 10,
69 RFX_FASTERSTROBE = 11,
70 RFX_SLOWFLICKER = 12,
71 RFX_FASTFLICKER = 13,
72 RFX_CONSTANTGLOW = 14,
73 RFX_DISTORT = 15,
74 RFX_HOLOGRAM = 16,
75 RFX_GLOWSHELL = 19,
76 RFX_GLOWSHELL2 = 20,
77 RFX_Q2PULSE = 21
78} renderfx_t;
79
80#ifdef CLIENT
81var int autocvar_rm_unlit_additive = TRUE;
82var int autocvar_rm_unlit_texture = TRUE;
83#endif
84
94{
95public:
96 void ncRenderableEntity(void);
97
98 virtual void OnRemoveEntity(void);
99
100 /* overrides */
101 virtual void SpawnKey(string,string);
102#ifdef SERVER
103 virtual void Input(entity,string,string);
104 virtual void Respawn(void);
105 virtual void Save(float);
106 virtual void Restore(string,string);
107 virtual void EvaluateEntity(void);
108 virtual float SendEntity(entity,float);
109
110 nonvirtual void Event_SpawnDefBone(string, string);
111 nonvirtual void Event_SpawnDefAttachment(string, float);
112#endif
113
114#ifdef CLIENT
115 virtual void RenderDebugSkeleton(void);
116 virtual void ReceiveEntity(float,float);
117 virtual float predraw(void);
118 virtual void postdraw(void);
119 virtual void ReloadVideoResources();
120#endif
121
122 virtual void MakeStatic(void);
123
124 /* model events */
126 virtual void HandleAnimEvent(float,int,string);
127
128 /* set */
130 nonvirtual void SetBody(int);
132 nonvirtual void SetBodyInGroup(int, int);
134 nonvirtual void SetRenderFX(float);
136 nonvirtual void SetRenderMode(float);
138 nonvirtual void SetRenderAmt(float);
140 nonvirtual void SetRenderColor(vector);
142 nonvirtual void SetBoneController1(float);
144 nonvirtual void SetBoneController2(float);
146 nonvirtual void SetBoneController3(float);
148 nonvirtual void SetBoneController4(float);
150 nonvirtual void SetBoneController5(float);
152 nonvirtual void SetAxialScale(vector);
153
155 nonvirtual int GetBody(void);
157 nonvirtual int GetBodyInGroup(int);
159 nonvirtual float GetRenderMode(void);
161 nonvirtual float GetRenderFX(void);
163 nonvirtual float GetRenderAmt(void);
165 nonvirtual vector GetRenderColor(void);
167 nonvirtual float GetBoneController1(void);
169 nonvirtual float GetBoneController2(void);
171 nonvirtual float GetBoneController3(void);
173 nonvirtual float GetBoneController4(void);
175 nonvirtual float GetBoneController5(void);
177 nonvirtual vector GetAxialScale(void);
178
179#ifdef CLIENT
181 nonvirtual void RenderFXPass(void);
182 nonvirtual void RenderAxialScale(void);
183 nonvirtual void RenderGLQuakeShadow(void);
184#endif
185
186private:
187 /* new */
188 NETWORKED_FLOAT(m_studioBoneController1)
189 NETWORKED_FLOAT(m_studioBoneController2)
190 NETWORKED_FLOAT(m_studioBoneController3)
191 NETWORKED_FLOAT(m_studioBoneController4)
192 NETWORKED_FLOAT(m_studioBoneController5)
193 NETWORKED_FLOAT_N(modelflags)
194 NETWORKED_INT(m_geomsetField)
195 NETWORKED_FLOAT_N(colormap)
196 NETWORKED_VECTOR_N(glowmod)
197 NETWORKED_FLOAT_N(frame1time)
198
199 NETWORKED_FLOAT(m_renderFX)
200 NETWORKED_FLOAT(m_renderMode)
201 NETWORKED_FLOAT(m_renderAmount)
202 NETWORKED_VECTOR(m_renderColor)
203 NETWORKED_VECTOR(m_axialScale)
204
205 /* either a sprite model or a particle */
206 NETWORKED_INT(m_iMuzzleModel)
207 NETWORKED_INT(m_iMuzzlePart)
208 NETWORKED_FLOAT(m_flMuzzleScale)
209
210 /* model events */
211 float m_modelEventTime;
212 float m_iNumBones;
213 nonvirtual void _UpdateBoneCount();
214
215#ifdef CLIENT
216 float m_studioBoneController1Spin;
217 float m_studioBoneController2Spin;
218 float m_studioBoneController3Spin;
219 float m_studioBoneController4Spin;
220 float m_studioBoneController5Spin;
221 float m_netEffects;
222
223 /* muzzle cache */
224 string m_muzzPartSmoke;
225 vector m_muzzOffset;
226 vector m_muzzRelativeOffset;
227 float m_fiJointMuzzle; /* World Model only */
228 float m_fiJointBarrel; /* View Model only */
229
230 nonvirtual void _UpdateGeomset();
231#endif
232};
void ncEntity(void)
The constructor.
Definition Entity.qc:29
nonvirtual void SetBoneController1(float)
Sets the value of the bone controller #1.
Definition RenderableEntity.qc:952
nonvirtual vector GetRenderColor(void)
Returns the render color of the entity.
Definition RenderableEntity.qc:1018
nonvirtual int GetBodyInGroup(int)
Returns the body within a given group.
Definition RenderableEntity.qc:994
virtual void EvaluateEntity(void)
Run each tic after physics are run to determine if we need to send updates over the network.
Definition RenderableEntity.qc:132
virtual void Save(float)
Handles saving a copy of this entity to a given filehandle.
Definition RenderableEntity.qc:1250
nonvirtual void Event_SpawnDefAttachment(string, float)
Definition RenderableEntity.qc:1326
virtual void SpawnKey(string, string)
This method handles entity key/value pairs on map load.
Definition RenderableEntity.qc:1412
virtual void Restore(string, string)
Similar to ncIO::SpawnKey() but for save-game fields.
Definition RenderableEntity.qc:1268
nonvirtual void SetAxialScale(vector)
Sets the axial, anisotropic scale of an entity, affecting the individual axis (forward,...
Definition RenderableEntity.qc:982
nonvirtual void SetRenderFX(float)
Sets the render FX type of the entity.
Definition RenderableEntity.qc:923
nonvirtual float GetRenderFX(void)
Returns the render FX of the entity.
Definition RenderableEntity.qc:1006
virtual void ReloadVideoResources()
Client: Called when video resources need to be allocated or reloaded for the entity.
Definition RenderableEntity.qc:45
nonvirtual float GetBoneController2(void)
Returns the value of the entity's bone controller #2.
Definition RenderableEntity.qc:1030
nonvirtual vector GetAxialScale(void)
Returns the axial/anisotropic scale of the entity, same as input format (forward, right,...
Definition RenderableEntity.qc:1054
nonvirtual void SetBoneController2(float)
Sets the value of the bone controller #2.
Definition RenderableEntity.qc:958
nonvirtual void SetBoneController4(float)
Sets the value of the bone controller #4.
Definition RenderableEntity.qc:970
nonvirtual void SetBody(int)
Sets the bodygroup of the entity.
Definition RenderableEntity.qc:904
nonvirtual void RenderGLQuakeShadow(void)
virtual void MakeStatic(void)
Tells the engine to make the entity static, effectively making it inaccessible.
Definition RenderableEntity.qc:111
nonvirtual void SetRenderAmt(float)
Sets the render amount of the entity.
Definition RenderableEntity.qc:935
virtual float predraw(void)
nonvirtual void SetRenderMode(float)
Sets the render mode type of the entity.
Definition RenderableEntity.qc:929
nonvirtual float GetRenderAmt(void)
Returns the render amount of the entity.
Definition RenderableEntity.qc:1012
nonvirtual void RenderFXPass(void)
Called by predraw(); and will set the appropriate rendering specific fields.
nonvirtual void SetBodyInGroup(int, int)
Sets the body inside of a specific group.
Definition RenderableEntity.qc:914
virtual void postdraw(void)
Client: Run after the rendering of 3D world is complete.
nonvirtual int GetBody(void)
Returns the bodygroup of the entity.
Definition RenderableEntity.qc:988
nonvirtual void RenderAxialScale(void)
nonvirtual float GetBoneController5(void)
Returns the value of the entity's bone controller #5.
Definition RenderableEntity.qc:1048
virtual void ReceiveEntity(float, float)
Client: Handles network updates from the server for the associated entity.
virtual void OnRemoveEntity(void)
Handles what happens before the entity gets removed from the client game.
Definition RenderableEntity.qc:89
nonvirtual float GetBoneController3(void)
Returns the value of the entity's bone controller #3.
Definition RenderableEntity.qc:1036
nonvirtual void SetBoneController3(float)
Sets the value of the bone controller #3.
Definition RenderableEntity.qc:964
virtual void RenderDebugSkeleton(void)
void ncRenderableEntity(void)
Definition RenderableEntity.qc:18
nonvirtual float GetRenderMode(void)
Returns the render mode of the entity.
Definition RenderableEntity.qc:1000
nonvirtual void Event_SpawnDefBone(string, string)
Definition RenderableEntity.qc:1313
nonvirtual void SetRenderColor(vector)
Sets the render color of the entity.
Definition RenderableEntity.qc:941
virtual void HandleAnimEvent(float, int, string)
Callback for any model event that gets triggered while playing a framegroup.
Definition RenderableEntity.qc:1060
nonvirtual float GetBoneController1(void)
Returns the value of the entity's bone controller #1.
Definition RenderableEntity.qc:1024
virtual void Respawn(void)
Server: Called when the entity first spawns or when game-logic requests the entity to return to its o...
Definition RenderableEntity.qc:883
nonvirtual void SetBoneController5(float)
Sets the value of the bone controller #5.
Definition RenderableEntity.qc:976
virtual void Input(entity, string, string)
Called when we are being prompted by another object/function with an input message.
Definition RenderableEntity.qc:1339
virtual float SendEntity(entity, float)
Called by the engine whenever we need to send a client an update about this entity.
Definition RenderableEntity.qc:195
nonvirtual float GetBoneController4(void)
Returns the value of the entity's bone controller #4.
Definition RenderableEntity.qc:1042