Procházet zdrojové kódy

Scene 3D : add offset and size to scene to fix event offset on not full screen scene

lviguier před 11 měsíci
rodič
revize
0698f166ac
1 změnil soubory, kde provedl 10 přidání a 2 odebrání
  1. 10 2
      h3d/scene/Scene.hx

+ 10 - 2
h3d/scene/Scene.hx

@@ -20,6 +20,11 @@ class Scene extends Object implements h3d.IDrawable implements hxd.SceneEvents.I
 	**/
 	public var renderer(default,set) : Renderer;
 
+	public var offsetX : Float;
+	public var offsetY : Float;
+	public var width : Float;
+	public var height : Float;
+
 	var ctx : RenderContext;
 	var interactives : Array<Interactive>;
 	@:allow(h3d.scene.Interactive)
@@ -119,9 +124,12 @@ class Scene extends Object implements h3d.IDrawable implements hxd.SceneEvents.I
 			return null;
 
 		if( hitInteractives.length == 0 ) {
+			var x = event.relX - offsetX;
+			var y = event.relY - offsetY;
+
+			var screenX = (x / width - 0.5) * 2;
+			var screenY = -(y / height - 0.5) * 2;
 
-			var screenX = (event.relX / window.width - 0.5) * 2;
-			var screenY = -(event.relY / window.height - 0.5) * 2;
 			var p0 = camera.unproject(screenX, screenY, 0);
 			var p1 = camera.unproject(screenX, screenY, 1);
 			var r = h3d.col.Ray.fromPoints(p0.toPoint(), p1.toPoint());