summaryrefslogtreecommitdiff
path: root/src/3d
diff options
context:
space:
mode:
Diffstat (limited to 'src/3d')
-rw-r--r--src/3d/renderer_draw.cc2
-rw-r--r--src/3d/renderer_pipelines.cc6
-rw-r--r--src/3d/scene_loader.cc57
-rw-r--r--src/3d/scene_loader.h17
4 files changed, 42 insertions, 40 deletions
diff --git a/src/3d/renderer_draw.cc b/src/3d/renderer_draw.cc
index 2b19787..f2d1323 100644
--- a/src/3d/renderer_draw.cc
+++ b/src/3d/renderer_draw.cc
@@ -61,7 +61,7 @@ void Renderer3D::update_uniforms(const Scene& scene, const Camera& camera,
if (obj.type == ObjectType::PLANE && obj.shared_user_data) {
// Safely cast shared_user_data to PlaneData* and get distance
plane_distance =
- static_cast<PlaneData*>(obj.shared_user_data.get())->distance;
+ ((PlaneData*)(obj.shared_user_data.get()))->distance;
}
data.params =
diff --git a/src/3d/renderer_pipelines.cc b/src/3d/renderer_pipelines.cc
index fed3983..57e71ae 100644
--- a/src/3d/renderer_pipelines.cc
+++ b/src/3d/renderer_pipelines.cc
@@ -17,7 +17,7 @@ void Renderer3D::create_pipeline() {
WGPURenderPipeline Renderer3D::create_pipeline_impl(bool use_bvh) {
// Main SDF shader
size_t size;
- const char* shader_code = reinterpret_cast<const char*>(
+ const char* shader_code = (const char*)(
GetAsset(AssetId::ASSET_SHADER_RENDERER_3D, &size));
// Compose the final shader by substituting the scene query implementation
@@ -134,7 +134,7 @@ WGPURenderPipeline Renderer3D::create_pipeline_impl(bool use_bvh) {
void Renderer3D::create_mesh_pipeline() {
size_t size;
- const char* shader_code = reinterpret_cast<const char*>(
+ const char* shader_code = (const char*)(
GetAsset(AssetId::ASSET_SHADER_MESH, &size));
ShaderComposer::CompositionMap composition_map;
@@ -261,7 +261,7 @@ void Renderer3D::create_mesh_pipeline() {
void Renderer3D::create_skybox_pipeline() {
size_t size;
- const char* shader_code = reinterpret_cast<const char*>(
+ const char* shader_code = (const char*)(
GetAsset(AssetId::ASSET_SHADER_SKYBOX, &size));
std::string composed_shader =
diff --git a/src/3d/scene_loader.cc b/src/3d/scene_loader.cc
index 286edca..1ff2cc2 100644
--- a/src/3d/scene_loader.cc
+++ b/src/3d/scene_loader.cc
@@ -9,7 +9,9 @@
#include <new> // For std::nothrow
#include <vector>
-bool SceneLoader::LoadScene(Scene& scene, const uint8_t* data, size_t size) {
+namespace SceneLoader {
+
+bool LoadScene(Scene& scene, const uint8_t* data, size_t size) {
if (!data || size < 16) { // Header size check
printf("SceneLoader: Data too small\n");
return false;
@@ -23,11 +25,11 @@ bool SceneLoader::LoadScene(Scene& scene, const uint8_t* data, size_t size) {
size_t offset = 4;
- uint32_t num_objects = *reinterpret_cast<const uint32_t*>(data + offset);
+ uint32_t num_objects = *(const uint32_t*)(data + offset);
offset += 4;
- uint32_t num_cameras = *reinterpret_cast<const uint32_t*>(data + offset);
+ uint32_t num_cameras = *(const uint32_t*)(data + offset);
offset += 4;
- uint32_t num_lights = *reinterpret_cast<const uint32_t*>(data + offset);
+ uint32_t num_lights = *(const uint32_t*)(data + offset);
offset += 4;
// printf("SceneLoader: Loading %d objects, %d cameras, %d lights\n",
@@ -43,48 +45,48 @@ bool SceneLoader::LoadScene(Scene& scene, const uint8_t* data, size_t size) {
if (offset + 4 > size)
return false;
- uint32_t type_val = *reinterpret_cast<const uint32_t*>(data + offset);
+ uint32_t type_val = *(const uint32_t*)(data + offset);
offset += 4;
ObjectType type = (ObjectType)type_val;
if (offset + 12 + 16 + 12 + 16 > size)
return false; // Transforms + Color
- float px = *reinterpret_cast<const float*>(data + offset);
+ float px = *(const float*)(data + offset);
offset += 4;
- float py = *reinterpret_cast<const float*>(data + offset);
+ float py = *(const float*)(data + offset);
offset += 4;
- float pz = *reinterpret_cast<const float*>(data + offset);
+ float pz = *(const float*)(data + offset);
offset += 4;
vec3 pos(px, py, pz);
- float rx = *reinterpret_cast<const float*>(data + offset);
+ float rx = *(const float*)(data + offset);
offset += 4;
- float ry = *reinterpret_cast<const float*>(data + offset);
+ float ry = *(const float*)(data + offset);
offset += 4;
- float rz = *reinterpret_cast<const float*>(data + offset);
+ float rz = *(const float*)(data + offset);
offset += 4;
- float rw = *reinterpret_cast<const float*>(data + offset);
+ float rw = *(const float*)(data + offset);
offset += 4;
quat rot(rx, ry, rz, rw);
- float sx = *reinterpret_cast<const float*>(data + offset);
+ float sx = *(const float*)(data + offset);
offset += 4;
- float sy = *reinterpret_cast<const float*>(data + offset);
+ float sy = *(const float*)(data + offset);
offset += 4;
- float sz = *reinterpret_cast<const float*>(data + offset);
+ float sz = *(const float*)(data + offset);
offset += 4;
vec3 scale(sx, sy, sz);
// Color components (cr, cg, cb, ca)
- float cr = *reinterpret_cast<const float*>(data + offset);
+ float cr = *(const float*)(data + offset);
offset += 4;
- float cg = *reinterpret_cast<const float*>(data + offset);
+ float cg = *(const float*)(data + offset);
offset += 4;
- float cb = *reinterpret_cast<const float*>(data + offset);
+ float cb = *(const float*)(data + offset);
offset += 4;
// Read ca, advance offset AFTER reading ca, then construct color
- float ca = *reinterpret_cast<const float*>(data + offset);
+ float ca = *(const float*)(data + offset);
offset += 4; // Offset is now after ca
vec4 color(cr, cg, cb, ca);
@@ -94,7 +96,7 @@ bool SceneLoader::LoadScene(Scene& scene, const uint8_t* data, size_t size) {
// Check bounds before reading plane_distance
if (offset + 4 > size)
return false;
- plane_distance = *reinterpret_cast<const float*>(data + offset);
+ plane_distance = *(const float*)(data + offset);
offset += 4; // Advance offset after reading plane_distance
}
@@ -103,7 +105,7 @@ bool SceneLoader::LoadScene(Scene& scene, const uint8_t* data, size_t size) {
// either after ca (if not PLANE) or after plane_distance (if PLANE).
if (offset + 4 > size)
return false;
- uint32_t name_len = *reinterpret_cast<const uint32_t*>(data + offset);
+ uint32_t name_len = *(const uint32_t*)(data + offset);
offset += 4;
AssetId mesh_id = (AssetId)0; // Default or INVALID (if 0 is invalid)
@@ -129,11 +131,11 @@ bool SceneLoader::LoadScene(Scene& scene, const uint8_t* data, size_t size) {
// Physics properties
if (offset + 4 + 4 + 4 > size)
return false;
- float mass = *reinterpret_cast<const float*>(data + offset);
+ float mass = *(const float*)(data + offset);
offset += 4;
- float restitution = *reinterpret_cast<const float*>(data + offset);
+ float restitution = *(const float*)(data + offset);
offset += 4;
- uint32_t is_static_u32 = *reinterpret_cast<const uint32_t*>(data + offset);
+ uint32_t is_static_u32 = *(const uint32_t*)(data + offset);
offset += 4;
bool is_static = (is_static_u32 != 0);
@@ -155,9 +157,9 @@ bool SceneLoader::LoadScene(Scene& scene, const uint8_t* data, size_t size) {
// Use std::make_shared for exception safety and efficiency
obj.shared_user_data = std::make_shared<PlaneData>();
// Assign the plane distance
- // Safely cast void* to PlaneData* using static_cast on the shared_ptr's
+ // Safely cast void* to PlaneData* using C-style cast on the shared_ptr's
// get()
- static_cast<PlaneData*>(obj.shared_user_data.get())->distance =
+ ((PlaneData*)(obj.shared_user_data.get()))->distance =
plane_distance;
}
@@ -166,4 +168,5 @@ bool SceneLoader::LoadScene(Scene& scene, const uint8_t* data, size_t size) {
}
return true;
-} \ No newline at end of file
+}
+} // namespace SceneLoader \ No newline at end of file
diff --git a/src/3d/scene_loader.h b/src/3d/scene_loader.h
index eabfb7a..c4fb9e9 100644
--- a/src/3d/scene_loader.h
+++ b/src/3d/scene_loader.h
@@ -4,12 +4,11 @@
#include <cstddef>
#include <cstdint>
-// SceneLoader handles parsing of binary scene files (.bin) exported from
-// Blender. It populates a Scene object with objects, lights, and cameras.
-class SceneLoader {
- public:
- // Loads a scene from a binary buffer.
- // Returns true on success, false on failure (e.g., invalid magic, version
- // mismatch).
- static bool LoadScene(Scene& scene, const uint8_t* data, size_t size);
-};
+namespace SceneLoader {
+
+// Loads a scene from a binary buffer.
+// Returns true on success, false on failure (e.g., invalid magic, version
+// mismatch).
+bool LoadScene(Scene& scene, const uint8_t* data, size_t size);
+
+} // namespace SceneLoader