예제 #1
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";
        }
예제 #2
0
        /// <summary>
        /// Get the active camera rig based on the current configuration
        /// </summary>
        /// <returns></returns>
        protected virtual BaseCameraRig CreateCameraRig()
        {
            BaseCameraRig lCameraRig = null;

            if (UseCameraPrefab && CameraPrefab != null)
            {
                lCameraRig = CameraSetupHelper.InstantiateCamera(CameraPrefab);
            }
            else
            {
#if OOTII_CC
                lCameraRig = CameraSetupHelper.CreateCameraRig <CameraController>();
                CameraSetupHelper.SetupThirdPersonCamera(lCameraRig);
#else
                lCameraRig = CameraSetupHelper.CreateCameraRig <OrbitRig>();
#endif
            }


            return(lCameraRig);
        }