Browse Source

Documented Fungus Script class

master
chrisgregan 10 years ago
parent
commit
c55abe99fe
  1. 6
      Assets/Fungus/FungusScript/Editor/FungusScriptEditor.cs
  2. 67
      Assets/Fungus/FungusScript/Scripts/FungusScript.cs

6
Assets/Fungus/FungusScript/Editor/FungusScriptEditor.cs

@ -12,7 +12,7 @@ namespace Fungus
{
SerializedProperty stepTimeProp;
SerializedProperty startSequenceProp;
SerializedProperty startAutomaticallyProp;
SerializedProperty executeOnStartProp;
SerializedProperty colorCommandsProp;
SerializedProperty showSequenceObjectsProp;
SerializedProperty variablesProp;
@ -21,7 +21,7 @@ namespace Fungus
{
stepTimeProp = serializedObject.FindProperty("stepTime");
startSequenceProp = serializedObject.FindProperty("startSequence");
startAutomaticallyProp = serializedObject.FindProperty("startAutomatically");
executeOnStartProp = serializedObject.FindProperty("executeOnStart");
colorCommandsProp = serializedObject.FindProperty("colorCommands");
showSequenceObjectsProp = serializedObject.FindProperty("showSequenceObjects");
variablesProp = serializedObject.FindProperty("variables");
@ -66,7 +66,7 @@ namespace Fungus
EditorGUILayout.LabelField(new GUIContent("Error: Please select a Start Sequence"), style);
}
EditorGUILayout.PropertyField(startAutomaticallyProp, new GUIContent("Start Automatically", "Start this Fungus Script when the scene starts."));
EditorGUILayout.PropertyField(executeOnStartProp, new GUIContent("Execute On Start", "Execute this Fungus Script when the scene starts."));
EditorGUILayout.PropertyField(colorCommandsProp, new GUIContent("Color Commands", "Display commands using colors in editor window."));

67
Assets/Fungus/FungusScript/Scripts/FungusScript.cs

@ -9,45 +9,88 @@ namespace Fungus
public class FungusScript : MonoBehaviour
{
/**
* Currently executing sequence.
*/
[System.NonSerialized]
public Sequence executingSequence;
/**
* Copy and paste buffer for command objects.
*/
[System.NonSerialized]
public Command copyCommand;
/**
* Scroll position of Fungus Script editor window (map view).
*/
[HideInInspector]
public Vector2 scriptScrollPos;
/**
* Scroll position of Fungus Script editor window (command view).
*/
[HideInInspector]
public Vector2 commandScrollPos;
/**
* Current width of command view
*/
[HideInInspector]
public float commandViewWidth = 300;
public float commandViewWidth = 350;
/**
* Execution speed when running the script in the editor. Pauses on each command to help visualise execution order.
*/
public float stepTime;
/**
* First sequence to execute when the Fungus Script executes.
*/
public Sequence startSequence;
/**
* Currently selected sequence in the Fungus Script editor.
*/
public Sequence selectedSequence;
/**
* Currently selected command in the Fungus Script editor.
*/
public Command selectedCommand;
public bool startAutomatically = true;
/**
* Execute this Fungus Script when the scene starts.
*/
public bool executeOnStart = true;
/**
* Use command color when displaying command list in Fungus Editor window.
*/
public bool colorCommands = true;
/**
* Show the sequence game objects in the Hierarchy view.
* This can be useful if you want to inspect the child gameobjects and components that make up the Fungus Script.
*/
public bool showSequenceObjects = false;
/**
* The list of variables that can be accessed by the Fungus Script.
*/
public List<Variable> variables = new List<Variable>();
void Start()
{
if (startAutomatically)
if (executeOnStart)
{
Execute();
}
}
/**
* Create a new sequence node which you can then add commands to.
*/
public Sequence CreateSequence(Vector2 position)
{
GameObject go = new GameObject("Sequence");
@ -59,6 +102,9 @@ namespace Fungus
return s;
}
/**
* Start running the Fungus Script by executing the startSequence.
*/
public void Execute()
{
if (startSequence == null)
@ -69,9 +115,14 @@ namespace Fungus
ExecuteSequence(startSequence);
}
/**
* Start running the Fungus Script by executing a specific child sequence.
*/
public void ExecuteSequence(Sequence sequence)
{
if (sequence == null)
// Sequence must be a child of the parent Fungus Script
if (sequence == null ||
sequence.transform.parent != transform)
{
return;
}
@ -81,6 +132,9 @@ namespace Fungus
sequence.ExecuteNextCommand();
}
/**
* Returns a new variable key that is guaranteed not to clash with any existing variable in the list.
*/
public string GetUniqueVariableKey(string originalKey, Variable ignoreVariable = null)
{
int suffix = 0;
@ -126,6 +180,9 @@ namespace Fungus
}
}
/**
* Set the sequence objects to be hidden or visible depending on the showSequenceObjects property.
*/
public void UpdateHideFlags()
{
Sequence[] sequences = GetComponentsInChildren<Sequence>();

Loading…
Cancel
Save