상속: kOS.ExecutionContext
예제 #1
0
파일: InputManager.cs 프로젝트: Nivekk/KOS
        public static void Lock(CPU cpu)
        {
            LockedCpu = cpu;

            CameraManager.Instance.enabled = false;
            InputLockManager.SetControlLock(ControlTypes.All, "kOSInputManager");
        }
예제 #2
0
        public override void AddTo(BindingManager manager)
        {
            cpu = manager.cpu;
            vessel = manager.cpu.Vessel;

            controls.Add(new LockableControl("THROTTLE", "throttle", cpu, manager));
            controls.Add(new LockableControl("STEERING", "steering", cpu, manager));

            controls.Add(new LockableControl("WHEELSTEERING", "wheelsteering", cpu, manager));
            controls.Add(new LockableControl("WHEELTHROTTLE", "wheelthrottle", cpu, manager));

            manager.AddGetter("SAS", delegate(CPU c) { return vessel.Autopilot.Mode.ToString(); });
            manager.AddSetter("SAS", delegate(CPU c, object val)
            {
                if (val is bool) cpu.Vessel.ActionGroups.SetGroup(KSPActionGroup.SAS, (bool)val);
                else
                {
                    try
                    {
                        Type t = typeof(VesselAutopilot.AutopilotMode);
                        vessel.Autopilot.SetMode((VesselAutopilot.AutopilotMode)Enum.Parse(t, val.ToString(), true));
                        cpu.Vessel.ActionGroups.SetGroup(KSPActionGroup.SAS, (bool)true);
                    }
                    catch
                    {
                        cpu.Vessel.ActionGroups.SetGroup(KSPActionGroup.SAS, (bool)false);
                    }
                }
            });

            vessel.OnFlyByWire += OnFlyByWire;
        }
예제 #3
0
        public TerminalButton(CPU cpu, int number)
        {
            this.cpu = cpu;
            this.ButtonNumber = number;

            AddSuffix("LIGHT", (object val) => { LightState = (bool)val; }, () => { return LightState; });
            AddSuffix("ACTIVE", (object val) => { ClickState = (bool)val; }, () => { return ClickState; });
        }
예제 #4
0
        private static float getLongitude(CPU cpu)
        {
            float retVal = (float)cpu.Vessel.longitude;

                while (retVal > 180) retVal -= 360;
                while (retVal < -180) retVal += 360;

                return retVal;
        }
예제 #5
0
        private static float getLattitude(CPU cpu)
        {
            float retVal = (float)cpu.Vessel.latitude;

                if (retVal > 90) return 90;
                if (retVal < -90) return -90;

                return retVal;
        }
예제 #6
0
 public void initCpu()
 {
     if (cpu == null)
     {
         cpu = new CPU(this, "ksp");
         cpu.AttachHardDisk(hardDisk);
         cpu.Boot();
     }
 }
예제 #7
0
        public override void AddTo(BindingManager manager)
        {
            cpu = manager.cpu;
            vessel = manager.cpu.Vessel;

            controls.Add(new LockableControl("THROTTLE", "throttle", cpu, manager));
            controls.Add(new LockableControl("STEERING", "steering", cpu, manager));

            controls.Add(new LockableControl("WHEELSTEERING", "wheelsteering", cpu, manager));
            controls.Add(new LockableControl("WHEELTHROTTLE", "wheelthrottle", cpu, manager));

            vessel.OnFlyByWire += OnFlyByWire;
        }
예제 #8
0
        public override void AddTo(BindingManager manager)
        {
            cpu = manager.cpu;
            vessel = manager.cpu.Vessel;

            controls.Add(new LockableControl("THROTTLE", "throttle", cpu, manager));
            controls.Add(new LockableControl("STEERING", "steering", cpu, manager));

            controls.Add(new LockableControl("WHEELSTEERING", "wheelsteering", cpu, manager));
            controls.Add(new LockableControl("WHEELTHROTTLE", "wheelthrottle", cpu, manager));

            if (RTHook.Instance == null || !RTHook.Instance.HasFlightComputer(vessel.id))
            {
                vessel.OnFlyByWire += OnFlyByWire;
            }
        }
예제 #9
0
        public void Start()
        {
            var prop = internalProp;

            Cpu = part.GetComponent<kOSProcessor>().cpu;

            var size = 0.1f;
            var m = new Mesh();
            m.name = "Scripted_Plane_New_Mesh";
            m.vertices = new Vector3[] { new Vector3(size, -size, 0.01f), new Vector3(size, size, 0.01f), new Vector3(-size, size, 0.01f), new Vector3(-size, -size, 0.01f) };
            m.uv = new Vector2[] { new Vector2(0, 0.4f), new Vector2(0, 1), new Vector2(0.79f, 1), new Vector2(0.79f, 0.4f) };
            m.triangles = new int[] { 0, 1, 2, 0, 2, 3 };
            m.RecalculateNormals();

            MeshFilter mf = prop.FindModelComponents<MeshFilter>()[0];
            prop.FindModelComponents<MeshFilter>()[1].mesh = null;
            mf.mesh = m;

            screenGo = mf.gameObject;

            BoxCollider b = screenGo.GetComponent<BoxCollider>() ?? screenGo.AddComponent<BoxCollider>();
            ClickHandler handler = screenGo.GetComponent<ClickHandler>() ?? screenGo.AddComponent<ClickHandler>();
            handler.OnClick = OnMouseDown;

            foreach (MeshRenderer renderer in prop.FindModelComponents<MeshRenderer>())
            {
                Material mat = new Material(Shader.Find(" Diffuse"));
                mat.SetTexture("_MainTex", InternalDisplayTexture);
                mat.SetTextureScale("_MainTex", new Vector2(1, 1));

                renderer.material = mat;
            }

            foreach (PartModule module in part.Modules)
            {
                if (module is kOSProcessor)
                {
                    var k = (kOSProcessor)module;

                    k.InternalDisplayTexture = InternalDisplayTexture;
                }
            }
        }
