mirror of
https://github.com/cemu-project/DS4Windows.git
synced 2024-11-25 18:46:58 +01:00
Added DS4 feedback event workaround for lightbar color
This commit is contained in:
parent
6442030926
commit
653b7424ee
@ -413,7 +413,59 @@ namespace DS4Windows
|
|||||||
int devIndex = index;
|
int devIndex = index;
|
||||||
tempDS4.cont.FeedbackReceived += (sender, args) =>
|
tempDS4.cont.FeedbackReceived += (sender, args) =>
|
||||||
{
|
{
|
||||||
SetDevRumble(device, args.LargeMotor, args.SmallMotor, devIndex);
|
bool useRumble = false; bool useLight = false;
|
||||||
|
byte largeMotor = args.LargeMotor;
|
||||||
|
byte smallMotor = args.SmallMotor;
|
||||||
|
DS4Color color = new DS4Color(args.LightbarColor.Red,
|
||||||
|
args.LightbarColor.Green,
|
||||||
|
args.LightbarColor.Blue);
|
||||||
|
/*Console.WriteLine("IN EVENT");
|
||||||
|
Console.WriteLine("Rumble ({0}, {1}) | Light ({2}, {3}, {4}) {5}",
|
||||||
|
largeMotor, smallMotor, color.red, color.green, color.blue, DateTime.Now.ToLongTimeString());
|
||||||
|
*/
|
||||||
|
if (largeMotor != 0 || smallMotor != 0)
|
||||||
|
{
|
||||||
|
useRumble = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (color.red != 0 || color.green != 0 || color.blue != 0)
|
||||||
|
{
|
||||||
|
useLight = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!useRumble && !useLight)
|
||||||
|
{
|
||||||
|
//Console.WriteLine("Fallback");
|
||||||
|
if (device.LeftHeavySlowRumble != 0 || device.RightLightFastRumble != 0)
|
||||||
|
{
|
||||||
|
useRumble = true;
|
||||||
|
}
|
||||||
|
/*else if (device.LightBarColor.red != 0 ||
|
||||||
|
device.LightBarColor.green != 0 ||
|
||||||
|
device.LightBarColor.blue != 0)
|
||||||
|
{
|
||||||
|
useLight = true;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
if (useRumble)
|
||||||
|
{
|
||||||
|
//Console.WriteLine("Perform rumble");
|
||||||
|
SetDevRumble(device, largeMotor, smallMotor, devIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (useLight)
|
||||||
|
{
|
||||||
|
//Console.WriteLine("Change lightbar color");
|
||||||
|
DS4HapticState haptics = new DS4HapticState
|
||||||
|
{
|
||||||
|
LightBarColor = color,
|
||||||
|
};
|
||||||
|
device.SetHapticState(ref haptics);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Console.WriteLine();
|
||||||
};
|
};
|
||||||
|
|
||||||
outputslotMan.DeferredPlugin(tempDS4, index, outputDevices);
|
outputslotMan.DeferredPlugin(tempDS4, index, outputDevices);
|
||||||
|
@ -41,11 +41,12 @@ namespace DS4Windows
|
|||||||
|
|
||||||
public static void updateLightBar(DS4Device device, int deviceNum)
|
public static void updateLightBar(DS4Device device, int deviceNum)
|
||||||
{
|
{
|
||||||
DS4Color color;
|
DS4Color color = new DS4Color();
|
||||||
bool useForceLight = forcelight[deviceNum];
|
bool useForceLight = forcelight[deviceNum];
|
||||||
LightbarSettingInfo lightbarSettingInfo = getLightbarSettingsInfo(deviceNum);
|
LightbarSettingInfo lightbarSettingInfo = getLightbarSettingsInfo(deviceNum);
|
||||||
LightbarDS4WinInfo lightModeInfo = lightbarSettingInfo.ds4winSettings;
|
LightbarDS4WinInfo lightModeInfo = lightbarSettingInfo.ds4winSettings;
|
||||||
bool useLightRoutine = lightbarSettingInfo.mode == LightbarMode.DS4Win;
|
bool useLightRoutine = lightbarSettingInfo.mode == LightbarMode.DS4Win;
|
||||||
|
//bool useLightRoutine = false;
|
||||||
if (!defaultLight && !useForceLight && useLightRoutine)
|
if (!defaultLight && !useForceLight && useLightRoutine)
|
||||||
{
|
{
|
||||||
if (lightModeInfo.useCustomLed)
|
if (lightModeInfo.useCustomLed)
|
||||||
@ -264,14 +265,12 @@ namespace DS4Windows
|
|||||||
color = new DS4Color(0, 0, 0);
|
color = new DS4Color(0, 0, 0);
|
||||||
useLightRoutine = true;
|
useLightRoutine = true;
|
||||||
}
|
}
|
||||||
else
|
else if (useLightRoutine)
|
||||||
{
|
{
|
||||||
if (device.getConnectionType() == ConnectionType.BT)
|
if (device.getConnectionType() == ConnectionType.BT)
|
||||||
color = new DS4Color(32, 64, 64);
|
color = new DS4Color(32, 64, 64);
|
||||||
else
|
else
|
||||||
color = new DS4Color(0, 0, 0);
|
color = new DS4Color(0, 0, 0);
|
||||||
|
|
||||||
useLightRoutine = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (useLightRoutine)
|
if (useLightRoutine)
|
||||||
|
@ -17,6 +17,7 @@ namespace DS4Windows
|
|||||||
public byte red;
|
public byte red;
|
||||||
public byte green;
|
public byte green;
|
||||||
public byte blue;
|
public byte blue;
|
||||||
|
|
||||||
public DS4Color(Color c)
|
public DS4Color(Color c)
|
||||||
{
|
{
|
||||||
red = c.R;
|
red = c.R;
|
||||||
|
Loading…
Reference in New Issue
Block a user