EVERYTHING

This commit is contained in:
niko
2026-06-01 17:19:55 +02:00
parent d063b81359
commit b62bac090b
1081 changed files with 1716544 additions and 0 deletions
@@ -0,0 +1,93 @@
using Photon.Pun;
using Photon.VR;
using Photon.VR.Player;
using UnityEngine;
namespace BlockSpace.Worlds
{
public static class PlayerTeleportUtil
{
public static Transform GetLocalVrTeleportRoot()
{
if (PhotonVRManager.Manager == null || PhotonVRManager.Manager.Head == null)
{
return null;
}
Transform head = PhotonVRManager.Manager.Head;
if (head.parent == null)
{
return head;
}
Transform parent = head.parent;
while (parent != null)
{
if (parent.GetComponent<CharacterController>() != null)
{
return parent;
}
if (parent.parent == null)
{
return parent;
}
parent = parent.parent;
}
return head;
}
public static bool TryTeleportLocalPlayer(Vector3 position)
{
Transform localVrTeleportRoot = GetLocalVrTeleportRoot();
if (localVrTeleportRoot != null)
{
TeleportAndZeroVelocity(localVrTeleportRoot.gameObject, position);
return true;
}
PhotonVRPlayer photonVRPlayer = ((PhotonVRManager.Manager != null) ? PhotonVRManager.Manager.LocalPlayer : null);
if (photonVRPlayer != null)
{
TeleportAndZeroVelocity(photonVRPlayer.gameObject, position);
return true;
}
int num = ((PhotonNetwork.LocalPlayer != null) ? PhotonNetwork.LocalPlayer.ActorNumber : 0);
PhotonVRPlayer[] array = Object.FindObjectsByType<PhotonVRPlayer>(FindObjectsInactive.Include);
foreach (PhotonVRPlayer photonVRPlayer2 in array)
{
if (!(photonVRPlayer2 == null))
{
PhotonView component = photonVRPlayer2.GetComponent<PhotonView>();
if (!(component == null) && (num <= 0 || component.OwnerActorNr == num) && (num > 0 || component.IsMine))
{
TeleportAndZeroVelocity(photonVRPlayer2.gameObject, position);
return true;
}
}
}
return false;
}
private static void TeleportAndZeroVelocity(GameObject root, Vector3 position)
{
if (!(root == null))
{
CharacterController component = root.GetComponent<CharacterController>();
if (component != null)
{
bool enabled = component.enabled;
component.enabled = false;
root.transform.position = position;
component.enabled = enabled;
}
else
{
root.transform.position = position;
}
Rigidbody component2 = root.GetComponent<Rigidbody>();
if (component2 != null)
{
component2.linearVelocity = Vector3.zero;
component2.angularVelocity = Vector3.zero;
}
}
}
}
}