diff --git a/Source/Editor/Gizmo/IGizmoOwner.cs b/Source/Editor/Gizmo/IGizmoOwner.cs
index a28810179..ff653196e 100644
--- a/Source/Editor/Gizmo/IGizmoOwner.cs
+++ b/Source/Editor/Gizmo/IGizmoOwner.cs
@@ -11,6 +11,11 @@ namespace FlaxEditor.Gizmo
[HideInEditor]
public interface IGizmoOwner
{
+ ///
+ /// Gets the gizmos collection.
+ ///
+ FlaxEditor.Viewport.EditorViewport Viewport { get; }
+
///
/// Gets the gizmos collection.
///
diff --git a/Source/Editor/Gizmo/TransformGizmoBase.cs b/Source/Editor/Gizmo/TransformGizmoBase.cs
index dd5cc6c76..6123d348a 100644
--- a/Source/Editor/Gizmo/TransformGizmoBase.cs
+++ b/Source/Editor/Gizmo/TransformGizmoBase.cs
@@ -162,10 +162,23 @@ namespace FlaxEditor.Gizmo
// Scale gizmo to fit on-screen
Vector3 position = Position;
- Vector3 vLength = Owner.ViewPosition - position;
- float gizmoSize = Editor.Instance.Options.Options.Visual.GizmoSize;
- _screenScale = (float)(vLength.Length / GizmoScaleFactor * gizmoSize);
-
+ if (Owner.Viewport.UseOrthographicProjection)
+ {
+ //[hack] this is far form ideal the View Position is in wrong location, any think using the View Position will have problem
+ //the camera system needs rewrite the to be a camera on springarm, similar how the ArcBallCamera is handled
+ //the ortho projection cannot exist with fps camera because there is no
+ // - focus point to calculate correct View Position with Orthographic Scale as a reference and Orthographic Scale from View Position
+ // with make the camera jump
+ // - and deaph so w and s movment in orto mode moves the cliping plane now
+ float gizmoSize = Editor.Instance.Options.Options.Visual.GizmoSize;
+ _screenScale = gizmoSize * (50 * Owner.Viewport.OrthographicScale);
+ }
+ else
+ {
+ Vector3 vLength = Owner.ViewPosition - position;
+ float gizmoSize = Editor.Instance.Options.Options.Visual.GizmoSize;
+ _screenScale = (float)(vLength.Length / GizmoScaleFactor * gizmoSize);
+ }
// Setup world
Quaternion orientation = GetSelectedObject(0).Orientation;
_gizmoWorld = new Transform(position, orientation, new Float3(_screenScale));
diff --git a/Source/Editor/Viewport/EditorGizmoViewport.cs b/Source/Editor/Viewport/EditorGizmoViewport.cs
index 9a4fd34a2..a24dd2f38 100644
--- a/Source/Editor/Viewport/EditorGizmoViewport.cs
+++ b/Source/Editor/Viewport/EditorGizmoViewport.cs
@@ -41,6 +41,8 @@ namespace FlaxEditor.Viewport
Gizmos[i].Update(deltaTime);
}
}
+ ///
+ public EditorViewport Viewport => this;
///
public GizmosCollection Gizmos { get; }
diff --git a/Source/Editor/Viewport/PrefabWindowViewport.cs b/Source/Editor/Viewport/PrefabWindowViewport.cs
index 1dc459135..eb462deb1 100644
--- a/Source/Editor/Viewport/PrefabWindowViewport.cs
+++ b/Source/Editor/Viewport/PrefabWindowViewport.cs
@@ -306,6 +306,8 @@ namespace FlaxEditor.Viewport
var orient = ViewOrientation;
((FPSCamera)ViewportCamera).ShowActors(TransformGizmo.SelectedParents, ref orient);
}
+ ///
+ public EditorViewport Viewport => this;
///
public GizmosCollection Gizmos { get; }