Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ namespace Valve.VR
[InitializeOnLoad]
public class SteamVR_Update : EditorWindow
{
const string currentVersion = "2.1";
const string currentVersion = "2.8";
const string versionUrl = "https://media.steampowered.com/apps/steamvr/unitypluginversion.txt";
const string notesUrl = "https://media.steampowered.com/apps/steamvr/unityplugin-v{0}.txt";
const string pluginUrl = "https://u3d.as/content/valve-corporation/steam-vr-plugin";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,13 @@ public class SteamVR_CopyExampleInputFiles : Editor

[UnityEditor.Callbacks.DidReloadScripts]
private static void OnReloadScripts()
{
EditorApplication.update += Update;
}

private static void Update()
{
EditorApplication.update -= Update;
SteamVR_Input.CheckOldLocation();
CopyFiles();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,32 @@ namespace Valve.VR
/// </summary>
public static class SteamVR_ActionSet_Manager
{
public static VRActiveActionSet_t[] rawActiveActionSetArray;
public static VRActiveActionSet_t[] rawActiveActionSetArray
{
get
{
if (currentArraySize <= 0)
return null;
else
return poolActiveActionSetArrays[currentArraySize];
}
}

[NonSerialized]
private static uint activeActionSetSize;

[NonSerialized]
private static bool changed = false;

[NonSerialized]
private static int currentArraySize;
[NonSerialized]
private static Dictionary<int, VRActiveActionSet_t[]> poolActiveActionSetArrays;

public static void Initialize()
{
activeActionSetSize = (uint)(Marshal.SizeOf(typeof(VRActiveActionSet_t)));
poolActiveActionSetArrays = new Dictionary<int, VRActiveActionSet_t[]>();
}

/// <summary>
Expand Down Expand Up @@ -74,10 +90,38 @@ public static void SetChanged()
changed = true;
}

private static int GetNewArraySize()
{
int size = 0;

SteamVR_Input_Sources[] sources = SteamVR_Input_Source.GetAllSources();
for (int actionSetIndex = 0; actionSetIndex < SteamVR_Input.actionSets.Length; actionSetIndex++)
{
SteamVR_ActionSet set = SteamVR_Input.actionSets[actionSetIndex];

for (int sourceIndex = 0; sourceIndex < sources.Length; sourceIndex++)
{
SteamVR_Input_Sources source = sources[sourceIndex];

if (set.ReadRawSetActive(source))
{
size++;
}
}
}

return size;
}

private static void UpdateActionSetsArray()
{
List<VRActiveActionSet_t> activeActionSetsList = new List<VRActiveActionSet_t>();
int newArraySize = GetNewArraySize();
if (poolActiveActionSetArrays.ContainsKey(newArraySize) == false)
{
poolActiveActionSetArrays[newArraySize] = new VRActiveActionSet_t[newArraySize];
}

int arrayIndex = 0;
SteamVR_Input_Sources[] sources = SteamVR_Input_Source.GetAllSources();

for (int actionSetIndex = 0; actionSetIndex < SteamVR_Input.actionSets.Length; actionSetIndex++)
Expand All @@ -90,25 +134,17 @@ private static void UpdateActionSetsArray()

if (set.ReadRawSetActive(source))
{
VRActiveActionSet_t activeSet = new VRActiveActionSet_t();
activeSet.ulActionSet = set.handle;
activeSet.nPriority = set.ReadRawSetPriority(source);
activeSet.ulRestrictedToDevice = SteamVR_Input_Source.GetHandle(source);

int insertionIndex = 0;
for (insertionIndex = 0; insertionIndex < activeActionSetsList.Count; insertionIndex++)
{
if (activeActionSetsList[insertionIndex].nPriority > activeSet.nPriority)
break;
}
activeActionSetsList.Insert(insertionIndex, activeSet);
poolActiveActionSetArrays[newArraySize][arrayIndex].ulActionSet = set.handle;
poolActiveActionSetArrays[newArraySize][arrayIndex].nPriority = set.ReadRawSetPriority(source);
poolActiveActionSetArrays[newArraySize][arrayIndex].ulRestrictedToDevice = SteamVR_Input_Source.GetHandle(source);

arrayIndex++;
}
}
}

changed = false;

rawActiveActionSetArray = activeActionSetsList.ToArray();
currentArraySize = newArraySize;

if (Application.isEditor || updateDebugTextInBuilds)
UpdateDebugText();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -378,6 +378,30 @@ public void RemoveAllListeners()
foreach (Delegate existingDelegate in delegates)
onState -= (SteamVR_Action_Boolean.StateHandler)existingDelegate;
}

if (onChange != null)
{
delegates = onChange.GetInvocationList();
if (delegates != null)
foreach (Delegate existingDelegate in delegates)
onChange -= (SteamVR_Action_Boolean.ChangeHandler)existingDelegate;
}

if (onUpdate != null)
{
delegates = onUpdate.GetInvocationList();
if (delegates != null)
foreach (Delegate existingDelegate in delegates)
onUpdate -= (SteamVR_Action_Boolean.UpdateHandler)existingDelegate;
}

if (onActiveChange != null)
{
delegates = onActiveChange.GetInvocationList();
if (delegates != null)
foreach (Delegate existingDelegate in delegates)
onActiveChange -= (SteamVR_Action_Boolean.ActiveChangeHandler)existingDelegate;
}
}

/// <summary><strong>[Should not be called by user code]</strong>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -569,6 +569,14 @@ public virtual void RemoveAllListeners()
onActiveChange -= (SteamVR_Action_Pose.ActiveChangeHandler)existingDelegate;
}

if (onActiveBindingChange != null)
{
delegates = onActiveBindingChange.GetInvocationList();
if (delegates != null)
foreach (Delegate existingDelegate in delegates)
onActiveBindingChange -= (SteamVR_Action_Pose.ActiveChangeHandler)existingDelegate;
}

if (onChange != null)
{
delegates = onChange.GetInvocationList();
Expand Down Expand Up @@ -618,7 +626,7 @@ public override void UpdateValue()
UpdateValue(false);
}

public static float framesAhead = 2;
public static float framesAhead = -1;

/// <summary><strong>[Should not be called by user code]</strong>
/// Updates the data for this action and this input source. Sends related events.
Expand All @@ -634,10 +642,10 @@ public virtual void UpdateValue(bool skipStateAndEventUpdates)

EVRInputError err;

if (framesAhead == 0)
if (framesAhead == -1)
err = OpenVR.Input.GetPoseActionDataForNextFrame(handle, universeOrigin, ref poseActionData, poseActionData_size, inputSourceHandle);
else
err = OpenVR.Input.GetPoseActionDataRelativeToNow(handle, universeOrigin, framesAhead * (Time.timeScale / SteamVR.instance.hmd_DisplayFrequency), ref poseActionData, poseActionData_size, inputSourceHandle);
err = OpenVR.Input.GetPoseActionDataRelativeToNow(handle, universeOrigin, framesAhead * (1 / SteamVR.instance.hmd_DisplayFrequency), ref poseActionData, poseActionData_size, inputSourceHandle);

if (err != EVRInputError.None)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,22 @@ public void RemoveAllListeners()
foreach (Delegate existingDelegate in delegates)
onChange -= (SteamVR_Action_Single.ChangeHandler)existingDelegate;
}

if (onActiveChange != null)
{
delegates = onActiveChange.GetInvocationList();
if (delegates != null)
foreach (Delegate existingDelegate in delegates)
onActiveChange -= (SteamVR_Action_Single.ActiveChangeHandler)existingDelegate;
}

if (onActiveBindingChange != null)
{
delegates = onActiveBindingChange.GetInvocationList();
if (delegates != null)
foreach (Delegate existingDelegate in delegates)
onActiveBindingChange -= (SteamVR_Action_Single.ActiveChangeHandler)existingDelegate;
}
}

/// <summary><strong>[Should not be called by user code]</strong>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -904,6 +904,14 @@ public override void RemoveAllListeners()
onActiveChange -= (SteamVR_Action_Skeleton.ActiveChangeHandler)existingDelegate;
}

if (onActiveBindingChange != null)
{
delegates = onActiveBindingChange.GetInvocationList();
if (delegates != null)
foreach (Delegate existingDelegate in delegates)
onActiveBindingChange -= (SteamVR_Action_Skeleton.ActiveChangeHandler)existingDelegate;
}

if (onChange != null)
{
delegates = onChange.GetInvocationList();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,22 @@ public void RemoveAllListeners()
foreach (Delegate existingDelegate in delegates)
onChange -= (SteamVR_Action_Vector2.ChangeHandler)existingDelegate;
}

if (onActiveChange != null)
{
delegates = onActiveChange.GetInvocationList();
if (delegates != null)
foreach (Delegate existingDelegate in delegates)
onActiveChange -= (SteamVR_Action_Vector2.ActiveChangeHandler)existingDelegate;
}

if (onActiveBindingChange != null)
{
delegates = onActiveBindingChange.GetInvocationList();
if (delegates != null)
foreach (Delegate existingDelegate in delegates)
onActiveBindingChange -= (SteamVR_Action_Vector2.ActiveChangeHandler)existingDelegate;
}
}

/// <summary><strong>[Should not be called by user code]</strong>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,22 @@ public void RemoveAllListeners()
foreach (Delegate existingDelegate in delegates)
onChange -= (SteamVR_Action_Vector3.ChangeHandler)existingDelegate;
}

if (onActiveChange != null)
{
delegates = onActiveChange.GetInvocationList();
if (delegates != null)
foreach (Delegate existingDelegate in delegates)
onActiveChange -= (SteamVR_Action_Vector3.ActiveChangeHandler)existingDelegate;
}

if (onActiveBindingChange != null)
{
delegates = onActiveBindingChange.GetInvocationList();
if (delegates != null)
foreach (Delegate existingDelegate in delegates)
onActiveBindingChange -= (SteamVR_Action_Vector3.ActiveChangeHandler)existingDelegate;
}
}

/// <summary><strong>[Should not be called by user code]</strong>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,14 @@ public void RemoveOnExecuteListener(ExecuteHandler functionToStopCalling, SteamV
sourceMap[inputSource].onExecute -= functionToStopCalling;
}

/// <summary>
/// Removes all listeners, useful for dispose pattern
/// </summary>
public void RemoveAllListeners(SteamVR_Input_Sources input_Sources)
{
sourceMap[input_Sources].RemoveAllListeners();
}

/// <summary>
/// Returns the last time this action was executed
/// </summary>
Expand Down Expand Up @@ -183,6 +191,38 @@ public override void Preinitialize(SteamVR_Action wrappingAction, SteamVR_Input_
vibrationAction = (SteamVR_Action_Vibration)wrappingAction;
}

/// <summary>
/// Removes all listeners, useful for dispose pattern
/// </summary>
public void RemoveAllListeners()
{
Delegate[] delegates;

if (onActiveBindingChange != null)
{
delegates = onActiveBindingChange.GetInvocationList();
if (delegates != null)
foreach (Delegate existingDelegate in delegates)
onActiveBindingChange -= (SteamVR_Action_Vibration.ActiveChangeHandler)existingDelegate;
}

if (onActiveChange != null)
{
delegates = onActiveChange.GetInvocationList();
if (delegates != null)
foreach (Delegate existingDelegate in delegates)
onActiveChange -= (SteamVR_Action_Vibration.ActiveChangeHandler)existingDelegate;
}

if (onExecute != null)
{
delegates = onExecute.GetInvocationList();
if (delegates != null)
foreach (Delegate existingDelegate in delegates)
onExecute -= (SteamVR_Action_Vibration.ExecuteHandler)existingDelegate;
}
}


/// <summary>
/// Trigger the haptics at a certain time for a certain length
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ namespace Valve.VR
public class SteamVR_ActivateActionSetOnLoad : MonoBehaviour
{
public SteamVR_ActionSet actionSet = SteamVR_Input.GetActionSet("default");
public SteamVR_ActionSet vrInteractionSet = SteamVR_Input.GetActionSet("VRInteractionPlugin");

public SteamVR_Input_Sources forSources = SteamVR_Input_Sources.Any;

Expand All @@ -23,19 +24,31 @@ public class SteamVR_ActivateActionSetOnLoad : MonoBehaviour

private void Start()
{
if (actionSet != null && activateOnStart)
if(activateOnStart)
{
//Debug.Log(string.Format("[SteamVR] Activating {0} action set.", actionSet.fullPath));
actionSet.Activate(forSources, initialPriority, disableAllOtherActionSets);
if (actionSet != null)
{
actionSet.Activate(forSources, initialPriority, disableAllOtherActionSets);
}
if (vrInteractionSet != null)
{
vrInteractionSet.Activate();
}
}
}

private void OnDestroy()
{
if (actionSet != null && deactivateOnDestroy)
if (deactivateOnDestroy)
{
//Debug.Log(string.Format("[SteamVR] Deactivating {0} action set.", actionSet.fullPath));
actionSet.Deactivate(forSources);
if (actionSet != null)
{
actionSet.Deactivate(forSources);
}
if (vrInteractionSet != null)
{
vrInteractionSet.Deactivate();
}
}
}
}
Expand Down
Loading