Browse Source

Updated UI to use flowchart style nodes

Icon displayed beside any currently executing sequences.
Icon displayed beside any currently executing command in selected
sequence.
Can now select & edit commands while game is running.
Sequences now resize correctly when name changes.
Added texture resources for sequence node types.
Sequences now have multiple shapes (Event, Process, Choice types)
Sequences can now have a description displayed underneath the node.
master
chrisgregan 10 years ago
parent
commit
48961142bb
  1. 33
      Assets/Fungus/FungusScript/Editor/CommandListAdaptor.cs
  2. 17
      Assets/Fungus/FungusScript/Editor/EventHandlerEditor.cs
  3. 70
      Assets/Fungus/FungusScript/Editor/FungusEditorResources.cs
  4. 7
      Assets/Fungus/FungusScript/Editor/FungusScriptEditor.cs
  5. 158
      Assets/Fungus/FungusScript/Editor/FungusScriptWindow.cs
  6. 18
      Assets/Fungus/FungusScript/Editor/SequenceEditor.cs
  7. 8
      Assets/Fungus/FungusScript/Editor/SequenceInspector.cs
  8. 26
      Assets/Fungus/FungusScript/Scripts/EventHandler.cs
  9. 28
      Assets/Fungus/FungusScript/Scripts/Sequence.cs
  10. 78
      Assets/FungusExamples/DragAndDrop/DragAndDrop.unity
  11. 10
      Assets/FungusExamples/JumpingPrax/Animations/GreenAlien.controller
  12. 0
      Assets/FungusExamples/JumpingPrax/Animations/GreenAlien.controller.meta
  13. 389
      Assets/FungusExamples/JumpingPrax/JumpingPrax.unity
  14. 0
      Assets/FungusExamples/JumpingPrax/Music/PraxMusic.mp3
  15. 0
      Assets/FungusExamples/JumpingPrax/Music/PraxMusic.mp3.meta
  16. 63
      Assets/FungusExamples/TheFacility/TheFacility.unity
  17. 15
      Assets/FungusExamples/iTween/iTween.unity

33
Assets/Fungus/FungusScript/Editor/CommandListAdaptor.cs

@ -194,9 +194,6 @@ namespace Fungus
}
}
bool highlight = (Application.isPlaying && command.IsExecuting()) ||
(!Application.isPlaying && commandIsSelected);
string commandName = commandInfoAttr.CommandName;
GUIStyle commandLabelStyle = new GUIStyle(GUI.skin.box);
@ -232,8 +229,7 @@ namespace Fungus
commandLabelRect.height += 5;
// Select command via left click
if (!Application.isPlaying &&
Event.current.type == EventType.MouseDown &&
if (Event.current.type == EventType.MouseDown &&
Event.current.button == 0 &&
position.Contains(Event.current.mousePosition))
{
@ -261,7 +257,7 @@ namespace Fungus
commandLabelColor = command.GetButtonColor();
}
if (highlight)
if (commandIsSelected)
{
commandLabelColor = Color.green;
}
@ -285,6 +281,15 @@ namespace Fungus
GUI.Label(commandLabelRect, commandName, commandLabelStyle);
}
if (command.IsExecuting())
{
Rect iconRect = new Rect(commandLabelRect);
iconRect.x += iconRect.width - commandLabelRect.width - 20;
iconRect.width = 20;
iconRect.height = 20;
GUI.Label(iconRect, FungusEditorResources.texPlaySmall, new GUIStyle());
}
Rect summaryRect = new Rect(commandLabelRect);
if (!isComment)
{
@ -293,6 +298,14 @@ namespace Fungus
summaryRect.width -= 5;
}
GUIStyle summaryStyle = new GUIStyle();
summaryStyle.fontSize = 10;
summaryStyle.padding.top += 5;
summaryStyle.richText = true;
summaryStyle.wordWrap = false;
summaryStyle.clipping = TextClipping.Clip;
GUI.Label(summaryRect, summary, summaryStyle);
if (error)
{
GUISkin editorSkin = EditorGUIUtility.GetBuiltinSkin(EditorSkin.Inspector);
@ -304,14 +317,6 @@ namespace Fungus
summaryRect.width -= 20;
}
GUIStyle summaryStyle = new GUIStyle();
summaryStyle.fontSize = 10;
summaryStyle.padding.top += 5;
summaryStyle.richText = true;
summaryStyle.wordWrap = false;
summaryStyle.clipping = TextClipping.Clip;
GUI.Label(summaryRect, summary, summaryStyle);
GUI.backgroundColor = Color.white;
}

17
Assets/Fungus/FungusScript/Editor/EventHandlerEditor.cs

@ -31,7 +31,7 @@ namespace Fungus
}
EventHandler t = target as EventHandler;
EventHandlerInfoAttribute info = GetEventHandlerInfo(t.GetType());
EventHandlerInfoAttribute info = EventHandler.GetEventHandlerInfo(t.GetType());
if (info != null &&
info.HelpText.Length > 0)
{
@ -40,21 +40,6 @@ namespace Fungus
serializedObject.ApplyModifiedProperties();
}
public static EventHandlerInfoAttribute GetEventHandlerInfo(System.Type eventHandlerType)
{
object[] attributes = eventHandlerType.GetCustomAttributes(typeof(EventHandlerInfoAttribute), false);
foreach (object obj in attributes)
{
EventHandlerInfoAttribute eventHandlerInfoAttr = obj as EventHandlerInfoAttribute;
if (eventHandlerInfoAttr != null)
{
return eventHandlerInfoAttr;
}
}
return null;
}
}
}

70
Assets/Fungus/FungusScript/Editor/FungusEditorResources.cs

File diff suppressed because one or more lines are too long

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

@ -78,10 +78,6 @@ namespace Fungus
VariableListAdaptor adaptor = new VariableListAdaptor(variablesProp, 0);
ReorderableListFlags flags = ReorderableListFlags.DisableContextMenu | ReorderableListFlags.HideAddButton;
if (Application.isPlaying)
{
flags |= ReorderableListFlags.HideRemoveButtons;
}
ReorderableListControl.DrawControlFromState(adaptor, null, flags);
listRect = GUILayoutUtility.GetLastRect();
@ -117,7 +113,8 @@ namespace Fungus
plusRect.width = plusWidth;
plusRect.height = plusHeight;
if (!Application.isPlaying && GUI.Button(plusRect, FungusEditorResources.texAddButton))
if (!Application.isPlaying &&
GUI.Button(plusRect, FungusEditorResources.texAddButton))
{
GenericMenu menu = new GenericMenu ();

158
Assets/Fungus/FungusScript/Editor/FungusScriptWindow.cs

@ -22,15 +22,35 @@ namespace Fungus
protected const float minZoomValue = 0.25f;
protected const float maxZoomValue = 1f;
protected GUIStyle nodeStyle = new GUIStyle();
protected static SequenceInspector sequenceInspector;
public const float playIconFadeTime = 0.5f;
[MenuItem("Window/Fungus Script")]
static void Init()
{
GetWindow(typeof(FungusScriptWindow), false, "Fungus Script");
}
protected void OnInspectorUpdate()
protected virtual void OnEnable()
{
// All sequence nodes use the same GUIStyle, but with a different background
nodeStyle.border.left = 20;
nodeStyle.border.right = 20;
nodeStyle.border.top = 5;
nodeStyle.border.bottom = 5;
nodeStyle.padding.left = 20;
nodeStyle.padding.right = 20;
nodeStyle.padding.top = 5;
nodeStyle.padding.bottom = 5;
nodeStyle.contentOffset = Vector2.zero;
nodeStyle.alignment = TextAnchor.MiddleCenter;
nodeStyle.wordWrap = true;
}
protected virtual void OnInspectorUpdate()
{
// Ensure the Sequence Inspector is always showing the currently selected sequence
FungusScript fungusScript = GetFungusScript();
@ -218,16 +238,20 @@ namespace Fungus
BeginWindows();
GUIStyle nodeStyle = new GUIStyle("flow node 3");
windowSequenceMap.Clear();
for (int i = 0; i < sequences.Length; ++i)
{
Sequence sequence = sequences[i];
float nodeWidth = nodeStyle.CalcSize(new GUIContent(sequence.sequenceName)).x + 10;
sequence.nodeRect.width = Mathf.Max(120, nodeWidth);
sequence.nodeRect.height = 30;
float nodeWidthA = nodeStyle.CalcSize(new GUIContent(sequence.sequenceName)).x + 10;
float nodeWidthB = 0f;
if (sequence.eventHandler != null)
{
nodeWidthB = nodeStyle.CalcSize(new GUIContent(sequence.eventHandler.GetSummary())).x + 10;
}
sequence.nodeRect.width = Mathf.Max(Mathf.Max(nodeWidthA, nodeWidthB), 120);
sequence.nodeRect.height = 40;
if (Event.current.button == 0)
{
@ -266,6 +290,43 @@ namespace Fungus
EndWindows();
// Draw play icons beside all executing sequences
if (Application.isPlaying)
{
foreach (Sequence s in sequences)
{
if (s.IsExecuting())
{
s.executingIconTimer = playIconFadeTime;
}
if (s.executingIconTimer > 0f)
{
s.executingIconTimer = Mathf.Max(s.executingIconTimer - Time.deltaTime, 0f);
Rect rect = new Rect(s.nodeRect);
rect.x += fungusScript.scrollPos.x - 37;
rect.y += fungusScript.scrollPos.y + 3;
rect.width = 34;
rect.height = 34;
if (!s.IsExecuting() && s.executingIconTimer < playIconFadeTime)
{
float alpha = s.executingIconTimer / playIconFadeTime;
GUI.color = new Color(1f, 1f, 1f, alpha);
}
if (GUI.Button(rect, FungusEditorResources.texPlayBig as Texture, new GUIStyle()))
{
SelectSequence(fungusScript, s);
}
GUI.color = Color.white;
}
}
}
// Right click to drag view
if (Event.current.button == 1 && Event.current.type == EventType.MouseDrag)
{
@ -321,6 +382,18 @@ namespace Fungus
}
}
protected virtual void SelectSequence(FungusScript fungusScript, Sequence sequence)
{
// Select the sequence and also select currently executing command
ShowSequenceInspector(fungusScript);
fungusScript.selectedSequence = sequence;
fungusScript.ClearSelectedCommands();
if (sequence.activeCommand != null)
{
fungusScript.AddSelectedCommand(sequence.activeCommand);
}
}
public static Sequence CreateSequence(FungusScript fungusScript, Vector2 position)
{
Sequence newSequence = fungusScript.CreateSequence(position);
@ -364,51 +437,59 @@ namespace Fungus
{
Undo.RecordObject(fungusScript, "Select");
ShowSequenceInspector(fungusScript);
fungusScript.selectedSequence = sequence;
SelectSequence(fungusScript, sequence);
GUIUtility.keyboardControl = 0; // Fix for textarea not refeshing (change focus)
}
}
GUIStyle nodeStyle = null;
if (fungusScript.selectedSequence == sequence)
bool selected = (fungusScript.selectedSequence == sequence);
GUIStyle nodeStyleCopy = new GUIStyle(nodeStyle);
if (sequence.eventHandler != null)
{
// Green node
nodeStyle = new GUIStyle("flow node 3");
nodeStyleCopy.normal.background = selected ? FungusEditorResources.texEventNodeOn : FungusEditorResources.texEventNodeOff;
}
else if (sequence.IsExecuting())
else
{
// Count the number of unique connections (excluding self references)
List<Sequence> uniqueList = new List<Sequence>();
List<Sequence> connectedSequences = sequence.GetConnectedSequences();
foreach (Sequence connectedSequence in connectedSequences)
{
if (connectedSequence == sequence ||
uniqueList.Contains(connectedSequence))
{
// Blue node
nodeStyle = new GUIStyle("flow node 2");
continue;
}
uniqueList.Add(connectedSequence);
}
if (uniqueList.Count > 1)
{
nodeStyleCopy.normal.background = selected ? FungusEditorResources.texChoiceNodeOn : FungusEditorResources.texChoiceNodeOff;
}
else
{
// Yellow node
nodeStyle = new GUIStyle("flow node 4");
nodeStyleCopy.normal.background = selected ? FungusEditorResources.texProcessNodeOn : FungusEditorResources.texProcessNodeOff;
}
}
nodeStyle.wordWrap = true;
// Show event handler name, or a custom summary if one is provided
string nodeName = "";
if (sequence.eventHandler != null)
{
EventHandlerInfoAttribute info = EventHandlerEditor.GetEventHandlerInfo(sequence.eventHandler.GetType());
if (info != null)
{
string handlerSummary = sequence.eventHandler.GetSummary();
if (handlerSummary == "")
{
handlerSummary = info.EventHandlerName;
}
nodeName = "(" + handlerSummary + ")\n";
nodeStyle.padding.top = 23; // Adjust label to fit on two lines
}
}
nodeName += sequence.sequenceName;
GUILayout.Box(nodeName, nodeStyle, GUILayout.Width(sequence.nodeRect.width), GUILayout.Height(sequence.nodeRect.height));
GUILayout.Box(nodeName, nodeStyleCopy, GUILayout.Width(sequence.nodeRect.width), GUILayout.Height(sequence.nodeRect.height));
if (sequence.description.Length > 0)
{
GUILayout.Label(sequence.description, EditorStyles.whiteLabel);
}
if (Event.current.type == EventType.ContextClick)
{
@ -463,6 +544,7 @@ namespace Fungus
foreach (Sequence sequenceB in connectedSequences)
{
if (sequenceB == null ||
sequence == sequenceB ||
sequenceB.GetFungusScript() != fungusScript)
{
continue;
@ -484,17 +566,17 @@ namespace Fungus
protected virtual void DrawRectConnection(Rect rectA, Rect rectB, bool highlight)
{
Vector2[] pointsA = new Vector2[] {
new Vector2(rectA.xMin, rectA.center.y),
new Vector2(rectA.xMin + rectA.width / 2, rectA.yMin),
new Vector2(rectA.xMin + rectA.width / 2, rectA.yMax),
new Vector2(rectA.xMax, rectA.center.y)
new Vector2(rectA.xMin + 5, rectA.center.y),
new Vector2(rectA.xMin + rectA.width / 2, rectA.yMin + 2),
new Vector2(rectA.xMin + rectA.width / 2, rectA.yMax - 2),
new Vector2(rectA.xMax - 5, rectA.center.y)
};
Vector2[] pointsB = new Vector2[] {
new Vector2(rectB.xMin, rectB.center.y),
new Vector2(rectB.xMin + rectB.width / 2, rectB.yMin),
new Vector2(rectB.xMin + rectB.width / 2, rectB.yMax),
new Vector2(rectB.xMax, rectB.center.y)
new Vector2(rectB.xMin + 5, rectB.center.y),
new Vector2(rectB.xMin + rectB.width / 2, rectB.yMin + 2),
new Vector2(rectB.xMin + rectB.width / 2, rectB.yMax - 2),
new Vector2(rectB.xMax - 5, rectB.center.y)
};
Vector2 pointA = Vector2.zero;

18
Assets/Fungus/FungusScript/Editor/SequenceEditor.cs

@ -31,6 +31,9 @@ namespace Fungus
Sequence sequence = target as Sequence;
SerializedProperty descriptionProp = serializedObject.FindProperty("description");
EditorGUILayout.PropertyField(descriptionProp);
SerializedProperty runSlowInEditorProp = serializedObject.FindProperty("runSlowInEditor");
EditorGUILayout.PropertyField(runSlowInEditorProp);
@ -54,16 +57,12 @@ namespace Fungus
ReorderableListControl.DrawControlFromState(adaptor, null, flags);
if (!Application.isPlaying)
{
if (Event.current.type == EventType.ContextClick)
{
ShowContextMenu();
}
}
if (!Application.isPlaying &&
sequence == fungusScript.selectedSequence)
if (sequence == fungusScript.selectedSequence)
{
// Show add command button
{
@ -110,7 +109,7 @@ namespace Fungus
string currentHandlerName = "<None>";
if (currentType != null)
{
EventHandlerInfoAttribute info = EventHandlerEditor.GetEventHandlerInfo(currentType);
EventHandlerInfoAttribute info = EventHandler.GetEventHandlerInfo(currentType);
currentHandlerName = info.EventHandlerName;
}
@ -128,7 +127,7 @@ namespace Fungus
// Add event handlers with no category first
foreach (System.Type type in eventHandlerTypes)
{
EventHandlerInfoAttribute info = EventHandlerEditor.GetEventHandlerInfo(type);
EventHandlerInfoAttribute info = EventHandler.GetEventHandlerInfo(type);
if (info.Category.Length == 0)
{
SetEventHandlerOperation operation = new SetEventHandlerOperation();
@ -142,7 +141,7 @@ namespace Fungus
// Add event handlers with a category afterwards
foreach (System.Type type in eventHandlerTypes)
{
EventHandlerInfoAttribute info = EventHandlerEditor.GetEventHandlerInfo(type);
EventHandlerInfoAttribute info = EventHandler.GetEventHandlerInfo(type);
if (info.Category.Length > 0)
{
SetEventHandlerOperation operation = new SetEventHandlerOperation();
@ -376,6 +375,7 @@ namespace Fungus
Command newCommand = Undo.AddComponent(sequence.gameObject, commandOperation.commandType) as Command;
sequence.GetFungusScript().AddSelectedCommand(newCommand);
newCommand.parentSequence = sequence;
// Let command know it has just been added to the sequence
newCommand.OnCommandAdded(sequence);
@ -571,6 +571,8 @@ namespace Fungus
{
System.Type type = command.GetType();
Command newCommand = Undo.AddComponent(fungusScript.selectedSequence.gameObject, type) as Command;
newCommand.parentSequence = fungusScript.selectedSequence;
System.Reflection.FieldInfo[] fields = type.GetFields();
foreach (System.Reflection.FieldInfo field in fields)
{

8
Assets/Fungus/FungusScript/Editor/SequenceInspector.cs

@ -36,13 +36,7 @@ namespace Fungus
DestroyImmediate(sequenceEditor);
Command inspectCommand = null;
if (Application.isPlaying &&
sequence.activeCommand != null)
{
inspectCommand = sequence.activeCommand;
}
else if (fungusScript.selectedCommands.Count == 1)
if (fungusScript.selectedCommands.Count == 1)
{
inspectCommand = fungusScript.selectedCommands[0];
}

26
Assets/Fungus/FungusScript/Scripts/EventHandler.cs

@ -26,7 +26,7 @@ namespace Fungus
* To create a custom Event Handler, simply subclass EventHandler and call the ExecuteSequence() method
* when the event occurs.
* Add an EventHandlerInfo attibute and your new EventHandler class will automatically appear in the
* 'Start Event' dropdown menu when a sequence is selected.
* 'Execute On Event' dropdown menu when a sequence is selected.
*/
[RequireComponent(typeof(Sequence))]
[RequireComponent(typeof(FungusScript))]
@ -35,6 +35,24 @@ namespace Fungus
[HideInInspector]
public Sequence parentSequence;
/**
* Returns the class attribute info for an event handler class.
*/
public static EventHandlerInfoAttribute GetEventHandlerInfo(System.Type eventHandlerType)
{
object[] attributes = eventHandlerType.GetCustomAttributes(typeof(EventHandlerInfoAttribute), false);
foreach (object obj in attributes)
{
EventHandlerInfoAttribute eventHandlerInfoAttr = obj as EventHandlerInfoAttribute;
if (eventHandlerInfoAttr != null)
{
return eventHandlerInfoAttr;
}
}
return null;
}
/**
* The Event Handler should call this method when the event is detected.
*/
@ -55,8 +73,14 @@ namespace Fungus
* the EventHandlerInfo attribute instead.
*/
public virtual string GetSummary()
{
EventHandlerInfoAttribute info = GetEventHandlerInfo(this.GetType());
if (info == null)
{
return "";
}
return info.EventHandlerName;
}
}
}

28
Assets/Fungus/FungusScript/Scripts/Sequence.cs

@ -5,13 +5,16 @@ using System.Collections.Generic;
namespace Fungus
{
[ExecuteInEditMode]
[RequireComponent(typeof(FungusScript))]
public class Sequence : Node
{
public string sequenceName = "New Sequence";
[TextArea(2, 5)]
[Tooltip("Description text to display under the sequence node")]
public string description = "";
[Tooltip("Slow down execution in the editor to make it easier to visualise program flow")]
public bool runSlowInEditor = true;
@ -21,6 +24,10 @@ namespace Fungus
[System.NonSerialized]
public Command activeCommand;
[HideInInspector]
[System.NonSerialized]
public float executingIconTimer;
[HideInInspector]
public List<Command> commandList = new List<Command>();
@ -87,8 +94,11 @@ namespace Fungus
executionCount++;
}
FungusScript fungusScript = GetFungusScript();
activeCommand = null;
Command nextCommand = null;
executingIconTimer = 0.5f;
bool executeNext = (currentCommand == null);
foreach (Command command in commandList)
@ -113,10 +123,16 @@ namespace Fungus
}
else
{
FungusScript fungusScript = GetFungusScript();
if (fungusScript.gameObject.activeInHierarchy)
{
// Auto select a command in some situations
if ((fungusScript.selectedCommands.Count == 0 && currentCommand == null) ||
(fungusScript.selectedCommands.Count == 1 && fungusScript.selectedCommands[0] == currentCommand))
{
fungusScript.ClearSelectedCommands();
fungusScript.AddSelectedCommand(nextCommand);
}
if (!runSlowInEditor)
{
activeCommand = nextCommand;
@ -131,11 +147,11 @@ namespace Fungus
}
IEnumerator ExecuteAfterDelay(Command command, float delay)
IEnumerator ExecuteAfterDelay(Command nextCommand, float delay)
{
activeCommand = command;
activeCommand = nextCommand;
yield return new WaitForSeconds(delay);
command.Execute();
nextCommand.Execute();
}
public virtual void Stop()

78
Assets/FungusExamples/DragAndDrop/DragAndDrop.unity

@ -734,10 +734,11 @@ MonoBehaviour:
x: -591
y: -391
width: 1887
height: 1008
selectedSequence: {fileID: 0}
height: 1017
selectedSequence: {fileID: 2019116669}
selectedCommands: []
variables: []
description:
runSlowDuration: .25
colorCommands: 1
hideComponents: 1
@ -754,11 +755,12 @@ MonoBehaviour:
m_EditorClassIdentifier:
nodeRect:
serializedVersion: 2
x: -31
y: 99
width: 120
height: 30
x: -32
y: 100
width: 137
height: 40
sequenceName: Drag Completed
description:
runSlowInEditor: 0
eventHandler: {fileID: 2019116681}
commandList:
@ -795,9 +797,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
targetObject:
targetType: 1
otherGameObject: {fileID: 606394391}
targetObject: {fileID: 606394391}
tweenName:
duration: 1
easeType: 2
@ -872,9 +872,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
targetObject:
targetType: 1
otherGameObject: {fileID: 1081858233}
targetObject: {fileID: 1081858233}
tweenName:
duration: .100000001
easeType: 2
@ -894,9 +892,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
targetObject:
targetType: 1
otherGameObject: {fileID: 1081858233}
targetObject: {fileID: 1081858233}
tweenName:
duration: .100000001
easeType: 2
@ -945,10 +941,11 @@ MonoBehaviour:
nodeRect:
serializedVersion: 2
x: -35
y: 182
y: 186
width: 120
height: 30
height: 40
sequenceName: Drag Exited
description:
runSlowInEditor: 0
eventHandler: {fileID: 2019116684}
commandList:
@ -997,10 +994,11 @@ MonoBehaviour:
nodeRect:
serializedVersion: 2
x: -33
y: 141
y: 142
width: 120
height: 30
height: 40
sequenceName: Drag Entered
description:
runSlowInEditor: 0
eventHandler: {fileID: 2019116686}
commandList:
@ -1033,11 +1031,12 @@ MonoBehaviour:
m_EditorClassIdentifier:
nodeRect:
serializedVersion: 2
x: -32
y: 57
width: 120
height: 30
x: -33
y: 58
width: 131
height: 40
sequenceName: Drag Cancelled
description:
runSlowInEditor: 0
eventHandler: {fileID: 2019116673}
commandList:
@ -1071,10 +1070,11 @@ MonoBehaviour:
nodeRect:
serializedVersion: 2
x: -33
y: 14
y: 11
width: 120
height: 30
height: 40
sequenceName: Drag Start
description:
runSlowInEditor: 0
eventHandler: {fileID: 2019116678}
commandList:
@ -1093,9 +1093,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
targetObject:
targetType: 1
otherGameObject: {fileID: 1637100245}
targetObject: {fileID: 1637100245}
tweenName:
duration: 1
easeType: 2
@ -1129,9 +1127,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
targetObject:
targetType: 1
otherGameObject: {fileID: 606394391}
targetObject: {fileID: 606394391}
tweenName:
duration: 1
easeType: 2
@ -1152,9 +1148,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
targetObject:
targetType: 1
otherGameObject: {fileID: 606394391}
targetObject: {fileID: 606394391}
tweenName:
duration: 1
easeType: 2
@ -1188,11 +1182,12 @@ MonoBehaviour:
m_EditorClassIdentifier:
nodeRect:
serializedVersion: 2
x: 184
x: 185
y: 14
width: 120
height: 30
width: 137
height: 40
sequenceName: Object Clicked 1
description:
runSlowInEditor: 0
eventHandler: {fileID: 2019116692}
commandList:
@ -1212,9 +1207,10 @@ MonoBehaviour:
serializedVersion: 2
x: 185
y: 56
width: 120
height: 30
width: 137
height: 40
sequenceName: Object Clicked 2
description:
runSlowInEditor: 0
eventHandler: {fileID: 2019116696}
commandList:
@ -1232,9 +1228,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
targetObject:
targetType: 1
otherGameObject: {fileID: 591590528}
targetObject: {fileID: 591590528}
tweenName:
duration: 1
easeType: 2

10
Assets/FungusExamples/JumpingPrax/Animations/1000px-Smiley_green_alien_nerdy.controller → Assets/FungusExamples/JumpingPrax/Animations/GreenAlien.controller

@ -5,7 +5,7 @@ AnimatorController:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: 1000px-Smiley_green_alien_nerdy
m_Name: GreenAlien
serializedVersion: 2
m_AnimatorParameters:
- m_Name: AmIJumping
@ -110,14 +110,14 @@ StateMachine:
m_ChildStateMachine: []
m_ChildStateMachinePosition: []
m_OrderedTransitions:
data:
first: {fileID: 110200000}
second:
- {fileID: 110188867}
data:
first: {fileID: 110249473}
second:
- {fileID: 110100000}
data:
first: {fileID: 110200000}
second:
- {fileID: 110188867}
m_MotionSetCount: 1
m_AnyStatePosition: {x: 50, y: 20, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}

0
Assets/FungusExamples/JumpingPrax/Animations/1000px-Smiley_green_alien_nerdy.controller.meta → Assets/FungusExamples/JumpingPrax/Animations/GreenAlien.controller.meta

389
Assets/FungusExamples/JumpingPrax/JumpingPrax.unity

@ -221,33 +221,18 @@ GameObject:
m_Component:
- 4: {fileID: 16019624}
- 114: {fileID: 16019623}
- 114: {fileID: 16019625}
- 114: {fileID: 16019626}
- 114: {fileID: 16019650}
- 114: {fileID: 16019649}
- 114: {fileID: 16019648}
- 114: {fileID: 16019647}
- 114: {fileID: 16019646}
- 114: {fileID: 16019645}
- 114: {fileID: 16019644}
- 114: {fileID: 16019643}
- 114: {fileID: 16019642}
- 114: {fileID: 16019635}
- 114: {fileID: 16019631}
- 114: {fileID: 16019630}
- 114: {fileID: 16019629}
- 114: {fileID: 16019628}
- 114: {fileID: 16019627}
- 114: {fileID: 16019636}
- 114: {fileID: 16019641}
- 114: {fileID: 16019640}
- 114: {fileID: 16019639}
- 114: {fileID: 16019638}
- 114: {fileID: 16019637}
- 114: {fileID: 16019632}
- 114: {fileID: 16019634}
- 114: {fileID: 16019633}
- 114: {fileID: 16019651}
- 114: {fileID: 16019627}
- 114: {fileID: 16019625}
m_Layer: 0
m_Name: FungusScript
m_TagString: Untagged
@ -276,11 +261,9 @@ MonoBehaviour:
y: -642
width: 2140
height: 1450
selectedSequence: {fileID: 16019632}
selectedCommands:
- {fileID: 16019633}
variables:
- {fileID: 16019625}
selectedSequence: {fileID: 16019626}
selectedCommands: []
variables: []
description:
runSlowDuration: .25
colorCommands: 1
@ -305,11 +288,12 @@ MonoBehaviour:
m_GameObject: {fileID: 16019622}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5d02d9822eec54c98afe95bb497211b3, type: 3}
m_Script: {fileID: 11500000, guid: 050fb9e6e72f442b3b883da8a965bdeb, type: 3}
m_Name:
m_EditorClassIdentifier:
scope: 0
key: Jumping
errorMessage:
indentLevel: 0
targetSequence: {fileID: 16019626}
--- !u!114 &16019626
MonoBehaviour:
m_ObjectHideFlags: 2
@ -323,29 +307,25 @@ MonoBehaviour:
m_EditorClassIdentifier:
nodeRect:
serializedVersion: 2
x: -212
y: -241
width: 120
height: 30
x: -251
y: -190
width: 121
height: 40
sequenceName: Start
description:
runSlowInEditor: 1
eventHandler: {fileID: 16019651}
commandList:
- {fileID: 16019650}
- {fileID: 16019649}
- {fileID: 16019648}
- {fileID: 16019647}
- {fileID: 16019646}
- {fileID: 16019645}
- {fileID: 16019644}
- {fileID: 16019643}
- {fileID: 16019642}
- {fileID: 16019635}
- {fileID: 16019631}
- {fileID: 16019630}
- {fileID: 16019629}
- {fileID: 16019628}
- {fileID: 16019627}
- {fileID: 16019625}
--- !u!114 &16019627
MonoBehaviour:
m_ObjectHideFlags: 2
@ -359,244 +339,12 @@ MonoBehaviour:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
storyText: You took too long!
character: {fileID: 0}
sayDialog: {fileID: 0}
voiceOverClip: {fileID: 0}
showOnce: 0
--- !u!114 &16019628
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 16019622}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ee63e642958494f1ebed8116ae4b1103, type: 3}
m_Name:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
animator: {fileID: 2120294220}
parameterName: AmIJumping
value:
booleanRef: {fileID: 0}
booleanVal: 0
--- !u!114 &16019629
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 16019622}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fb77d0ce495044f6e9feb91b31798e8c, type: 3}
m_Name:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
variable: {fileID: 16019625}
setOperator: 0
booleanData:
booleanRef: {fileID: 0}
booleanVal: 0
integerData:
integerRef: {fileID: 0}
integerVal: 0
floatData:
floatRef: {fileID: 0}
floatVal: 0
stringData:
stringRef: {fileID: 0}
stringVal:
--- !u!114 &16019630
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 16019622}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d1dc785fd3508440db335f3b5654c96c, type: 3}
m_Name:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
chooseText:
character: {fileID: 1844806518}
chooseDialog: {fileID: 0}
voiceOverClip: {fileID: 0}
timeoutDuration: 5
--- !u!114 &16019631
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 16019622}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9a61ea20fbb744ca2a363c33ad65cd89, type: 3}
m_Name:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
variable: {fileID: 0}
setOperator: 0
booleanData:
booleanRef: {fileID: 0}
booleanVal: 0
integerData:
integerRef: {fileID: 0}
integerVal: 0
floatData:
floatRef: {fileID: 0}
floatVal: 0
stringData:
stringRef: {fileID: 0}
stringVal:
optionText: Go back to the start
targetSequence: {fileID: 16019632}
hideOnSelected: 0
--- !u!114 &16019632
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 16019622}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3d3d73aef2cfc4f51abf34ac00241f60, type: 3}
m_Name:
m_EditorClassIdentifier:
nodeRect:
serializedVersion: 2
x: -60
y: -172
width: 120
height: 30
sequenceName: BackToTheStart
runSlowInEditor: 1
eventHandler: {fileID: 0}
commandList:
- {fileID: 16019634}
- {fileID: 16019633}
--- !u!114 &16019633
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 16019622}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 050fb9e6e72f442b3b883da8a965bdeb, type: 3}
m_Name:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
targetSequence: {fileID: 16019626}
--- !u!114 &16019634
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 16019622}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ec422cd568a9c4a31ad7c36d0572b9da, type: 3}
m_Name:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
storyText: OK, back to the start!
storyText: That's me done jumping for now
character: {fileID: 1844806518}
sayDialog: {fileID: 0}
voiceOverClip: {fileID: 0}
showOnce: 0
--- !u!114 &16019635
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 16019622}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9a61ea20fbb744ca2a363c33ad65cd89, type: 3}
m_Name:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
variable: {fileID: 0}
setOperator: 0
booleanData:
booleanRef: {fileID: 0}
booleanVal: 0
integerData:
integerRef: {fileID: 0}
integerVal: 0
floatData:
floatRef: {fileID: 0}
floatVal: 0
stringData:
stringRef: {fileID: 0}
stringVal:
optionText: Stop jumping
targetSequence: {fileID: 16019636}
hideOnSelected: 0
--- !u!114 &16019636
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 16019622}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3d3d73aef2cfc4f51abf34ac00241f60, type: 3}
m_Name:
m_EditorClassIdentifier:
nodeRect:
serializedVersion: 2
x: -316
y: -172
width: 120
height: 30
sequenceName: StopJumping
runSlowInEditor: 1
eventHandler: {fileID: 0}
commandList:
- {fileID: 16019641}
- {fileID: 16019640}
- {fileID: 16019639}
- {fileID: 16019638}
- {fileID: 16019637}
--- !u!114 &16019637
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 16019622}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 050fb9e6e72f442b3b883da8a965bdeb, type: 3}
m_Name:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
targetSequence: {fileID: 16019632}
--- !u!114 &16019638
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 16019622}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3315ad2ebb85443909a1203d56d9344e, type: 3}
m_Name:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
duration: 2
--- !u!114 &16019639
--- !u!114 &16019628
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
@ -614,51 +362,6 @@ MonoBehaviour:
value:
booleanRef: {fileID: 0}
booleanVal: 0
--- !u!114 &16019640
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 16019622}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fb77d0ce495044f6e9feb91b31798e8c, type: 3}
m_Name:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
variable: {fileID: 16019625}
setOperator: 0
booleanData:
booleanRef: {fileID: 0}
booleanVal: 0
integerData:
integerRef: {fileID: 0}
integerVal: 0
floatData:
floatRef: {fileID: 0}
floatVal: 0
stringData:
stringRef: {fileID: 0}
stringVal:
--- !u!114 &16019641
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 16019622}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ec422cd568a9c4a31ad7c36d0572b9da, type: 3}
m_Name:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
storyText: But I don't wanna stop!
character: {fileID: 1844806518}
sayDialog: {fileID: 0}
voiceOverClip: {fileID: 0}
showOnce: 0
--- !u!114 &16019642
MonoBehaviour:
m_ObjectHideFlags: 2
@ -695,33 +398,6 @@ MonoBehaviour:
value:
booleanRef: {fileID: 0}
booleanVal: 1
--- !u!114 &16019644
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 16019622}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fb77d0ce495044f6e9feb91b31798e8c, type: 3}
m_Name:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
variable: {fileID: 16019625}
setOperator: 0
booleanData:
booleanRef: {fileID: 0}
booleanVal: 0
integerData:
integerRef: {fileID: 0}
integerVal: 0
floatData:
floatRef: {fileID: 0}
floatVal: 0
stringData:
stringRef: {fileID: 0}
stringVal:
--- !u!114 &16019645
MonoBehaviour:
m_ObjectHideFlags: 2
@ -774,33 +450,6 @@ MonoBehaviour:
sayDialog: {fileID: 0}
voiceOverClip: {fileID: 0}
showOnce: 0
--- !u!114 &16019648
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 16019622}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fb77d0ce495044f6e9feb91b31798e8c, type: 3}
m_Name:
m_EditorClassIdentifier:
errorMessage:
indentLevel: 0
variable: {fileID: 16019625}
setOperator: 0
booleanData:
booleanRef: {fileID: 0}
booleanVal: 1
integerData:
integerRef: {fileID: 0}
integerVal: 0
floatData:
floatRef: {fileID: 0}
floatVal: 0
stringData:
stringRef: {fileID: 0}
stringVal:
--- !u!114 &16019649
MonoBehaviour:
m_ObjectHideFlags: 2
@ -836,7 +485,7 @@ MonoBehaviour:
fadeTexture: {fileID: 0}
--- !u!114 &16019651
MonoBehaviour:
m_ObjectHideFlags: 0
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 16019622}
@ -3777,7 +3426,7 @@ GameObject:
- 212: {fileID: 2120294218}
- 95: {fileID: 2120294220}
m_Layer: 0
m_Name: 1000px-Smiley_green_alien_nerdy.svg
m_Name: GreenAlien
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0

