public static TES5State CreateState(string name, bool auto) { TES5FunctionScope functionScope = new TES5FunctionScope(name); TES5CodeScope codeScope = TES5CodeScopeFactory.CreateCodeScopeRoot(functionScope); TES5State state = new TES5State(name, auto, functionScope, codeScope); return(state); }
private void CreateActivationStates(TES5GlobalScope globalScope, TES5MultipleScriptsScope multipleScriptsScope, out TES5BlockList blocks, out TES5EventCodeBlock onUpdate) { TES5State activeState; CreateActiveStateBlock(globalScope, multipleScriptsScope, out activeState, out onUpdate); TES5State inactiveState = CreateInactiveStateBlock(); TES5EventCodeBlock onCellAttach = CreateEventCodeBlock("OnCellAttach"); onCellAttach.CodeScope.AddChunk(objectCallFactory.CreateGotoState("ActiveState", globalScope, multipleScriptsScope)); TES5EventCodeBlock onCellDetach = CreateEventCodeBlock("OnCellDetach"); onCellDetach.CodeScope.AddChunk(objectCallFactory.CreateGotoState("InactiveState", globalScope, multipleScriptsScope)); blocks = new TES5BlockList() { activeState, inactiveState, onCellAttach, onCellDetach }; }
private static TES5State CreateInactiveStateBlock() { TES5State state = CreateState("InactiveState", true); return(state); }
private void CreateActiveStateBlock(TES5GlobalScope globalScope, TES5MultipleScriptsScope multipleScriptsScope, out TES5State state, out TES5EventCodeBlock onUpdate) { state = CreateState("ActiveState", false); TES5EventCodeBlock onBeginState = CreateEventCodeBlock("OnBeginState"); onBeginState.CodeScope.CodeChunks.Add(this.objectCallFactory.CreateObjectCall(TES5ReferenceFactory.CreateReferenceToSelf(globalScope), "OnUpdate", multipleScriptsScope)); state.AddBlock(onBeginState); onUpdate = CreateEventCodeBlock("OnUpdate"); state.AddBlock(onUpdate); }