diff --git a/Assets/Fungus/Scripts/Commands/Call.cs b/Assets/Fungus/Scripts/Commands/Call.cs
index 4edb68f7..93246a1d 100644
--- a/Assets/Fungus/Scripts/Commands/Call.cs
+++ b/Assets/Fungus/Scripts/Commands/Call.cs
@@ -18,7 +18,9 @@ namespace Fungus
/// Continue executing the current block after calling
Continue,
/// Wait until the called block finishes executing, then continue executing current block.
- WaitUntilFinished
+ WaitUntilFinished,
+ /// Stop executing the current block before attempting to call. This allows for circular calls within the same frame
+ StopThenCall
}
///
@@ -63,6 +65,13 @@ namespace Fungus
return;
}
+ if(targetBlock.IsExecuting())
+ {
+ Debug.LogWarning(targetBlock.BlockName + " cannot be called/executed, it is already running.");
+ Continue();
+ return;
+ }
+
// Callback action for Wait Until Finished mode
Action onComplete = null;
if (callMode == CallMode.WaitUntilFinished)
@@ -94,10 +103,18 @@ namespace Fungus
flowchart.SelectedBlock = targetBlock;
}
+ if (callMode == CallMode.StopThenCall)
+ {
+ StopParentBlock();
+ }
StartCoroutine(targetBlock.Execute(index, onComplete));
}
else
{
+ if (callMode == CallMode.StopThenCall)
+ {
+ StopParentBlock();
+ }
// Execute block in another Flowchart
targetFlowchart.ExecuteBlock(targetBlock, index, onComplete);
}
@@ -134,18 +151,7 @@ namespace Fungus
summary = targetBlock.BlockName;
}
- switch (callMode)
- {
- case CallMode.Stop:
- summary += " : Stop";
- break;
- case CallMode.Continue:
- summary += " : Continue";
- break;
- case CallMode.WaitUntilFinished:
- summary += " : Wait";
- break;
- }
+ summary += " : " + callMode.ToString();
return summary;
}
diff --git a/Assets/Fungus/Scripts/Components/Block.cs b/Assets/Fungus/Scripts/Components/Block.cs
index c2d76d30..184123aa 100644
--- a/Assets/Fungus/Scripts/Components/Block.cs
+++ b/Assets/Fungus/Scripts/Components/Block.cs
@@ -47,6 +47,8 @@ namespace Fungus
protected Command activeCommand;
+ protected Action lastOnCompleteAction;
+
///
// Index of last command executed before the current one.
// -1 indicates no previous command.
@@ -200,15 +202,19 @@ namespace Fungus
{
if (executionState != ExecutionState.Idle)
{
+ Debug.LogWarning(BlockName + " cannot be executed, it is already running.");
yield break;
}
+ lastOnCompleteAction = onComplete;
+
if (!executionInfoSet)
{
SetExecutionInfo();
}
executionCount++;
+ var executionCountAtStart = executionCount;
var flowchart = GetFlowchart();
executionState = ExecutionState.Executing;
@@ -297,14 +303,25 @@ namespace Fungus
command.IsExecuting = false;
}
+ if(State == ExecutionState.Executing &&
+ //ensure we aren't dangling from a previous stopage and stopping a future run
+ executionCountAtStart == executionCount)
+ {
+ ReturnToIdle();
+ }
+ }
+
+ private void ReturnToIdle()
+ {
executionState = ExecutionState.Idle;
activeCommand = null;
BlockSignals.DoBlockEnd(this);
- if (onComplete != null)
+ if (lastOnCompleteAction != null)
{
- onComplete();
+ lastOnCompleteAction();
}
+ lastOnCompleteAction = null;
}
///
@@ -321,6 +338,9 @@ namespace Fungus
// This will cause the execution loop to break on the next iteration
jumpToCommandIndex = int.MaxValue;
+
+ //force idle here so other commands that rely on block not executing are informed this frame rather than next
+ ReturnToIdle();
}
///
diff --git a/Assets/Fungus/Scripts/Components/Flowchart.cs b/Assets/Fungus/Scripts/Components/Flowchart.cs
index 11ec5096..28355e20 100644
--- a/Assets/Fungus/Scripts/Components/Flowchart.cs
+++ b/Assets/Fungus/Scripts/Components/Flowchart.cs
@@ -570,6 +570,7 @@ namespace Fungus
// Can't restart a running block, have to wait until it's idle again
if (block.IsExecuting())
{
+ Debug.LogWarning(block.BlockName + " cannot be called/executed, it is already running.");
return false;
}
diff --git a/Assets/Tests/Scripting/RecursiveCall.unity b/Assets/Tests/Scripting/RecursiveCall.unity
new file mode 100644
index 00000000..64e41263
--- /dev/null
+++ b/Assets/Tests/Scripting/RecursiveCall.unity
@@ -0,0 +1,908 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 9
+ 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_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ 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}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 11
+ m_GIWorkflowMode: 1
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 0
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 10
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 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_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 500
+ m_PVRBounces: 2
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVRFilteringMode: 1
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ShowResolutionOverlay: 1
+ m_LightingDataAsset: {fileID: 0}
+ m_UseShadowmask: 1
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 2
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ accuratePlacement: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &615626260
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 615626264}
+ - component: {fileID: 615626263}
+ - component: {fileID: 615626262}
+ - component: {fileID: 615626261}
+ m_Layer: 0
+ m_Name: EventSystem
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &615626261
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 615626260}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1997211142, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_ForceModuleActive: 0
+--- !u!114 &615626262
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 615626260}
+ 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 &615626263
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 615626260}
+ 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 &615626264
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 615626260}
+ 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_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &737536536
+GameObject:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 737536538}
+ - component: {fileID: 737536537}
+ m_Layer: 0
+ m_Name: _FungusState
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &737536537
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 737536536}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 61dddfdc5e0e44ca298d8f46f7f5a915, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ selectedFlowchart: {fileID: 791345303}
+--- !u!4 &737536538
+Transform:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 737536536}
+ 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_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &791345297
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 791345304}
+ - component: {fileID: 791345303}
+ - component: {fileID: 791345302}
+ - component: {fileID: 791345300}
+ - component: {fileID: 791345299}
+ - component: {fileID: 791345298}
+ - component: {fileID: 791345307}
+ - component: {fileID: 791345306}
+ - component: {fileID: 791345305}
+ - component: {fileID: 791345308}
+ - component: {fileID: 791345314}
+ - component: {fileID: 791345313}
+ - component: {fileID: 791345312}
+ - component: {fileID: 791345311}
+ - component: {fileID: 791345310}
+ - component: {fileID: 791345309}
+ - component: {fileID: 791345315}
+ - component: {fileID: 791345301}
+ - component: {fileID: 791345317}
+ - component: {fileID: 791345316}
+ m_Layer: 0
+ m_Name: GameObject
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &791345298
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 791345297}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 050fb9e6e72f442b3b883da8a965bdeb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ itemId: 3
+ indentLevel: 0
+ targetFlowchart: {fileID: 0}
+ targetBlock: {fileID: 791345302}
+ startLabel:
+ stringRef: {fileID: 0}
+ stringVal:
+ startIndex: 0
+ callMode: 3
+--- !u!114 &791345299
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 791345297}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 050fb9e6e72f442b3b883da8a965bdeb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ itemId: 2
+ indentLevel: 1
+ targetFlowchart: {fileID: 0}
+ targetBlock: {fileID: 791345300}
+ startLabel:
+ stringRef: {fileID: 0}
+ stringVal:
+ startIndex: 0
+ callMode: 3
+--- !u!114 &791345300
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 791345297}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3d3d73aef2cfc4f51abf34ac00241f60, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ nodeRect:
+ serializedVersion: 2
+ x: 209
+ y: 151
+ width: 120
+ height: 40
+ tint: {r: 1, g: 1, b: 1, a: 1}
+ useCustomTint: 0
+ itemId: 1
+ blockName: New Block1
+ description:
+ eventHandler: {fileID: 0}
+ commandList:
+ - {fileID: 791345298}
+--- !u!114 &791345301
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 791345297}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d2f6487d21a03404cb21b245f0242e79, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ parentBlock: {fileID: 791345302}
+ waitForFrames: 1
+--- !u!114 &791345302
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 791345297}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3d3d73aef2cfc4f51abf34ac00241f60, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ nodeRect:
+ serializedVersion: 2
+ x: 207
+ y: 63
+ width: 120
+ height: 40
+ tint: {r: 1, g: 1, b: 1, a: 1}
+ useCustomTint: 0
+ itemId: 0
+ blockName: New Block
+ description:
+ eventHandler: {fileID: 791345301}
+ commandList:
+ - {fileID: 791345308}
+ - {fileID: 791345306}
+ - {fileID: 791345299}
+ - {fileID: 791345305}
+--- !u!114 &791345303
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 791345297}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 1
+ scrollPos: {x: -10, y: 6}
+ variablesScrollPos: {x: 0, y: 0}
+ variablesExpanded: 1
+ blockViewHeight: 400
+ zoom: 1
+ scrollViewRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 0
+ height: 0
+ selectedBlocks: []
+ selectedCommands: []
+ variables:
+ - {fileID: 791345307}
+ - {fileID: 791345310}
+ description:
+ stepPause: 0
+ colorCommands: 1
+ hideComponents: 1
+ saveSelection: 1
+ localizationId:
+ showLineNumbers: 0
+ hideCommands: []
+ luaEnvironment: {fileID: 0}
+ luaBindingName: flowchart
+--- !u!4 &791345304
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 791345297}
+ 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_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &791345305
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 791345297}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 93cb9773f2ca04e2bbf7a68ccfc23267, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ itemId: 5
+ indentLevel: 0
+--- !u!114 &791345306
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 791345297}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 70c5622b8a80845c980954170295f292, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ itemId: 4
+ indentLevel: 0
+ compareOperator: 2
+ variable: {fileID: 791345307}
+ booleanData:
+ booleanRef: {fileID: 0}
+ booleanVal: 0
+ integerData:
+ integerRef: {fileID: 0}
+ integerVal: 10
+ floatData:
+ floatRef: {fileID: 0}
+ floatVal: 0
+ stringData:
+ stringRef: {fileID: 0}
+ stringVal:
+ animatorData:
+ animatorRef: {fileID: 0}
+ animatorVal: {fileID: 0}
+ audioSourceData:
+ audioSourceRef: {fileID: 0}
+ audioSourceVal: {fileID: 0}
+ colorData:
+ colorRef: {fileID: 0}
+ colorVal: {r: 0, g: 0, b: 0, a: 0}
+ gameObjectData:
+ gameObjectRef: {fileID: 0}
+ gameObjectVal: {fileID: 0}
+ materialData:
+ materialRef: {fileID: 0}
+ materialVal: {fileID: 0}
+ objectData:
+ objectRef: {fileID: 0}
+ objectVal: {fileID: 0}
+ rigidbody2DData:
+ rigidbody2DRef: {fileID: 0}
+ rigidbody2DVal: {fileID: 0}
+ spriteData:
+ spriteRef: {fileID: 0}
+ spriteVal: {fileID: 0}
+ textureData:
+ textureRef: {fileID: 0}
+ textureVal: {fileID: 0}
+ transformData:
+ transformRef: {fileID: 0}
+ transformVal: {fileID: 0}
+ vector2Data:
+ vector2Ref: {fileID: 0}
+ vector2Val: {x: 0, y: 0}
+ vector3Data:
+ vector3Ref: {fileID: 0}
+ vector3Val: {x: 0, y: 0, z: 0}
+--- !u!114 &791345307
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 791345297}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: afb91b566ceda411bad1e9d3c3243ecc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ scope: 0
+ key: Var
+ value: 0
+--- !u!114 &791345308
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 791345297}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fb77d0ce495044f6e9feb91b31798e8c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ itemId: 6
+ indentLevel: 0
+ variable: {fileID: 791345307}
+ setOperator: 2
+ booleanData:
+ booleanRef: {fileID: 0}
+ booleanVal: 0
+ integerData:
+ integerRef: {fileID: 0}
+ integerVal: 1
+ floatData:
+ floatRef: {fileID: 0}
+ floatVal: 0
+ stringData:
+ stringRef: {fileID: 0}
+ stringVal:
+ animatorData:
+ animatorRef: {fileID: 0}
+ animatorVal: {fileID: 0}
+ audioSourceData:
+ audioSourceRef: {fileID: 0}
+ audioSourceVal: {fileID: 0}
+ colorData:
+ colorRef: {fileID: 0}
+ colorVal: {r: 0, g: 0, b: 0, a: 0}
+ gameObjectData:
+ gameObjectRef: {fileID: 0}
+ gameObjectVal: {fileID: 0}
+ materialData:
+ materialRef: {fileID: 0}
+ materialVal: {fileID: 0}
+ objectData:
+ objectRef: {fileID: 0}
+ objectVal: {fileID: 0}
+ rigidbody2DData:
+ rigidbody2DRef: {fileID: 0}
+ rigidbody2DVal: {fileID: 0}
+ spriteData:
+ spriteRef: {fileID: 0}
+ spriteVal: {fileID: 0}
+ textureData:
+ textureRef: {fileID: 0}
+ textureVal: {fileID: 0}
+ transformData:
+ transformRef: {fileID: 0}
+ transformVal: {fileID: 0}
+ vector2Data:
+ vector2Ref: {fileID: 0}
+ vector2Val: {x: 0, y: 0}
+ vector3Data:
+ vector3Ref: {fileID: 0}
+ vector3Val: {x: 0, y: 0, z: 0}
+--- !u!114 &791345309
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 791345297}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fb77d0ce495044f6e9feb91b31798e8c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ itemId: 11
+ indentLevel: 0
+ variable: {fileID: 791345310}
+ setOperator: 2
+ booleanData:
+ booleanRef: {fileID: 0}
+ booleanVal: 0
+ integerData:
+ integerRef: {fileID: 0}
+ integerVal: 1
+ floatData:
+ floatRef: {fileID: 0}
+ floatVal: 0
+ stringData:
+ stringRef: {fileID: 0}
+ stringVal:
+ animatorData:
+ animatorRef: {fileID: 0}
+ animatorVal: {fileID: 0}
+ audioSourceData:
+ audioSourceRef: {fileID: 0}
+ audioSourceVal: {fileID: 0}
+ colorData:
+ colorRef: {fileID: 0}
+ colorVal: {r: 0, g: 0, b: 0, a: 0}
+ gameObjectData:
+ gameObjectRef: {fileID: 0}
+ gameObjectVal: {fileID: 0}
+ materialData:
+ materialRef: {fileID: 0}
+ materialVal: {fileID: 0}
+ objectData:
+ objectRef: {fileID: 0}
+ objectVal: {fileID: 0}
+ rigidbody2DData:
+ rigidbody2DRef: {fileID: 0}
+ rigidbody2DVal: {fileID: 0}
+ spriteData:
+ spriteRef: {fileID: 0}
+ spriteVal: {fileID: 0}
+ textureData:
+ textureRef: {fileID: 0}
+ textureVal: {fileID: 0}
+ transformData:
+ transformRef: {fileID: 0}
+ transformVal: {fileID: 0}
+ vector2Data:
+ vector2Ref: {fileID: 0}
+ vector2Val: {x: 0, y: 0}
+ vector3Data:
+ vector3Ref: {fileID: 0}
+ vector3Val: {x: 0, y: 0, z: 0}
+--- !u!114 &791345310
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 791345297}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: afb91b566ceda411bad1e9d3c3243ecc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ scope: 0
+ key: Var1
+ value: 0
+--- !u!114 &791345311
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 791345297}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 050fb9e6e72f442b3b883da8a965bdeb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ itemId: 10
+ indentLevel: 0
+ targetFlowchart: {fileID: 0}
+ targetBlock: {fileID: 791345313}
+ startLabel:
+ stringRef: {fileID: 0}
+ stringVal:
+ startIndex: 0
+ callMode: 1
+--- !u!114 &791345312
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 791345297}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 050fb9e6e72f442b3b883da8a965bdeb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ itemId: 9
+ indentLevel: 0
+ targetFlowchart: {fileID: 0}
+ targetBlock: {fileID: 791345313}
+ startLabel:
+ stringRef: {fileID: 0}
+ stringVal:
+ startIndex: 0
+ callMode: 1
+--- !u!114 &791345313
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 791345297}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3d3d73aef2cfc4f51abf34ac00241f60, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ nodeRect:
+ serializedVersion: 2
+ x: 232
+ y: 268
+ width: 120
+ height: 40
+ tint: {r: 1, g: 1, b: 1, a: 1}
+ useCustomTint: 0
+ itemId: 8
+ blockName: New Block3
+ description:
+ eventHandler: {fileID: 0}
+ commandList:
+ - {fileID: 791345309}
+--- !u!114 &791345314
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 791345297}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3d3d73aef2cfc4f51abf34ac00241f60, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ nodeRect:
+ serializedVersion: 2
+ x: 80
+ y: 267
+ width: 120
+ height: 40
+ tint: {r: 1, g: 1, b: 1, a: 1}
+ useCustomTint: 0
+ itemId: 7
+ blockName: New Block2
+ description:
+ eventHandler: {fileID: 791345315}
+ commandList:
+ - {fileID: 791345312}
+ - {fileID: 791345311}
+ - {fileID: 791345316}
+ - {fileID: 791345317}
+--- !u!114 &791345315
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 791345297}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d2f6487d21a03404cb21b245f0242e79, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ parentBlock: {fileID: 791345314}
+ waitForFrames: 1
+--- !u!114 &791345316
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 791345297}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 050fb9e6e72f442b3b883da8a965bdeb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ itemId: 13
+ indentLevel: 0
+ targetFlowchart: {fileID: 0}
+ targetBlock: {fileID: 791345313}
+ startLabel:
+ stringRef: {fileID: 0}
+ stringVal:
+ startIndex: 0
+ callMode: 1
+--- !u!114 &791345317
+MonoBehaviour:
+ m_ObjectHideFlags: 2
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 791345297}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 050fb9e6e72f442b3b883da8a965bdeb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ itemId: 12
+ indentLevel: 0
+ targetFlowchart: {fileID: 0}
+ targetBlock: {fileID: 791345313}
+ startLabel:
+ stringRef: {fileID: 0}
+ stringVal:
+ startIndex: 0
+ callMode: 1
+--- !u!1 &926957713
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 926957716}
+ - component: {fileID: 926957715}
+ - component: {fileID: 926957714}
+ 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 &926957714
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 926957713}
+ m_Enabled: 1
+--- !u!20 &926957715
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 926957713}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_projectionMatrixMode: 1
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_GateFitMode: 2
+ m_FocalLength: 50
+ 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: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &926957716
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 926957713}
+ 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_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
diff --git a/Assets/Tests/Scripting/RecursiveCall.unity.meta b/Assets/Tests/Scripting/RecursiveCall.unity.meta
new file mode 100644
index 00000000..44578ec4
--- /dev/null
+++ b/Assets/Tests/Scripting/RecursiveCall.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 34356a3fcc0886444b35fa93d13a8b4c
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant: