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; }