summaryrefslogtreecommitdiff
path: root/Runtime/Terrain/TerrainData.h
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-08-14 22:50:43 +0800
committerchai <chaifix@163.com>2019-08-14 22:50:43 +0800
commit15740faf9fe9fe4be08965098bbf2947e096aeeb (patch)
treea730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Terrain/TerrainData.h
+Unity Runtime codeHEADmaster
Diffstat (limited to 'Runtime/Terrain/TerrainData.h')
-rw-r--r--Runtime/Terrain/TerrainData.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/Runtime/Terrain/TerrainData.h b/Runtime/Terrain/TerrainData.h
new file mode 100644
index 0000000..3851c8c
--- /dev/null
+++ b/Runtime/Terrain/TerrainData.h
@@ -0,0 +1,66 @@
+#pragma once
+#include "Configuration/UnityConfigure.h"
+
+#if ENABLE_TERRAIN
+
+#include "Runtime/BaseClasses/NamedObject.h"
+#include "Runtime/BaseClasses/GameObject.h"
+#include "Runtime/Serialize/SerializeUtility.h"
+
+#include "SplatDatabase.h"
+#include "DetailDatabase.h"
+#include "Heightmap.h"
+#include "TreeDatabase.h"
+#include "Runtime/Utilities/NonCopyable.h"
+
+
+class TerrainData : public NamedObject, NonCopyable
+{
+ public:
+ REGISTER_DERIVED_CLASS(TerrainData, NamedObject)
+ DECLARE_OBJECT_SERIALIZE(TerrainData)
+
+ TerrainData (MemLabelId label, ObjectCreationMode mode);
+
+ SplatDatabase &GetSplatDatabase ();
+ DetailDatabase &GetDetailDatabase ();
+ Heightmap &GetHeightmap () { return m_Heightmap; }
+ TreeDatabase& GetTreeDatabase () { return m_TreeDatabase; }
+
+ bool HasUser (GameObject *user) const;
+ void AddUser (GameObject *user);
+ void RemoveUser (GameObject *user);
+
+ static void InitializeClass ();
+ static void CleanupClass ();
+
+ enum ChangedFlags
+ {
+ kNoChange = 0,
+ kHeightmap = 1,
+ kTreeInstances = 2,
+ kDelayedHeightmapUpdate = 4,
+ kFlushEverythingImmediately = 8,
+ kRemoveDirtyDetailsImmediately = 16,
+ kWillBeDestroyed = 256,
+ };
+
+ // Sends a callback to any users of this terrainsData (typically C# Terrain objects) so they can update their renderers, etc.
+ void UpdateUsers (ChangedFlags changedFlag);
+ void SetLightmapIndexOnUsers(int lightmapIndex);
+
+ virtual void AwakeFromLoad (AwakeFromLoadMode awakeMode);
+ void AwakeFromLoadThreaded();
+
+ void ExtractPreloadShaders (vector<PPtr<Object> >& shaders);
+
+ private:
+ SplatDatabase m_SplatDatabase;
+ TreeDatabase m_TreeDatabase;
+ DetailDatabase m_DetailDatabase;
+ Heightmap m_Heightmap;
+ std::set<PPtr<GameObject> > m_Users; // List of terrains for the client callbacks
+};
+ENUM_FLAGS(TerrainData::ChangedFlags);
+
+#endif // ENABLE_TERRAIN