From af10b345573c25584f65593104dc18dbc8326551 Mon Sep 17 00:00:00 2001 From: desktop-maesty/steve Date: Wed, 19 Dec 2018 21:00:12 +1000 Subject: [PATCH] New Call mode, StopThenCall Allows for circumstances where you want to call a block that completes immediately multiple times such as in recursion. Removes the need to put Wait 1 Frame commands in a number of cases More verbose logging in cases where a block cannot be called as it is already running --- Assets/Fungus/Scripts/Commands/Call.cs | 32 +- Assets/Fungus/Scripts/Components/Block.cs | 24 +- Assets/Fungus/Scripts/Components/Flowchart.cs | 1 + Assets/Tests/Scripting/RecursiveCall.unity | 908 ++++++++++++++++++ .../Tests/Scripting/RecursiveCall.unity.meta | 7 + 5 files changed, 957 insertions(+), 15 deletions(-) create mode 100644 Assets/Tests/Scripting/RecursiveCall.unity create mode 100644 Assets/Tests/Scripting/RecursiveCall.unity.meta 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: