123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361 |
-
- using UnityEngine;
- using System.Collections;
- using System;
- using Valve.VR;
- using System.Runtime.InteropServices;
- using System.Collections.Generic;
- namespace Valve.VR
- {
- [Serializable]
-
-
-
- public class SteamVR_Action_Vector3 : SteamVR_Action_In<SteamVR_Action_Vector3_Source_Map, SteamVR_Action_Vector3_Source>, ISteamVR_Action_Vector3, ISerializationCallbackReceiver
- {
- public delegate void AxisHandler(SteamVR_Action_Vector3 fromAction, SteamVR_Input_Sources fromSource, Vector3 axis, Vector3 delta);
- public delegate void ActiveChangeHandler(SteamVR_Action_Vector3 fromAction, SteamVR_Input_Sources fromSource, bool active);
- public delegate void ChangeHandler(SteamVR_Action_Vector3 fromAction, SteamVR_Input_Sources fromSource, Vector3 axis, Vector3 delta);
- public delegate void UpdateHandler(SteamVR_Action_Vector3 fromAction, SteamVR_Input_Sources fromSource, Vector3 axis, Vector3 delta);
-
- public event ChangeHandler onChange
- { add { sourceMap[SteamVR_Input_Sources.Any].onChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onChange -= value; } }
-
- public event UpdateHandler onUpdate
- { add { sourceMap[SteamVR_Input_Sources.Any].onUpdate += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onUpdate -= value; } }
-
- public event AxisHandler onAxis
- { add { sourceMap[SteamVR_Input_Sources.Any].onAxis += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onAxis -= value; } }
-
- public event ActiveChangeHandler onActiveChange
- { add { sourceMap[SteamVR_Input_Sources.Any].onActiveChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onActiveChange -= value; } }
-
- public event ActiveChangeHandler onActiveBindingChange
- { add { sourceMap[SteamVR_Input_Sources.Any].onActiveBindingChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onActiveBindingChange -= value; } }
-
-
- public Vector3 axis { get { return sourceMap[SteamVR_Input_Sources.Any].axis; } }
-
-
- public Vector3 lastAxis { get { return sourceMap[SteamVR_Input_Sources.Any].lastAxis; } }
-
-
- public Vector3 delta { get { return sourceMap[SteamVR_Input_Sources.Any].delta; } }
-
-
- public Vector3 lastDelta { get { return sourceMap[SteamVR_Input_Sources.Any].lastDelta; } }
- public SteamVR_Action_Vector3() { }
-
-
- public Vector3 GetAxis(SteamVR_Input_Sources inputSource)
- {
- return sourceMap[inputSource].axis;
- }
-
-
- public Vector3 GetAxisDelta(SteamVR_Input_Sources inputSource)
- {
- return sourceMap[inputSource].delta;
- }
-
-
- public Vector3 GetLastAxis(SteamVR_Input_Sources inputSource)
- {
- return sourceMap[inputSource].lastAxis;
- }
-
-
- public Vector3 GetLastAxisDelta(SteamVR_Input_Sources inputSource)
- {
- return sourceMap[inputSource].lastDelta;
- }
-
-
-
-
- public void AddOnActiveChangeListener(ActiveChangeHandler functionToCall, SteamVR_Input_Sources inputSource)
- {
- sourceMap[inputSource].onActiveChange += functionToCall;
- }
-
-
-
-
- public void RemoveOnActiveChangeListener(ActiveChangeHandler functionToStopCalling, SteamVR_Input_Sources inputSource)
- {
- sourceMap[inputSource].onActiveChange -= functionToStopCalling;
- }
-
-
-
- public void AddOnActiveBindingChangeListener(ActiveChangeHandler functionToCall, SteamVR_Input_Sources inputSource)
- {
- sourceMap[inputSource].onActiveBindingChange += functionToCall;
- }
-
-
-
- public void RemoveOnActiveBindingChangeListener(ActiveChangeHandler functionToStopCalling, SteamVR_Input_Sources inputSource)
- {
- sourceMap[inputSource].onActiveBindingChange -= functionToStopCalling;
- }
-
-
-
- public void AddOnChangeListener(ChangeHandler functionToCall, SteamVR_Input_Sources inputSource)
- {
- sourceMap[inputSource].onChange += functionToCall;
- }
-
-
-
- public void RemoveOnChangeListener(ChangeHandler functionToStopCalling, SteamVR_Input_Sources inputSource)
- {
- sourceMap[inputSource].onChange -= functionToStopCalling;
- }
-
-
-
- public void AddOnUpdateListener(UpdateHandler functionToCall, SteamVR_Input_Sources inputSource)
- {
- sourceMap[inputSource].onUpdate += functionToCall;
- }
-
-
-
- public void RemoveOnUpdateListener(UpdateHandler functionToStopCalling, SteamVR_Input_Sources inputSource)
- {
- sourceMap[inputSource].onUpdate -= functionToStopCalling;
- }
-
-
-
- public void AddOnAxisListener(AxisHandler functionToCall, SteamVR_Input_Sources inputSource)
- {
- sourceMap[inputSource].onAxis += functionToCall;
- }
-
-
-
- public void RemoveOnAxisListener(AxisHandler functionToStopCalling, SteamVR_Input_Sources inputSource)
- {
- sourceMap[inputSource].onAxis -= functionToStopCalling;
- }
- void ISerializationCallbackReceiver.OnBeforeSerialize()
- {
- }
- void ISerializationCallbackReceiver.OnAfterDeserialize()
- {
- InitAfterDeserialize();
- }
- }
- public class SteamVR_Action_Vector3_Source_Map : SteamVR_Action_In_Source_Map<SteamVR_Action_Vector3_Source>
- {
- }
- public class SteamVR_Action_Vector3_Source : SteamVR_Action_In_Source, ISteamVR_Action_Vector3
- {
- protected static uint actionData_size = 0;
-
- public float changeTolerance = Mathf.Epsilon;
-
- public event SteamVR_Action_Vector3.AxisHandler onAxis;
-
- public event SteamVR_Action_Vector3.ActiveChangeHandler onActiveChange;
-
- public event SteamVR_Action_Vector3.ActiveChangeHandler onActiveBindingChange;
-
- public event SteamVR_Action_Vector3.ChangeHandler onChange;
-
- public event SteamVR_Action_Vector3.UpdateHandler onUpdate;
-
-
- public Vector3 axis { get; protected set; }
-
-
- public Vector3 lastAxis { get; protected set; }
-
-
- public Vector3 delta { get; protected set; }
-
-
- public Vector3 lastDelta { get; protected set; }
-
- public override bool changed { get; protected set; }
-
- public override bool lastChanged { get; protected set; }
-
- public override ulong activeOrigin
- {
- get
- {
- if (active)
- return actionData.activeOrigin;
- return 0;
- }
- }
-
- public override ulong lastActiveOrigin { get { return lastActionData.activeOrigin; } }
-
- public override bool active { get { return activeBinding && action.actionSet.IsActive(inputSource); } }
-
- public override bool activeBinding { get { return actionData.bActive; } }
-
- public override bool lastActive { get; protected set; }
-
- public override bool lastActiveBinding { get { return lastActionData.bActive; } }
- protected InputAnalogActionData_t actionData = new InputAnalogActionData_t();
- protected InputAnalogActionData_t lastActionData = new InputAnalogActionData_t();
- protected SteamVR_Action_Vector3 vector3Action;
-
-
-
- public override void Preinitialize(SteamVR_Action wrappingAction, SteamVR_Input_Sources forInputSource)
- {
- base.Preinitialize(wrappingAction, forInputSource);
- vector3Action = (SteamVR_Action_Vector3)wrappingAction;
- }
-
-
-
-
- public override void Initialize()
- {
- base.Initialize();
- if (actionData_size == 0)
- actionData_size = (uint)Marshal.SizeOf(typeof(InputAnalogActionData_t));
- }
-
-
-
- public override void UpdateValue()
- {
- lastActionData = actionData;
- lastActive = active;
- lastAxis = axis;
- lastDelta = delta;
- EVRInputError err = OpenVR.Input.GetAnalogActionData(handle, ref actionData, actionData_size, SteamVR_Input_Source.GetHandle(inputSource));
- if (err != EVRInputError.None)
- Debug.LogError("<b>[SteamVR]</b> GetAnalogActionData error (" + fullPath + "): " + err.ToString() + " handle: " + handle.ToString());
- updateTime = Time.realtimeSinceStartup;
- axis = new Vector3(actionData.x, actionData.y, actionData.z);
- delta = new Vector3(actionData.deltaX, actionData.deltaY, actionData.deltaZ);
- changed = false;
- if (active)
- {
- if (delta.magnitude > changeTolerance)
- {
- changed = true;
- changedTime = Time.realtimeSinceStartup + actionData.fUpdateTime;
- if (onChange != null)
- onChange.Invoke(vector3Action, inputSource, axis, delta);
- }
- if (axis != Vector3.zero)
- {
- if (onAxis != null)
- onAxis.Invoke(vector3Action, inputSource, axis, delta);
- }
- if (onUpdate != null)
- {
- onUpdate.Invoke(vector3Action, inputSource, axis, delta);
- }
- }
- if (onActiveBindingChange != null && lastActiveBinding != activeBinding)
- onActiveBindingChange.Invoke(vector3Action, inputSource, activeBinding);
- if (onActiveChange != null && lastActive != active)
- onActiveChange.Invoke(vector3Action, inputSource, activeBinding);
- }
- }
-
-
-
- public interface ISteamVR_Action_Vector3 : ISteamVR_Action_In_Source
- {
-
-
- Vector3 axis { get; }
-
-
- Vector3 lastAxis { get; }
-
-
- Vector3 delta { get; }
-
-
- Vector3 lastDelta { get; }
- }
- }
|