From ac397cc5db03f73ebafc8a89c5f36a9e3accdd39 Mon Sep 17 00:00:00 2001 From: Rod Kay Date: Sat, 9 Dec 2023 14:58:37 +1100 Subject: [PATCH] physics.box2d.object: Add 'Z' component to 'Site' to allow small variations in 'Z' to prevent opengl from flipping visuals constantly due to all 'Z's being '0.0'. --- 3-mid/physics/implement/box2d/source/c/box2d-object.cpp | 2 +- .../source/private/box2d/box2d_physics-object.adb | 7 +++++-- .../source/private/box2d/box2d_physics-object.ads | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/3-mid/physics/implement/box2d/source/c/box2d-object.cpp b/3-mid/physics/implement/box2d/source/c/box2d-object.cpp index 6b15fb6..f453b5d 100644 --- a/3-mid/physics/implement/box2d/source/c/box2d-object.cpp +++ b/3-mid/physics/implement/box2d/source/c/box2d-object.cpp @@ -158,7 +158,7 @@ b2d_Object_Site (Object* Self) the_Site.y = Self->bodyDef.position (1); } - the_Site.z = 0.0; + the_Site.z = 0.0; return the_Site; } diff --git a/3-mid/physics/interface/source/private/box2d/box2d_physics-object.adb b/3-mid/physics/interface/source/private/box2d/box2d_physics-object.adb index 9014a73..f2438a8 100644 --- a/3-mid/physics/interface/source/private/box2d/box2d_physics-object.adb +++ b/3-mid/physics/interface/source/private/box2d/box2d_physics-object.adb @@ -184,8 +184,9 @@ is overriding function Site (Self : in Item) return Vector_3 is - the_Site : constant c_math_c.Vector_3.item := b2d_Object_Site (Self.C); + the_Site : c_math_c.Vector_3.item := b2d_Object_Site (Self.C); begin + the_Site.z := c_math_c.Real (Self.Site_z); return +the_Site; end Site; @@ -195,6 +196,7 @@ is is c_Now : aliased c_math_c.Vector_3.item := +Now; begin + Self.Site_z := Now (3); b2d_Object_Site_is (Self.C, c_Now'unchecked_Access); end Site_is; @@ -238,8 +240,9 @@ is overriding function Transform (Self : in Item) return Matrix_4x4 is - the_Transform : constant c_math_c.Matrix_4x4.item := b2d_Object_Transform (Self.C); + the_Transform : c_math_c.Matrix_4x4.item := b2d_Object_Transform (Self.C); begin + the_Transform.m32 := c_math_c.Real (Self.Site_z); return +the_Transform; end Transform; diff --git a/3-mid/physics/interface/source/private/box2d/box2d_physics-object.ads b/3-mid/physics/interface/source/private/box2d/box2d_physics-object.ads index 920e4af..cc30a04 100644 --- a/3-mid/physics/interface/source/private/box2d/box2d_physics-object.ads +++ b/3-mid/physics/interface/source/private/box2d/box2d_physics-object.ads @@ -61,6 +61,7 @@ private user_Data : access lace.Any.limited_item'Class; Dynamics : physics.Object.safe_Dynamics; + Site_z : Real := 0.0; end record;