Polyphase Game Engine
Loading...
Searching...
No Matches
Scene.h
Go to the documentation of this file.
1#pragma once
2
3#include "Asset.h"
4#include "Property.h"
5#include "Factory.h"
6#include "AssetRef.h"
7#include "NodePath.h"
8#include "Nodes/Node.h"
9
10class World;
11
13{
14 std::string mPath;
15 std::vector<Property> mProperties;
16 bool mOverrideColors = false;
17 bool mBakedLighting = false;
18 std::vector<uint32_t> mInstanceColors;
19};
20
22{
24 int32_t mParentIndex = -1;
26 std::string mName;
27 std::vector<Property> mProperties;
28 std::vector<uint8_t> mExtraData;
29 std::vector<SubSceneOverride> mSubSceneOverrides;
30 int8_t mParentBone = -1;
31 bool mExposeVariable = false;
32 uint64_t mPersistentUuid = 0;
33};
34
36{
37public:
38
40
41 Scene();
42 ~Scene();
43
44 virtual void LoadStream(Stream& stream, Platform platform) override;
45 virtual void SaveStream(Stream& stream, Platform platform) override;
46 virtual void Create() override;
47 virtual void Destroy() override;
48
49 virtual void GatherProperties(std::vector<Property>& outProps) override;
50 virtual glm::vec4 GetTypeColor() override;
51 virtual const char* GetTypeName() override;
52
53 void Capture(Node* root, Platform platform = Platform::Count);
54 NodePtr Instantiate();
55
56 template<typename T>
58 {
59 return Cast<T>(Instantiate());
60 }
61
62 void ApplyRenderSettings(World* world);
63
64protected:
65
66 static bool HandlePropChange(Datum* datum, uint32_t index, const void* newValue);
67
68 void AddNodeDef(Node* node, Platform platform, std::vector<Node*>& nodeList);
69 int32_t FindNodeIndex(Node* node, const std::vector<Node*>& nodeList);
70
71 bool CheckForNodeProps(std::vector<Property>& props);
72
73 static int32_t sInstantiationCount;
74 static std::vector<PendingNodePath> sPendingNodePaths;
75
76 std::vector<SceneNodeDef> mNodeDefs;
77
78 // World render properties (used when this scene is the world root).
79 bool mSetAmbientLightColor = false;
80 bool mSetShadowColor = false;
81 bool mSetFog = false;
82
83 glm::vec4 mAmbientLightColor = { 0.1f, 0.1f, 0.1f, 1.0f };
84 glm::vec4 mShadowColor = { 0.0f, 0.0f, 0.0f, 0.8f };
85
86 bool mFogEnabled = false;
87 glm::vec4 mFogColor = { 0.0f, 0.0f, 0.0f, 1.0f };
89 float mFogNear = 0.0f;
90 float mFogFar = 100.0f;
91
92 uint8_t mIconOverride = 0; // 0 = default, 1+ = icon index
93 std::string mMenuOverride; // Empty = "Scene" menu, or category like "3D", "UI", "Gameplay"
94
95public:
96 uint8_t GetIconOverride() const { return mIconOverride; }
97 const std::string& GetMenuOverride() const { return mMenuOverride; }
98 const std::vector<Property>* GetRootNodeProperties() const { return mNodeDefs.empty() ? nullptr : &mNodeDefs[0].mProperties; }
99};
#define INVALID_TYPE_ID
Definition Constants.h:40
FogDensityFunc
Definition EngineTypes.h:438
Platform
Definition EngineTypes.h:31
uint32_t TypeId
Definition EngineTypes.h:64
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
Definition AssetRef.h:18
Definition Asset.h:113
virtual void Create()
Definition Asset.cpp:77
virtual void SaveStream(Stream &stream, Platform platform)
Definition Asset.cpp:236
virtual glm::vec4 GetTypeColor()
Definition Asset.cpp:254
virtual const char * GetTypeName()
Definition Asset.cpp:259
virtual void GatherProperties(std::vector< Property > &outProps) override
Definition Asset.cpp:249
virtual void LoadStream(Stream &stream, Platform platform)
Definition Asset.cpp:222
virtual void Destroy()
Definition Asset.cpp:87
Definition Datum.h:164
Definition Node.h:67
Definition Scene.h:36
DECLARE_ASSET(Scene, Asset)
const std::string & GetMenuOverride() const
Definition Scene.h:97
SharedPtr< T > Instantiate()
Definition Scene.h:57
std::string mMenuOverride
Definition Scene.h:93
static std::vector< PendingNodePath > sPendingNodePaths
Definition Scene.h:74
static int32_t sInstantiationCount
Definition Scene.h:73
const std::vector< Property > * GetRootNodeProperties() const
Definition Scene.h:98
std::vector< SceneNodeDef > mNodeDefs
Definition Scene.h:76
uint8_t GetIconOverride() const
Definition Scene.h:96
Definition Stream.h:21
Definition World.h:24
Definition Scene.h:22
int32_t mParentIndex
Definition Scene.h:24
SceneRef mScene
Definition Scene.h:25
TypeId mType
Definition Scene.h:23
std::vector< Property > mProperties
Definition Scene.h:27
int8_t mParentBone
Definition Scene.h:30
std::string mName
Definition Scene.h:26
bool mExposeVariable
Definition Scene.h:31
uint64_t mPersistentUuid
Definition Scene.h:32
std::vector< SubSceneOverride > mSubSceneOverrides
Definition Scene.h:29
std::vector< uint8_t > mExtraData
Definition Scene.h:28
Definition Scene.h:13
bool mBakedLighting
Definition Scene.h:17
std::vector< uint32_t > mInstanceColors
Definition Scene.h:18
std::string mPath
Definition Scene.h:14
std::vector< Property > mProperties
Definition Scene.h:15
bool mOverrideColors
Definition Scene.h:16