// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
#pragma once
#include "Engine/Core/Types/Span.h"
#include "Engine/Scripting/ScriptingType.h"
class Foliage;
///
/// Foliage tools for editor. Allows to spawn and modify foliage instances.
///
API_CLASS(Static, Namespace="FlaxEditor") class FoliageTools
{
DECLARE_SCRIPTING_TYPE_NO_SPAWN(FoliageTools);
///
/// Paints the foliage instances using the given foliage types selection and the brush location.
///
/// The foliage actor.
/// The foliage types indices to use for painting.
/// The brush position.
/// The brush radius.
/// True if paint using additive mode, false if remove foliage instances.
/// The additional scale for foliage density when painting. Can be used to increase or decrease foliage density during painting.
API_FUNCTION() static void Paint(Foliage* foliage, Span foliageTypesIndices, const Vector3& brushPosition, float brushRadius, bool additive, float densityScale = 1.0f);
///
/// Paints the foliage instances using the given foliage types selection and the brush location.
///
/// The foliage actor.
/// The foliage types indices to use for painting.
/// The brush position.
/// The brush radius.
/// The additional scale for foliage density when painting. Can be used to increase or decrease foliage density during painting.
API_FUNCTION() static void Paint(Foliage* foliage, Span foliageTypesIndices, const Vector3& brushPosition, float brushRadius, float densityScale = 1.0f);
///
/// Removes the foliage instances using the given foliage types selection and the brush location.
///
/// The foliage actor.
/// The foliage types indices to use for painting.
/// The brush position.
/// The brush radius.
API_FUNCTION() static void Remove(Foliage* foliage, Span foliageTypesIndices, const Vector3& brushPosition, float brushRadius);
};