From 7d60a8a9ece368e365b5c857600004298cb89526 Mon Sep 17 00:00:00 2001 From: skal Date: Fri, 6 Feb 2026 08:46:20 +0100 Subject: fix: Correct mesh normal transformation and floor shadow rendering --- src/3d/object.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/3d/object.h') diff --git a/src/3d/object.h b/src/3d/object.h index a7ce0b8..3d4ff35 100644 --- a/src/3d/object.h +++ b/src/3d/object.h @@ -40,12 +40,14 @@ class Object3D { bool is_static; AssetId mesh_asset_id; + vec3 local_extent; // Half-extents for AABB (used by meshes for shadows) void* user_data; // For tool-specific data, not for general use Object3D(ObjectType t = ObjectType::CUBE) : position(0, 0, 0), rotation(0, 0, 0, 1), scale(1, 1, 1), type(t), color(1, 1, 1, 1), velocity(0, 0, 0), mass(1.0f), restitution(0.5f), - is_static(false), mesh_asset_id((AssetId)0), user_data(nullptr) { + is_static(false), mesh_asset_id((AssetId)0), local_extent(1, 1, 1), + user_data(nullptr) { } mat4 get_model_matrix() const { @@ -61,6 +63,8 @@ class Object3D { BoundingVolume get_local_bounds() const { if (type == ObjectType::TORUS) return {{-1.5f, -0.5f, -1.5f}, {1.5f, 0.5f, 1.5f}}; + if (type == ObjectType::MESH) + return {-local_extent, local_extent}; // Simple defaults for unit primitives return {{-1, -1, -1}, {1, 1, 1}}; } -- cgit v1.2.3