public override void Process() { FLBuffer input = Root.ActiveBuffer; FLProgram externalFunction = ExternalFunctionBlueprint.Initialize(InstructionSet); input.SetRoot(externalFunction); externalFunction.ActiveChannels = Root.ActiveChannels; externalFunction.SetCLVariables(Root.Instance, input, false); //Not making it internal to the subscript because that would dispose the buffer later in the method FLProgram.Debugger?.SubProgramStarted(Root, this, externalFunction); externalFunction.EntryPoint.Process(); FLProgram.Debugger?.SubProgramEnded(Root, externalFunction); FLBuffer buf = externalFunction.ActiveBuffer; buf.SetRoot(Root); input.SetRoot(Root); externalFunction.RemoveFromSystem(buf); externalFunction.RemoveFromSystem(input); Root.ActiveChannels = externalFunction.ActiveChannels; Root.ActiveBuffer = buf; externalFunction.FreeResources(); }
public override void SetRoot(FLProgram root) { base.SetRoot(root); for (int i = 0; i < Arguments.Count; i++) { Arguments[i].SetRoot(root); } }
public override void SetRoot(FLProgram root) { base.SetRoot(root); //HERE if (Type == FLInstructionArgumentType.Buffer || Type == FLInstructionArgumentType.Function) { ((FLParsedObject)Value).SetRoot(root); } }
public virtual void SetRoot(FLProgram root) { Root = root; }