static void Main(string[] args)
 {
     while (true)
     {
         Thread.Sleep(2000);
         LogitechGSDK.LogiSteeringInitialize(true);
         for (int i = 0; i < 1000000; i++)
         {
             //All the test functions are called on the first device plugged in(index = 0)
             LogitechGSDK.LogiSteeringInitialize(true);
             if (LogitechGSDK.LogiUpdate() && LogitechGSDK.LogiIsConnected(0))
             {
                 if (LogitechGSDK.LogiIsPlaying(0, LogitechGSDK.LOGI_FORCE_SPRING))
                 {
                     LogitechGSDK.LogiStopSpringForce(0);
                 }
                 else
                 {
                     LogitechGSDK.LogiPlaySpringForce(0, 50, 50, 50);
                 }
             }
             else
             {
                 LogitechGSDK.LogiPlayDirtRoadEffect(0, 100);
             }
         }
         Console.WriteLine("The program it's going to stop! ");
         LogitechGSDK.LogiSteeringShutdown();
     }
 }
예제 #2
0
        //Apply Constant Force
        void UpdateSteeringWheelRotation(float steer)
        {
            //steeringWheel.transform.localRotation = Quaternion.Euler (0, 0, -Input.GetAxis ("Horizontal")*90);
            //if (Input.GetKeyDown (KeyCode.F12))
            //debugGUI = !debugGUI;
            float steer_copy = steer;
            int   force      = (int)Mathf.Round(Mathf.Abs(steer_copy) * Mathf.Sign(steer_copy) * m_Car.GetComponent <Rigidbody>().velocity.magnitude * 7);

            //Debug.Log(force);
            //Debug.Log(force);


            if (force > 0)
            {
                LogitechGSDK.LogiPlayConstantForce(0, force);
            }
            else if (force < 0)
            {
                LogitechGSDK.LogiPlayConstantForce(0, force);
            }
            else
            {
                if (LogitechGSDK.LogiIsPlaying(0, LogitechGSDK.LOGI_FORCE_CONSTANT))
                {
                    LogitechGSDK.LogiStopConstantForce(0);
                }
            }
        }
예제 #3
0
    private void FixedUpdate()
    {
#if UNITY_STANDALONE_WIN
        if (handleIndex <= -1)
        {
            return;
        }
        if (dirtRemainTickCount > 0)
        {
            dirtRemainTickCount--;
        }
        else
        {
            if (LogitechGSDK.LogiIsPlaying(handleIndex, LogitechGSDK.LOGI_FORCE_DIRT_ROAD))
            {
                LogitechGSDK.LogiStopDirtRoadEffect(handleIndex);
            }
        }
        if (bumpyRemainTickCount > 0)
        {
            bumpyRemainTickCount--;
        }
        else
        {
            if (LogitechGSDK.LogiIsPlaying(handleIndex, LogitechGSDK.LOGI_FORCE_BUMPY_ROAD))
            {
                LogitechGSDK.LogiStopBumpyRoadEffect(handleIndex);
            }
        }
#endif
    }
예제 #4
0
    public void BumpyTickCount(int count, int strength)
    {
#if UNITY_STANDALONE_WIN
        bumpyRemainTickCount = count;
        if (!LogitechGSDK.LogiIsPlaying(handleIndex, LogitechGSDK.LOGI_FORCE_BUMPY_ROAD))
        {
            LogitechGSDK.LogiPlayBumpyRoadEffect(handleIndex, strength);
        }
#endif
    }
예제 #5
0
 public void update()
 {
     //All the test functions are called on the first device plugged in(index = 0)
     if (LogitechGSDK.LogiUpdate() && LogitechGSDK.LogiIsConnected(0))
     {
         if (LogitechGSDK.LogiIsPlaying(0, LogitechGSDK.LOGI_FORCE_SPRING))
         {
             LogitechGSDK.LogiStopSpringForce(0);
         }
         else
         {
             LogitechGSDK.LogiPlaySpringForce(0, 50, 50, 50);
         }
     }
 }
