コード例 #1
0
        /// <summary>
        /// Performs the task of an internalPlugin
        /// </summary>
        /// <param name="toTrigger">id of the plugin in the dependency graph</param>
        /// <param name="triggeredBy">the node which triggered the execution of this node</param>
        /// <returns>Should the dependencies be triggered</returns>
        private void InternalPluginAction(int toTrigger, int triggeredBy)
        {
            if (!ExecutionHelper.HasFulfilledDependency(dependencyGraph[toTrigger], data, staticData))
            {
                return;
            }

            if (dependencyGraph[toTrigger].Type == LoopStart.TypeName)
            {
                int[] startIds = loopPairByStart[toTrigger].StartDependencies(triggeredBy, data);
                StartNodes(startIds, toTrigger);
            }
            else if (dependencyGraph[toTrigger].Type == LoopEnd.TypeName)
            {
                int[] startIds = loopPairByEnd[toTrigger].End.Finished(data, dependencyGraph);
                StartNodes(startIds, toTrigger);
            }
            else if (dependencyGraph[toTrigger].Type == SyncNode.TypeName)
            {
                syncById[toTrigger].StoreData(data, triggeredBy);
            }
        }