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