Skip to content

Instantly share code, notes, and snippets.

View SnugglePilot's full-sized avatar
🏠
Working from home

Andy Moore SnugglePilot

🏠
Working from home
View GitHub Profile
@SnugglePilot
SnugglePilot / SetTrackingMode.cs
Created August 26, 2020 13:36
Sets the tracking mode of the XR subsystems. This adds functionality that isn't in the core Unity interface to set XR hardware tracking modes - eg, Oculus devices will track based on initial headset position, wheras OpenVR devices will track based on floor position. This allows you to normalize this across all devices.
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR;
namespace absurdjoy.axe
{
public class SetTrackingMode : MonoBehaviour
{
public TrackingOriginModeFlags trackingFlags = TrackingOriginModeFlags.Floor;
public bool recenterOnSet = true;
#if UNITY_EDITOR
using UnityEditor;
using UnityEditor.Animations;
using UnityEngine.Timeline;
#endif
using System;
using UnityEngine;
namespace absurdjoy
using UnityEngine;
namespace absurdjoy
{
public class SmoothDampTransform : MonoBehaviour, IAssignableTransform
{
[Tooltip("What transform should we try to follow? (Optional)")]
public Transform targetTransform;
// TODO: Hide this section in editor if not tracking.
using UnityEngine;
namespace absurdjoy
{
public interface IAssignableTransform
{
bool AssignTransform(Transform newTransform);
bool RemoveAssignedTransform(Transform toRemove);
}
using UnityEngine;
namespace absurdjoy
{
/// <summary>
/// A "companion" camera is one that displays to a computer monitor while an accompanying XR player is in an HMD nearby.
/// This script can be extended for added functionality, but acts as a decent placeholder for a static camera in a scene.
/// </summary>
public class CompanionCamera : MonoBehaviour
{
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR;
namespace absurdjoy
{
/// <summary>
/// Basic management script to wrangle all the CompanionCameras we might have in the scene.
/// </summary>
public class CompanionCameraManager : MonoBehaviour
using UnityEngine;
namespace absurdjoy
{
public class TransformManipulator_DelaySync : MonoBehaviour
{
public uint delayFrames;
public uint randomJitter;
private bool isSet = false;
using UnityEngine;
namespace absurdjoy
{
public class TransformManipulator_Delay : TransformManipulator_Abstract
{
public bool useSync = true;
[ConditionalField("useSync", false, false)]
[Tooltip("How many frames you want to delay the output for.")]
using UnityEngine;
namespace absurdjoy
{
public struct TransformValues
{
public Vector3 position;
public Quaternion rotation;
public TransformValues(Vector3 position, Quaternion rotation)
using UnityEngine;
namespace absurdjoy
{
public abstract class TransformManipulator_Abstract : MonoBehaviour
{
public bool useLocalSpace;
private Transform target;
public virtual void SetTarget(Transform target)