mirror of
https://github.com/cemu-project/DS4Windows.git
synced 2024-12-24 15:41:49 +01:00
Minor tweaks to speed up action execution
This commit is contained in:
parent
9a0966d966
commit
2a5ee9abe3
@ -184,7 +184,7 @@ namespace DS4Windows
|
|||||||
}
|
}
|
||||||
else if (device.getBattery() <= getFlashAt(deviceNum) && getFlashType(deviceNum) == 0 && !defualtLight && !device.isCharging())
|
else if (device.getBattery() <= getFlashAt(deviceNum) && getFlashType(deviceNum) == 0 && !defualtLight && !device.isCharging())
|
||||||
{
|
{
|
||||||
int level = device.Battery / 10;
|
int level = device.getBattery() / 10;
|
||||||
//if (level >= 10)
|
//if (level >= 10)
|
||||||
//level = 0; // all values of ~0% or >~100% are rendered the same
|
//level = 0; // all values of ~0% or >~100% are rendered the same
|
||||||
haptics.LightBarFlashDurationOn = BatteryIndicatorDurations[level, 0];
|
haptics.LightBarFlashDurationOn = BatteryIndicatorDurations[level, 0];
|
||||||
|
@ -785,7 +785,7 @@ namespace DS4Windows
|
|||||||
int MouseDeltaY = 0;
|
int MouseDeltaY = 0;
|
||||||
|
|
||||||
SyntheticState deviceState = Mapping.deviceState[device];
|
SyntheticState deviceState = Mapping.deviceState[device];
|
||||||
if (GetActions().Count > 0 && (getProfileActions(device).Count > 0 || !string.IsNullOrEmpty(tempprofilename[device])))
|
if (containsCustomAction(device) && (getProfileActions(device).Count > 0 || !string.IsNullOrEmpty(tempprofilename[device])))
|
||||||
MapCustomAction(device, cState, MappedState, eState, tp, ctrl);
|
MapCustomAction(device, cState, MappedState, eState, tp, ctrl);
|
||||||
if (ctrl.DS4Controllers[device] == null) return;
|
if (ctrl.DS4Controllers[device] == null) return;
|
||||||
|
|
||||||
@ -1197,25 +1197,29 @@ namespace DS4Windows
|
|||||||
}
|
}
|
||||||
public static async void MapCustomAction(int device, DS4State cState, DS4State MappedState, DS4StateExposed eState, Mouse tp, ControlService ctrl)
|
public static async void MapCustomAction(int device, DS4State cState, DS4State MappedState, DS4StateExposed eState, Mouse tp, ControlService ctrl)
|
||||||
{
|
{
|
||||||
try {
|
/* TODO: This method is slow sauce. Find ways to speed up action execution */
|
||||||
foreach (string actionname in ProfileActions[device])
|
try
|
||||||
|
{
|
||||||
|
List<string> profileActions = getProfileActions(device);
|
||||||
|
foreach (string actionname in profileActions)
|
||||||
{
|
{
|
||||||
//DS4KeyType keyType = getShiftCustomKeyType(device, customKey.Key);
|
//DS4KeyType keyType = getShiftCustomKeyType(device, customKey.Key);
|
||||||
SpecialAction action = GetAction(actionname);
|
SpecialAction action = GetAction(actionname);
|
||||||
int index = GetActionIndexOf(actionname);
|
int index = GetActionIndexOf(actionname);
|
||||||
if (actionDone.Count < index + 1)
|
int actionDoneCount = actionDone.Count;
|
||||||
|
if (actionDoneCount < index + 1)
|
||||||
actionDone.Add(new ActionState());
|
actionDone.Add(new ActionState());
|
||||||
else if (actionDone.Count > GetActions().Count())
|
else if (actionDoneCount > GetActions().Count())
|
||||||
actionDone.RemoveAt(actionDone.Count - 1);
|
actionDone.RemoveAt(actionDoneCount - 1);
|
||||||
double time;
|
double time = 0.0;
|
||||||
//If a key or button is assigned to the trigger, a key special action is used like
|
//If a key or button is assigned to the trigger, a key special action is used like
|
||||||
//a quick tap to use and hold to use the regular custom button/key
|
//a quick tap to use and hold to use the regular custom button/key
|
||||||
bool triggerToBeTapped = action.type == "Key" && action.trigger.Count == 1 &&
|
bool triggerToBeTapped = action.type == "Key" && action.trigger.Count == 1 &&
|
||||||
GetDS4Action(device, action.trigger[0].ToString(), false) == null;
|
GetDS4Action(device, action.trigger[0], false) == null;
|
||||||
if (!(action.name == "null" || index < 0))
|
if (!(action.name == "null" || index < 0))
|
||||||
{
|
{
|
||||||
bool triggeractivated = true;
|
bool triggeractivated = true;
|
||||||
if (action.delayTime > 0)
|
if (action.delayTime > 0.0)
|
||||||
{
|
{
|
||||||
triggeractivated = false;
|
triggeractivated = false;
|
||||||
bool subtriggeractivated = true;
|
bool subtriggeractivated = true;
|
||||||
@ -1287,7 +1291,8 @@ namespace DS4Windows
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool utriggeractivated = true;
|
bool utriggeractivated = true;
|
||||||
if (action.type == "Key" && action.uTrigger.Count > 0)
|
int uTriggerCount = action.uTrigger.Count;
|
||||||
|
if (action.type == "Key" && uTriggerCount > 0)
|
||||||
{
|
{
|
||||||
foreach (DS4Controls dc in action.uTrigger)
|
foreach (DS4Controls dc in action.uTrigger)
|
||||||
{
|
{
|
||||||
@ -1328,7 +1333,7 @@ namespace DS4Windows
|
|||||||
else if (dcs.actionType == DS4ControlSettings.ActionType.Macro)
|
else if (dcs.actionType == DS4ControlSettings.ActionType.Macro)
|
||||||
{
|
{
|
||||||
int[] keys = (int[])dcs.action;
|
int[] keys = (int[])dcs.action;
|
||||||
for (int i = 0; i < keys.Length; i++)
|
for (int i = 0, keysLen = keys.Length; i < keysLen; i++)
|
||||||
InputMethods.performKeyRelease((ushort)keys[i]);
|
InputMethods.performKeyRelease((ushort)keys[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1352,13 +1357,13 @@ namespace DS4Windows
|
|||||||
}
|
}
|
||||||
else if (triggeractivated && action.type == "Key")
|
else if (triggeractivated && action.type == "Key")
|
||||||
{
|
{
|
||||||
if (action.uTrigger.Count == 0 || (action.uTrigger.Count > 0 && untriggerindex[device] == -1 && !actionDone[index].dev[device]))
|
if (uTriggerCount == 0 || (uTriggerCount > 0 && untriggerindex[device] == -1 && !actionDone[index].dev[device]))
|
||||||
{
|
{
|
||||||
actionDone[index].dev[device] = true;
|
actionDone[index].dev[device] = true;
|
||||||
untriggerindex[device] = index;
|
untriggerindex[device] = index;
|
||||||
ushort key;
|
ushort key;
|
||||||
ushort.TryParse(action.details, out key);
|
ushort.TryParse(action.details, out key);
|
||||||
if (action.uTrigger.Count == 0)
|
if (uTriggerCount == 0)
|
||||||
{
|
{
|
||||||
SyntheticState.KeyPresses kp;
|
SyntheticState.KeyPresses kp;
|
||||||
if (!deviceState[device].keyPresses.TryGetValue(key, out kp))
|
if (!deviceState[device].keyPresses.TryGetValue(key, out kp))
|
||||||
@ -1375,7 +1380,7 @@ namespace DS4Windows
|
|||||||
InputMethods.performKeyPress(key);
|
InputMethods.performKeyPress(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (action.uTrigger.Count > 0 && utriggeractivated && action.type == "Key")
|
else if (uTriggerCount > 0 && utriggeractivated && action.type == "Key")
|
||||||
{
|
{
|
||||||
if (untriggerindex[device] > -1 && !actionDone[index].dev[device])
|
if (untriggerindex[device] > -1 && !actionDone[index].dev[device])
|
||||||
{
|
{
|
||||||
|
@ -447,7 +447,8 @@ namespace DS4Windows
|
|||||||
m_Config.containsCustomExtras[deviceNum] = m_Config.HasCustomExtras(deviceNum);
|
m_Config.containsCustomExtras[deviceNum] = m_Config.HasCustomExtras(deviceNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static object GetDS4Action(int deviceNum, string buttonName, bool shift) => m_Config.GetDS4Action(deviceNum, buttonName, shift);
|
public static object GetDS4Action(int deviceNum, string buttonName, bool shift) => m_Config.GetDS4Action(deviceNum, buttonName, shift);
|
||||||
|
public static object GetDS4Action(int deviceNum, DS4Controls control, bool shift) => m_Config.GetDS4Action(deviceNum, control, shift);
|
||||||
public static DS4KeyType GetDS4KeyType(int deviceNum, string buttonName, bool shift) => m_Config.GetDS4KeyType(deviceNum, buttonName, shift);
|
public static DS4KeyType GetDS4KeyType(int deviceNum, string buttonName, bool shift) => m_Config.GetDS4KeyType(deviceNum, buttonName, shift);
|
||||||
public static string GetDS4Extra(int deviceNum, string buttonName, bool shift) => m_Config.GetDS4Extra(deviceNum, buttonName, shift);
|
public static string GetDS4Extra(int deviceNum, string buttonName, bool shift) => m_Config.GetDS4Extra(deviceNum, buttonName, shift);
|
||||||
public static int GetDS4STrigger(int deviceNum, string buttonName) => m_Config.GetDS4STrigger(deviceNum, buttonName);
|
public static int GetDS4STrigger(int deviceNum, string buttonName) => m_Config.GetDS4STrigger(deviceNum, buttonName);
|
||||||
@ -483,7 +484,7 @@ namespace DS4Windows
|
|||||||
|
|
||||||
public static int GetActionIndexOf(string name)
|
public static int GetActionIndexOf(string name)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < m_Config.actions.Count; i++)
|
for (int i = 0, actionCount = m_Config.actions.Count; i < actionCount; i++)
|
||||||
if (m_Config.actions[i].name == name)
|
if (m_Config.actions[i].name == name)
|
||||||
return i;
|
return i;
|
||||||
return -1;
|
return -1;
|
||||||
@ -2349,6 +2350,26 @@ namespace DS4Windows
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public object GetDS4Action(int deviceNum, DS4Controls dc, bool shift)
|
||||||
|
{
|
||||||
|
int temp = (int)dc;
|
||||||
|
if (temp > 0)
|
||||||
|
{
|
||||||
|
int index = temp - 1;
|
||||||
|
DS4ControlSettings dcs = ds4settings[deviceNum][index];
|
||||||
|
if (shift)
|
||||||
|
{
|
||||||
|
return dcs.shiftTrigger;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return dcs.action;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public string GetDS4Extra(int deviceNum, string buttonName, bool shift)
|
public string GetDS4Extra(int deviceNum, string buttonName, bool shift)
|
||||||
{
|
{
|
||||||
DS4Controls dc;
|
DS4Controls dc;
|
||||||
|
Loading…
Reference in New Issue
Block a user