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

View File

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