コード例 #1
0
        /// <summary>
        /// Get a reference to the Input Source already in the scene, or create a new one if needed
        /// </summary>
        /// <param name="rViewActivatorOption"></param>
        /// <returns></returns>
        public static GameObject GetOrCreateInputSource(int rViewActivatorOption)
        {
            // Find or create the input source; will use Easy Input if it is installed
            GameObject   lInputSourceGO = null;
            IInputSource lInputSource   = InputSetupHelper.CreateInputSource("com.ootii.Input.EasyInputSource, " + AssemblyHelper.AssemblyInfo,
                                                                             ref lInputSourceGO);

            if (lInputSource == null)
            {
                lInputSource = InputSetupHelper.CreateInputSource <UnityInputSource>(ref lInputSourceGO);
            }
            ReflectionHelper.SetProperty(lInputSource, "ViewActivator", rViewActivatorOption);

            return(lInputSourceGO);
        }
コード例 #2
0
        /// <summary>
        /// Creates the Input Source, Camera and Game Core, assigns references, and sets the player's Layer and Tag
        /// </summary>
        /// <param name="rMotionController"></param>
        protected virtual void SetupPlayer(MotionController rMotionController)
        {
            // Find or create the input source
            GameObject lInputSourceGO = InputSetupHelper.GetOrCreateInputSource(ViewActivator);

            rMotionController.InputSourceOwner = lInputSourceGO;

            // Find or create the camera
            BaseCameraRig lCameraRig = CameraSetupHelper.FindSceneCameraRig();

            if (lCameraRig == null)
            {
                lCameraRig = CreateCameraRig();
            }

            rMotionController.CameraTransform = lCameraRig.transform;
            ReflectionHelper.SetProperty(lCameraRig, "InputSourceOwner", lInputSourceGO);

            if (UseCameraAnchor)
            {
                GameObject       lCameraAnchorGO = null;
                BaseCameraAnchor lCameraAnchor   = CameraSetupHelper.GetOrCreateCameraAnchor(out lCameraAnchorGO);
                lCameraAnchor.Root             = rMotionController.gameObject.transform;
                lCameraAnchor.RootOffset       = AnchorTargetOffset;
                lCameraAnchor.RotateWithTarget = AnchorRotatesWithTarget;
                if (AnchorRotatesWithTarget)
                {
                    lCameraAnchor.RotationRoot = rMotionController.gameObject.transform;
                }
                lCameraAnchor.MovementLerp = AnchorMovementLerp;
                lCameraRig.Anchor          = lCameraAnchorGO.transform;
            }
            else
            {
                CameraSetupHelper.DisableCameraAnchors();
                lCameraRig.Anchor = rMotionController.transform;
            }

            if (AddGameCore)
            {
                SceneSetupHelper.ConfigureGameCore(lInputSourceGO);
            }

            // Set player's layer and tag
            rMotionController.gameObject.layer = PlayerLayer;
            rMotionController.gameObject.tag   = "Player";
        }
コード例 #3
0
        /// <summary>
        /// Step 4: Apply Input Manager settings
        /// </summary>
        /// <param name="rMotionController"></param>
        protected virtual void ConfigureInput(MotionController rMotionController)
        {
            string lProgressTitle  = "Configuring Input (Step 4 of 6)";
            float  lProgressAmount = 4f / 6f;

            EditorUtility.DisplayProgressBar(lProgressTitle, "Input Manager settings", lProgressAmount);
            InputSetupHelper.CreateDefaultInputSettings(rMotionController);
            if (Modules == null)
            {
                return;
            }

            foreach (var lModule in Modules)
            {
                if (lModule.IsValid && lModule is IConfigureInput)
                {
                    ((IConfigureInput)lModule).ConfigureInput();
                }
            }
        }
コード例 #4
0
        /// <summary>
        /// Draw the settings to use when the character is configured as a Player
        /// </summary>
        protected virtual void DrawPlayerSettings()
        {
            EditorGUILayout.HelpBox("When a player character is created, the camera, UI, and input options can also be set up.", MessageType.None);
            GUILayout.Space(5);

            mPlayerLayer.intValue = EditorGUILayout.LayerField(new GUIContent("Assign to Layer"), mPlayerLayer.intValue);

            EditorGUILayout.Separator();
            EditorGUILayout.LabelField("Camera Settings", EditorStyles.boldLabel, GUILayout.Height(16f));
            //EditorGUILayout.BeginHorizontal();

            //EditorGUILayout.BeginVertical();
            EditorGUILayout.PropertyField(mUseCameraPrefab);
            if (mUseCameraPrefab.boolValue)
            {
                EditorGUI.indentLevel++;
                EditorGUILayout.PropertyField(FindProperty(x => x.CameraPrefab));
                EditorGUI.indentLevel--;
            }

            EditorGUILayout.PropertyField(mUseCameraAnchor);
            if (mUseCameraAnchor.boolValue)
            {
                EditorGUI.indentLevel++;

                EditorGUILayout.PropertyField(FindProperty(x => x.AnchorTargetOffset), new GUIContent("Target Offset"), GUILayout.Width(mFieldWidth));

                EditorGUILayout.PropertyField(FindProperty(x => x.AnchorRotatesWithTarget), new GUIContent("Rotate with Target"));
                EditorGUILayout.PropertyField(FindProperty(x => x.AnchorMovementLerp), new GUIContent("Movement Lerp"), GUILayout.Width(mFieldWidth));
                EditorGUI.indentLevel--;
            }

            EditorGUILayout.Separator();
            EditorGUILayout.PropertyField(mAddGameCore);
            EditorGUILayout.Separator();

            EditorGUILayout.LabelField("Input Settings", EditorStyles.boldLabel, GUILayout.Height(16f));
            if (!InputSetupHelper.HasDefaultInputSettings())
            {
                EditorGUILayout.HelpBox(
                    "The default Unity Input Manager values for Motion Controller are missing." +
                    "\n\nMark the checkbox below to set them up.", MessageType.Info);
                GUILayout.Space(5);
                EditorGUILayout.PropertyField(FindProperty(x => x.UpdateInput),
                                              new GUIContent("Setup Input Entries"));
            }

            mViewActivator.intValue = EditorGUILayout.Popup("View Activator", mViewActivator.intValue,
                                                            InputSetupHelper.Activators, GUILayout.Width(mFieldWidth));

            EditorGUILayout.Separator();
            EditorGUILayout.LabelField("UI Settings", EditorStyles.boldLabel, GUILayout.Height(16f));
            EditorGUILayout.PropertyField(mUseReticle);
            if (mUseReticle.boolValue)
            {
                EditorGUI.indentLevel++;
                EditorGUILayout.PropertyField(FindProperty(x => x.ReticlePrefab));
                EditorGUILayout.PropertyField(FindProperty(x => x.ReticleStartVisible),
                                              new GUIContent("Visible at Start"));
                EditorGUI.indentLevel--;
            }

            EditorGUILayout.PropertyField(mUsePlayerHealthBar, new GUIContent("Use HUD"));
            if (mUsePlayerHealthBar.boolValue)
            {
                EditorGUI.indentLevel++;
                EditorGUILayout.PropertyField(mPlayerHealthBarPrefab, new GUIContent("HUD Prefab"));
                EditorGUILayout.PropertyField(FindProperty(x => x.PlayerHealthBarHideWhenFull), new GUIContent("Hide When Full"));
                EditorGUI.indentLevel--;
            }
            //EditorGUILayout.EndVertical();
            //GUILayout.FlexibleSpace();
            //EditorGUILayout.EndHorizontal();
        }