# Conflicts: # Content/Shaders/GI/DDGI.flax # Content/Shaders/GI/GlobalSurfaceAtlas.flax # Content/Shaders/TAA.flax # Content/Shaders/VolumetricFog.flax # Source/Editor/CustomEditors/Editors/ActorTagEditor.cs # Source/Engine/Core/Config/GraphicsSettings.cpp # Source/Engine/Engine/PostProcessEffect.cs # Source/Engine/Graphics/GPUResourcesCollection.cpp # Source/Engine/Graphics/GPUResourcesCollection.h # Source/Engine/Graphics/PostProcessBase.h # Source/FlaxEngine.Gen.cs
71 lines
2.2 KiB
C#
71 lines
2.2 KiB
C#
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
|
|
|
|
using FlaxEditor.Gizmo;
|
|
using FlaxEngine;
|
|
|
|
namespace FlaxEditor.Tools.Foliage
|
|
{
|
|
/// <summary>
|
|
/// The custom outline for drawing the selected foliage instances outlines.
|
|
/// </summary>
|
|
/// <seealso cref="FlaxEditor.Gizmo.SelectionOutline" />
|
|
[HideInEditor]
|
|
public class EditFoliageSelectionOutline : SelectionOutline
|
|
{
|
|
private StaticModel _staticModel;
|
|
|
|
/// <summary>
|
|
/// The parent mode.
|
|
/// </summary>
|
|
public EditFoliageGizmoMode GizmoMode;
|
|
|
|
/// <inheritdoc />
|
|
public override bool CanRender()
|
|
{
|
|
if (!HasDataReady)
|
|
return false;
|
|
|
|
var foliage = GizmoMode.SelectedFoliage;
|
|
if (!foliage)
|
|
return false;
|
|
var instanceIndex = GizmoMode.SelectedInstanceIndex;
|
|
if (instanceIndex < 0 || instanceIndex >= foliage.InstancesCount)
|
|
return false;
|
|
return true;
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
protected override void DrawSelectionDepth(GPUContext context, SceneRenderTask task, GPUTexture customDepth)
|
|
{
|
|
var foliage = GizmoMode.SelectedFoliage;
|
|
if (!foliage)
|
|
return;
|
|
var instanceIndex = GizmoMode.SelectedInstanceIndex;
|
|
if (instanceIndex < 0 || instanceIndex >= foliage.InstancesCount)
|
|
return;
|
|
|
|
// Draw single instance
|
|
var instance = foliage.GetInstance(instanceIndex);
|
|
var model = foliage.GetFoliageType(instance.Type).Model;
|
|
if (model)
|
|
{
|
|
Transform instanceWorld = foliage.Transform.LocalToWorld(instance.Transform);
|
|
|
|
if (!_staticModel)
|
|
{
|
|
_staticModel = new StaticModel
|
|
{
|
|
StaticFlags = StaticFlags.None
|
|
};
|
|
}
|
|
|
|
_staticModel.Model = model;
|
|
_staticModel.Transform = instanceWorld;
|
|
_actors.Add(_staticModel);
|
|
|
|
Renderer.DrawSceneDepth(context, task, customDepth, _actors);
|
|
}
|
|
}
|
|
}
|
|
}
|