286 lines
12 KiB
C#
286 lines
12 KiB
C#
/*
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
* All rights reserved.
|
|
*
|
|
* Licensed under the Oculus SDK License Agreement (the "License");
|
|
* you may not use the Oculus SDK except in compliance with the License,
|
|
* which is provided at the time of installation or download, or which
|
|
* otherwise accompanies this software in either electronic or hard copy form.
|
|
*
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* https://developer.oculus.com/licenses/oculussdk/
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, the Oculus SDK
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
using Oculus.Interaction.Input;
|
|
using Oculus.Interaction.Locomotion;
|
|
using Oculus.Interaction.PoseDetection;
|
|
using System.Reflection;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace Oculus.Interaction.Editor
|
|
{
|
|
[InitializeOnLoad]
|
|
public static class InteractionAutoWiring
|
|
{
|
|
static InteractionAutoWiring()
|
|
{
|
|
AutoWiring.Register(
|
|
typeof(HandRef),
|
|
new[] {
|
|
new ComponentWiringStrategyConfig("_hand", new FieldWiringStrategy[]
|
|
{
|
|
FieldWiringStrategies.WireFieldToAncestors
|
|
})
|
|
}
|
|
);
|
|
|
|
AutoWiring.Register(
|
|
typeof(HmdRef),
|
|
new[] {
|
|
new ComponentWiringStrategyConfig("_hmd", new FieldWiringStrategy[]
|
|
{
|
|
FieldWiringStrategies.WireFieldToAncestors,
|
|
FieldWiringStrategies.WireFieldToSceneComponent
|
|
})
|
|
}
|
|
);
|
|
AutoWiring.Register(
|
|
typeof(ControllerRef),
|
|
new[]
|
|
{
|
|
new ComponentWiringStrategyConfig("_controller", new FieldWiringStrategy[]
|
|
{
|
|
FieldWiringStrategies.WireFieldToAncestors
|
|
})
|
|
}
|
|
);
|
|
|
|
AutoWiring.Register(
|
|
typeof(FingerFeatureStateProvider),
|
|
new[] {
|
|
new ComponentWiringStrategyConfig("_hand", new FieldWiringStrategy[]
|
|
{
|
|
FieldWiringStrategies.WireFieldToAncestors
|
|
}),
|
|
}
|
|
);
|
|
|
|
AutoWiring.Register(
|
|
typeof(ShapeRecognizerActiveState),
|
|
new[] {
|
|
new ComponentWiringStrategyConfig("_hand", new FieldWiringStrategy[]
|
|
{
|
|
FieldWiringStrategies.WireFieldToAncestors
|
|
}),
|
|
new ComponentWiringStrategyConfig("_fingerFeatureStateProvider", new FieldWiringStrategy[]
|
|
{
|
|
FieldWiringStrategies.WireFieldToAncestors,
|
|
FieldWiringStrategies.WireFieldToNearestComponent
|
|
})
|
|
}
|
|
);
|
|
|
|
AutoWiring.Register(
|
|
typeof(TransformFeatureStateProvider),
|
|
new[] {
|
|
new ComponentWiringStrategyConfig("_hand", new FieldWiringStrategy[]
|
|
{
|
|
FieldWiringStrategies.WireFieldToAncestors
|
|
}),
|
|
new ComponentWiringStrategyConfig("_trackingToWorldTransformer", new FieldWiringStrategy[]
|
|
{
|
|
FieldWiringStrategies.WireFieldToAncestors,
|
|
FieldWiringStrategies.WireFieldToNearestComponent
|
|
|
|
}),
|
|
new ComponentWiringStrategyConfig("_hmd", new FieldWiringStrategy[]
|
|
{
|
|
FieldWiringStrategies.WireFieldToAncestors,
|
|
FieldWiringStrategies.WireFieldToSceneComponent
|
|
})
|
|
}
|
|
);
|
|
|
|
AutoWiring.Register(
|
|
typeof(JointDeltaProvider),
|
|
new[] {
|
|
new ComponentWiringStrategyConfig("_hand", new FieldWiringStrategy[]
|
|
{
|
|
FieldWiringStrategies.WireFieldToAncestors
|
|
}),
|
|
}
|
|
);
|
|
|
|
AutoWiring.Register(
|
|
typeof(TransformTrackingToWorldTransformer),
|
|
new[] {
|
|
new ComponentWiringStrategyConfig("TrackingSpace", new FieldWiringStrategy[]
|
|
{
|
|
(monoBehaviour, field, targetType) =>
|
|
FieldWiringStrategies.WireFieldToPathComponent(monoBehaviour, field, targetType, "TrackingSpace")
|
|
})
|
|
}
|
|
);
|
|
|
|
#region HandGrab
|
|
|
|
AutoWiring.Register(
|
|
typeof(HandGrab.HandGrabInteractable),
|
|
new[] {
|
|
new ComponentWiringStrategyConfig("_rigidbody", new FieldWiringStrategy[]
|
|
{
|
|
FieldWiringStrategies.WireFieldToAncestors
|
|
}),
|
|
new ComponentWiringStrategyConfig("_pointableElement", new FieldWiringStrategy[]
|
|
{
|
|
FieldWiringStrategies.WireFieldToAncestors
|
|
}),
|
|
new ComponentWiringStrategyConfig("_physicsGrabbable", new FieldWiringStrategy[]
|
|
{
|
|
FieldWiringStrategies.WireFieldToAncestors
|
|
})
|
|
}
|
|
);
|
|
|
|
AutoWiring.Register(
|
|
typeof(HandGrab.HandGrabStateVisual),
|
|
new[] {
|
|
new ComponentWiringStrategyConfig("_syntheticHand", new FieldWiringStrategy[]
|
|
{
|
|
FieldWiringStrategies.WireFieldToNearestComponent
|
|
})
|
|
}
|
|
);
|
|
|
|
AutoWiring.Register(
|
|
typeof(TouchHandGrabInteractorVisual),
|
|
new[] {
|
|
new ComponentWiringStrategyConfig("_syntheticHand", new FieldWiringStrategy[]
|
|
{
|
|
FieldWiringStrategies.WireFieldToNearestComponent
|
|
})
|
|
}
|
|
);
|
|
#endregion
|
|
|
|
#region Poke
|
|
|
|
AutoWiring.Register(
|
|
typeof(HandPokeLimiterVisual),
|
|
new[] {
|
|
new ComponentWiringStrategyConfig("_syntheticHand", new FieldWiringStrategy[]
|
|
{
|
|
FieldWiringStrategies.WireFieldToNearestComponent
|
|
})
|
|
}
|
|
);
|
|
|
|
#endregion
|
|
|
|
#region Locomotion
|
|
|
|
AutoWiring.Register(
|
|
typeof(LocomotionTurnerInteractor),
|
|
new[] {
|
|
new ComponentWiringStrategyConfig("_transformer", new FieldWiringStrategy[]
|
|
{
|
|
FieldWiringStrategies.WireFieldToAncestors
|
|
}),
|
|
}
|
|
);
|
|
|
|
AutoWiring.Register(
|
|
typeof(TunnelingEffect),
|
|
new[] {
|
|
new ComponentWiringStrategyConfig("_leftEyeAnchor", new FieldWiringStrategy[]
|
|
{
|
|
(MonoBehaviour monoBehaviour, FieldInfo field, System.Type targetType)
|
|
=> FieldWiringStrategies.WireFieldToPathComponent(monoBehaviour, field, targetType, "TrackingSpace/LeftEyeAnchor")
|
|
}),
|
|
new ComponentWiringStrategyConfig("_rightEyeAnchor", new FieldWiringStrategy[]
|
|
{
|
|
(MonoBehaviour monoBehaviour, FieldInfo field, System.Type targetType)
|
|
=> FieldWiringStrategies.WireFieldToPathComponent(monoBehaviour, field, targetType, "TrackingSpace/RightEyeAnchor")
|
|
}),
|
|
new ComponentWiringStrategyConfig("_centerEyeCamera", new FieldWiringStrategy[]
|
|
{
|
|
(MonoBehaviour monoBehaviour, FieldInfo field, System.Type targetType)
|
|
=> FieldWiringStrategies.WireFieldToPathComponent(monoBehaviour, field, targetType, "TrackingSpace/CenterEyeAnchor")
|
|
}),
|
|
}
|
|
);
|
|
|
|
AutoWiring.Register(
|
|
typeof(PlayerLocomotor),
|
|
new[] {
|
|
new ComponentWiringStrategyConfig("_playerOrigin", new FieldWiringStrategy[]
|
|
{
|
|
(MonoBehaviour monoBehaviour, FieldInfo field, System.Type targetType)
|
|
=> FieldWiringStrategies.WireFieldToPathComponent(monoBehaviour, field, targetType, "TrackingSpace/..")
|
|
}),
|
|
new ComponentWiringStrategyConfig("_playerHead", new FieldWiringStrategy[]
|
|
{
|
|
(MonoBehaviour monoBehaviour, FieldInfo field, System.Type targetType)
|
|
=> FieldWiringStrategies.WireFieldToPathComponent(monoBehaviour, field, targetType, "TrackingSpace/CenterEyeAnchor")
|
|
})
|
|
}
|
|
);
|
|
|
|
AutoWiring.Register(
|
|
typeof(FirstPersonLocomotor),
|
|
new[] {
|
|
new ComponentWiringStrategyConfig("_playerOrigin", new FieldWiringStrategy[]
|
|
{
|
|
(MonoBehaviour monoBehaviour, FieldInfo field, System.Type targetType)
|
|
=> FieldWiringStrategies.WireFieldToPathComponent(monoBehaviour, field, targetType, "TrackingSpace/../..", "TrackingSpace/..")
|
|
}),
|
|
new ComponentWiringStrategyConfig("_playerEyes", new FieldWiringStrategy[]
|
|
{
|
|
(MonoBehaviour monoBehaviour, FieldInfo field, System.Type targetType)
|
|
=> FieldWiringStrategies.WireFieldToPathComponent(monoBehaviour, field, targetType, "TrackingSpace/CenterEyeAnchor")
|
|
})
|
|
}
|
|
);
|
|
|
|
AutoWiring.Register(
|
|
typeof(FlyingLocomotor),
|
|
new[] {
|
|
new ComponentWiringStrategyConfig("_playerOrigin", new FieldWiringStrategy[]
|
|
{
|
|
(MonoBehaviour monoBehaviour, FieldInfo field, System.Type targetType)
|
|
=> FieldWiringStrategies.WireFieldToPathComponent(monoBehaviour, field, targetType, "TrackingSpace/../..", "TrackingSpace/..")
|
|
}),
|
|
new ComponentWiringStrategyConfig("_playerEyes", new FieldWiringStrategy[]
|
|
{
|
|
(MonoBehaviour monoBehaviour, FieldInfo field, System.Type targetType)
|
|
=> FieldWiringStrategies.WireFieldToPathComponent(monoBehaviour, field, targetType, "TrackingSpace/CenterEyeAnchor")
|
|
})
|
|
}
|
|
);
|
|
|
|
#endregion
|
|
|
|
#region TouchHandGrab
|
|
|
|
AutoWiring.Register(
|
|
typeof(FromHandPrefabDataSource),
|
|
new[] {
|
|
new ComponentWiringStrategyConfig("_handSkeletonProvider", new FieldWiringStrategy[]
|
|
{
|
|
FieldWiringStrategies.WireFieldToSceneComponent
|
|
}),
|
|
}
|
|
);
|
|
#endregion
|
|
}
|
|
}
|
|
}
|