0
Assets/FungusExamples/JumpingPrax/Music/DOt_-_05_-_IMF.mp3 → Assets/FungusExamples/JumpingPrax/Music/PraxMusic.mp3

0
Assets/FungusExamples/JumpingPrax/Music/DOt_-_05_-_IMF.mp3.meta → Assets/FungusExamples/JumpingPrax/Music/PraxMusic.mp3.meta

63
Assets/FungusExamples/TheFacility/TheFacility.unity

@ -1233,7 +1233,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3}
m_Name:
m_EditorClassIdentifier:
scrollPos: {x: -440.05423, y: 55.7798004}
scrollPos: {x: -373.054199, y: 73.7798004}
variablesScrollPos: {x: 0, y: 0}
variablesExpanded: 1
zoom: 1
@ -1243,7 +1243,7 @@ MonoBehaviour:
y: -610.734985
width: 3261.20312
height: 2227.35059
selectedSequence: {fileID: 771014104}
selectedSequence: {fileID: 0}
selectedCommands: []
variables:
- {fileID: 771014102}
@ -1323,9 +1323,10 @@ MonoBehaviour:
serializedVersion: 2
x: 560.814453
y: 17.053772
width: 120
height: 30
width: 121
height: 40
sequenceName: Start
description:
runSlowInEditor: 1
eventHandler: {fileID: 771014227}
commandList:
@ -1368,9 +1369,10 @@ MonoBehaviour:
serializedVersion: 2
x: 733.351135
y: 17.4427872
width: 120
height: 30
sequenceName: StandingThere
width: 128
height: 40
sequenceName: Standing there
description:
runSlowInEditor: 1
eventHandler: {fileID: 0}
commandList:
@ -1669,11 +1671,12 @@ MonoBehaviour:
m_EditorClassIdentifier:
nodeRect:
serializedVersion: 2
x: 917.223145
y: 16.7090759
width: 120
height: 30
sequenceName: InspectDeskFirst
x: 916.223145
y: 15.7090759
width: 142
height: 40
sequenceName: Inspect desk first
description:
runSlowInEditor: 1
eventHandler: {fileID: 0}
commandList:
@ -1737,8 +1740,9 @@ MonoBehaviour:
x: 1108.35596
y: 16.5333862
width: 120
height: 30
sequenceName: TryVoice
height: 40
sequenceName: Try voice
description:
runSlowInEditor: 1
eventHandler: {fileID: 0}
commandList:
@ -2184,11 +2188,12 @@ MonoBehaviour:
m_EditorClassIdentifier:
nodeRect:
serializedVersion: 2
x: 1108.09448
y: 100.214813
x: 1106.09448
y: 101.214813
width: 120
height: 30
sequenceName: LightsOnVoice
height: 40
sequenceName: Lights on
description:
runSlowInEditor: 1
eventHandler: {fileID: 0}
commandList:
@ -2247,8 +2252,9 @@ MonoBehaviour:
x: 919.288086
y: 101.344482
width: 120
height: 30
sequenceName: DoorTalk
height: 40
sequenceName: Door talk
description:
runSlowInEditor: 1
eventHandler: {fileID: 0}
commandList:
@ -2320,11 +2326,12 @@ MonoBehaviour:
m_EditorClassIdentifier:
nodeRect:
serializedVersion: 2
x: 734.837646
x: 730.837646
y: 101.663513
width: 120
height: 30
sequenceName: How
width: 135
height: 40
sequenceName: How you doing?
description:
runSlowInEditor: 1
eventHandler: {fileID: 0}
commandList:
@ -2379,11 +2386,12 @@ MonoBehaviour:
m_EditorClassIdentifier:
nodeRect:
serializedVersion: 2
x: 736.76062
x: 737.76062
y: 184.838104
width: 120
height: 30
height: 40
sequenceName: Open A147
description:
runSlowInEditor: 1
eventHandler: {fileID: 0}
commandList:
@ -4348,8 +4356,9 @@ MonoBehaviour:
x: 561.306458
y: 101.366745
width: 120
height: 30
height: 40
sequenceName: FREEDOM!
description:
runSlowInEditor: 1
eventHandler: {fileID: 0}
commandList:

15
Assets/FungusExamples/iTween/iTween.unity

@ -230,6 +230,7 @@ MonoBehaviour:
width: 120
height: 30
sequenceName: Do Tween
description:
runSlowInEditor: 1
eventHandler: {fileID: 470391088}
commandList:
@ -418,11 +419,12 @@ MonoBehaviour:
m_EditorClassIdentifier:
nodeRect:
serializedVersion: 2
x: 161
y: 214
width: 120
height: 30
x: 164
y: 193
width: 121
height: 40
sequenceName: Test iTween
description:
runSlowInEditor: 1
eventHandler: {fileID: 868139016}
commandList:
@ -469,9 +471,8 @@ MonoBehaviour:
y: -350
width: 1213
height: 1284
selectedSequence: {fileID: 868138992}
selectedCommands:
- {fileID: 868139014}
selectedSequence: {fileID: 0}
selectedCommands: []
variables: []
description:
runSlowDuration: .25

Loading…
Cancel
Save