mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-03-13 10:13:50 +00:00
* * removed need for NetPlayer * split JoinPlayer into JoinPlayer and LeavePlayer * cleanup of player and ship in LeavePlayer * null checks in anim mirror * it kinda works * resetting some more stuff when DCing * cleaning up ship * removed some unused code * cleanup * cleaning up all client owned objects * resetting (mostly) anim stuff when leaving * setting local instance on player transform sync right away Co-authored-by: Ricardo Lopes <Raicuparta@users.noreply.github.com>
57 lines
1.6 KiB
C#
57 lines
1.6 KiB
C#
using System.Linq;
|
|
using QSB.Messaging;
|
|
using UnityEngine;
|
|
using UnityEngine.Networking;
|
|
|
|
namespace QSB.Events
|
|
{
|
|
public class PlayerLeave : NetworkBehaviour
|
|
{
|
|
private MessageHandler<LeaveMessage> _leaveHandler;
|
|
|
|
private void Awake()
|
|
{
|
|
_leaveHandler = new MessageHandler<LeaveMessage>();
|
|
_leaveHandler.OnClientReceiveMessage += OnClientReceiveMessage;
|
|
}
|
|
|
|
public void Leave(uint playerId, uint[] objectIds)
|
|
{
|
|
var message = new LeaveMessage
|
|
{
|
|
PlayerName = PlayerJoin.PlayerNames[playerId],
|
|
SenderId = playerId,
|
|
ObjectIds = objectIds
|
|
};
|
|
_leaveHandler.SendToAll(message);
|
|
}
|
|
|
|
private void OnClientReceiveMessage(LeaveMessage message)
|
|
{
|
|
DebugLog.All(message.PlayerName, "left");
|
|
PlayerJoin.PlayerNames.Remove(message.SenderId);
|
|
foreach (var objectId in message.ObjectIds)
|
|
{
|
|
DestroyObject(objectId);
|
|
}
|
|
}
|
|
|
|
private void DestroyObject(uint objectId)
|
|
{
|
|
var component = GameObject.FindObjectsOfType<NetworkBehaviour>()
|
|
.FirstOrDefault(x => x.netId.Value == objectId);
|
|
if (component == null)
|
|
{
|
|
return;
|
|
}
|
|
var transformSync = component.GetComponent<TransformSync.TransformSync>();
|
|
if (transformSync != null)
|
|
{
|
|
Destroy(transformSync.SyncedTransform.gameObject);
|
|
}
|
|
Destroy(component.gameObject);
|
|
}
|
|
|
|
}
|
|
}
|