11class btTriangleIndexVertexArray;
12class btBvhTriangleMeshShape;
13struct btTriangleInfoMap;
71 virtual void Create()
override;
72 virtual void Destroy()
override;
73 virtual void Copy(
Node* srcNode,
bool recurse)
override;
76 virtual void Tick(
float deltaTime)
override;
77 virtual void EditorTick(
float deltaTime)
override;
86 virtual void Render()
override;
89 void SetVoxel(int32_t x, int32_t y, int32_t z,
VoxelType value);
90 VoxelType GetVoxel(int32_t x, int32_t y, int32_t z)
const;
92 void FillRegion(int32_t x0, int32_t y0, int32_t z0,
93 int32_t x1, int32_t y1, int32_t z1,
VoxelType value);
94 void FillSphere(
const glm::vec3& worldCenter,
float radius,
VoxelType value);
95 void FillCylinder(
const glm::vec3& worldCenter,
float radius,
float height, int32_t axis,
VoxelType value);
98 std::vector<VoxelInfo> GetVoxelsInSphere(
const glm::vec3& worldCenter,
float radius);
99 std::vector<VoxelInfo> GetVoxelsInBox(
const glm::vec3& worldMin,
const glm::vec3& worldMax);
100 std::vector<VoxelInfo> GetVoxelsInCylinder(
const glm::vec3& worldCenter,
float radius,
float height, int32_t axis);
101 std::vector<VoxelInfo> GetVoxelNeighbors(int32_t x, int32_t y, int32_t z);
109 glm::vec3 GetVoxelWorldPosition(int32_t x, int32_t y, int32_t z);
112 VoxelRayResult RayTest(
const glm::vec3& rayOrigin,
const glm::vec3& rayDir,
float maxDistance = 100.0f);
113 VoxelRayResult RayTestScreen(
Camera3D* camera, int32_t screenX, int32_t screenY,
float maxDistance = 100.0f);
121 void SetDimensions(glm::ivec3 dims);
124 void SetAtlasTexture(
Texture* atlas, uint32_t tilesX = 16, uint32_t tilesY = 16);
125 Texture* GetAtlasTexture()
const;
126 void SetAtlasEnabled(
bool enabled);
129 void SetMaterialTexture(
VoxelType id, int32_t topTile, int32_t bottomTile, int32_t sideTile);
130 void SetMaterialTexture(
VoxelType id, int32_t allFacesTile);
131 void SetMaterialTint(
VoxelType id,
const glm::vec4& tint);
132 void DisableMaterialTexture(
VoxelType id);
139 const std::vector<VertexColor>&
GetVertices()
const {
return mVertices; }
140 const std::vector<IndexType>&
GetIndices()
const {
return mIndices; }
141 uint32_t mAtlasTilesX = 16;
142 uint32_t mAtlasTilesY = 16;
149 void RebuildMeshInternal();
150 void UploadMeshData();
152 void RecreateCollisionShape();
153 void DestroyTriangleCollisionData();
154 void DecompressVoxelData();
155 glm::vec4 MaterialIdToColor(
VoxelType materialId)
const;
159 glm::ivec3 mDimensions = { 32, 32, 32 };
167 uint32_t mNumVertices = 0;
168 uint32_t mNumIndices = 0;
171 bool mMeshDirty =
true;
172 bool mUploadDirty[MAX_FRAMES] = {};
186 btTriangleIndexVertexArray* mTriangleIndexVertexArray =
nullptr;
187 btTriangleInfoMap* mTriangleInfoMap =
nullptr;
191 bool mEnableAtlasTexturing =
false;
Platform
Definition EngineTypes.h:31
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
uint8_t VoxelType
Definition Voxel3d.h:17
VoxelFace
Definition Voxel3d.h:21
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
Voxel3DResource mResource
Definition Voxel3d.h:178
MaterialRef mDefaultMaterial
Definition Voxel3d.h:181
std::vector< int32_t > mCollisionIndices
Definition Voxel3d.h:185
const VoxelMaterialInfo & GetMaterialInfo(VoxelType id) const
Definition Voxel3d.h:133
glm::ivec3 GetDimensions() const
Definition Voxel3d.h:120
uint32_t GetNumVertices() const
Definition Voxel3d.h:137
std::vector< VertexColor > mVertices
Definition Voxel3d.h:165
std::array< VoxelMaterialInfo, 256 > mMaterialTable
Definition Voxel3d.h:192
std::vector< uint8_t > mCompressedData
Definition Voxel3d.h:162
TextureRef mAtlasTexture
Definition Voxel3d.h:190
std::vector< glm::vec3 > mCollisionVertices
Definition Voxel3d.h:184
const std::vector< VertexColor > & GetVertices() const
Definition Voxel3d.h:139
bool IsAtlasEnabled() const
Definition Voxel3d.h:127
std::vector< IndexType > mIndices
Definition Voxel3d.h:166
uint32_t GetNumIndices() const
Definition Voxel3d.h:138
bool IsDirty() const
Definition Voxel3d.h:106
const std::vector< IndexType > & GetIndices() const
Definition Voxel3d.h:140
Bounds mBounds
Definition Voxel3d.h:175
DECLARE_NODE(Voxel3D, Mesh3D)
Definition EngineTypes.h:193
Definition GraphicsTypes.h:226
VoxelType mValue
Definition Voxel3d.h:57
glm::vec3 mWorldPosition
Definition Voxel3d.h:56
glm::ivec3 mCoord
Definition Voxel3d.h:55
int32_t mAtlasTile[3]
Definition Voxel3d.h:31
bool mUseTexture
Definition Voxel3d.h:33
glm::vec4 mTintColor
Definition Voxel3d.h:32
glm::ivec3 mVoxel
Definition Voxel3d.h:48
VoxelType mValue
Definition Voxel3d.h:50
glm::vec3 mWorldPosition
Definition Voxel3d.h:49
bool mValid
Definition Voxel3d.h:47
VoxelType mValue
Definition Voxel3d.h:42
bool mHit
Definition Voxel3d.h:38
glm::vec3 mHitPosition
Definition Voxel3d.h:41
glm::ivec3 mVoxel
Definition Voxel3d.h:39
glm::ivec3 mPrevVoxel
Definition Voxel3d.h:40