diff --git a/Assets/Fungus/Scripts/Components/Writer.cs b/Assets/Fungus/Scripts/Components/Writer.cs
index a23d8b13..93fd0a95 100644
--- a/Assets/Fungus/Scripts/Components/Writer.cs
+++ b/Assets/Fungus/Scripts/Components/Writer.cs
@@ -234,6 +234,7 @@ namespace Fungus
foreach (TextTagToken token in tokens)
{
+ WriterSignals.DoTextTagToken(this, token);
switch (token.type)
{
diff --git a/Assets/Fungus/Scripts/Signals.meta b/Assets/Fungus/Scripts/Signals.meta
new file mode 100644
index 00000000..a6a5b714
--- /dev/null
+++ b/Assets/Fungus/Scripts/Signals.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: c5af9b1dcfc3a4963add98929d9386c0
+folderAsset: yes
+timeCreated: 1474968754
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Fungus/Scripts/Signals/WriterSignals.cs b/Assets/Fungus/Scripts/Signals/WriterSignals.cs
new file mode 100644
index 00000000..bedff3dd
--- /dev/null
+++ b/Assets/Fungus/Scripts/Signals/WriterSignals.cs
@@ -0,0 +1,23 @@
+using UnityEngine;
+using System.Collections;
+using Fungus.Utils;
+
+namespace Fungus
+{
+ ///
+ /// Writer event signalling system.
+ ///
+ public static class WriterSignals
+ {
+ #region Public members
+
+ ///
+ /// TextTagToken signal. Sent for each unique token when writing text.
+ ///
+ public delegate void TextTagTokenHandler(Writer writer, TextTagToken token);
+ public static event TextTagTokenHandler OnTextTagToken;
+ public static void DoTextTagToken(Writer writer, TextTagToken token){ if(OnTextTagToken != null) OnTextTagToken(writer, token); }
+
+ #endregion
+ }
+}
diff --git a/Assets/Fungus/Scripts/Signals/WriterSignals.cs.meta b/Assets/Fungus/Scripts/Signals/WriterSignals.cs.meta
new file mode 100644
index 00000000..a4058cc1
--- /dev/null
+++ b/Assets/Fungus/Scripts/Signals/WriterSignals.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: d8d3d56bc3bd9488d8e6e30b9bf99fc4
+timeCreated: 1474970135
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Tests/Commands/FailTest.cs b/Assets/Tests/Commands/FailTest.cs
index e6408041..ccf546e7 100644
--- a/Assets/Tests/Commands/FailTest.cs
+++ b/Assets/Tests/Commands/FailTest.cs
@@ -6,10 +6,10 @@ using System.Collections;
namespace Fungus
{
-
[CommandInfo("Tests",
"Fail",
"Fails the current integration test")]
+ [AddComponentMenu("")]
public class FailTest : Command
{
public string failMessage;
@@ -21,5 +21,4 @@ namespace Fungus
Continue();
}
}
-
}
\ No newline at end of file
diff --git a/Assets/Tests/Commands/PassTest.cs b/Assets/Tests/Commands/PassTest.cs
index 394ceb3c..b84e6cc3 100644
--- a/Assets/Tests/Commands/PassTest.cs
+++ b/Assets/Tests/Commands/PassTest.cs
@@ -6,10 +6,10 @@ using System.Collections;
namespace Fungus
{
-
[CommandInfo("Tests",
"Pass",
"Passes the current integration test")]
+ [AddComponentMenu("")]
public class PassTest : Command
{
public override void OnEnter()
@@ -19,5 +19,4 @@ namespace Fungus
Continue();
}
}
-
}
\ No newline at end of file
diff --git a/Assets/Tests/Signals.meta b/Assets/Tests/Signals.meta
new file mode 100644
index 00000000..14a1dee1
--- /dev/null
+++ b/Assets/Tests/Signals.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 2e1206d3bce424ca8a9b82f05c69335d
+folderAsset: yes
+timeCreated: 1474982411
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Tests/Signals/SignalsTests.unity b/Assets/Tests/Signals/SignalsTests.unity
new file mode 100644
index 00000000..720ca45f
--- /dev/null
+++ b/Assets/Tests/Signals/SignalsTests.unity
@@ -0,0 +1,716 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+SceneSettings:
+ m_ObjectHideFlags: 0
+ m_PVSData:
+ m_PVSObjectsArray: []
+ m_PVSPortalsArray: []
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 7
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 3
+ m_SkyboxMaterial: {fileID: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 7
+ m_GIWorkflowMode: 1
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_TemporalCoherenceThreshold: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 0
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 4
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_TextureWidth: 1024
+ m_TextureHeight: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_DirectLightInLightProbes: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_LightingDataAsset: {fileID: 0}
+ m_RuntimeCPUUsage: 25
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 2
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ accuratePlacement: 0
+ minRegionArea: 2
+ cellSize: 0.16666667
+ manualCellSize: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &41796120
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 4
+ m_Component:
+ - 224: {fileID: 41796123}
+ - 222: {fileID: 41796122}
+ - 114: {fileID: 41796121}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &41796121
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 41796120}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+ Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 32
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 0
+ m_MaxSize: 40
+ m_Alignment: 0
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: New Text
+--- !u!222 &41796122
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 41796120}
+--- !u!224 &41796123
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 41796120}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_Children: []
+ m_Father: {fileID: 1210976074}
+ m_RootOrder: 0
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 96}
+ m_Pivot: {x: 0, y: 1}
+--- !u!1 &147434164
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 4
+ m_Component:
+ - 4: {fileID: 147434166}
+ - 114: {fileID: 147434165}
+ m_Layer: 0
+ m_Name: WriterSignalsTest
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &147434165
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 147434164}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b1dba0b27b0864740a8720e920aa88c0, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ timeout: 5
+ ignored: 0
+ succeedAfterAllAssertionsAreExecuted: 0
+ expectException: 0
+ expectedExceptionList:
+ succeedWhenExceptionIsThrown: 0
+ includedPlatforms: -1
+ platformsToIgnore: []
+ dynamic: 0
+ dynamicTypeName:
+--- !u!4 &147434166
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 147434164}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_Children:
+ - {fileID: 1201908856}
+ - {fileID: 1210976074}
+ - {fileID: 411939900}
+ m_Father: {fileID: 0}
+ m_RootOrder: 2
+--- !u!1 &286067095
+GameObject:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 4
+ m_Component:
+ - 4: {fileID: 286067097}
+ - 114: {fileID: 286067096}
+ m_Layer: 0
+ m_Name: _FungusState
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &286067096
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 286067095}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 61dddfdc5e0e44ca298d8f46f7f5a915, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ selectedFlowchart: {fileID: 411939904}
+--- !u!4 &286067097
+Transform:
+ m_ObjectHideFlags: 1
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 286067095}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 1
+--- !u!1 &411939899
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 142980, guid: 5e7fbc8d4eb714b279eeeef2262c1e1a, type: 2}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 4
+ m_Component:
+ - 4: {fileID: 411939900}
+ - 114: {fileID: 411939904}
+ - 114: {fileID: 411939903}
+ - 114: {fileID: 411939902}
+ - 114: {fileID: 411939901}
+ m_Layer: 0
+ m_Name: Flowchart
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &411939900
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 467082, guid: 5e7fbc8d4eb714b279eeeef2262c1e1a, type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 411939899}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_Children: []
+ m_Father: {fileID: 147434166}
+ m_RootOrder: 2
+--- !u!114 &411939901
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 411939899}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ad2261dbe44de43a980e6f7c77c88f7f, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ itemId: 1
+ indentLevel: 0
+ textObject: {fileID: 41796120}
+ text:
+ stringRef: {fileID: 0}
+ stringVal: '{b}hello{/b}'
+ description:
+ clearText: 1
+ waitUntilFinished: 1
+ textColor: 0
+ setAlpha:
+ floatRef: {fileID: 0}
+ floatVal: 1
+ setColor:
+ colorRef: {fileID: 0}
+ colorVal: {r: 1, g: 1, b: 1, a: 1}
+--- !u!114 &411939902
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_PrefabParentObject: {fileID: 11462346, guid: 5e7fbc8d4eb714b279eeeef2262c1e1a,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 411939899}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d2f6487d21a03404cb21b245f0242e79, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ parentBlock: {fileID: 411939903}
+--- !u!114 &411939903
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_PrefabParentObject: {fileID: 11433304, guid: 5e7fbc8d4eb714b279eeeef2262c1e1a,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 411939899}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3d3d73aef2cfc4f51abf34ac00241f60, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ nodeRect:
+ serializedVersion: 2
+ x: 68
+ y: 70
+ width: 120
+ height: 40
+ itemId: 0
+ blockName: Start
+ description:
+ eventHandler: {fileID: 411939902}
+ commandList:
+ - {fileID: 411939901}
+--- !u!114 &411939904
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 11430050, guid: 5e7fbc8d4eb714b279eeeef2262c1e1a,
+ type: 2}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 411939899}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 1
+ scrollPos: {x: 0, y: 0}
+ variablesScrollPos: {x: 0, y: 0}
+ variablesExpanded: 1
+ blockViewHeight: 400
+ zoom: 1
+ scrollViewRect:
+ serializedVersion: 2
+ x: -343
+ y: -340
+ width: 1114
+ height: 859
+ selectedBlock: {fileID: 0}
+ selectedCommands: []
+ variables: []
+ description: Check that Writer signals are sending correctly
+ stepPause: 0
+ colorCommands: 1
+ hideComponents: 1
+ saveSelection: 1
+ localizationId:
+ showLineNumbers: 0
+ hideCommands: []
+ luaEnvironment: {fileID: 0}
+ luaBindingName: flowchart
+--- !u!1 &597475644
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 4
+ m_Component:
+ - 4: {fileID: 597475649}
+ - 20: {fileID: 597475648}
+ - 92: {fileID: 597475647}
+ - 124: {fileID: 597475646}
+ - 81: {fileID: 597475645}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &597475645
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 597475644}
+ m_Enabled: 1
+--- !u!124 &597475646
+Behaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 597475644}
+ m_Enabled: 1
+--- !u!92 &597475647
+Behaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 597475644}
+ m_Enabled: 1
+--- !u!20 &597475648
+Camera:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 597475644}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 1
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+ m_StereoMirrorMode: 0
+--- !u!4 &597475649
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 597475644}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: -10}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+--- !u!1 &759754969
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 4
+ m_Component:
+ - 4: {fileID: 759754972}
+ - 114: {fileID: 759754971}
+ - 114: {fileID: 759754970}
+ m_Layer: 0
+ m_Name: EventSystem
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &759754970
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 759754969}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1077351063, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_HorizontalAxis: Horizontal
+ m_VerticalAxis: Vertical
+ m_SubmitButton: Submit
+ m_CancelButton: Cancel
+ m_InputActionsPerSecond: 10
+ m_RepeatDelay: 0.5
+ m_ForceModuleActive: 0
+--- !u!114 &759754971
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 759754969}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -619905303, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_FirstSelected: {fileID: 0}
+ m_sendNavigationEvents: 1
+ m_DragThreshold: 5
+--- !u!4 &759754972
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 759754969}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 4
+--- !u!1 &1201908855
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 4
+ m_Component:
+ - 4: {fileID: 1201908856}
+ - 114: {fileID: 1201908857}
+ m_Layer: 0
+ m_Name: WriterSignalsTester
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1201908856
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1201908855}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_Children: []
+ m_Father: {fileID: 147434166}
+ m_RootOrder: 0
+--- !u!114 &1201908857
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1201908855}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: cb302fcb509f14caf93dea80411e90ac, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &1210976073
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 4
+ m_Component:
+ - 224: {fileID: 1210976074}
+ - 223: {fileID: 1210976077}
+ - 114: {fileID: 1210976076}
+ - 114: {fileID: 1210976075}
+ m_Layer: 5
+ m_Name: Canvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1210976074
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1210976073}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0, y: 0, z: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_Children:
+ - {fileID: 41796123}
+ m_Father: {fileID: 147434166}
+ m_RootOrder: 1
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 0}
+--- !u!114 &1210976075
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1210976073}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreReversedGraphics: 1
+ m_BlockingObjects: 0
+ m_BlockingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+--- !u!114 &1210976076
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1210976073}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 0
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 800, y: 600}
+ m_ScreenMatchMode: 0
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+--- !u!223 &1210976077
+Canvas:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1210976073}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_RenderMode: 0
+ m_Camera: {fileID: 0}
+ m_PlaneDistance: 100
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!1 &1906475156
+GameObject:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ serializedVersion: 4
+ m_Component:
+ - 4: {fileID: 1906475158}
+ - 114: {fileID: 1906475157}
+ m_Layer: 0
+ m_Name: TestRunner
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1906475157
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1906475156}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5c3afc1c624179749bcdecf7b0224902, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ currentTest: {fileID: 0}
+--- !u!4 &1906475158
+Transform:
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_GameObject: {fileID: 1906475156}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 3
diff --git a/Assets/Tests/Signals/SignalsTests.unity.meta b/Assets/Tests/Signals/SignalsTests.unity.meta
new file mode 100644
index 00000000..37bec2a6
--- /dev/null
+++ b/Assets/Tests/Signals/SignalsTests.unity.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8acd008952a224b138b2b02baae1f7ff
+timeCreated: 1474970336
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Tests/Signals/WriterSignalsTester.cs b/Assets/Tests/Signals/WriterSignalsTester.cs
new file mode 100644
index 00000000..2beae9d7
--- /dev/null
+++ b/Assets/Tests/Signals/WriterSignalsTester.cs
@@ -0,0 +1,40 @@
+using UnityEngine;
+using Fungus.Utils;
+
+namespace Fungus
+{
+ ///
+ /// Checks if Writer signals are being sent correctly.
+ ///
+ [AddComponentMenu("")]
+ public class WriterSignalsTester : MonoBehaviour
+ {
+ int step = 0;
+
+ void OnEnable()
+ {
+ WriterSignals.OnTextTagToken += OnTextTagToken;
+ }
+
+ void OnDisable()
+ {
+ WriterSignals.OnTextTagToken -= OnTextTagToken;
+ }
+
+ void OnTextTagToken(Writer writer, TextTagToken token)
+ {
+ if (step == 0 && token.type == TokenType.BoldStart)
+ {
+ step = 1;
+ }
+ else if (step == 1 && token.type == TokenType.Words)
+ {
+ step = 2;
+ }
+ else if (step == 2 && token.type == TokenType.BoldEnd)
+ {
+ IntegrationTest.Pass();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Tests/Signals/WriterSignalsTester.cs.meta b/Assets/Tests/Signals/WriterSignalsTester.cs.meta
new file mode 100644
index 00000000..85e40810
--- /dev/null
+++ b/Assets/Tests/Signals/WriterSignalsTester.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: cb302fcb509f14caf93dea80411e90ac
+timeCreated: 1474968744
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: