using System.Text;
using UnityEngine;
using UnityEngine.Experimental.TerrainAPI;
namespace Gaia
{
public delegate void ResetBrush();
public interface IBrushUIGroup {
///
/// The normalized size of the brush.
///
float brushSize { get; }
///
/// The rotation of the brush (in degrees).
///
float brushRotation { get; }
///
/// The normalized strength of the brush when applied.
///
float brushStrength { get; }
///
/// The spacing used when applying certain brushes.
///
float brushSpacing { get; }
string validationMessage { get; set; }
///
/// Are we allowed to paint with this brush?
///
bool allowPaint { get; }
bool InvertStrength { get; }
bool isInUse { get; }
//FilterStackView brushMaskFilterStackView { get; }
//FilterStack brushMaskFilterStack { get; }
Terrain terrainUnderCursor { get; }
bool isRaycastHitUnderCursorValid { get; }
RaycastHit raycastHitUnderCursor { get; }
//void OnInspectorGUI(Terrain terrain, IOnInspectorGUI editContext);
//void OnEnterToolMode();
//void OnExitToolMode();
//void OnPaint(Terrain terrain, IOnPaint editContext);
//void OnSceneGUI2D(Terrain terrain, IOnSceneGUI editContext);
// void OnSceneGUI(Terrain terrain, IOnSceneGUI editContext);
//void AppendBrushInfo(Terrain terrain, IOnSceneGUI editContext, StringBuilder builder);
//RenderTexture GetBrushMask(FilterContext fc, RenderTexture heightContext);
///
/// Scatters the brush around the specified UV on the specified terrain. If the scattered UV leaves
/// the current terrain then the terrain AND UV are modified for the terrain the UV is now over.
///
/// The terrain the scattered UV co-ordinate is actually on.
/// The UV co-ordinate passed in transformed into the UV co-ordinate relative to the scattered terrain.
/// "true" if we scattered to a terrain, "false" if we fell off ALL terrains.
bool ScatterBrushStamp(ref Terrain terrain, ref Vector2 uv);
//bool ModifierActive(BrushModifierKey k);
}
}