void Start()
    {
        rigidbody = GetComponent <Rigidbody> ();

        lastLinearPosition  = Vector3.zero;
        lastAngularPosition = 0f;
        paused = false;

        startTime     = Time.time;
        startPosition = transform.position;

        if (FinishCanvas != null)
        {
            FinishCanvas.gameObject.SetActive(false);
        }


        //SETTINGS
        squaredMovement = PlayerPrefs.GetInt("SquaredMovement") == 1 ? true : false;
        speedLinear     = PlayerPrefs.GetFloat("RobotSpeed");
        speedAngular    = speedLinear * 10f;
        driveMode       = PlayerPrefs.GetString("DefaultDriveMode").Equals("Tank") ? DriveModes.Tank : DriveModes.Mecanum;

        uiController.UpdateDriveMode(PlayerPrefs.GetString("DefaultDriveMode").Equals("Tank") ? "Tank Drive" : "Mecanum Drive");
        PauseCanvas.transform.GetChild(1).GetComponent <Dropdown> ().value = driveMode == DriveModes.Tank ? 0 : 1;
    }
Пример #2
0
            public TP(ushort id, SubP p) : base(id, p)
            {
                loopturn       = false;
                NormWhAng      = 35; Tangle = 0;
                switchingsusp  = false;
                SuspensionMode = SuspensionModes.sport; DriveMode = DriveModes.full;
                FirstStr       = ""; SecondStr = "";
                Wheels         = new List <IMyMotorSuspension>();

                if (
                    (DriverLCD = OS.GTS.GetBlockWithName("Screen Driver") as IMyTextPanel) == null ||
                    (WheelLF = OS.GTS.GetBlockWithName("Wheel Suspension 3x3 LF") as IMyMotorSuspension) == null ||
                    (WheelRF = OS.GTS.GetBlockWithName("Wheel Suspension 3x3 RF") as IMyMotorSuspension) == null ||
                    (WheelLB = OS.GTS.GetBlockWithName("Wheel Suspension 3x3 LB") as IMyMotorSuspension) == null ||
                    (WheelRB = OS.GTS.GetBlockWithName("Wheel Suspension 3x3 RB") as IMyMotorSuspension) == null ||
                    (RemoteDriver = OS.GTS.GetBlockWithName("Control car") as IMyRemoteControl) == null ||
                    (RotorRull = OS.GTS.GetBlockWithName("Rotor rull") as IMyMotorStator) == null
                    )
                {
                    Terminate("Kontur blocks not found.");
                    return;
                }
                Wheels = new List <IMyMotorSuspension>()
                {
                    WheelLF, WheelRF, WheelLB, WheelRB
                };

                string saved = DriverLCD.GetText();

                if (string.IsNullOrEmpty(saved))
                {
                    if (saved.Contains("front"))
                    {
                        DriveMode = DriveModes.front;
                    }
                    else if (saved.Contains("rear"))
                    {
                        DriveMode = DriveModes.rear;
                    }
                    if (saved.Contains("off-road"))
                    {
                        SuspensionMode = SuspensionModes.offroad;
                    }
                    if (saved.Contains("looper"))
                    {
                        loopturn = true;
                    }
                }

                ChangeFirst();

                AddAct(ref MA, Main, 1);

                SetCmd(new Dictionary <string, Cmd>
                {
                    { "sdm", new Cmd(CmdSDM, "Switch drive mode Full/Front/Rear.") },
                    { "ssm", new Cmd(CmdSSM, "Switch suspension mode Sport/Off road.") },
                    { "sl", new Cmd(CmdSL, "Switch loopturn mode.") }
                });
            }
    public void setDriveMode()
    {
        int index = PauseCanvas.transform.GetChild(1).GetComponent <Dropdown> ().value;

        if (index == 0)
        {
            driveMode = DriveModes.Tank;
        }
        else if (index == 1)
        {
            driveMode = DriveModes.Mecanum;
        }

        uiController.UpdateDriveMode(index == 0 ? "Tank" : "Mecanum");
    }
        public void UpdateDriveModes()
        {
            DriveModes driveMode;

            foreach (Subsystem subsystem in DiscoveredSubsystems)
            {
                foreach (Node node in subsystem.NodeList)
                {
                    foreach (Component component in node.ComponentList)
                    {
                        foreach (BaseService service in component.Services)
                        {
                            switch (service.ServiceName)
                            {
                            case LocalVectorDriver.SERVICE_NAME:
                                driveMode = new DriveModes(this, component, remoteVelocityStateDriverService, LocalVectorDriver.SERVICE_NAME);
                                discoveredDriveModes.Add(component.JausAddress.Value, driveMode);
                                observableDriveModes.Add(driveMode);
                                break;

                            case VelocityStateDriver.SERVICE_NAME:
                                if (discoveredDriveModes.ContainsKey(component.JausAddress.Value))
                                {
                                    break;
                                }
                                driveMode = new DriveModes(this, component, remoteVelocityStateDriverService, VelocityStateDriver.SERVICE_NAME);
                                discoveredDriveModes.Add(component.JausAddress.Value, driveMode);
                                observableDriveModes.Add(driveMode);
                                break;

                            case PrimitiveDriver.SERVICE_NAME:
                                if (discoveredDriveModes.ContainsKey(component.JausAddress.Value))
                                {
                                    break;
                                }
                                driveMode = new DriveModes(this, component, remotePrimitiveDriverService, PrimitiveDriver.SERVICE_NAME);
                                discoveredDriveModes.Add(component.JausAddress.Value, driveMode);
                                observableDriveModes.Add(driveMode);
                                break;
                            }
                        }
                    }
                }
            }
        }
Пример #5
0
            string CmdSDM(List <string> a)
            {
                if (DriveMode == DriveModes.rear)
                {
                    DriveMode = DriveModes.full;
                }
                else
                {
                    DriveMode++;
                }
                switch (DriveMode)
                {
                case DriveModes.full:
                    WheelLB.Propulsion = true;
                    WheelRB.Propulsion = true;
                    WheelLF.Propulsion = true;
                    WheelRF.Propulsion = true;
                    break;

                case DriveModes.front:
                    WheelLB.Propulsion = false;
                    WheelRB.Propulsion = false;    // Turn off rear
                    WheelLF.Propulsion = true;
                    WheelRF.Propulsion = true;     // Turn on front
                    break;

                case DriveModes.rear:
                    WheelLB.Propulsion = true;
                    WheelRB.Propulsion = true;     // Turn on rear
                    WheelLF.Propulsion = false;
                    WheelRF.Propulsion = false;    // Turn off front
                    break;
                }
                ChangeFirst();
                return("");
            }
 /// <summary>
 /// Set the drive mode of the robot to the one given
 /// </summary>
 /// <param name="driveMode">The drive mode to set the robot to</param>
 public static void SetDriveMode(DriveModes driveMode)
 {
     EnsureJavaClassExists();
     genieInterfaceJavaClass.CallStatic("SetDriveMode", (int)driveMode);
 }