namespace Editor;
class SceneSelectionMode
{
public Scene Scene { get; }
public SelectionSystem Selection { get; }
public Ray FirstRay { get; private set; }
public Ray Ray { get; private set; }
int calls = 0;
Ray previousRay;
public SceneSelectionMode( Scene scene, SelectionSystem selection )
{
Scene = scene;
Selection = selection;
}
internal void Finish( Ray currentRay )
{
Ray = currentRay;
OnDisabled();
}
internal void Think( Ray currentRay )
{
Ray = currentRay;
calls++;
if ( calls == 1 )
{
FirstRay = Ray;
OnEnabled();
}
if ( previousRay != currentRay )
{
OnMouseMoved();
}
OnUpdate();
previousRay = Ray;
}
///
/// Called at start
///
public virtual void OnEnabled()
{
}
///
/// The mouse has moved, update the selection
///
public virtual void OnMouseMoved()
{
}
///
/// Called every frame
///
public virtual void OnUpdate()
{
}
///
/// Called when disabled
///
public virtual void OnDisabled()
{
}
}