Added an option to disable hotkeys in OpenSeeVRMDriver

This commit is contained in:
Emiliana 2020-06-29 20:02:55 +02:00
parent 7f2a8fea5e
commit 829bacdba8

View file

@ -69,6 +69,8 @@ public class OpenSeeVRMDriver : MonoBehaviour {
public Vector2 gazeCenter = Vector2.zero; public Vector2 gazeCenter = Vector2.zero;
[Tooltip("This component lets you customize the automatic eye blinking.")] [Tooltip("This component lets you customize the automatic eye blinking.")]
public OpenSeeEyeBlink eyeBlinker = new OpenSeeEyeBlink(); public OpenSeeEyeBlink eyeBlinker = new OpenSeeEyeBlink();
[Tooltip("When enabled, expressions will respond to global hotkeys.")]
public bool hotkeys = true;
[Tooltip("This component lets configure your VRM expressions.")] [Tooltip("This component lets configure your VRM expressions.")]
public OpenSeeVRMExpression[] expressions = new OpenSeeVRMExpression[]{ public OpenSeeVRMExpression[] expressions = new OpenSeeVRMExpression[]{
new OpenSeeVRMExpression("neutral", BlendShapePreset.Neutral, 1f, 1f, 1f, true, true, 0x70, true, true, false, true, 50f, 120f), new OpenSeeVRMExpression("neutral", BlendShapePreset.Neutral, 1f, 1f, 1f, true, true, 0x70, true, true, false, true, 50f, 120f),
@ -687,32 +689,34 @@ public class OpenSeeVRMDriver : MonoBehaviour {
return; return;
} }
bool shiftKey = (GetAsyncKeyState(0x10) & 0x8000U) != 0;
bool ctrlKey = (GetAsyncKeyState(0x11) & 0x8000U) != 0;
bool altKey = (GetAsyncKeyState(0x12) & 0x8000U) != 0;
bool trigger = false;
if (overridden) if (overridden)
currentExpression = toggledExpression; currentExpression = toggledExpression;
foreach (var expression in expressionMap.Values) { bool trigger = false;
if (expression.hotkey >= 0 && expression.hotkey < 256 && (GetAsyncKeyState(expression.hotkey) & 0x8000) != 0 && shiftKey == expression.shiftKey && ctrlKey == expression.ctrlKey && altKey == expression.altKey) { if (hotkeys) {
if (!continuedPress.Contains(expression) && overridden && toggledExpression == expression) { bool shiftKey = (GetAsyncKeyState(0x10) & 0x8000U) != 0;
overridden = false; bool ctrlKey = (GetAsyncKeyState(0x11) & 0x8000U) != 0;
toggledExpression = null; bool altKey = (GetAsyncKeyState(0x12) & 0x8000U) != 0;
if (currentExpression == expression) foreach (var expression in expressionMap.Values) {
currentExpression = null; if (expression.hotkey >= 0 && expression.hotkey < 256 && (GetAsyncKeyState(expression.hotkey) & 0x8000) != 0 && shiftKey == expression.shiftKey && ctrlKey == expression.ctrlKey && altKey == expression.altKey) {
continuedPress.Add(expression); if (!continuedPress.Contains(expression) && overridden && toggledExpression == expression) {
} overridden = false;
if (!continuedPress.Contains(expression)) { toggledExpression = null;
if (expression.toggle) { if (currentExpression == expression)
overridden = true; currentExpression = null;
toggledExpression = expression;
continuedPress.Add(expression); continuedPress.Add(expression);
} else }
trigger = true; if (!continuedPress.Contains(expression)) {
currentExpression = expression; if (expression.toggle) {
overridden = true;
toggledExpression = expression;
continuedPress.Add(expression);
} else
trigger = true;
currentExpression = expression;
}
} else {
continuedPress.Remove(expression);
} }
} else {
continuedPress.Remove(expression);
} }
} }