Code cleanup for #1377

This commit is contained in:
Wojtek Figat
2023-10-06 15:58:23 +02:00
parent 4853ec9f49
commit 2cac149741
8 changed files with 40 additions and 56 deletions

View File

@@ -125,6 +125,8 @@ namespace FlaxEditor.GUI.Timeline.Tracks
fov = cam.FieldOfView;
customAspectRatio = cam.CustomAspectRatio;
view.RenderLayersMask = cam.RenderLayersMask;
view.Flags = cam.RenderFlags;
view.Mode = cam.RenderMode;
}
// Try to evaluate camera properties based on the animated tracks

View File

@@ -10,7 +10,6 @@ using FlaxEditor.Viewport.Cameras;
using FlaxEditor.Viewport.Widgets;
using FlaxEngine;
using FlaxEngine.GUI;
using FlaxEngine.Utilities;
using Newtonsoft.Json;
using JsonSerializer = FlaxEngine.Json.JsonSerializer;
@@ -496,34 +495,16 @@ namespace FlaxEditor.Viewport
viewLayers.AddButton("Copy layers", () => Clipboard.Text = JsonSerializer.Serialize(Task.View.RenderLayersMask));
viewLayers.AddButton("Paste layers", () =>
{
object obj;
try
{
obj = JsonConvert.DeserializeObject(Clipboard.Text, typeof(LayersMask), JsonSerializer.Settings);
Task.ViewLayersMask = JsonSerializer.Deserialize<LayersMask>(Clipboard.Text);
}
catch
{
obj = null;
}
if (obj != null && obj is LayersMask layer)
{
RenderView view = Task.View;
view.RenderLayersMask = layer;
Task.View = view;
}
});
viewLayers.AddButton("Reset layers", () =>
{
RenderView view = Task.View;
view.RenderLayersMask = LayersMask.Default;
Task.View = view;
}).Icon = Editor.Instance.Icons.Rotate32;
viewLayers.AddButton("Disable layers", () =>
{
RenderView view = Task.View;
view.RenderLayersMask = new LayersMask(0);
Task.View = view;
}).Icon = Editor.Instance.Icons.Rotate32;
viewLayers.AddButton("Reset layers", () => Task.ViewLayersMask = LayersMask.Default).Icon = Editor.Instance.Icons.Rotate32;
viewLayers.AddButton("Disable layers", () => Task.ViewLayersMask = new LayersMask(0)).Icon = Editor.Instance.Icons.Rotate32;
viewLayers.AddSeparator();
var layers = LayersAndTagsSettings.GetCurrentLayers();
if (layers != null && layers.Length > 0)
@@ -542,10 +523,8 @@ namespace FlaxEditor.Viewport
{
int layerIndex = (int)button.Tag;
LayersMask mask = new LayersMask(layerIndex);
RenderView view = Task.View;
view.RenderLayersMask ^= mask;
Task.View = view;
button.Icon = (Task.View.RenderLayersMask & mask) != 0 ? Style.Current.CheckBoxTick : SpriteHandle.Invalid;
Task.ViewLayersMask ^= mask;
button.Icon = (Task.ViewLayersMask & mask) != 0 ? Style.Current.CheckBoxTick : SpriteHandle.Invalid;
}
};
viewLayers.VisibleChanged += WidgetViewLayersShowHide;
@@ -557,18 +536,12 @@ namespace FlaxEditor.Viewport
viewFlags.AddButton("Copy flags", () => Clipboard.Text = JsonSerializer.Serialize(Task.ViewFlags));
viewFlags.AddButton("Paste flags", () =>
{
object obj;
try
{
obj = JsonConvert.DeserializeObject(Clipboard.Text, typeof(ViewFlags), JsonSerializer.Settings);
Task.ViewFlags = JsonSerializer.Deserialize<ViewFlags>(Clipboard.Text);
}
catch
{
obj = null;
}
if (obj != null && obj is ViewFlags flags)
{
Task.ViewFlags = flags;
}
});
viewFlags.AddButton("Reset flags", () => Task.ViewFlags = ViewFlags.DefaultEditor).Icon = Editor.Instance.Icons.Rotate32;
@@ -587,7 +560,7 @@ namespace FlaxEditor.Viewport
{
var v = (ViewFlags)button.Tag;
Task.ViewFlags ^= v;
button.Icon = (Task.View.Flags & v) != 0 ? Style.Current.CheckBoxTick : SpriteHandle.Invalid;
button.Icon = (Task.ViewFlags & v) != 0 ? Style.Current.CheckBoxTick : SpriteHandle.Invalid;
}
};
viewFlags.VisibleChanged += WidgetViewFlagsShowHide;
@@ -599,18 +572,12 @@ namespace FlaxEditor.Viewport
debugView.AddButton("Copy view", () => Clipboard.Text = JsonSerializer.Serialize(Task.ViewMode));
debugView.AddButton("Paste view", () =>
{
object obj;
try
{
obj = JsonConvert.DeserializeObject(Clipboard.Text, typeof(ViewMode), JsonSerializer.Settings);
Task.ViewMode = JsonSerializer.Deserialize<ViewMode>(Clipboard.Text);
}
catch
{
obj = null;
}
if (obj != null && obj is ViewMode mode)
{
Task.ViewMode = mode;
}
});
debugView.AddSeparator();
@@ -1185,9 +1152,9 @@ namespace FlaxEditor.Viewport
_isVirtualMouseRightDown = false; // Cancel when mouse right or escape is pressed
if (_wasVirtualMouseRightDown)
wasControllingMouse = true;
if (_isVirtualMouseRightDown)
if (_isVirtualMouseRightDown)
_isControllingMouse = _isVirtualMouseRightDown;
if (wasControllingMouse != _isControllingMouse)
{
if (_isControllingMouse)
@@ -1698,15 +1665,14 @@ namespace FlaxEditor.Viewport
return;
var ccm = (ContextMenu)cm;
var layersMask = Task.ViewLayersMask;
foreach (var e in ccm.Items)
{
if (e is ContextMenuButton b && b != null && b.Tag != null)
{
int layerIndex = (int)b.Tag;
LayersMask mask = new LayersMask(layerIndex);
b.Icon = (Task.View.RenderLayersMask & mask) != 0
? Style.Current.CheckBoxTick
: SpriteHandle.Invalid;
b.Icon = (layersMask & mask) != 0 ? Style.Current.CheckBoxTick : SpriteHandle.Invalid;
}
}
}

