This commit is contained in:
JohnCorby 2022-02-14 23:35:23 -08:00
parent 9472a3708f
commit 76458bed4b
2 changed files with 34 additions and 25 deletions

View File

@ -1,4 +1,6 @@
using QSB.Utility;
using QSB.WorldSync;
using System.Linq;
using UnityEngine;
namespace QSB.Player
@ -24,42 +26,46 @@ namespace QSB.Player
{
DebugLog.DebugWrite($"WARP {_player.TransformSync}");
transform.parent = _player.Body.transform.parent;
transform.localPosition = _player.Body.transform.localPosition;
transform.localRotation = _player.Body.transform.localRotation;
transform.localScale = _player.Body.transform.localScale;
var playerGo = _player.Body;
transform.parent = playerGo.transform.parent;
transform.localPosition = playerGo.transform.localPosition;
transform.localRotation = playerGo.transform.localRotation;
transform.localScale = playerGo.transform.localScale;
var SingularityWarpEffect = _player.Body.transform.Find("SingularityWarpEffect").gameObject;
var fakePlayerGo = _player.Body.transform.Find("REMOTE_Traveller_HEA_Player_v2")
.gameObject.InstantiateInactive();
fakePlayerGo.transform.parent = transform;
fakePlayerGo.transform.localPosition = Vector3.zero;
fakePlayerGo.transform.localRotation = Quaternion.identity;
fakePlayerGo.transform.localScale = Vector3.one;
fakePlayerGo.SetActive(true);
var effectGo = SingularityWarpEffect.InstantiateInactive();
var effectGo = QSBWorldSync.GetUnityObjects<GravityCannonController>().First()._warpEffect
.gameObject.InstantiateInactive();
effectGo.transform.parent = transform;
effectGo.transform.localPosition = Vector3.zero;
effectGo.transform.localRotation = Quaternion.identity;
effectGo.transform.localScale = Vector3.one;
var effect = effectGo.GetComponent<SingularityWarpEffect>();
var curve = AnimationCurve.EaseInOut(0, 0, .2f, 1);
effect._singularity._creationCurve = curve;
effect._singularity._destructionCurve = curve;
_effect = effectGo.GetComponent<SingularityWarpEffect>();
_effect.enabled = true;
_effect._singularity.enabled = true;
_effect._singularity._startActive = false;
_effect._singularity._muteSingularityEffectAudio = false;
// var curve = AnimationCurve.EaseInOut(0, 0, .2f, 1);
// _effect._singularity._creationCurve = curve;
// _effect._singularity._destructionCurve = curve;
var renderer = effectGo.GetComponent<OWRenderer>();
renderer.SetMaterialProperty(Shader.PropertyToID("_DistortFadeDist"), 3);
renderer.SetMaterialProperty(Shader.PropertyToID("_MassScale"), _joining ? -1 : 1);
renderer.SetMaterialProperty(Shader.PropertyToID("_MaxDistortRadius"), 10);
renderer.SetMaterialProperty(Shader.PropertyToID("_Radius"), 1);
// renderer.SetMaterialProperty(Shader.PropertyToID("_DistortFadeDist"), 3);
// renderer.SetMaterialProperty(Shader.PropertyToID("_MassScale"), _joining ? -1 : 1);
// renderer.SetMaterialProperty(Shader.PropertyToID("_MaxDistortRadius"), 10);
// renderer.SetMaterialProperty(Shader.PropertyToID("_Radius"), 1);
renderer.SetColor(_joining ? Color.white * 2 : Color.black);
_effect = effect;
var warpedObjectGeometry = _effect._warpedObjectGeometry.InstantiateInactive();
warpedObjectGeometry.transform.parent = transform;
warpedObjectGeometry.transform.localPosition = Vector3.zero;
warpedObjectGeometry.transform.localRotation = Quaternion.identity;
warpedObjectGeometry.transform.localScale = Vector3.one;
_effect._warpedObjectGeometry = warpedObjectGeometry;
_effect._warpedObjectGeometry = fakePlayerGo;
_effect.OnWarpComplete += OnWarpComplete;
warpedObjectGeometry.SetActive(true);
effectGo.SetActive(true);
}

View File

@ -50,7 +50,10 @@ namespace QSB.Player.TransformSync
public override void OnStopClient()
{
JoinLeaveSingularity.Create(Player, false);
if (!isLocalPlayer)
{
JoinLeaveSingularity.Create(Player, false);
}
// TODO : Maybe move this to a leave event...? Would ensure everything could finish up before removing the player
QSBPlayerManager.OnRemovePlayer?.Invoke(Player);