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(); } }
//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); } } }
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 }
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 }
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); } } }
// 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"; } }
// 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"); } } }