7class btTriangleIndexVertexArray;
8class btBvhTriangleMeshShape;
9struct btTriangleInfoMap;
21 int32_t mResolutionX = 128;
22 int32_t mResolutionZ = 128;
23 float mWorldWidth = 128.0f;
24 float mWorldDepth = 128.0f;
25 float mHeightScale = 10.0f;
34 static constexpr int32_t MAX_MATERIAL_SLOTS = 4;
36 bool mUseMaterialSlots =
false;
40 bool mEnableAtlasTexturing =
false;
41 uint32_t mAtlasTilesX = 4;
42 uint32_t mAtlasTilesY = 4;
43 int32_t mSlotAtlasTile[MAX_MATERIAL_SLOTS] = {0, 1, 2, 3};
44 float mTextureTiling = 32.0f;
45 glm::vec4 mSlotTintColor[MAX_MATERIAL_SLOTS] = {
46 glm::vec4(1.0f), glm::vec4(1.0f), glm::vec4(1.0f), glm::vec4(1.0f)
50 bool mBakeSplatmap =
false;
51 uint32_t mBakeResolution = 512;
52 bool mDebugSplatmap =
false;
58 float mHeightMin = 0.0f;
59 float mHeightMax = 1.0f;
60 float mSlopeMin = 0.0f;
61 float mSlopeMax = 90.0f;
63 float mStrength = 1.0f;
67 void GenerateSplatmapFromRules();
70 float mSnapGridSize = 0.0f;
78 virtual void Create()
override;
79 virtual void Destroy()
override;
80 virtual void Copy(
Node* srcNode,
bool recurse)
override;
82 virtual void Tick(
float deltaTime)
override;
83 virtual void EditorTick(
float deltaTime)
override;
89 virtual void Render()
override;
93 void SetHeight(int32_t x, int32_t z,
float height);
94 float GetHeight(int32_t x, int32_t z)
const;
95 float GetHeightAtWorldPos(
float worldX,
float worldZ)
const;
96 void SetHeightFromTexture(
Texture* texture);
97 void FlattenAll(
float height = 0.0f);
98 void Resize(int32_t resX, int32_t resZ,
float worldW,
float worldD);
101 void SetMaterialWeight(int32_t x, int32_t z, int32_t slot,
float weight);
102 float GetMaterialWeight(int32_t x, int32_t z, int32_t slot)
const;
103 void SetMaterialSlot(int32_t slot,
Material* mat);
104 Material* GetMaterialSlot(int32_t slot)
const;
107 void BakeSplatmapTexture();
108 void BakeAndSaveMap(
const std::string& savePath =
"");
109 void BakeAndSaveHeightmap(
const std::string& savePath =
"");
117 const std::vector<VertexColor>&
GetVertices()
const {
return mVertices; }
118 const std::vector<IndexType>&
GetIndices()
const {
return mIndices; }
129 void InitHeightmap();
130 void RebuildMeshInternal();
131 void UploadMeshData();
133 void RecreateCollisionShape();
134 void DestroyTriangleCollisionData();
139 uint32_t mNumVertices = 0;
140 uint32_t mNumIndices = 0;
143 bool mMeshDirty =
true;
144 bool mUploadDirty[MAX_FRAMES] = {};
161 btTriangleIndexVertexArray* mTriangleIndexVertexArray =
nullptr;
162 btTriangleInfoMap* mTriangleInfoMap =
nullptr;
Platform
Definition EngineTypes.h:31
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
static bool HandlePropChange(Datum *datum, uint32_t index, const void *newValue)
Definition Mesh3d.cpp:12
virtual bool IsSkeletalMesh3D() const
Definition Mesh3d.cpp:132
virtual const char * GetTypeName() const override
Definition Mesh3d.cpp:39
virtual Material * GetMaterial()=0
virtual bool IsStaticMesh3D() const
Definition Mesh3d.cpp:127
virtual void GatherProperties(std::vector< Property > &outProps) override
Definition Mesh3d.cpp:44
virtual void LoadStream(Stream &stream, Platform platform, uint32_t version) override
Definition Mesh3d.cpp:77
virtual void SaveStream(Stream &stream, Platform platform) override
Definition Mesh3d.cpp:56
void TickCommon(float deltaTime)
Definition Node.cpp:573
virtual void EditorTick(float deltaTime)
Definition Node.cpp:563
virtual void Copy(Node *srcNode, bool recurse)
Definition Node.cpp:323
virtual void Destroy() override
Definition Primitive3d.cpp:129
virtual Bounds GetLocalBounds() const
Definition Primitive3d.cpp:829
virtual void Tick(float deltaTime) override
Definition Primitive3d.cpp:163
virtual void Render() override
Definition Primitive3d.cpp:259
virtual void Create() override
Definition Primitive3d.cpp:117
Definition Terrain3d.h:13
int32_t GetResolutionX() const
Definition Terrain3d.h:119
std::vector< IndexType > mIndices
Definition Terrain3d.h:138
TextureRef mHeightmapTexture
Definition Terrain3d.h:73
std::vector< int32_t > mCollisionIndices
Definition Terrain3d.h:160
std::vector< VertexColor > mVertices
Definition Terrain3d.h:137
TextureRef mAtlasTexture
Definition Terrain3d.h:39
const std::vector< IndexType > & GetIndices() const
Definition Terrain3d.h:118
Terrain3DResource mResource
Definition Terrain3d.h:150
float GetWorldWidth() const
Definition Terrain3d.h:121
Bounds mBounds
Definition Terrain3d.h:147
DECLARE_NODE(Terrain3D, Mesh3D)
bool IsDirty() const
Definition Terrain3d.h:114
std::vector< uint32_t > mSplatmap
Definition Terrain3d.h:31
std::vector< float > mHeightmap
Definition Terrain3d.h:28
float GetWorldDepth() const
Definition Terrain3d.h:122
const std::vector< VertexColor > & GetVertices() const
Definition Terrain3d.h:117
std::vector< glm::vec3 > mCollisionVertices
Definition Terrain3d.h:159
int32_t GetResolutionZ() const
Definition Terrain3d.h:120
uint32_t GetNumIndices() const
Definition Terrain3d.h:116
MaterialRef mDefaultMaterial
Definition Terrain3d.h:153
uint32_t GetNumVertices() const
Definition Terrain3d.h:115
TextureRef mBakedMapTexture
Definition Terrain3d.h:53
Definition EngineTypes.h:193
Definition GraphicsTypes.h:242
Definition Terrain3d.h:57