View File

@@ -39,5 +39,19 @@ namespace FlaxEngine
View = view;
}
}
/// <summary>
/// The rendering mask for layers. Used to exclude objects from rendering (via <see cref="View"/> property).
/// </summary>
public LayersMask ViewLayersMask
{
get => View.RenderLayersMask;
set
{
var view = View;
view.RenderLayersMask = value;
View = view;
}
}
}
}

View File

@@ -176,7 +176,7 @@ void RenderView::SetProjector(float nearPlane, float farPlane, const Float3& pos
CullingFrustum = Frustum;
}
void RenderView::CopyFrom(Camera* camera, Viewport* viewport)
void RenderView::CopyFrom(const Camera* camera, const Viewport* viewport)
{
const Vector3 cameraPos = camera->GetPosition();
LargeWorlds::UpdateOrigin(Origin, cameraPos);
@@ -193,7 +193,7 @@ void RenderView::CopyFrom(Camera* camera, Viewport* viewport)
CullingFrustum = Frustum;
RenderLayersMask = camera->RenderLayersMask;
Flags = camera->RenderFlags;
Mode = camera->RenderView;
Mode = camera->RenderMode;
}
void RenderView::GetWorldMatrix(const Transform& transform, Matrix& world) const

View File

@@ -103,7 +103,7 @@ namespace FlaxEngine
TemporalAAJitter = Float4.Zero;
RenderLayersMask = camera.RenderLayersMask;
Flags = camera.RenderFlags;
Mode = camera.RenderView;
Mode = camera.RenderMode;
UpdateCachedData();
}

View File

@@ -295,10 +295,12 @@ public:
/// <param name="angle">Camera's FOV angle (in degrees)</param>
void SetProjector(float nearPlane, float farPlane, const Float3& position, const Float3& direction, const Float3& up, float angle);
// Copy view data from camera
// @param camera Camera to copy its data
// @param camera The custom viewport to use for view/projection matrices override.
void CopyFrom(Camera* camera, Viewport* viewport = nullptr);
/// <summary>
/// Copies view data from camera to the view.
/// </summary>
/// <param name="camera">The camera to copy its data.</param>
/// <param name="viewport">The custom viewport to use for view/projection matrices override.</param>
void CopyFrom(const Camera* camera, const Viewport* viewport = nullptr);
public:
FORCE_INLINE DrawPass GetShadowsDrawPassMask(ShadowsCastingMode shadowsMode) const

View File

@@ -416,7 +416,7 @@ void Camera::Serialize(SerializeStream& stream, const void* otherObj)
SERIALIZE_MEMBER(OrthoScale, _orthoScale);
SERIALIZE(RenderLayersMask);
SERIALIZE(RenderFlags);
SERIALIZE(RenderView);
SERIALIZE(RenderMode);
}
void Camera::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
@@ -432,7 +432,7 @@ void Camera::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier
DESERIALIZE_MEMBER(OrthoScale, _orthoScale);
DESERIALIZE(RenderLayersMask);
DESERIALIZE(RenderFlags);
DESERIALIZE(RenderView);
DESERIALIZE(RenderMode);
}
void Camera::OnEnable()

View File

@@ -145,7 +145,7 @@ public:
/// Describes frame rendering modes for this camera.
/// </summary>
API_FIELD(Attributes = "EditorOrder(120), EditorDisplay(\"Camera\")")
ViewMode RenderView = ViewMode::Default;
ViewMode RenderMode = ViewMode::Default;
public:
/// <summary>