예제 #6
0
    // Update is called once per frame
    void Update()
    {
        //All the test functions are called on the first device plugged in(index = 0)
        if (LogitechGSDK.LogiUpdate() && LogitechGSDK.LogiIsConnected(0))
        {
            //CONTROLLER PROPERTIES
            StringBuilder deviceName = new StringBuilder(256);
            LogitechGSDK.LogiGetFriendlyProductName(0, deviceName, 256);
            propertiesEdit  = "Current Controller : " + deviceName + "\n";
            propertiesEdit += "Current controller properties : \n\n";
            LogitechGSDK.LogiControllerPropertiesData actualProperties = new LogitechGSDK.LogiControllerPropertiesData();
            LogitechGSDK.LogiGetCurrentControllerProperties(0, ref actualProperties);
            propertiesEdit += "forceEnable = " + actualProperties.forceEnable + "\n";
            propertiesEdit += "overallGain = " + actualProperties.overallGain + "\n";
            propertiesEdit += "springGain = " + actualProperties.springGain + "\n";
            propertiesEdit += "damperGain = " + actualProperties.damperGain + "\n";
            propertiesEdit += "defaultSpringEnabled = " + actualProperties.defaultSpringEnabled + "\n";
            propertiesEdit += "combinePedals = " + actualProperties.combinePedals + "\n";
            propertiesEdit += "wheelRange = " + actualProperties.wheelRange + "\n";
            propertiesEdit += "gameSettingsEnabled = " + actualProperties.gameSettingsEnabled + "\n";
            propertiesEdit += "allowGameSettings = " + actualProperties.allowGameSettings + "\n";

            //CONTROLLER STATE
            actualState = "Steering wheel current state : \n\n";
            LogitechGSDK.DIJOYSTATE2ENGINES rec;
            rec          = LogitechGSDK.LogiGetStateUnity(0);
            actualState += "x-axis position :" + rec.lX + "\n";
            actualState += "y-axis position :" + rec.lY + "\n";
            actualState += "z-axis position :" + rec.lZ + "\n";
            actualState += "x-axis rotation :" + rec.lRx + "\n";
            actualState += "y-axis rotation :" + rec.lRy + "\n";
            actualState += "z-axis rotation :" + rec.lRz + "\n";
            actualState += "extra axes positions 1 :" + rec.rglSlider[0] + "\n";
            actualState += "extra axes positions 2 :" + rec.rglSlider[1] + "\n";
            switch (rec.rgdwPOV[0])
            {
            case (0): actualState += "POV : UP\n"; break;

            case (4500): actualState += "POV : UP-RIGHT\n"; break;

            case (9000): actualState += "POV : RIGHT\n"; break;

            case (13500): actualState += "POV : DOWN-RIGHT\n"; break;

            case (18000): actualState += "POV : DOWN\n"; break;

            case (22500): actualState += "POV : DOWN-LEFT\n"; break;

            case (27000): actualState += "POV : LEFT\n"; break;

            case (31500): actualState += "POV : UP-LEFT\n"; break;

            default: actualState += "POV : CENTER\n"; break;
            }

            //Button status :

            buttonStatus = "Button pressed : \n\n";
            for (int i = 0; i < 128; i++)
            {
                if (rec.rgbButtons[i] == 128)
                {
                    buttonStatus += "Button " + i + " pressed\n";
                }
            }

            /* THIS AXIS ARE NEVER REPORTED BY LOGITECH CONTROLLERS
             *
             * actualState += "x-axis velocity :" + rec.lVX + "\n";
             * actualState += "y-axis velocity :" + rec.lVY + "\n";
             * actualState += "z-axis velocity :" + rec.lVZ + "\n";
             * actualState += "x-axis angular velocity :" + rec.lVRx + "\n";
             * actualState += "y-axis angular velocity :" + rec.lVRy + "\n";
             * actualState += "z-axis angular velocity :" + rec.lVRz + "\n";
             * actualState += "extra axes velocities 1 :" + rec.rglVSlider[0] + "\n";
             * actualState += "extra axes velocities 2 :" + rec.rglVSlider[1] + "\n";
             * actualState += "x-axis acceleration :" + rec.lAX + "\n";
             * actualState += "y-axis acceleration :" + rec.lAY + "\n";
             * actualState += "z-axis acceleration :" + rec.lAZ + "\n";
             * actualState += "x-axis angular acceleration :" + rec.lARx + "\n";
             * actualState += "y-axis angular acceleration :" + rec.lARy + "\n";
             * actualState += "z-axis angular acceleration :" + rec.lARz + "\n";
             * actualState += "extra axes accelerations 1 :" + rec.rglASlider[0] + "\n";
             * actualState += "extra axes accelerations 2 :" + rec.rglASlider[1] + "\n";
             * actualState += "x-axis force :" + rec.lFX + "\n";
             * actualState += "y-axis force :" + rec.lFY + "\n";
             * actualState += "z-axis force :" + rec.lFZ + "\n";
             * actualState += "x-axis torque :" + rec.lFRx + "\n";
             * actualState += "y-axis torque :" + rec.lFRy + "\n";
             * actualState += "z-axis torque :" + rec.lFRz + "\n";
             * actualState += "extra axes forces 1 :" + rec.rglFSlider[0] + "\n";
             * actualState += "extra axes forces 2 :" + rec.rglFSlider[1] + "\n";
             */

            int    shifterTipe   = LogitechGSDK.LogiGetShifterMode(0);
            string shifterString = "";
            if (shifterTipe == 1)
            {
                shifterString = "Gated";
            }
            else if (shifterTipe == 0)
            {
                shifterString = "Sequential";
            }
            else
            {
                shifterString = "Unknown";
            }
            actualState += "\nSHIFTER MODE:" + shifterString;



            // FORCES AND EFFECTS
            activeForces = "Active forces and effects :\n";

            //Spring Force -> S
            if (Input.GetKeyUp(KeyCode.S))
            {
                if (LogitechGSDK.LogiIsPlaying(0, LogitechGSDK.LOGI_FORCE_SPRING))
                {
                    LogitechGSDK.LogiStopSpringForce(0);
                    activeForceAndEffect[0] = "";
                }
                else
                {
                    LogitechGSDK.LogiPlaySpringForce(0, 50, 50, 50);
                    activeForceAndEffect[0] = "Spring Force\n ";
                }
            }

            //Constant Force -> C
            if (Input.GetKeyUp(KeyCode.C))
            {
                if (LogitechGSDK.LogiIsPlaying(0, LogitechGSDK.LOGI_FORCE_CONSTANT))
                {
                    LogitechGSDK.LogiStopConstantForce(0);
                    activeForceAndEffect[1] = "";
                }
                else
                {
                    LogitechGSDK.LogiPlayConstantForce(0, 50);
                    activeForceAndEffect[1] = "Constant Force\n ";
                }
            }

            //Damper Force -> D
            if (Input.GetKeyUp(KeyCode.D))
            {
                if (LogitechGSDK.LogiIsPlaying(0, LogitechGSDK.LOGI_FORCE_DAMPER))
                {
                    LogitechGSDK.LogiStopDamperForce(0);
                    activeForceAndEffect[2] = "";
                }
                else
                {
                    LogitechGSDK.LogiPlayDamperForce(0, 50);
                    activeForceAndEffect[2] = "Damper Force\n ";
                }
            }

            //Side Collision Force -> left or right arrow
            if (Input.GetKeyUp(KeyCode.LeftArrow) || Input.GetKey(KeyCode.RightArrow))
            {
                LogitechGSDK.LogiPlaySideCollisionForce(0, 60);
            }

            //Front Collision Force -> up arrow
            if (Input.GetKeyUp(KeyCode.UpArrow))
            {
                LogitechGSDK.LogiPlayFrontalCollisionForce(0, 60);
            }

            //Dirt Road Effect-> I
            if (Input.GetKeyUp(KeyCode.I))
            {
                if (LogitechGSDK.LogiIsPlaying(0, LogitechGSDK.LOGI_FORCE_DIRT_ROAD))
                {
                    LogitechGSDK.LogiStopDirtRoadEffect(0);
                    activeForceAndEffect[3] = "";
                }
                else
                {
                    LogitechGSDK.LogiPlayDirtRoadEffect(0, 50);
                    activeForceAndEffect[3] = "Dirt Road Effect\n ";
                }
            }

            //Bumpy Road Effect-> B
            if (Input.GetKeyUp(KeyCode.B))
            {
                if (LogitechGSDK.LogiIsPlaying(0, LogitechGSDK.LOGI_FORCE_BUMPY_ROAD))
                {
                    LogitechGSDK.LogiStopBumpyRoadEffect(0);
                    activeForceAndEffect[4] = "";
                }
                else
                {
                    LogitechGSDK.LogiPlayBumpyRoadEffect(0, 50);
                    activeForceAndEffect[4] = "Bumpy Road Effect\n";
                }
            }

            //Slippery Road Effect-> L
            if (Input.GetKeyUp(KeyCode.L))
            {
                if (LogitechGSDK.LogiIsPlaying(0, LogitechGSDK.LOGI_FORCE_SLIPPERY_ROAD))
                {
                    LogitechGSDK.LogiStopSlipperyRoadEffect(0);
                    activeForceAndEffect[5] = "";
                }
                else
                {
                    LogitechGSDK.LogiPlaySlipperyRoadEffect(0, 50);
                    activeForceAndEffect[5] = "Slippery Road Effect\n ";
                }
            }

            //Surface Effect-> U
            if (Input.GetKeyUp(KeyCode.U))
            {
                if (LogitechGSDK.LogiIsPlaying(0, LogitechGSDK.LOGI_FORCE_SURFACE_EFFECT))
                {
                    LogitechGSDK.LogiStopSurfaceEffect(0);
                    activeForceAndEffect[6] = "";
                }
                else
                {
                    LogitechGSDK.LogiPlaySurfaceEffect(0, LogitechGSDK.LOGI_PERIODICTYPE_SQUARE, 50, 1000);
                    activeForceAndEffect[6] = "Surface Effect\n";
                }
            }

            //Car Airborne -> A
            if (Input.GetKeyUp(KeyCode.A))
            {
                if (LogitechGSDK.LogiIsPlaying(0, LogitechGSDK.LOGI_FORCE_CAR_AIRBORNE))
                {
                    LogitechGSDK.LogiStopCarAirborne(0);
                    activeForceAndEffect[7] = "";
                }
                else
                {
                    LogitechGSDK.LogiPlayCarAirborne(0);
                    activeForceAndEffect[7] = "Car Airborne\n ";
                }
            }

            //Soft Stop Force -> O
            if (Input.GetKeyUp(KeyCode.O))
            {
                if (LogitechGSDK.LogiIsPlaying(0, LogitechGSDK.LOGI_FORCE_SOFTSTOP))
                {
                    LogitechGSDK.LogiStopSoftstopForce(0);
                    activeForceAndEffect[8] = "";
                }
                else
                {
                    LogitechGSDK.LogiPlaySoftstopForce(0, 20);
                    activeForceAndEffect[8] = "Soft Stop Force\n";
                }
            }

            //Set preferred controller properties -> PageUp
            if (Input.GetKeyUp(KeyCode.PageUp))
            {
                //Setting example values
                properties.wheelRange           = 90;
                properties.forceEnable          = true;
                properties.overallGain          = 80;
                properties.springGain           = 80;
                properties.damperGain           = 80;
                properties.allowGameSettings    = true;
                properties.combinePedals        = false;
                properties.defaultSpringEnabled = true;
                properties.defaultSpringGain    = 80;
                LogitechGSDK.LogiSetPreferredControllerProperties(properties);
            }

            //Play leds -> P
            if (Input.GetKeyUp(KeyCode.P))
            {
                LogitechGSDK.LogiPlayLeds(0, 20, 20, 20);
            }

            for (int i = 0; i < 9; i++)
            {
                activeForces += activeForceAndEffect[i];
            }
        }
        else if (!LogitechGSDK.LogiIsConnected(0))
        {
            actualState = "PLEASE PLUG IN A STEERING WHEEL OR A FORCE FEEDBACK CONTROLLER";
        }
        else
        {
            actualState = "THIS WINDOW NEEDS TO BE IN FOREGROUND IN ORDER FOR THE SDK TO WORK PROPERLY";
        }
    }