예제 #10
0
파일: Binding.cs 프로젝트: BGog/KOS
        public BindingManager(CPU cpu, String context)
        {
            this.cpu = cpu;

            var contexts = new string[1];
            contexts[0] = context;

            foreach (Type t in Assembly.GetExecutingAssembly().GetTypes())
            {
                kOSBinding attr = (kOSBinding)t.GetCustomAttributes(typeof(kOSBinding), true).FirstOrDefault();
                if (attr != null)
                {
                    if (attr.Contexts.Count() == 0 || attr.Contexts.Intersect(contexts).Any())
                    {
                        Binding b = (Binding)Activator.CreateInstance(t);
                        b.AddTo(this);
                        Bindings.Add(b);
                    }
                }
            }
        }
예제 #11
0
            public LockableControl(String name, String propertyName, CPU cpu, BindingManager manager)
            {
                Name = name;
                Cpu = cpu;
                Vessel = cpu.Vessel;
                Locked = false;
                Value = 0;

                manager.AddGetter(name, c => Value);
                manager.AddSetter(name, delegate { });

                this.propertyName = propertyName;
            }
예제 #12
0
 public override void Execute(CPU cpu)
 {
     cpu.EndWait();
 }
예제 #13
0
파일: Core.cs 프로젝트: niomaster/KOS
 internal static void ToggleWindow(CPU cpu)
 {
     Fetch.Window.AttachTo(cpu);
     Fetch.Window.Toggle();
 }
예제 #14
0
            public LockableControl(String name, String propertyName, CPU cpu, BindingManager manager)
            {
                this.name = name;
                this.cpu = cpu;
                this.vessel = cpu.Vessel;
                locked = false;
                Value = 0;

                manager.AddGetter(name, delegate(CPU c) { return Value; });
                manager.AddSetter(name, delegate(CPU c, object val)  { });

                this.propertyName = propertyName;
            }
예제 #15
0
파일: Core.cs 프로젝트: niomaster/KOS
 public static void CloseWindow(CPU cpu)
 {
     Fetch.Window.AttachTo(cpu);
     Fetch.Window.Close();
 }
예제 #16
0
파일: Core.cs 프로젝트: niomaster/KOS
 public static void OpenWindow(CPU cpu)
 {
     Fetch.Window.AttachTo(cpu);
     Fetch.Window.Open();
 }
예제 #17
0
파일: TermWindow.cs 프로젝트: raad287/KOS
 internal void AttachTo(CPU cpu)
 {
     this.Cpu = cpu;
 }
예제 #18
0
        public override void OnStart(PartModule.StartState state)
        {
            //Do not start from editor and at KSP first loading
            if (state == StartState.Editor || state == StartState.None)
            {
                return;
            }

            cpu = new CPU(this, "ksp");

            if (hardDisk == null) hardDisk = new Harddisk(MemSize);

            cpu.AttachHardDisk(hardDisk);
            cpu.Boot();
        }
예제 #19
0
파일: Core.cs 프로젝트: civilwargeeky/KOS
 internal static void ToggleWindow(CPU cpu)
 {
     Fetch.Window.AttachTo(cpu);
     Fetch.Window.Toggle();
 }
예제 #20
0
파일: Core.cs 프로젝트: civilwargeeky/KOS
 public static void OpenWindow(CPU cpu)
 {
     Fetch.Window.AttachTo(cpu);
     Fetch.Window.Open();
 }
예제 #21
0
        public override void Execute(CPU cpu)
        {
            int functionPointer = (int)cpu.PopValue();

            cpu.RemoveTrigger(functionPointer);
        }
예제 #22
0
 public virtual void Execute(CPU cpu)
 {
 }
예제 #23
0
 public SpecialValueTester(CPU cpu)
 {
     this.cpu = cpu;
 }
예제 #24
0
 public override void Execute(CPU cpu)
 {
     DeltaInstructionPointer = distance;
 }
예제 #25
0
 internal void AttachTo(CPU cpu)
 {
     this.Cpu = cpu;
 }
예제 #26
0
 public SpecialValueTester(CPU cpu)
 {
     this.cpu = cpu;
 }
예제 #27
0
 public override void Execute(CPU cpu)
 {
     cpu.PushStack(argument);
 }