summaryrefslogtreecommitdiff
path: root/src/3d/scene_loader.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/3d/scene_loader.cc')
-rw-r--r--src/3d/scene_loader.cc57
1 files changed, 30 insertions, 27 deletions
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