예제 #7
0
    // Update is called once per frame
    void Update()
    {
        if (LogitechGSDK.LogiUpdate() && LogitechGSDK.LogiIsConnected(0))
        {
            actualState = "Steering wheel current state : \n\n";
            LogitechGSDK.DIJOYSTATE2ENGINES rec;
            rec          = LogitechGSDK.LogiGetStateUnity(0);
            actualState += "x-axis position :" + rec.lX + "\n";

            float actualState_450 = rec.lX * 0.01373f;
            Debug.Log("actualState_450:" + actualState_450);

            LogitchSteelRotation = actualState_450;

            LogitchGasRotation   = MapValue(32767, -32767, 0, 25, rec.lY);
            LogitchBreakRotation = MapValue(32767, -32767, 0, 25, rec.lRz);
            LogitchCluthRotation = MapValue(32767, -32767, 0, 25, rec.rglSlider[0]);

            //Button status :
            string buttonStatus = "Button pressed : ";
            for (int i = 0; i < 128; i++)
            {
                if (rec.rgbButtons[i] == 128)
                {
                    buttonStatus += "Button " + i + " pressed\n";
                    Debug.Log(" buttonStatus: " + buttonStatus);
                }
                if (rec.rgbButtons[3] == 128)
                {
                    ForkUp = true;
                }
                else if (rec.rgbButtons[3] != 128)
                {
                    ForkUp = false;
                }

                if (rec.rgbButtons[0] == 128)
                {
                    ForkDown = true;
                }
                else if (rec.rgbButtons[0] != 128)
                {
                    ForkDown = false;
                }

                if (rec.rgbButtons[1] == 128)
                {
                    MastTiltForwards = true;
                }
                else if (rec.rgbButtons[1] != 128)
                {
                    MastTiltForwards = false;
                }

                if (rec.rgbButtons[2] == 128)
                {
                    MastTiltBackwards = true;
                }
                else if (rec.rgbButtons[2] != 128)
                {
                    MastTiltBackwards = false;
                }


                if (rec.rgbButtons[14] == 128)
                {
                    FrontMove = true;
                }
                else if (rec.rgbButtons[14] != 128)
                {
                    FrontMove = false;
                }


                if (rec.rgbButtons[15] == 128)
                {
                    BackMove = true;
                }
                else if (rec.rgbButtons[15] != 128)
                {
                    BackMove = false;
                }
            }
        }


        //Spring Force -> S
        if (Input.GetKeyUp(KeyCode.S))
        {
            if (LogitechGSDK.LogiIsPlaying(0, LogitechGSDK.LOGI_FORCE_SPRING))
            {
                LogitechGSDK.LogiStopSpringForce(0);
                Debug.Log("A");
            }
            else
            {
                LogitechGSDK.LogiPlaySpringForce(0, 0, 50, 50);
                Debug.Log("B");
            }
        }
    }