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