This commit is contained in:
2025-01-17 13:10:42 +01:00
commit 4536213c91
15115 changed files with 1442174 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 40cf321da8ee4fc428f65b23423528d2
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6a390ac9b9af0fb49b702bae14eaed84
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,80 @@
using UnityEngine.InputSystem.LowLevel;
namespace UnityEngine.InputSystem
{
internal partial class FastMouse : IInputStateCallbackReceiver, IEventMerger
{
protected new void OnNextUpdate()
{
// Changing these separately seems to not result in much of a difference
// compared to just doing an InputState.Change with a complete MouseState.
InputState.Change(delta, Vector2.zero, InputState.currentUpdateType);
InputState.Change(scroll, Vector2.zero, InputState.currentUpdateType);
}
// For FastMouse, we know that our layout is MouseState so we can just go directly
// to memory.
protected new unsafe void OnStateEvent(InputEventPtr eventPtr)
{
if (eventPtr.type != StateEvent.Type)
{
base.OnStateEvent(eventPtr);
return;
}
var stateEvent = StateEvent.FromUnchecked(eventPtr);
if (stateEvent->stateFormat != MouseState.Format)
{
base.OnStateEvent(eventPtr);
return;
}
var newState = *(MouseState*)stateEvent->state;
var stateFromDevice = (MouseState*)((byte*)currentStatePtr + m_StateBlock.byteOffset);
newState.delta += stateFromDevice->delta;
newState.scroll += stateFromDevice->scroll;
InputState.Change(this, ref newState, InputState.currentUpdateType, eventPtr: eventPtr);
}
void IInputStateCallbackReceiver.OnNextUpdate()
{
OnNextUpdate();
}
void IInputStateCallbackReceiver.OnStateEvent(InputEventPtr eventPtr)
{
OnStateEvent(eventPtr);
}
internal static unsafe bool MergeForward(InputEventPtr currentEventPtr, InputEventPtr nextEventPtr)
{
if (currentEventPtr.type != StateEvent.Type || nextEventPtr.type != StateEvent.Type)
return false;
var currentEvent = StateEvent.FromUnchecked(currentEventPtr);
var nextEvent = StateEvent.FromUnchecked(nextEventPtr);
if (currentEvent->stateFormat != MouseState.Format || nextEvent->stateFormat != MouseState.Format)
return false;
var currentState = (MouseState*)currentEvent->state;
var nextState = (MouseState*)nextEvent->state;
// if buttons or clickCount changed we need to process it, so don't merge events together
if (currentState->buttons != nextState->buttons || currentState->clickCount != nextState->clickCount)
return false;
nextState->delta += currentState->delta;
nextState->scroll += currentState->scroll;
return true;
}
bool IEventMerger.MergeForward(InputEventPtr currentEventPtr, InputEventPtr nextEventPtr)
{
return MergeForward(currentEventPtr, nextEventPtr);
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 9c425cd71d0042cbbd24386f4e4b9ec1
timeCreated: 1604771146

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 30858d79688750445a07107b96c917fe
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: