public void Start () { // initialize tables EventReader.GetInstance(); ReactionReader.GetInstance(); SequenceReader.GetInstance(); AffectedActionReader.GetInstance(); MoodPointsReader.GetInstance(); ReactionTrackingReader.GetInstance(); TutorialReader.GetInstance(); ResponseManager.Instance.HideIcon(); InstructionsManager.Instance.HideInstruction(); // hold instance m_instance = this; //Load intro rocks m_introRock = Instantiate( Resources.Load( "AnimationTool/INTRO_ROCK" ) ) as GameObject; m_introRock.SetActive( false ); // init anim controller utility GameObject cfController = GameObject.Find("CAREPLAY_NF_Controller") as GameObject; cfController.AddComponent<CarePlayNFController>(); cfController.AddComponent<BiteItemController>(); // init cam controller utility m_cameraController = GameObject.Find ("CAREPLAY_Cam_Controller").GetComponent<CameraRigController>(); // init dragon m_petDragon = GameObject.FindGameObjectWithTag("PetDragon") as GameObject; m_petDragon.gameObject.AddComponent<DragonScript>(); m_petDragon.gameObject.AddComponent<DragonAnimation>(); m_petDragon.gameObject.AddComponent<Dragon>(); m_petDragon.gameObject.AddComponent<JawCruncherStateController>(); m_jcController = m_petDragon.gameObject.GetComponent<JawCruncherStateController>(); // init gestures m_mainCamera = GameObject.FindGameObjectWithTag("MainCamera").gameObject; m_mainCamera.AddComponent<GestureManager>(); m_gestureManager = Camera.mainCamera.gameObject.GetComponent<GestureManager>(); m_gestureManager.g_pettingListener = this.GestureListener; m_gestureManager.SetPettingDelegate(this); CameraController.Instance.SetPettingDelegate(this); //m_gestureManager.DisableGestures(); // init bridge items m_sheepManager = GameObject.Find("SheepManager").GetComponent<SheepManager>(); m_sheepManager.InitializeSheep(); // init dragon collider GameObject HeadCollider = (GameObject)Resources.Load("Prefabs/Petting/DragonColliders/HeadCollider"); GameObject BodyCollider = (GameObject)Resources.Load("Prefabs/Petting/DragonColliders/BodyCollider"); m_dragonHeadCollider = GameObject.Instantiate(HeadCollider) as GameObject; m_dragonBodyCollider = GameObject.Instantiate(BodyCollider) as GameObject; m_dragonHeadCollider.transform.parent = m_petDragon.transform.Find("joint_Spine/joint_Neck/joint_Head").transform; m_dragonHeadCollider.name = "HeadCollider"; m_dragonHeadCollider.transform.localPosition = new Vector3(-0.00785967f, -0.03883493f, 0.2275544f); m_dragonHeadCollider.transform.localRotation = Quaternion.Euler(new Vector3(335.4119f, 184.195f, 1.887401f)); m_dragonHeadCollider.transform.localScale = new Vector3(0.6969064f, 0.4911779f, 1.063113f); m_dragonBodyCollider.transform.parent = m_petDragon.transform.Find("joint_Spine").transform; m_dragonBodyCollider.name = "BodyCollider"; m_dragonBodyCollider.transform.localPosition = new Vector3(0.0176101f, -0.2866409f, -0.8635432f); m_dragonBodyCollider.transform.localRotation = Quaternion.Euler(new Vector3(270.0f, 180.0f, 0.0f)); //m_dragonBodyCollider.transform.localScale = new Vector3(1.043613f, 1.421112f, 1.043613f); //init camera focus point m_cameraFocusPoint = new GameObject ( "FocusPoint" ); m_cameraFocusPoint.tag = "ToothlessFocusPoint"; GameObject toothlessAxis = GameObject.Find("joint_Spine"); m_cameraFocusPoint.transform.parent = toothlessAxis.transform; m_cameraFocusPoint.transform.position = toothlessAxis.transform.position; m_cameraFocusPoint.transform.rotation = Quaternion.identity; //Sound audio source container m_headSoundContainer = new GameObject( "SoundContainer_Head" ); m_headSoundContainer.transform.parent = toothlessAxis.transform; m_headSoundContainer.transform.position = toothlessAxis.transform.position; m_headSoundContainer.transform.rotation = Quaternion.identity; m_bodySoundContainer = new GameObject( "SoundContainer_Body" ); m_bodySoundContainer.transform.parent = toothlessAxis.transform; m_bodySoundContainer.transform.position = toothlessAxis.transform.position; m_bodySoundContainer.transform.rotation = Quaternion.identity; m_headAndBodySoundContainer = new GameObject( "SoundContainer_HeadAndBody" ); m_headAndBodySoundContainer.transform.parent = toothlessAxis.transform; m_headAndBodySoundContainer.transform.position = toothlessAxis.transform.position; m_headAndBodySoundContainer.transform.rotation = Quaternion.identity; // Camera Look Points GameObject cHead = new GameObject( "CamPlayerHead" ); GameObject cBody = new GameObject( "CamPlayerBody" ); GameObject cLeft = new GameObject( "CamPlayerLeft" ); GameObject cRight = new GameObject( "CamPlayerRight" ); cHead.tag = "CamPlayerHead"; cBody.tag = "CamPlayerBody"; cLeft.tag = "CamPlayerLeft"; cRight.tag = "CamPlayerRight"; cHead.transform.parent = m_mainCamera.gameObject.transform; cBody.transform.parent = m_mainCamera.gameObject.transform; cLeft.transform.parent = m_mainCamera.gameObject.transform; cRight.transform.parent = m_mainCamera.gameObject.transform; cHead.transform.localPosition = new Vector3( 0.0f, 0.30f, 0.0f ); cBody.transform.localPosition = new Vector3( 0.0f, -0.30f, 0.0f ); cLeft.transform.localPosition = new Vector3( -1.2f, 0.0f, 0.0f ); cRight.transform.localPosition = new Vector3( 1.2f, 0.0f, 0.0f ); cHead.transform.localScale = new Vector3( 0.001f, 0.001f, 0.001f ); cBody.transform.localScale = new Vector3( 0.001f, 0.001f, 0.001f ); cLeft.transform.localScale = new Vector3( 0.001f, 0.001f, 0.001f ); cRight.transform.localScale = new Vector3( 0.001f, 0.001f, 0.001f ); // Dragon Look Points GameObject lookL = new GameObject( "DLookL" ); GameObject lookR = new GameObject( "DLookR" ); lookL.tag = "DLookL"; lookR.tag = "DLookR"; lookL.transform.parent = m_petDragon.transform; lookL.transform.position = new Vector3( 3.50f, 2.00f, -1.00f ); lookR.transform.parent = m_petDragon.transform; lookR.transform.position = new Vector3( -3.50f, 2.00f, -1.00f ); // init ui m_uiRefs = new Hashtable(); m_carePlayUI = GameObject.Find("CareAndPlayHUD") as GameObject; m_carePlayUI.GetComponent<CareAndPlayHUD>(); m_carePlayUI.GetComponent<GamePauseManager>().PauseCallBack = this.PauseGame; m_carePlayTab = GameObject.Find("MainTab") as GameObject; m_uiManager = m_carePlayUI.AddComponent<CarePlayUIManager>(); m_uiManager.Initialize(); m_uiManager.SetCB_Call(this.OnDragonCall); m_uiManager.SetCB_Book(this.OnBookOfDragon); m_uiManager.SetCB_Inventory(this.OnInventory); m_uiManager.SetCB_Inventory_Close(this.OnInventoryClose); m_uiManager.SetCB_Map(this.OnMap); m_uiManager.SetCB_Profile(this.OnProfile); m_uiManager.SetCB_Profile_Close(this.OnProfileClose); m_tabManager = m_carePlayTab.GetComponent<CarePlayTabManager>(); m_energyGauge = GameObject.Find("EnergyProgress") as GameObject; m_bondGauge = GameObject.Find("BondProgress") as GameObject; m_energyBondUI = GameObject.Find("EnergyBond") as GameObject; m_pauseUI = GameObject.Find("PauseBTN") as GameObject; StatsManager.Instance.EnergyGauge = m_energyGauge.GetComponent<EnergyProgress>(); StatsManager.Instance.BondGauge = m_bondGauge.GetComponent<BondProgress>(); // UI finger tap m_uiFingerSingleTap = GameObject.Find("SingleTapFinger") as GameObject; m_uiFingerDoubleTap = GameObject.Find("DoubleTapFinger") as GameObject; m_uiFingerHold = GameObject.Find("HoldFinger") as GameObject; m_uiFingerSingleTap.transform.parent.localPosition = new Vector3( -6.043911e-05f, 319.0215f, 0f ); m_uiFingerSingleTap.SetActive(false); m_uiFingerDoubleTap.SetActive(false); m_uiFingerHold.SetActive(false); // set inventory callbacks InventoryUIHandler.OnFeedingItemCallback = this.OnFeedingItem; InventoryUIHandler.OnFetchingItemCallback = this.OnFetchingItem; InventoryUIHandler.OnCarePlayItemCallback = this.OnCarePlayItem; // set Hud Callback to enable gestures //m_carePlayUI.GetComponent<CareAndPlayHUD>().SetDialogCloseCB(m_gestureManager.EnableGestures); // init dragon animation controller m_dragonAnimScript = m_petDragon.gameObject.GetComponent<DragonScript>(); m_dragonAnimScript.SetPettingDelegate(this); // init dragon animation m_dragonAnimation = m_petDragon.gameObject.GetComponent<DragonAnimation>(); m_dragonAnimation.SetPettingDelegate(this); m_petDragon.GetComponent<JawCruncherStateController>().SetPettingDelegate( this ); // init dragon animation tool DragonAnimationQueue.getInstance().SetDAnim(m_petDragon.gameObject.GetComponent<DragonAnimation>()); DragonAnimationQueue.getInstance().SetPettingDelegate(this); // initialize DragonStateMachine m_dragonStateMachine = m_petDragon.gameObject.GetComponent<Dragon>(); m_dragonStateMachine.SetPettingDelegate(this); m_dragonStateMachine.Initialize(); // initialize DragonScript m_dragonAnimScript.Initialize(); // Setup Pausables m_petDragon.AddComponent<Pausable>(); m_mainCamera.AddComponent<Pausable>(); // reset values StatsManager.Instance.DragonMode = StatsManager.MODE_NORMAL; // - LA //StatsManager.Instance.DragonMode = StatsManager.MODE_ACT1; // - LA // on start of touchplay, always set interactive to true m_dragonStateMachine.SetIsInteractible(true); // Swipe UI m_swipeUI = GameObject.Find("SwipeUI"); m_swipeHolder = GameObject.Find("SwipeHolder"); m_swipeFingerGO = GameObject.Find("SwipeFinger"); m_swipeFinger = m_swipeFingerGO.GetComponent<TweenPosition>(); m_swipeUITexture = m_swipeUI.GetComponent<UITexture>(); m_swipeUITexture.alpha = 0.3f; m_swipeHolder.SetActive(false); m_swipeUI.GetComponent<UITexture>().alpha = 0.5f; m_swipeFingerGO.GetComponent<UITexture>().alpha = 0.75f; //Double Tap UI m_doubleTapTweenPos = GameObject.Find("DoubleTapUI").GetComponent<TweenPosition>(); GameObject successIcon = GameObject.Find("SuccesIcon"); UISprite spriteSucccessIcon = successIcon.GetComponent<UISprite>(); spriteSucccessIcon.alpha = 0.0f; m_successIconTweenAlpha = successIcon.GetComponent<TweenAlpha>(); m_successIconTweenAlpha.onFinished=ResetSuccesAnimation; // hide UIs this.HideUI("DCall"); // Handle Timer for Usage Tracker m_usageTrackerScheduler = S6Scheduler.ScheduleAction( this, StatsManager.Instance.UpdateTrackers, 0.5f, S6Scheduler.INFINITE, false); // update dragon mood for Animation Controllers StatsManager.Instance.UpdateMood(); // load objects // fish m_fishItems.Add(this.CreateObject( "Fish", "Prefabs/Feeding/FeedingFish", 1.0f)); // chicken m_chickenItems.Add(this.CreateObject( "ChickenLeg", "Prefabs/Feeding/FeedingChickenLeg", 1.0f)); m_chickenItems.Add(this.CreateObject( "ChickenThigh", "Prefabs/Feeding/FeedingChickenThigh", 1.0f)); m_chickenItems.Add(this.CreateObject( "ChickenWing", "Prefabs/Feeding/FeedingChickenWing", 1.0f)); // seafood m_seafoodItems.Add(this.CreateObject( "Crab", "Prefabs/Feeding/FeedingCrab", 1.0f)); m_seafoodItems.Add(this.CreateObject( "Lobster", "Prefabs/Feeding/FeedingLobster", 1.0f)); m_seafoodItems.Add(this.CreateObject( "Shrimp", "Prefabs/Feeding/FeedingShrimp", 1.0f)); // fruits & veggies m_fruitsAndVeggiesItems.Add(this.CreateObject( "FruitsAndVeggies", "Prefabs/Feeding/FeedingOrange", 1.0f)); m_fruitsAndVeggiesItems.Add(this.CreateObject( "FruitsAndVeggies", "Prefabs/Feeding/FeedingPeach", 1.0f)); m_fruitsAndVeggiesItems.Add(this.CreateObject( "FruitsAndVeggies", "Prefabs/Feeding/FeedingTurnip", 1.0f)); // fetching items m_fetchingItems.Add(this.CreateObject( "Boomerang", "Prefabs/Fetching/Boomerang", 1.0f)); // adjust boomerang transform m_fetchingItems[0].transform.parent = Camera.main.transform; m_fetchingItems[0].transform.localPosition = new Vector3( -0.05178565f, -0.51644f, 1.536007f ); m_fetchingItems[0].transform.localRotation = Quaternion.Euler(new Vector3( 0.0f, 283.0f, 69.99999f )); // Handle disable/enable of gestures during hide/show of overlays // These methods are called during the initial add & remove of overlays. ScreenManager.Instance.OnDisplayOverlay = () => { switch( TutorialController.GTutState ) { case TutorialController.ETutorialState.BondMeterIntro: case TutorialController.ETutorialState.PlayerProfileIntro: // don't update gestures during this state of tutorial break; default: m_gestureManager.DisableGestures(); break; } }; ScreenManager.Instance.OnHideOverlay = () => { switch( TutorialController.GTutState ) { case TutorialController.ETutorialState.BondMeterIntro: case TutorialController.ETutorialState.PlayerProfileIntro: // don't update gestures during this state of tutorial break; default: m_gestureManager.EnableGestures(); break; } }; // Check Scenes this.HandleScenes(); }
public bool IsUserControlAllowed(CameraRigController cameraRigController) { return(this.allowUserControl); }
public bool IsHudAllowed(CameraRigController cameraRigController) { return(this.allowUserHud); }
private static void SetCameraStateOverride(On.RoR2.CameraRigController.orig_SetCameraState orig, CameraRigController self, CameraState cameraState) { if (Run.instance) { if (self.cameraMode is RoR2.CameraModes.CameraModePlayerBasic) { if (ModConfig.InitialFirstPersonValue) { if (!VRCameraWrapper.instance) { GameObject wrapperObject = new GameObject("VR Camera Rig"); VRCameraWrapper.instance = wrapperObject.AddComponent <VRCameraWrapper>(); VRCameraWrapper.instance.Init(self); } if (!self.cameraMode.IsSpectating(self) && self.cameraModeContext.targetInfo.isViewerControlled && self.targetBody) { VRCameraWrapper.instance.UpdateRotation(cameraState); cameraState.rotation = self.sceneCam.transform.rotation; } if (self.targetBody.IsLocalBody()) { if (!cachedCameraTargetTransform) { if (!ModConfig.InitialRoomscaleValue) { ChildLocator childLocator = self.targetBody.modelLocator.modelTransform.GetComponent <ChildLocator>(); if (childLocator) { cachedCameraTargetTransform = childLocator.FindChild("VRCamera"); } } if (!cachedCameraTargetTransform) { cachedCameraTargetTransform = new GameObject("VRCamera").transform; cachedCameraTargetTransform.SetParent(self.targetBody.transform); cachedCameraTargetTransform.localPosition = Vector3.zero; cachedCameraTargetTransform.localRotation = Quaternion.identity; CapsuleCollider collider = self.targetBody.GetComponent <CapsuleCollider>(); if (collider) { if (ModConfig.InitialRoomscaleValue) { cachedCameraTargetTransform.Translate(collider.center + new Vector3(0, -collider.height / 2, 0), Space.Self); } else { cachedCameraTargetTransform.Translate(collider.center + new Vector3(0, collider.height / 2, 0), Space.Self); } VRCameraWrapper.instance.transform.localScale = Vector3.one * (collider.height / ModConfig.PlayerHeight.Value); } } } VRCameraWrapper.instance.transform.position = self.hasOverride ? cameraState.position : cachedCameraTargetTransform.position; } } } if (!self.targetBody.IsLocalBody() && (SceneCatalog.mostRecentSceneDef.sceneType == SceneType.Stage || SceneCatalog.mostRecentSceneDef.sceneType == SceneType.Intermission) && Run.instance.livingPlayerCount > 0) { if (!spectatorCamera) { Camera cameraReference = Camera.main; bool cameraReferenceEnabled = cameraReference.enabled; if (cameraReferenceEnabled) { cameraReference.enabled = false; } bool cameraReferenceActive = cameraReference.gameObject.activeSelf; if (cameraReferenceActive) { cameraReference.gameObject.SetActive(false); } spectatorCamera = GameObject.Instantiate(cameraReference.gameObject, null); Component[] components = spectatorCamera.GetComponents <Component>(); foreach (Component component in components) { if (!(component is Transform) && !(component is Camera) && !(component is PostProcessLayer) && !(component is RoR2.PostProcess.SobelCommandBuffer && !(component is ThreeEyedGames.DecaliciousRenderer))) { Component.Destroy(component); } } spectatorCameraComponent = spectatorCamera.GetComponent <Camera>(); spectatorCameraComponent.stereoTargetEye = StereoTargetEyeMask.None; spectatorCameraComponent.targetTexture = spectatorCameraPrefab.GetComponent <Camera>().targetTexture; if (cameraReferenceActive != cameraReference.gameObject.activeSelf) { cameraReference.gameObject.SetActive(cameraReferenceActive); } if (cameraReferenceEnabled != cameraReference.enabled) { cameraReference.enabled = cameraReferenceEnabled; } spectatorCamera.SetActive(true); spectatorCameraComponent.enabled = true; UnityEngine.XR.XRDevice.DisableAutoXRCameraTracking(spectatorCameraComponent, true); } if (!spectatorScreen) { spectatorScreen = GameObject.Instantiate(spectatorScreenPrefab, null); Utils.SetLayerRecursive(spectatorScreen, LayerIndex.ui.intVal); spectatorScreen.transform.rotation = Quaternion.Euler(new Vector3(0, self.uiCam.transform.eulerAngles.y, 0)); spectatorScreen.transform.position = self.uiCam.transform.position + spectatorScreen.transform.forward * 2; } spectatorCamera.transform.position = cameraState.position; spectatorCamera.transform.rotation = cameraState.rotation; spectatorCameraComponent.fieldOfView = cameraState.fov; } else { if (spectatorCamera) { GameObject.Destroy(spectatorCamera); } if (spectatorScreen) { GameObject.Destroy(spectatorScreen); } } } orig(self, cameraState); }
private static void InitCamera(On.RoR2.CameraRigController.orig_Start orig, CameraRigController self) { orig(self); if (self.sceneCam.cullingMask == (self.sceneCam.cullingMask | (1 << LayerIndex.triggerZone.intVal))) { self.sceneCam.cullingMask &= ~(1 << LayerIndex.triggerZone.intVal); } if (self.sceneCam.cullingMask == (self.sceneCam.cullingMask | (1 << LayerIndex.noDraw.intVal))) { self.sceneCam.cullingMask &= ~(1 << LayerIndex.noDraw.intVal); } if (self.gameObject.scene.name == "intro" && self.sceneCam.cullingMask == (self.sceneCam.cullingMask | (1 << LayerIndex.ui.intVal))) { self.sceneCam.cullingMask &= ~(1 << LayerIndex.ui.intVal); } if (Run.instance && ModConfig.UseConfortVignette.Value) { self.uiCam.gameObject.AddComponent <ConfortVignette>(); } GameObject cameraOffsetObject = new GameObject("Camera Offset"); cameraOffset = cameraOffsetObject.transform; cameraOffset.transform.SetParent(self.transform); cameraOffset.transform.localPosition = Vector3.zero; cameraOffset.transform.localRotation = Quaternion.identity; cameraOffset.transform.localScale = Vector3.one; self.sceneCam.transform.SetParent(cameraOffset.transform); if (ModConfig.InitialRoomscaleValue && !Run.instance) { self.currentCameraState = self.desiredCameraState; } if (!ModConfig.InitialOculusModeValue && ModConfig.InitialRoomscaleValue) { if (liv) { GameObject.Destroy(liv); } liv = self.gameObject.AddComponent <LIV.SDK.Unity.LIV>(); liv.stage = self.transform; liv.stageTransform = cameraOffset.transform; liv.HMDCamera = self.sceneCam; liv.excludeBehaviours = new string[] { "AkAudioListener", "Rigidbody", "AkGameObj", "CameraResolutionScaler", "TranslucentImageSource" }; liv.spectatorLayerMask = self.sceneCam.cullingMask; liv.enabled = true; } if (self.hud) { UIFixes.AdjustHUD(self.hud); } RoR2Application.instance.mainCanvas.worldCamera = self.uiCam; if (FocusChecker.instance) { FocusChecker.instance.UpdateCameraRig(self); } }
private static void RemoveCameraLerp(On.RoR2.CameraRigController.orig_SetOverrideCam orig, CameraRigController self, ICameraStateProvider newOverrideCam, float lerpDuration) { orig(self, newOverrideCam, 0); }
public void FixedUpdate() { if (NetworkServer.active) { while (enemyFollowers.Count < stack) { GameObject enemyFollower = Object.Instantiate(enemyFollowerPrefab, body.corePosition, Quaternion.identity); enemyFollower.GetComponent <GenericOwnership>().ownerObject = gameObject; NetworkServer.Spawn(enemyFollower); enemyFollowers.Add(enemyFollower.GetComponent <MysticsItemsSpotterController>()); } while (enemyFollowers.Count > stack) { MysticsItemsSpotterController enemyFollower = enemyFollowers.Last(); NetworkServer.UnSpawn(enemyFollower.gameObject); Object.Destroy(enemyFollower.gameObject); enemyFollowers.Remove(enemyFollower); } } cooldown -= Time.fixedDeltaTime; if (cooldown <= 0f) { cooldown = cooldownMax; if (NetworkServer.active) { bullseyeSearch.teamMaskFilter = TeamMask.allButNeutral; bullseyeSearch.teamMaskFilter.RemoveTeam(body.teamComponent.teamIndex); Ray ray = CameraRigController.ModifyAimRayIfApplicable(new Ray { origin = body.inputBank.aimOrigin, direction = body.inputBank.aimDirection }, body.gameObject, out _); bullseyeSearch.searchOrigin = ray.origin; bullseyeSearch.searchDirection = ray.direction; bullseyeSearch.viewer = body; bullseyeSearch.maxDistanceFilter = 200f; bullseyeSearch.RefreshCandidates(); bullseyeSearch.FilterOutGameObject(body.gameObject); List <HurtBox> enemies = bullseyeSearch.GetResults().ToList(); foreach (MysticsItemsSpotterController enemyFollower in enemyFollowers) { enemyFollower.ClearTarget(); } if (enemies.Count > 0) { Util.PlaySound("Play_item_proc_spotter", gameObject); foreach (MysticsItemsSpotterController enemyFollower in enemyFollowers) { GameObject newTarget = null; while (newTarget == null && enemies.Count > 0) { int index = Mathf.FloorToInt(enemies.Count * (Random.value * 0.99f)); HurtBox newTargetHurtBox = enemies.ElementAt(index); enemies.RemoveAt(index); if (newTargetHurtBox.healthComponent && newTargetHurtBox.healthComponent.body) { CharacterBody newTargetBody = newTargetHurtBox.healthComponent.body; if (!newTargetBody.HasBuff(buffDef)) { newTarget = newTargetBody.gameObject; } } } if (newTarget) { enemyFollower.SetTarget(newTarget); } else { enemyFollower.ClearTarget(); } } } else { cooldown = cooldownIfNoEnemiesFound; } } } }
void Start() { m_cameraRigController = transform.parent.GetComponent <CameraRigController>(); m_distance = m_targetDistance = m_initialDistance; }