// replace skipcinematic method to disable VR recenter after a cinematic. Only the player should initiate a recenter. public static bool SkipCinematic_Prefix(PlayerCinematicController __instance, Player player) { Traverse.Create(__instance).Field("player").SetValue(player); // set private player field if (player) { Transform playerTransform = player.GetComponent <Transform>(); Transform MCCTransform = MainCameraControl.main.GetComponent <Transform>(); if (Traverse.Create(__instance).Method("UseEndTransform").GetValue <bool>()) // execute private bool method { player.playerController.SetEnabled(false); /*if (XRSettings.enabled) * { * MainCameraControl.main.ResetCamera(); * VRUtil.Recenter(); * }*/ playerTransform.position = __instance.endTransform.position; playerTransform.rotation = __instance.endTransform.rotation; MCCTransform.rotation = playerTransform.rotation; } player.playerController.SetEnabled(true); player.cinematicModeActive = false; } if (__instance.informGameObject != null) { __instance.informGameObject.SendMessage("OnPlayerCinematicModeEnd", __instance, SendMessageOptions.DontRequireReceiver); } return(false); // don't execute original SkipCinematic method }
void Start() { attackSource = gameObject.AddComponent <AudioSource>(); attackSource.minDistance = 2f; attackSource.maxDistance = 11f; attackSource.spatialBlend = 1f; attackSource.volume = ECCHelpers.GetECCVolume(); biteClipPool = ECCAudio.CreateClipPool("TwisteelBite"); cinematicClipPool = ECCAudio.CreateClipPool("TwisteelCin"); gameObject.SearchChild("Head").EnsureComponent <OnTouch>().onTouch = new OnTouch.OnTouchEvent(); gameObject.SearchChild("Head").EnsureComponent <OnTouch>().onTouch.AddListener(OnTouch); playerDeathCinematic = gameObject.AddComponent <PlayerCinematicController>(); playerDeathCinematic.animatedTransform = gameObject.SearchChild("PlayerCam").transform; playerDeathCinematic.animator = creature.GetAnimator(); playerDeathCinematic.animParamReceivers = new GameObject[0]; }
void Start() { attackSource = gameObject.AddComponent <AudioSource>(); attackSource.minDistance = 10f; attackSource.maxDistance = 40f; attackSource.spatialBlend = 1f; attackSource.volume = ECCHelpers.GetECCVolume(); clipPool = ECCAudio.CreateClipPool("GulperAttack"); gameObject.SearchChild("Mouth").GetComponent <OnTouch>().onTouch = new OnTouch.OnTouchEvent(); gameObject.SearchChild("Mouth").GetComponent <OnTouch>().onTouch.AddListener(OnTouch); playerDeathCinematic = gameObject.AddComponent <PlayerCinematicController>(); playerDeathCinematic.animatedTransform = gameObject.SearchChild("PlayerCam").transform; playerDeathCinematic.animator = creature.GetAnimator(); playerDeathCinematic.animParamReceivers = new GameObject[0]; throat = gameObject.SearchChild("Throat").transform; }
// Currently we don't sync playerController.informGameObject but no problem could be found while testing. public CinematicControllerPrefab(PlayerCinematicController playerController) { animatedTransform = playerController.animatedTransform; endTransform = playerController.endTransform; onlyUseEndTransformInVr = playerController.onlyUseEndTransformInVr; playInVr = playerController.playInVr; playerViewAnimationName = playerController.playerViewAnimationName; playerViewInterpolateAnimParam = playerController.playerViewInterpolateAnimParam; animParam = playerController.animParam; interpolateAnimParam = playerController.interpolateAnimParam; interpolationTime = playerController.interpolationTime; interpolationTimeOut = playerController.interpolationTimeOut; receiversAnimParam = playerController.receiversAnimParam; animParamReceivers = playerController.animParamReceivers; interpolateDuringAnimation = playerController.interpolateDuringAnimation; animator = playerController.animator; }
public static void Postfix(PlayerCinematicController __instance) { if (!__instance.TryGetComponent(out NitroxEntity entity)) { if (!__instance.TryGetComponentInParent(out entity)) { Log.Warn($"[PlayerCinematicController_Start_Patch] - No NitroxEntity for \"{__instance.GetFullHierarchyPath()}\" found!"); return; } } if (!entity.gameObject.TryGetComponent(out MultiplayerCinematicReference reference)) { reference = entity.gameObject.AddComponent <MultiplayerCinematicReference>(); } reference.AddController(__instance); }
public static void Prefix(PlayerCinematicController __instance) { if (!__instance.cinematicModeActive) { return; } if (!__instance.TryGetComponent(out NitroxEntity entity)) { entity = __instance.GetComponentInParent <NitroxEntity>(); if (!entity) { Log.Warn($"[{nameof(PlayerCinematicController_OnPlayerCinematicModeEnd_Patch)}] - No NitroxEntity for \"{__instance.GetFullHierarchyPath()}\" found!"); return; } } int identifier = MultiplayerCinematicReference.GetCinematicControllerIdentifier(__instance.gameObject, entity.gameObject); Resolve <PlayerCinematics>().EndCinematicMode(playerId, entity.Id, identifier, __instance.playerViewAnimationName); }
public static bool SkipCinematic_Prefix(PlayerCinematicController __instance, Player player) { Traverse.Create(__instance).Field("player").SetValue(player); if (player) { Transform component = player.GetComponent <Transform>(); Transform component2 = MainCameraControl.main.GetComponent <Transform>(); if (Traverse.Create(__instance).Method("UseEndTransform", new object[0]).GetValue <bool>()) { player.playerController.SetEnabled(false); component.position = __instance.endTransform.position; component.rotation = __instance.endTransform.rotation; component2.rotation = component.rotation; } player.playerController.SetEnabled(true); player.cinematicModeActive = false; } if (__instance.informGameObject != null) { __instance.informGameObject.SendMessage("OnPlayerCinematicModeEnd", __instance, SendMessageOptions.DontRequireReceiver); } return(false); }