public virtual void Load(VMStackFrameMarshal input, VMContext context) { CodeOwner = FSO.Content.Content.Get().WorldObjects.Get(input.CodeOwnerGUID); BHAV bhav = null; if (input.RoutineID >= 8192) { bhav = ScopeResource.SemiGlobal.Get <BHAV>(input.RoutineID); } else if (input.RoutineID >= 4096) { bhav = ScopeResource.Get <BHAV>(input.RoutineID); } else { bhav = Global.Resource.Get <BHAV>(input.RoutineID); } Routine = VM.Assemble(bhav); InstructionPointer = input.InstructionPointer; Caller = context.VM.GetObjectById(input.Caller); Callee = context.VM.GetObjectById(input.Callee); StackObject = context.VM.GetObjectById(input.StackObject); Locals = input.Locals; Args = input.Args; }
public virtual void Load(VMStackFrameMarshal input, VMContext context) { CodeOwner = GameContent.Get.WorldObjects.Get(input.CodeOwnerGUID); Routine = null; if (input.RoutineID >= 8192) { Routine = (VMRoutine)ScopeResource.SemiGlobal.GetRoutine(input.RoutineID); } else if (input.RoutineID >= 4096) { Routine = (VMRoutine)ScopeResource.GetRoutine(input.RoutineID); } else { Routine = (VMRoutine)Global.Resource.GetRoutine(input.RoutineID); } InstructionPointer = input.InstructionPointer; Caller = context.VM.GetObjectById(input.Caller); Callee = context.VM.GetObjectById(input.Callee); StackObjectID = input.StackObject; Locals = input.Locals; Args = input.Args; DiscardResult = input.DiscardResult; ActionTree = input.ActionTree; }
public virtual void Load(VMStackFrameMarshal input, VMContext context) { CodeOwner = FSO.Content.Content.Get().WorldObjects.Get(input.CodeOwnerGUID); Routine = null; if (input.RoutineID >= 8192) { Routine = (VMRoutine)ScopeResource.SemiGlobal.GetRoutine(input.RoutineID); } else if (input.RoutineID >= 4096) { Routine = (VMRoutine)ScopeResource.GetRoutine(input.RoutineID); } else { Routine = (VMRoutine)Global.Resource.GetRoutine(input.RoutineID); } InstructionPointer = (byte)input.InstructionPointer; Caller = context.VM.GetObjectById(input.Caller); Callee = context.VM.GetObjectById(input.Callee); StackObjectID = input.StackObject; if (Routine != null && input.Locals != null && Routine.Locals > input.Locals.Length) { Locals = new short[Routine.Locals]; Array.Copy(input.Locals, Locals, input.Locals.Length); } else { Locals = input.Locals; } Args = input.Args; DiscardResult = input.DiscardResult; ActionTree = input.ActionTree; }