Polyphase Game Engine
Loading...
Searching...
No Matches
EngineTypes.h
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4#include <string.h>
5#include <float.h>
6#include <unordered_set>
7#include <unordered_map>
8#include <algorithm>
9
10#include "Constants.h"
11#include "Maths.h"
12#include "SmartPointer.h"
13
14#include "System/SystemTypes.h"
16#include "Input/InputTypes.h"
17
18#include <BulletCollision/CollisionDispatch/btCollisionWorld.h>
19
20#if LUA_ENABLED
21#include <Lua/lua.hpp>
22#endif
23
24class Level;
25class Primitive3D;
26class Light3D;
27class Node3D;
28class Node;
29
30// Platform enum moved here for use in EngineConfig
31enum class Platform : int
32{
33 Windows,
34 Linux,
35 Android,
37 Wii,
38 N3DS,
39 // NOTE: the literal token `PSP` cannot be used here as an enum value
40 // because PSPSDK predefines `PSP=1` as a command-line macro for every TU
41 // it compiles — leaking into a Polyphase build that links against any
42 // PSP addon. The expansion `Platform::1` is a syntax error. `Psp` is
43 // unaffected and `GetPlatformString` still returns "PSP" for display.
44 Psp,
45
46 Count
47};
48
49// Bitmask form of Platform for per-asset platform-mask flags.
50// Values must mirror Platform's index order: PlatformBit::X == (1u << int(Platform::X)).
63
64inline uint32_t GetPlatformBit(Platform p)
65{
66 return (p >= Platform::Windows && p < Platform::Count) ? (1u << int(p)) : 0u;
67}
68
69class StaticMesh;
70class Material;
71
72typedef uint32_t TypeId;
73typedef uint32_t NetId;
74typedef uint32_t NodeId;
75typedef uint64_t RuntimeId;
76
77// Bullet Types
78class btDynamicsWorld;
79struct btDbvtBroadphase;
80class btDefaultCollisionConfiguration;
81class btCollisionDispatcher;
82class btSequentialImpulseConstraintSolver;
83class btDiscreteDynamicsWorld;
84class btRigidBody;
85class btCollisionShape;
86class btBvhTriangleMeshShape;
87class btTriangleIndexVertexArray;
88struct btTriangleInfoMap;
89
90enum class CollisionShape : uint32_t
91{
92 Empty,
93 Box,
94 Sphere,
95 Capsule,
100
101 Num
102};
103
104enum class ShadingModel : uint32_t
105{
106 Unlit,
107 Lit,
108 Toon,
109
110 Count
111};
112
113enum class BlendMode : uint32_t
114{
115 Opaque,
116 Masked,
118 Additive,
119
120 Count
121};
122
123enum class VertexColorMode : uint32_t
124{
125 None,
126 Modulate,
128
129 Count
130};
131
132enum class TevMode : uint32_t
133{
134 Replace,
135 Modulate,
136 Decal,
137 Add,
138 SignedAdd,
139 Subtract,
141 Pass,
142
143 Count
144};
145
146enum class CullMode : uint8_t
147{
148 None,
149 Back,
150 Front,
151
152 Count
153};
154
156{
157 Node,
158 Asset,
159 Global,
160 Count
161};
162
163enum class LightType : uint8_t
164{
165 Point,
166 Spot,
168
169 Count
170};
171
172enum class LightingDomain : uint8_t
173{
174 Static,
175 Dynamic,
176 All,
177
178 Count
179};
180
181enum class PostProcessPassId : uint8_t
182{
183 Blur,
184 Fxaa,
185 Tonemap,
186
187 Count
188};
189
190enum class SkyType : uint8_t
191{
192 None,
196
197 Count
198};
199
200struct Bounds
201{
202 glm::vec3 mCenter = { };
203 float mRadius = 1.0f;
204};
205
206// Axis-aligned bounding box. Kept separate from Bounds on purpose -- Bounds is
207// embedded by value in DrawData and streamed through the per-frame cull loops,
208// so it must stay small.
209struct AABB
210{
211 glm::vec3 mMin = { -0.5f, -0.5f, -0.5f };
212 glm::vec3 mMax = { 0.5f, 0.5f, 0.5f };
213
214 AABB() = default;
215 AABB(glm::vec3 min, glm::vec3 max) : mMin(min), mMax(max) { }
216
217 // An inverted box. This is the identity element for Encapsulate() folds.
219 {
220 return AABB(glm::vec3(FLT_MAX), glm::vec3(-FLT_MAX));
221 }
222
223 static AABB MakeFromCenterExtents(glm::vec3 center, glm::vec3 extents)
224 {
225 return AABB(center - extents, center + extents);
226 }
227
228 // Matches the LARGE_BOUNDS sphere used as the "never cull me" default.
230 {
231 return AABB(glm::vec3(-LARGE_BOUNDS), glm::vec3(LARGE_BOUNDS));
232 }
233
234 bool IsValid() const
235 {
236 return mMin.x <= mMax.x && mMin.y <= mMax.y && mMin.z <= mMax.z;
237 }
238
239 // True when this is (approximately) the LARGE_BOUNDS placeholder box, so
240 // callers like editor focus-on-selection can ignore it.
241 bool IsLarge() const
242 {
243 return (mMax.x - mMin.x) >= (LARGE_BOUNDS - 1.0f);
244 }
245
246 glm::vec3 GetCenter() const { return (mMin + mMax) * 0.5f; }
247 glm::vec3 GetExtents() const { return (mMax - mMin) * 0.5f; }
248 glm::vec3 GetSize() const { return mMax - mMin; }
249 float GetRadius() const { return glm::length(GetExtents()); }
250 float GetVolume() const { glm::vec3 size = GetSize(); return size.x * size.y * size.z; }
251
252 bool Contains(glm::vec3 point) const
253 {
254 return point.x >= mMin.x && point.x <= mMax.x
255 && point.y >= mMin.y && point.y <= mMax.y
256 && point.z >= mMin.z && point.z <= mMax.z;
257 }
258
259 bool Contains(const AABB& other) const
260 {
261 return Contains(other.mMin) && Contains(other.mMax);
262 }
263
264 bool Intersects(const AABB& other) const
265 {
266 return mMin.x <= other.mMax.x && mMax.x >= other.mMin.x
267 && mMin.y <= other.mMax.y && mMax.y >= other.mMin.y
268 && mMin.z <= other.mMax.z && mMax.z >= other.mMin.z;
269 }
270
271 bool Intersects(glm::vec3 sphereCenter, float sphereRadius) const
272 {
273 glm::vec3 closest = glm::clamp(sphereCenter, mMin, mMax);
274 glm::vec3 delta = closest - sphereCenter;
275 return glm::dot(delta, delta) <= (sphereRadius * sphereRadius);
276 }
277
278 void Encapsulate(glm::vec3 point)
279 {
280 mMin = glm::min(mMin, point);
281 mMax = glm::max(mMax, point);
282 }
283
284 void Encapsulate(const AABB& other)
285 {
286 if (!other.IsValid())
287 return;
288
289 mMin = glm::min(mMin, other.mMin);
290 mMax = glm::max(mMax, other.mMax);
291 }
292
293 void Expand(float amount) { mMin -= amount; mMax += amount; }
294 void Expand(glm::vec3 amount) { mMin -= amount; mMax += amount; }
295
296 // Refit this box after applying an arbitrary transform. Equivalent to
297 // transforming all 8 corners and refitting, but does it in 9 mul/add.
298 AABB Transform(const glm::mat4& mat) const
299 {
300 if (!IsValid())
301 return *this;
302
303 glm::vec3 center = GetCenter();
304 glm::vec3 extents = GetExtents();
305
306 glm::vec3 newCenter = glm::vec3(mat * glm::vec4(center, 1.0f));
307 glm::vec3 newExtents;
308
309 for (int32_t i = 0; i < 3; ++i)
310 {
311 newExtents[i] =
312 glm::abs(mat[0][i]) * extents.x +
313 glm::abs(mat[1][i]) * extents.y +
314 glm::abs(mat[2][i]) * extents.z;
315 }
316
317 return AABB(newCenter - newExtents, newCenter + newExtents);
318 }
319
321 {
322 Bounds retBounds;
323 retBounds.mCenter = GetCenter();
324 retBounds.mRadius = GetRadius();
325 return retBounds;
326 }
327};
328
341
353
355{
356 StaticMesh* mMesh = nullptr;
357 Material* mMaterial = nullptr;
358 Node3D* mNode = nullptr;
359 glm::mat4 mTransform = glm::mat4(1);
360 glm::vec4 mColor = { 0.25f, 0.25f, 1.0f, 1.0f };
361 float mLife = 0.0f;
362};
363
365{
368
370 mPrimitiveA(nullptr),
371 mPrimitiveB(nullptr)
372 {
373
374 }
375
377 {
378 mPrimitiveA = compA;
379 mPrimitiveB = compB;
380 }
381
382 size_t operator()(const PrimitivePair& pairToHash) const
383 {
384 size_t hash = (size_t)pairToHash.mPrimitiveA + (size_t)pairToHash.mPrimitiveB;
385 return hash;
386 }
387
388 bool operator==(const PrimitivePair& other) const
389 {
390 return (mPrimitiveA == other.mPrimitiveA) &&
391 (mPrimitiveB == other.mPrimitiveB);
392 }
393
395 {
396 mPrimitiveA = other.mPrimitiveA;
397 mPrimitiveB = other.mPrimitiveB;
398 }
399
401 {
402 mPrimitiveA = other.mPrimitiveA;
403 mPrimitiveB = other.mPrimitiveB;
404 return *this;
405 }
406
408 {
409 mPrimitiveA = other.mPrimitiveA;
410 mPrimitiveB = other.mPrimitiveB;
411 return *this;
412 }
413};
414
416{
418 {
419
420 }
421
422 std::string mProjectName;
423
424 std::string mDefaultScene = "";
425 std::string mDefaultEditorScene = "";
426 std::string mDefaultLoadingScene = "";
429 uint32_t mGameCode = 0;
430 uint32_t mVersion = 0;
433
434 bool mFullscreen = false;
435 bool mValidateGraphics = false;
436 bool mLinearColorSpace = false;
437 bool mPackageForSteam = false;
438 bool mUseAssetRegistry = false;
439 bool mLogging = true;
440 bool mLogToFile = false;
441 bool mScriptHotReload = false;
442
443 int32_t mLqMaxTextureSize = 0;
444 bool mLqEnableMipMaps = true;
445
446 std::string mProjectPath;
447 std::string mCurrentFont;
448 std::string mWorkingDirectory;
449 std::string mEditorFont = "Default";
450
451 struct EmbeddedFile* mEmbeddedAssets = nullptr;
455 const char* mEmbeddedConfig = nullptr;
457
459 int32_t mColorScale = 2;
460
461 std::string mIconPath;
462
463 // Headless mode configuration
464 bool mHeadless = false;
465 Platform mBuildPlatform = Platform::Count; // Count = no build requested
466 bool mBuildEmbedded = false;
467
468 // Set when the editor was launched with --addon-recovery=<pid>. Value is
469 // the PID of the prior editor process whose sentinel JSON we should look
470 // for. EditorMain reads this on startup and triggers the addon-recovery
471 // wipe before the first OpenProject. 0 = not in recovery mode.
473};
474
475enum class ConsoleMode
476{
477 Off,
478 Overlay,
479 Full
480};
481
483{
488 uint32_t mGameCode = 0;
489 uint32_t mVersion = 0;
490 uint32_t mFrameNumber = 0;
491 std::string mProjectPath;
492 std::string mIOAssetPath;
493 std::string mProjectDirectory;
494 std::string mProjectName;
495 std::string mAssetDirectory;
496 std::string mSolutionPath;
497 int32_t mArgC = 0;
498 char** mArgV = nullptr;
499 float mGameDeltaTime = 0.0f;
500 float mRealDeltaTime = 0.0f;
501 float mGameElapsedTime = 0.0f;
502 float mRealElapsedTime = 0.0f;
503 float mTimeDilation = 1.0f;
504 float mAspectRatioScale = 1.0f;
505 bool mPaused = false;
506 bool mFrameStep = false;
507 bool mInitialized = false;
508 bool mSuspended = false;
509 FILE* mLogFile = nullptr;
510
511#if LUA_ENABLED
512 lua_State* mLua = nullptr;
513#endif
514
515 bool mConsoleMode = false;
516 bool mQuit = false;
517 bool mWindowMinimized = false;
518 bool mStandalone = false;
519
523};
524
526{
527 glm::vec3 mStart = {};
528 glm::vec3 mEnd = {};
530 glm::vec3 mHitNormal = {};
531 glm::vec3 mHitPosition = {};
532 float mHitFraction = 0.0f;
533};
534
536{
537 glm::vec3 mStart = {};
538 glm::vec3 mEnd = {};
539 uint32_t mNumHits = 0;
540 std::vector<Primitive3D*> mHitNodes;
541 std::vector<glm::vec3> mHitNormals;
542 std::vector<glm::vec3> mHitPositions;
543 std::vector<float> mHitFractions;
544};
545
547{
548 glm::vec3 mStart = {};
549 glm::vec3 mEnd = {};
551 glm::vec3 mHitNormal = {};
552 glm::vec3 mHitPosition = {};
553 float mHitFraction = 0.0f;
554};
555
556struct IgnoreRayResultCallback : btCollisionWorld::ClosestRayResultCallback
557{
558 IgnoreRayResultCallback(const btVector3& rayFromWorld, const btVector3& rayToWorld);
559 virtual btScalar addSingleResult(btCollisionWorld::LocalRayResult & rayResult, bool normalInWorldSpace) override;
560
561 uint32_t mNumIgnoreObjects = 0;
562 btCollisionObject** mIgnoreObjects = nullptr;
564};
565
566struct IgnoreConvexResultCallback : btCollisionWorld::ClosestConvexResultCallback
567{
569 const btVector3& convexFromWorld,
570 const btVector3& convexToWorld);
571 virtual bool needsCollision(btBroadphaseProxy* proxy0) const;
572
573 uint32_t mNumIgnoreObjects = 0;
574 btCollisionObject** mIgnoreObjects = nullptr;
575};
576
577enum class FogDensityFunc : uint8_t
578{
579 Linear,
581
582 Count
583};
584
586{
587 bool mEnabled = false;
588 glm::vec4 mColor = { 0.0f, 0.0f, 0.0f, 1.0f };
590 float mNear = 0.0f;
591 float mFar = 100.0f;
592};
593
607
609{
610 Constant,
611 Linear,
612
613 Count
614};
615
616enum class NetStatus
617{
618 Local,
620 Client,
621 Server,
622
623 Count
624};
625
626typedef uint8_t NetHostId;
627
629{
630 uint32_t mIpAddress = 0;
631 uint16_t mPort = 0;
633 uint64_t mOnlineId = 0;
634};
635
637{
638 ReliablePacket(uint16_t seqNum, const char* data, uint32_t size);
639
640 float mTimeSinceSend = 0.0f;
641 uint32_t mNumSends = 0;
642
643 std::vector<char> mData;
644 uint16_t mSeq = 0;
645};
646
648{
649 static const uint32_t sSendBufferSize = 512;
650
652 float mPing = 0.0f;
653 float mTimeSinceLastMsg = 0.0f;
654 std::unordered_set<NetId> mRelevantNetIds;
655 std::vector<char> mSendBuffer;
656 std::vector<char> mReliableSendBuffer;
657 std::vector<ReliablePacket> mOutgoingPackets;
658 std::vector<ReliablePacket> mIncomingPackets;
664 bool mReady = true;
665};
666
669
671{
672 // mNode should only be used for comparisons!! If deleted, we want to fade it out, not crash.
673 Light3D* mComponent = nullptr;
675 glm::vec4 mColor = { 0.0f, 0.0f, 0.0f, 0.0f };
676 float mAlpha = 0.0f;
677
679};
#define DEFAULT_WINDOW_HEIGHT
Definition Constants.h:12
#define LARGE_BOUNDS
Definition Constants.h:55
#define INVALID_HOST_ID
Definition Constants.h:44
#define DEFAULT_WINDOW_WIDTH
Definition Constants.h:11
NetHostProfile NetClient
Definition EngineTypes.h:667
FogDensityFunc
Definition EngineTypes.h:578
uint32_t NetId
Definition EngineTypes.h:73
CullMode
Definition EngineTypes.h:147
Platform
Definition EngineTypes.h:32
NetHostProfile NetServer
Definition EngineTypes.h:668
CollisionGroup
Definition EngineTypes.h:595
@ ColGroup0
Definition EngineTypes.h:596
@ ColGroup1
Definition EngineTypes.h:597
@ ColGroup2
Definition EngineTypes.h:598
@ ColGroup4
Definition EngineTypes.h:600
@ ColGroup5
Definition EngineTypes.h:601
@ ColGroupAll
Definition EngineTypes.h:605
@ ColGroup3
Definition EngineTypes.h:599
@ ColGroup7
Definition EngineTypes.h:603
@ ColGroup6
Definition EngineTypes.h:602
PropertyOwnerType
Definition EngineTypes.h:156
uint8_t NetHostId
Definition EngineTypes.h:626
ShadingModel
Definition EngineTypes.h:105
VertexColorMode
Definition EngineTypes.h:124
uint64_t RuntimeId
Definition EngineTypes.h:75
PostProcessPassId
Definition EngineTypes.h:182
AttenuationFunc
Definition EngineTypes.h:609
SkyType
Definition EngineTypes.h:191
@ RayTracedSky
ConsoleMode
Definition EngineTypes.h:476
uint32_t TypeId
Definition EngineTypes.h:72
LightType
Definition EngineTypes.h:164
uint32_t NodeId
Definition EngineTypes.h:74
PlatformBit
Definition EngineTypes.h:52
@ PlatformBit_Linux
Definition EngineTypes.h:54
@ PlatformBit_Windows
Definition EngineTypes.h:53
@ PlatformBit_N3DS
Definition EngineTypes.h:58
@ PlatformBit_All
Definition EngineTypes.h:61
@ PlatformBit_Psp
Definition EngineTypes.h:59
@ PlatformBit_Wii
Definition EngineTypes.h:57
@ PlatformBit_GameCube
Definition EngineTypes.h:56
@ PlatformBit_Android
Definition EngineTypes.h:55
NetStatus
Definition EngineTypes.h:617
uint32_t GetPlatformBit(Platform p)
Definition EngineTypes.h:64
TevMode
Definition EngineTypes.h:133
LightingDomain
Definition EngineTypes.h:173
CollisionShape
Definition EngineTypes.h:91
BlendMode
Definition EngineTypes.h:114
Definition Light3d.h:6
Definition Material.h:48
Definition Node3d.h:14
Definition Node.h:67
Definition Primitive3d.h:46
Definition StaticMesh.h:18
Definition SmartPointer.h:312
Definition EngineTypes.h:210
AABB Transform(const glm::mat4 &mat) const
Definition EngineTypes.h:298
bool Contains(const AABB &other) const
Definition EngineTypes.h:259
AABB(glm::vec3 min, glm::vec3 max)
Definition EngineTypes.h:215
void Encapsulate(glm::vec3 point)
Definition EngineTypes.h:278
glm::vec3 GetCenter() const
Definition EngineTypes.h:246
glm::vec3 GetExtents() const
Definition EngineTypes.h:247
glm::vec3 mMax
Definition EngineTypes.h:212
AABB()=default
Bounds ToBounds() const
Definition EngineTypes.h:320
bool IsLarge() const
Definition EngineTypes.h:241
glm::vec3 GetSize() const
Definition EngineTypes.h:248
static AABB MakeFromCenterExtents(glm::vec3 center, glm::vec3 extents)
Definition EngineTypes.h:223
bool Intersects(glm::vec3 sphereCenter, float sphereRadius) const
Definition EngineTypes.h:271
glm::vec3 mMin
Definition EngineTypes.h:211
bool IsValid() const
Definition EngineTypes.h:234
float GetVolume() const
Definition EngineTypes.h:250
static AABB MakeLarge()
Definition EngineTypes.h:229
bool Contains(glm::vec3 point) const
Definition EngineTypes.h:252
bool Intersects(const AABB &other) const
Definition EngineTypes.h:264
void Expand(glm::vec3 amount)
Definition EngineTypes.h:294
void Encapsulate(const AABB &other)
Definition EngineTypes.h:284
float GetRadius() const
Definition EngineTypes.h:249
void Expand(float amount)
Definition EngineTypes.h:293
static AABB MakeInvalid()
Definition EngineTypes.h:218
Definition EngineTypes.h:201
glm::vec3 mCenter
Definition EngineTypes.h:202
float mRadius
Definition EngineTypes.h:203
Definition EngineTypes.h:355
glm::vec4 mColor
Definition EngineTypes.h:360
glm::mat4 mTransform
Definition EngineTypes.h:359
float mLife
Definition EngineTypes.h:361
StaticMesh * mMesh
Definition EngineTypes.h:356
Material * mMaterial
Definition EngineTypes.h:357
Node3D * mNode
Definition EngineTypes.h:358
Definition EngineTypes.h:330
TypeId mNodeType
Definition EngineTypes.h:338
float mDistance2
Definition EngineTypes.h:337
glm::vec3 mPosition
Definition EngineTypes.h:334
Bounds mBounds
Definition EngineTypes.h:335
int32_t mSortPriority
Definition EngineTypes.h:336
Node * mNode
Definition EngineTypes.h:331
BlendMode mBlendMode
Definition EngineTypes.h:333
bool mDepthless
Definition EngineTypes.h:339
Material * mMaterial
Definition EngineTypes.h:332
Definition EmbeddedFile.h:6
Definition EngineTypes.h:416
bool mLogging
Definition EngineTypes.h:439
uint32_t mEmbeddedConfigSize
Definition EngineTypes.h:456
bool mFullscreen
Definition EngineTypes.h:434
std::string mIconPath
Definition EngineTypes.h:461
bool mHeadless
Definition EngineTypes.h:464
bool mLogToFile
Definition EngineTypes.h:440
std::string mProjectPath
Definition EngineTypes.h:446
Platform mBuildPlatform
Definition EngineTypes.h:465
bool mPackageForSteam
Definition EngineTypes.h:437
bool mLinearColorSpace
Definition EngineTypes.h:436
int32_t mWindowWidth
Definition EngineTypes.h:431
std::string mWorkingDirectory
Definition EngineTypes.h:448
bool mScriptHotReload
Definition EngineTypes.h:441
std::string mDefaultEditorScene
Definition EngineTypes.h:425
std::string mEditorFont
Definition EngineTypes.h:449
struct EmbeddedFile * mEmbeddedScripts
Definition EngineTypes.h:453
float mLoadingMinDisplaySeconds
Definition EngineTypes.h:427
int32_t mColorScale
Definition EngineTypes.h:459
uint32_t mGameCode
Definition EngineTypes.h:429
uint32_t mVersion
Definition EngineTypes.h:430
float mEditorInterfaceScale
Definition EngineTypes.h:458
bool mBuildEmbedded
Definition EngineTypes.h:466
float mLoadingTimeoutSeconds
Definition EngineTypes.h:428
EngineConfig()
Definition EngineTypes.h:417
uint32_t mEmbeddedAssetCount
Definition EngineTypes.h:452
std::string mDefaultLoadingScene
Definition EngineTypes.h:426
struct EmbeddedFile * mEmbeddedAssets
Definition EngineTypes.h:451
int32_t mLqMaxTextureSize
Definition EngineTypes.h:443
uint32_t mEmbeddedScriptCount
Definition EngineTypes.h:454
std::string mProjectName
Definition EngineTypes.h:422
bool mUseAssetRegistry
Definition EngineTypes.h:438
const char * mEmbeddedConfig
Definition EngineTypes.h:455
std::string mCurrentFont
Definition EngineTypes.h:447
bool mLqEnableMipMaps
Definition EngineTypes.h:444
std::string mDefaultScene
Definition EngineTypes.h:424
bool mValidateGraphics
Definition EngineTypes.h:435
uint64_t mAddonRecoveryOldPid
Definition EngineTypes.h:472
int32_t mWindowHeight
Definition EngineTypes.h:432
Definition EngineTypes.h:483
uint32_t mSecondWindowHeight
Definition EngineTypes.h:487
bool mWindowMinimized
Definition EngineTypes.h:517
bool mFrameStep
Definition EngineTypes.h:506
float mAspectRatioScale
Definition EngineTypes.h:504
SystemState mSystem
Definition EngineTypes.h:520
lua_State * mLua
Definition EngineTypes.h:512
float mRealDeltaTime
Definition EngineTypes.h:500
uint32_t mGameCode
Definition EngineTypes.h:488
bool mPaused
Definition EngineTypes.h:505
GraphicsState mGraphics
Definition EngineTypes.h:521
std::string mIOAssetPath
Definition EngineTypes.h:492
float mGameElapsedTime
Definition EngineTypes.h:501
std::string mSolutionPath
Definition EngineTypes.h:496
bool mInitialized
Definition EngineTypes.h:507
float mRealElapsedTime
Definition EngineTypes.h:502
uint32_t mVersion
Definition EngineTypes.h:489
float mGameDeltaTime
Definition EngineTypes.h:499
FILE * mLogFile
Definition EngineTypes.h:509
InputState mInput
Definition EngineTypes.h:522
std::string mAssetDirectory
Definition EngineTypes.h:495
uint32_t mFrameNumber
Definition EngineTypes.h:490
std::string mProjectDirectory
Definition EngineTypes.h:493
bool mConsoleMode
Definition EngineTypes.h:515
bool mStandalone
Definition EngineTypes.h:518
char ** mArgV
Definition EngineTypes.h:498
uint32_t mSecondWindowWidth
Definition EngineTypes.h:486
uint32_t mWindowWidth
Definition EngineTypes.h:484
std::string mProjectName
Definition EngineTypes.h:494
uint32_t mWindowHeight
Definition EngineTypes.h:485
float mTimeDilation
Definition EngineTypes.h:503
bool mQuit
Definition EngineTypes.h:516
std::string mProjectPath
Definition EngineTypes.h:491
bool mSuspended
Definition EngineTypes.h:508
int32_t mArgC
Definition EngineTypes.h:497
Definition EngineTypes.h:671
glm::vec4 mColor
Definition EngineTypes.h:675
FadingLight(Light3D *comp)
Definition EngineTypes.h:678
LightData mData
Definition EngineTypes.h:674
float mAlpha
Definition EngineTypes.h:676
Light3D * mComponent
Definition EngineTypes.h:673
Definition EngineTypes.h:586
float mFar
Definition EngineTypes.h:591
FogDensityFunc mDensityFunc
Definition EngineTypes.h:589
bool mEnabled
Definition EngineTypes.h:587
float mNear
Definition EngineTypes.h:590
glm::vec4 mColor
Definition EngineTypes.h:588
Definition GraphicsTypes.h:32
Definition EngineTypes.h:567
uint32_t mNumIgnoreObjects
Definition EngineTypes.h:573
btCollisionObject ** mIgnoreObjects
Definition EngineTypes.h:574
virtual bool needsCollision(btBroadphaseProxy *proxy0) const
Definition EngineTypes.cpp:46
Definition EngineTypes.h:557
btCollisionObject ** mIgnoreObjects
Definition EngineTypes.h:562
uint32_t mNumIgnoreObjects
Definition EngineTypes.h:561
virtual btScalar addSingleResult(btCollisionWorld::LocalRayResult &rayResult, bool normalInWorldSpace) override
Definition EngineTypes.cpp:14
bool mIgnorePureOverlap
Definition EngineTypes.h:563
Definition InputTypes.h:107
Definition EngineTypes.h:343
LightType mType
Definition EngineTypes.h:344
glm::vec3 mDirection
Definition EngineTypes.h:349
float mIntensity
Definition EngineTypes.h:351
float mRadius
Definition EngineTypes.h:350
glm::vec3 mPosition
Definition EngineTypes.h:347
LightingDomain mDomain
Definition EngineTypes.h:345
uint8_t mLightingChannels
Definition EngineTypes.h:346
glm::vec4 mColor
Definition EngineTypes.h:348
Definition EngineTypes.h:648
uint16_t mIncomingReliableSeq
Definition EngineTypes.h:660
std::unordered_set< NetId > mRelevantNetIds
Definition EngineTypes.h:654
WeakPtr< Node > mPawn
Definition EngineTypes.h:663
std::vector< char > mReliableSendBuffer
Definition EngineTypes.h:656
static const uint32_t sSendBufferSize
Definition EngineTypes.h:649
bool mReady
Definition EngineTypes.h:664
float mTimeSinceLastMsg
Definition EngineTypes.h:653
std::vector< ReliablePacket > mOutgoingPackets
Definition EngineTypes.h:657
float mPing
Definition EngineTypes.h:652
NetHost mHost
Definition EngineTypes.h:651
std::vector< char > mSendBuffer
Definition EngineTypes.h:655
std::vector< ReliablePacket > mIncomingPackets
Definition EngineTypes.h:658
uint16_t mOutgoingUnreliableSeq
Definition EngineTypes.h:661
uint16_t mIncomingUnreliableSeq
Definition EngineTypes.h:662
uint16_t mOutgoingReliableSeq
Definition EngineTypes.h:659
Definition EngineTypes.h:629
uint16_t mPort
Definition EngineTypes.h:631
NetHostId mId
Definition EngineTypes.h:632
uint64_t mOnlineId
Definition EngineTypes.h:633
uint32_t mIpAddress
Definition EngineTypes.h:630
Definition EngineTypes.h:365
PrimitivePair & operator=(const PrimitivePair &other)
Definition EngineTypes.h:400
Primitive3D * mPrimitiveB
Definition EngineTypes.h:367
PrimitivePair(const PrimitivePair &other)
Definition EngineTypes.h:394
PrimitivePair(Primitive3D *compA, Primitive3D *compB)
Definition EngineTypes.h:376
PrimitivePair & operator=(PrimitivePair &&other)
Definition EngineTypes.h:407
PrimitivePair()
Definition EngineTypes.h:369
bool operator==(const PrimitivePair &other) const
Definition EngineTypes.h:388
Primitive3D * mPrimitiveA
Definition EngineTypes.h:366
size_t operator()(const PrimitivePair &pairToHash) const
Definition EngineTypes.h:382
Definition EngineTypes.h:536
std::vector< glm::vec3 > mHitNormals
Definition EngineTypes.h:541
std::vector< float > mHitFractions
Definition EngineTypes.h:543
glm::vec3 mStart
Definition EngineTypes.h:537
glm::vec3 mEnd
Definition EngineTypes.h:538
std::vector< glm::vec3 > mHitPositions
Definition EngineTypes.h:542
std::vector< Primitive3D * > mHitNodes
Definition EngineTypes.h:540
uint32_t mNumHits
Definition EngineTypes.h:539
Definition EngineTypes.h:526
Primitive3D * mHitNode
Definition EngineTypes.h:529
glm::vec3 mStart
Definition EngineTypes.h:527
float mHitFraction
Definition EngineTypes.h:532
glm::vec3 mEnd
Definition EngineTypes.h:528
glm::vec3 mHitNormal
Definition EngineTypes.h:530
glm::vec3 mHitPosition
Definition EngineTypes.h:531
Definition EngineTypes.h:637
uint32_t mNumSends
Definition EngineTypes.h:641
float mTimeSinceSend
Definition EngineTypes.h:640
std::vector< char > mData
Definition EngineTypes.h:643
uint16_t mSeq
Definition EngineTypes.h:644
Definition EngineTypes.h:547
glm::vec3 mEnd
Definition EngineTypes.h:549
glm::vec3 mHitNormal
Definition EngineTypes.h:551
Primitive3D * mHitNode
Definition EngineTypes.h:550
glm::vec3 mStart
Definition EngineTypes.h:548
glm::vec3 mHitPosition
Definition EngineTypes.h:552
float mHitFraction
Definition EngineTypes.h:553
Definition SystemTypes.h:118