From 5c2d29d7cefbb5755997eab18c04ae3929508ce1 Mon Sep 17 00:00:00 2001 From: LeenkxTeam Date: Fri, 3 Oct 2025 05:37:50 +0000 Subject: [PATCH] Update leenkx/Sources/leenkx/trait/physics/bullet/PhysicsWorld.hx --- .../trait/physics/bullet/PhysicsWorld.hx | 35 ++----------------- 1 file changed, 3 insertions(+), 32 deletions(-) diff --git a/leenkx/Sources/leenkx/trait/physics/bullet/PhysicsWorld.hx b/leenkx/Sources/leenkx/trait/physics/bullet/PhysicsWorld.hx index 214a349a..5eb1032a 100644 --- a/leenkx/Sources/leenkx/trait/physics/bullet/PhysicsWorld.hx +++ b/leenkx/Sources/leenkx/trait/physics/bullet/PhysicsWorld.hx @@ -7,7 +7,6 @@ import iron.system.Time; import iron.math.Vec4; import iron.math.Quat; import iron.math.RayCaster; -import iron.object.Object; class Hit { @@ -73,10 +72,6 @@ class PhysicsWorld extends Trait { public var convexHitNormalWorld = new Vec4(); var pairCache: Bool = false; - // Performance optimization: Global RigidBody trait cache - public static var rigidBodyCache: Map = new Map(); - public static var cacheObjectRefs: Map = new Map(); // Track trait counts - static var nullvec = true; static var vec1: bullet.Bt.Vector3 = null; static var vec2: bullet.Bt.Vector3 = null; @@ -150,36 +145,10 @@ class PhysicsWorld extends Trait { iron.Scene.active.notifyOnRemove(function() { sceneRemoved = true; + leenkx.trait.physics.PhysicsCache.clearCache(); }); } - - public static function getCachedRigidBody(object: Object): RigidBody { - if (object == null) return null; - - var shouldUpdate = false; - var cachedTraitCount = cacheObjectRefs.get(object); - - if (cachedTraitCount == null || cachedTraitCount != object.traits.length) { - shouldUpdate = true; - } else if (rigidBodyCache.get(object) == null) { - var rb = object.getTrait(RigidBody); - if (rb != null) shouldUpdate = true; - } - - if (shouldUpdate) { - var rb = object.getTrait(RigidBody); - rigidBodyCache.set(object, rb); - cacheObjectRefs.set(object, object.traits.length); - } - - return rigidBodyCache.get(object); - } - - public static inline function hasContactWith(contacts: Array, target: RigidBody): Bool { - return contacts != null && target != null && contacts.indexOf(target) >= 0; - } - public function reset() { for (rb in active.rbMap) removeRigidBody(rb); } @@ -335,6 +304,8 @@ class PhysicsWorld extends Trait { var t = Time.fixedStep * timeScale * Time.scale; if (t == 0.0) return; // Simulation paused + leenkx.trait.physics.PhysicsCache.clearContactsCache(); + #if lnx_debug var startTime = kha.Scheduler.realTime(); #end