Browse Source

Fix zValue when using reverseDepth

TothBenoit 2 months ago
parent
commit
b96cd11786
2 changed files with 9 additions and 4 deletions
  1. 5 4
      h2d/ObjectFollower.hx
  2. 4 0
      h3d/scene/Scene.hx

+ 5 - 4
h2d/ObjectFollower.hx

@@ -87,6 +87,7 @@ class ObjectFollower extends Object {
 				remove();
 			return;
 		}
+		var camera = scene.getRenderCamera();
 		var s2d = getScene();
 		var width = s2d == null ? h3d.Engine.getCurrent().width : s2d.width;
 		var height = s2d == null ? h3d.Engine.getCurrent().height : s2d.height;
@@ -94,7 +95,7 @@ class ObjectFollower extends Object {
 		var pos = new h3d.Vector();
 		if( cameraRelative ) {
 			var m = new h3d.Matrix();
-			inline m.load(scene.camera.mcam);
+			inline m.load(camera.mcam);
 			inline m.transpose();
 			var tmp = new h3d.Vector(offsetX, offsetZ, offsetY);
 			tmp.transform3x3(m);
@@ -102,7 +103,7 @@ class ObjectFollower extends Object {
 		} else {
 			pos.set(absPos._41 + offsetX, absPos._42 + offsetY, absPos._43 + offsetZ);
 		}
-		var p = scene.camera.project(pos.x, pos.y, pos.z, width * outputScale, height * outputScale, tmpPos);
+		var p = camera.project(pos.x, pos.y, pos.z, width * outputScale, height * outputScale, tmpPos);
 		zValue = p.z;
 
 		if( horizontalAlign != Left || verticalAlign != Top ) {
@@ -134,11 +135,11 @@ class ObjectFollower extends Object {
 		y = p.y;
 
 		if( depthBias != 0 ) {
-			var move = scene.camera.pos.sub(pos).normalized();
+			var move = camera.pos.sub(pos).normalized();
 			pos.x += move.x * depthBias;
 			pos.y += move.y * depthBias;
 			pos.z += move.z * depthBias;
-			var p2 = scene.camera.project(pos.x, pos.y, pos.z, width, height, tmpPos);
+			var p2 = camera.project(pos.x, pos.y, pos.z, width, height, tmpPos);
 			zValue = p2.z;
 		}
 	}

+ 4 - 0
h3d/scene/Scene.hx

@@ -440,4 +440,8 @@ class Scene extends Object implements h3d.IDrawable implements hxd.SceneEvents.I
 			prevEngine = null;
 		}
 	}
+
+	public function getRenderCamera() {
+		return ctx.camera;
+	}
 }