VR4RoboticArm2/VR4RoboticArm/Library/PackageCache/com.meta.xr.sdk.interaction/Editor/AutoWiring/InteractionAutoWiring.cs
IonutMocanu d7aba243a2 Main
2025-09-08 11:04:02 +03:00

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
}
}
}