/// <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"; }
/// <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); }