Nuclide
Software Development Kit for id Technology (BETA)
PMoveVars.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
17.float waterlevel;
18.float watertype;
19.float maxspeed;
20.vector view_ofs;
21int trace_endcontentsi;
22.vector m_pmoveBaseVelocity;
23.entity groundentity;
24.vector m_pmoveLadderNormal;
25
26
34typedef enum
35{
41
42
44class
46{
47public:
48 void ncPMoveVars(void);
49
50 nonvirtual ncPMoveVars ManagerForEntity(entity actorEntity);
51
52 NETWORKED_FLOAT(g_gravity)
53 NETWORKED_FLOAT(pm_accelerate)
54 NETWORKED_FLOAT(pm_airaccelerate)
55 NETWORKED_FLOAT(pm_airstepsize)
56 NETWORKED_FLOAT(pm_boxcenter)
57 NETWORKED_FLOAT(pm_boxwidth)
58 NETWORKED_FLOAT(pm_crouchheight)
59 NETWORKED_FLOAT(pm_crouchspeed)
60 NETWORKED_FLOAT(pm_crouchviewheight)
61 NETWORKED_FLOAT(pm_edgefriction)
62 NETWORKED_FLOAT(pm_friction)
63 NETWORKED_FLOAT(pm_gravity)
64 NETWORKED_FLOAT(pm_jumpheight)
65 NETWORKED_FLOAT(pm_maxviewpitch)
66 NETWORKED_FLOAT(pm_minviewpitch)
67 NETWORKED_FLOAT(pm_noclipaccelerate)
68 NETWORKED_FLOAT(pm_noclipspeed)
69 NETWORKED_FLOAT(pm_normalheight)
70 NETWORKED_FLOAT(pm_normalviewheight)
71 NETWORKED_FLOAT(pm_nospeedcap)
72 NETWORKED_FLOAT(pm_proneheight)
73 NETWORKED_FLOAT(pm_pronespeed)
74 NETWORKED_FLOAT(pm_proneviewheight)
75 NETWORKED_FLOAT(pm_runspeed)
76 NETWORKED_FLOAT(pm_runfiring)
77 NETWORKED_FLOAT(pm_stamina)
78 NETWORKED_FLOAT(pm_staminarate)
79 NETWORKED_FLOAT(pm_staminathreshold)
80 NETWORKED_FLOAT(pm_stepsize)
81 NETWORKED_FLOAT(pm_stopspeed)
82 NETWORKED_FLOAT(pm_walkspeed)
83 NETWORKED_FLOAT(pm_wateraccelerate)
84 NETWORKED_FLOAT(pm_waterjumpheight)
85 NETWORKED_FLOAT(pm_leanspeed)
86 NETWORKED_BOOL(pm_stepdown)
87 NETWORKED_FLOAT(m_defID)
88
89
90 nonvirtual vector GetStandingMins(void);
92 nonvirtual vector GetStandingMaxs(void);
94 nonvirtual vector GetStandingViewOffset(void);
96 nonvirtual vector GetCrouchMins(void);
98 nonvirtual vector GetCrouchMaxs(void);
100 nonvirtual vector GetCrouchViewOffset(void);
102 nonvirtual vector GetProneMins(void);
104 nonvirtual vector GetProneMaxs(void);
106 nonvirtual vector GetProneViewOffset(void);
107
108#ifdef SERVER
109 virtual void Save(float);
110 virtual void Restore(string,string);
111 virtual void RestoreComplete(void);
112 virtual void EvaluateEntity(void);
113 virtual bool SendEntity(entity, float);
114#endif
115
116#ifdef CLIENT
117 virtual void ReceiveEntity(float, float);
118#endif
119
120private:
121 nonvirtual void Refresh(void);
122 nonvirtual void UpdateBoundingBoxes(void);
123 nonvirtual void LinkToEntity(string declClass);
124
125 vector m_vecStandingMins;
126 vector m_vecStandingMaxs;
127 vector m_vecCrouchMins;
128 vector m_vecCrouchMaxs;
129 vector m_vecProneMins;
130 vector m_vecProneMaxs;
131 vector m_vecNormalViewOffset;
132 vector m_vecCrouchViewOffset;
133 vector m_vecProneViewOffset;
134 string m_defLink;
135};
136
137
138void
140{
141 m_defLink = __NULL__;
142 m_vecStandingMins = g_vec_null;
143 m_vecStandingMaxs = g_vec_null;
144 m_vecCrouchMins = g_vec_null;
145 m_vecCrouchMaxs = g_vec_null;
146 m_vecProneMins = g_vec_null;
147 m_vecProneMaxs = g_vec_null;
148 m_vecNormalViewOffset = g_vec_null;
149 m_vecCrouchViewOffset = g_vec_null;
150 m_vecProneViewOffset = g_vec_null;
151 g_gravity = 0.0f;
152 pm_accelerate = 0.0f;
153 pm_airaccelerate = 0.0f;
154 pm_airstepsize = 0.0f;
155 pm_boxcenter = 0.0f;
156 pm_boxwidth = 0.0f;
157 pm_crouchheight = 0.0f;
158 pm_crouchspeed = 0.0f;
159 pm_crouchviewheight = 0.0f;
160 pm_edgefriction = 0.0f;
161 pm_friction = 0.0f;
162 pm_gravity = 0.0f;
163 pm_jumpheight = 0.0f;
164 pm_maxviewpitch = 0.0f;
165 pm_minviewpitch = 0.0f;
166 pm_noclipaccelerate = 0.0f;
167 pm_noclipspeed = 0.0f;
168 pm_normalheight = 0.0f;
169 pm_normalviewheight = 0.0f;
170 pm_nospeedcap = 0.0f;
171 pm_proneheight = 0.0f;
172 pm_pronespeed = 0.0f;
173 pm_proneviewheight = 0.0f;
174 pm_runspeed = 0.0f;
175 pm_runfiring = 0.0f;
176 pm_stamina = 0.0f;
177 pm_staminarate = 0.0f;
178 pm_staminathreshold = 0.0f;
179 pm_stepsize = 0.0f;
180 pm_stepdown = true;
181 pm_stopspeed = 0.0f;
182 pm_walkspeed = 0.0f;
183 pm_wateraccelerate = 0.0f;
184 pm_waterjumpheight = 0.0f;
185 pm_leanspeed = 0.0f;
186}
187
197
199void PMove_Init(void);
200
203 // end of pmove
This class is responsible for handling groups of key/value pairs.
Definition: Dict.h:35
ncEntity is the lowest of the user-accessible entity class.
Definition: Entity.h:75
This class networks pmove related variables to each client.
Definition: PMoveVars.h:46
ncDict g_fallDamageDecl
Definition: PMoveVars.h:193
waterlevel_t
Definition: PMoveVars.h:35
ncDict g_slimeDamageDecl
Definition: PMoveVars.h:195
void ncPMoveVars(void)
Definition: PMoveVars.h:139
ncDict g_waterDamageDecl
Definition: PMoveVars.h:194
ncDict g_lavaDecl
Definition: PMoveVars.h:192
void PMoveCustom_RunCrouchPhysics(entity)
Definition: pmove_custom.qc:732
void PMove_Init(void)
Called by Nuclide.
Definition: PMoveVars.qc:874
ncDict g_slimeDecl
Definition: PMoveVars.h:191
ncDict g_lavaDamageDecl
Definition: PMoveVars.h:196
ncPMoveVars g_pmoveVars
The global, shared object containing all currently valid pmove parameters.
Definition: PMoveVars.h:189
ncDict g_waterDecl
Definition: PMoveVars.h:190
void PMoveCustom_RunPlayerPhysics(entity)
Definition: pmove_custom.qc:690
@ WATERLEVEL_KNEE
Definition: PMoveVars.h:37
@ WATERLEVEL_SUBMERGED
Definition: PMoveVars.h:39
@ WATERLEVEL_CHEST
Definition: PMoveVars.h:38
@ WATERLEVEL_OUTSIDE
Definition: PMoveVars.h:36
float maxspeed
Definition: soundDef.h:113