internal static RayInteractor CreateRayInteractor() { GameObject interactorGO = new GameObject(); interactorGO.name = "Ray Interactor"; RayInteractor interactor = interactorGO.AddComponent <RayInteractor>(); return(interactor); }
public override void OnInspectorGUI() { serializedObject.Update(); EditorGUI.BeginDisabledGroup(true); EditorGUILayout.ObjectField(EditorGUIUtility.TrTempContent("Script"), MonoScript.FromMonoBehaviour((RayInteractor)target), typeof(RayInteractor), false); EditorGUI.EndDisabledGroup(); foreach (Object targetObject in serializedObject.targetObjects) { RayInteractor interactor = (RayInteractor)targetObject; if (interactor.GetComponent <XRController>() == null && interactor.GetComponent <ActionBasedController>() == null) { EditorGUILayout.HelpBox(Tooltips.MissingRequiredController, MessageType.Warning, true); break; } } EditorGUILayout.PropertyField(interactionManager, Tooltips.InteractionManager); EditorGUILayout.PropertyField(interactionLayerMask, Tooltips.InteractionLayerMask); EditorGUILayout.Space(); EditorGUILayout.PropertyField(enableUIInteraction, Tooltips.EnableUIInteraction); EditorGUILayout.PropertyField(useForceGrab, Tooltips.ForceGrab); EditorGUILayout.PropertyField(allowAnchorControl, Tooltips.AllowAnchorControl); if (allowAnchorControl.boolValue) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(anchorRotateSpeed, Tooltips.AnchorRotateSpeed); EditorGUILayout.PropertyField(anchorTranslateSpeed, Tooltips.AnchorTranslateSpeed); EditorGUI.indentLevel--; } EditorGUILayout.PropertyField(attachTransform, Tooltips.AttachTransform); EditorGUILayout.Space(); lineType.isExpanded = EditorGUILayout.Foldout(lineType.isExpanded, EditorGUIUtility.TrTempContent("Raycast Configuration"), true); if (lineType.isExpanded) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(lineType, Tooltips.LineType); EditorGUI.indentLevel++; switch (lineType.enumValueIndex) { case (int)XRRayInteractor.LineType.StraightLine: EditorGUILayout.PropertyField(maxRaycastDistance, Tooltips.MaxRaycastDistance); break; case (int)XRRayInteractor.LineType.ProjectileCurve: EditorGUILayout.PropertyField(referenceFrame, Tooltips.ReferenceFrame); EditorGUILayout.PropertyField(velocity, Tooltips.Velocity); EditorGUILayout.PropertyField(acceleration, Tooltips.Acceleration); EditorGUILayout.PropertyField(additionalFlightTime, Tooltips.AdditionalFlightTime); EditorGUILayout.PropertyField(sampleFrequency, Tooltips.SampleFrequency); break; case (int)XRRayInteractor.LineType.BezierCurve: EditorGUILayout.PropertyField(endPointDistance, Tooltips.EndPointDistance); EditorGUILayout.PropertyField(endPointHeight, Tooltips.EndPointHeight); EditorGUILayout.PropertyField(controlPointDistance, Tooltips.ControlPointDistance); EditorGUILayout.PropertyField(controlPointHeight, Tooltips.ControlPointHeight); EditorGUILayout.PropertyField(sampleFrequency, Tooltips.SampleFrequency); break; } EditorGUI.indentLevel--; EditorGUILayout.Space(); EditorGUILayout.PropertyField(raycastMask, Tooltips.RaycastMask); EditorGUILayout.PropertyField(raycastTriggerInteraction, Tooltips.RaycastTriggerInteraction); EditorGUILayout.PropertyField(hitDetectionType, Tooltips.HitDetectionType); if (hitDetectionType.enumValueIndex == (int)XRRayInteractor.HitDetectionType.SphereCast) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(sphereCastRadius, Tooltips.SphereCastRadius); EditorGUI.indentLevel--; } EditorGUI.indentLevel--; } EditorGUILayout.Space(); selectActionTrigger.isExpanded = EditorGUILayout.Foldout(selectActionTrigger.isExpanded, EditorGUIUtility.TrTempContent("Selection Configuration"), true); if (selectActionTrigger.isExpanded) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(selectActionTrigger, Tooltips.SelectActionTrigger); if (startingSelectedInteractable.objectReferenceValue != null && (selectActionTrigger.enumValueIndex == 2 || selectActionTrigger.enumValueIndex == 3)) { EditorGUILayout.HelpBox(Tooltips.StartingInteractableWarning, MessageType.Warning, true); } EditorGUILayout.PropertyField(keepSelectedTargetValid, Tooltips.KeepSelectedTargetValid); EditorGUILayout.PropertyField(hideControllerOnSelect, Tooltips.HideControllerOnSelect); EditorGUILayout.PropertyField(hoverToSelect, Tooltips.HoverToSelect); if (hoverToSelect.boolValue) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(hoverTimeToSelect, Tooltips.EoverTimeToSelect); EditorGUI.indentLevel--; } EditorGUILayout.PropertyField(startingSelectedInteractable, Tooltips.StartingSelectedInteractable); EditorGUI.indentLevel--; } EditorGUILayout.Space(); playAudioClipOnSelectEntered.isExpanded = EditorGUILayout.Foldout(playAudioClipOnSelectEntered.isExpanded, EditorGUIUtility.TrTempContent("Audio Events"), true); if (playAudioClipOnSelectEntered.isExpanded) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(playAudioClipOnSelectEntered, Tooltips.PlayAudioClipOnSelectEntered); if (playAudioClipOnSelectEntered.boolValue) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(audioClipForOnSelectEntered, Tooltips.AudioClipForOnSelectEntered); EditorGUI.indentLevel--; } EditorGUILayout.PropertyField(playAudioClipOnSelectExited, Tooltips.PlayAudioClipOnSelectExited); if (playAudioClipOnSelectExited.boolValue) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(audioClipForOnSelectExited, Tooltips.AudioClipForOnSelectExited); EditorGUI.indentLevel--; } EditorGUILayout.PropertyField(playAudioClipOnHoverEntered, Tooltips.PlayAudioClipOnHoverEntered); if (playAudioClipOnHoverEntered.boolValue) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(audioClipForOnHoverEntered, Tooltips.AudioClipForOnHoverEntered); EditorGUI.indentLevel--; } EditorGUILayout.PropertyField(playAudioClipOnHoverExited, Tooltips.PlayAudioClipOnHoverExited); if (playAudioClipOnHoverExited.boolValue) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(audioClipForOnHoverExited, Tooltips.AudioClipForOnHoverExited); EditorGUI.indentLevel--; } EditorGUI.indentLevel--; } EditorGUILayout.Space(); playHapticsOnSelectEntered.isExpanded = EditorGUILayout.Foldout(playHapticsOnSelectEntered.isExpanded, EditorGUIUtility.TrTempContent("Haptic Events"), true); if (playHapticsOnSelectEntered.isExpanded) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(playHapticsOnSelectEntered, Tooltips.PlayHapticsOnSelectEntered); if (playHapticsOnSelectEntered.boolValue) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(hapticSelectEnterIntensity, Tooltips.HapticSelectEnterIntensity); EditorGUILayout.PropertyField(hapticSelectEnterDuration, Tooltips.HapticSelectEnterDuration); EditorGUI.indentLevel--; } EditorGUILayout.PropertyField(playHapticsOnSelectExited, Tooltips.PlayHapticsOnSelectExited); if (playHapticsOnSelectExited.boolValue) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(hapticSelectExitIntensity, Tooltips.HapticSelectExitIntensity); EditorGUILayout.PropertyField(hapticSelectExitDuration, Tooltips.HapticSelectExitDuration); EditorGUI.indentLevel--; } EditorGUILayout.PropertyField(playHapticsOnHoverEntered, Tooltips.PlayHapticsOnHoverEntered); if (playHapticsOnHoverEntered.boolValue) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(hapticHoverEnterIntensity, Tooltips.HapticHoverEnterIntensity); EditorGUILayout.PropertyField(hapticHoverEnterDuration, Tooltips.HapticHoverEnterDuration); EditorGUI.indentLevel--; } EditorGUILayout.PropertyField(playHapticsOnHoverExited, Tooltips.PlayHapticsOnHoverExited); if (playHapticsOnHoverExited.boolValue) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(hapticHoverExitIntensity, Tooltips.HapticHoverExitIntensity); EditorGUILayout.PropertyField(hapticHoverExitDuration, Tooltips.HapticHoverExitDuration); EditorGUI.indentLevel--; } EditorGUI.indentLevel--; } EditorGUILayout.Space(); onHoverEntered.isExpanded = EditorGUILayout.Foldout(onHoverEntered.isExpanded, EditorGUIUtility.TrTempContent("Interactor Events"), true); if (onHoverEntered.isExpanded) { EditorGUILayout.PropertyField(onHoverEntered); EditorGUILayout.PropertyField(onHoverExited); EditorGUILayout.PropertyField(onSelectEntered); EditorGUILayout.PropertyField(onSelectExited); } serializedObject.ApplyModifiedProperties(); }