Installed Surge, fixed compile errors, moved a bunch of external stuff into folder

This commit is contained in:
2025-09-10 10:53:04 +02:00
parent a3649c65b0
commit 52bd7ef585
433 changed files with 10589 additions and 4 deletions

View File

@@ -0,0 +1,125 @@
/// <summary>
/// SURGE FRAMEWORK
/// Author: Bob Berkebile
/// Email: bobb@pixelplacement.com
///
/// Base class for States to be used as children of StateMachines.
///
/// </summary>
using UnityEngine;
using System.Collections;
namespace Pixelplacement
{
public class State : MonoBehaviour
{
//Public Properties:
/// <summary>
/// Gets a value indicating whether this instance is the first state in this state machine.
/// </summary>
public bool IsFirst
{
get
{
return transform.GetSiblingIndex () == 0;
}
}
/// <summary>
/// Gets a value indicating whether this instance is the last state in this state machine.
/// </summary>
public bool IsLast
{
get
{
return transform.GetSiblingIndex () == transform.parent.childCount - 1;
}
}
/// <summary>
/// Gets or sets the state machine.
/// </summary>
public StateMachine StateMachine
{
get
{
if (_stateMachine == null)
{
_stateMachine = transform.parent.GetComponent<StateMachine>();
if (_stateMachine == null)
{
Debug.LogError("States must be the child of a StateMachine to operate.");
return null;
}
}
return _stateMachine;
}
}
//Private Variables:
StateMachine _stateMachine;
//Public Methods
/// <summary>
/// Changes the state.
/// </summary>
public void ChangeState(int childIndex)
{
StateMachine.ChangeState(childIndex);
}
/// <summary>
/// Changes the state.
/// </summary>
public void ChangeState (GameObject state)
{
StateMachine.ChangeState (state.name);
}
/// <summary>
/// Changes the state.
/// </summary>
public void ChangeState (string state)
{
StateMachine.ChangeState (state);
}
/// <summary>
/// Change to the next state if possible.
/// </summary>
public GameObject Next (bool exitIfLast = false)
{
return StateMachine.Next (exitIfLast);
}
/// <summary>
/// Change to the previous state if possible.
/// </summary>
public GameObject Previous (bool exitIfFirst = false)
{
return StateMachine.Previous (exitIfFirst);
}
/// <summary>
/// Exit the current state.
/// </summary>
public void Exit ()
{
StateMachine.Exit ();
}
protected Coroutine StartCoroutineIfActive(IEnumerator coroutine)
{
if (gameObject.activeInHierarchy)
{
return StartCoroutine(coroutine);
}
else
{
return null;
}
}
}
}