mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-04 03:39:55 +00:00
Client and server both getting sectors correctly I think?
This commit is contained in:
parent
8a2113c0f8
commit
d23615f5e9
@ -8,7 +8,7 @@ namespace QSB {
|
||||
Transform _body;
|
||||
float _smoothSpeed = 10f;
|
||||
public static NetworkPlayer localInstance { get; private set; }
|
||||
Transform _sectorTransform;
|
||||
Sector.Name _prevSector;
|
||||
|
||||
void Start () {
|
||||
if (isLocalPlayer) {
|
||||
@ -16,9 +16,7 @@ namespace QSB {
|
||||
} else {
|
||||
QSB.LogToScreen("Started REMOTE network player", netId.Value);
|
||||
}
|
||||
QSB.players[netId.Value] = this;
|
||||
|
||||
_sectorTransform = Locator.GetAstroObject(AstroObject.Name.TimberHearth).transform;
|
||||
QSB.playerSectors[netId.Value] = Locator.GetAstroObject(AstroObject.Name.TimberHearth).transform;
|
||||
|
||||
var player = Locator.GetPlayerBody().transform.Find("Traveller_HEA_Player_v2");
|
||||
if (isLocalPlayer) {
|
||||
@ -42,33 +40,11 @@ namespace QSB {
|
||||
|
||||
}
|
||||
|
||||
public void OnReceiveMessage (int sectorId) {
|
||||
QSB.LogToScreen("Messager Receive", netId.Value);
|
||||
|
||||
if (isServer) {
|
||||
var msg = new SectorMessage();
|
||||
msg.senderId = netId.Value;
|
||||
msg.sectorId = sectorId;
|
||||
NetworkServer.SendToAll(SectorMessage.Type, msg);
|
||||
}
|
||||
SetSectorById(sectorId);
|
||||
}
|
||||
|
||||
void SetSectorById (int sectorId) {
|
||||
var sectorName = (Sector.Name) sectorId;
|
||||
var sectors = GameObject.FindObjectsOfType<Sector>();
|
||||
foreach (var sector in sectors) {
|
||||
if (sectorName == sector.GetName()) {
|
||||
QSB.LogToScreen("Found sector", sectorName, ", setting for", netId.Value);
|
||||
_sectorTransform = sector.transform;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void EnterSector (Sector sector) {
|
||||
var name = sector.GetName();
|
||||
if (name != Sector.Name.Unnamed && name != Sector.Name.Ship) {
|
||||
QSB.playerSectors[netId.Value] = QSB.GetSectorByName(sector.GetName());
|
||||
|
||||
SectorMessage msg = new SectorMessage();
|
||||
msg.sectorId = (int) sector.GetName();
|
||||
msg.senderId = netId.Value;
|
||||
@ -84,12 +60,14 @@ namespace QSB {
|
||||
if (!_body) {
|
||||
return;
|
||||
}
|
||||
|
||||
var sectorTransform = QSB.playerSectors[netId.Value];
|
||||
if (isLocalPlayer) {
|
||||
transform.position = _body.position - _sectorTransform.position;
|
||||
transform.rotation = _body.rotation * Quaternion.Inverse(_sectorTransform.rotation);
|
||||
transform.position = _body.position - sectorTransform.position;
|
||||
transform.rotation = _body.rotation * Quaternion.Inverse(sectorTransform.rotation);
|
||||
} else {
|
||||
_body.position = Vector3.Lerp(_body.position, _sectorTransform.position + transform.position, _smoothSpeed * Time.deltaTime);
|
||||
_body.rotation = transform.rotation * _sectorTransform.rotation;
|
||||
_body.position = Vector3.Lerp(_body.position, sectorTransform.position + transform.position, _smoothSpeed * Time.deltaTime);
|
||||
_body.rotation = transform.rotation * sectorTransform.rotation;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
29
QSB/QSB.cs
29
QSB/QSB.cs
@ -7,7 +7,7 @@ using UnityEngine.Networking;
|
||||
namespace QSB {
|
||||
public class QSB: ModBehaviour {
|
||||
static QSB _instance;
|
||||
public static Dictionary<uint, NetworkPlayer> players;
|
||||
public static Dictionary<uint, Transform> playerSectors;
|
||||
|
||||
void Awake () {
|
||||
Application.runInBackground = true;
|
||||
@ -23,7 +23,7 @@ namespace QSB {
|
||||
void Start () {
|
||||
_instance = this;
|
||||
|
||||
players = new Dictionary<uint, NetworkPlayer>();
|
||||
playerSectors = new Dictionary<uint, Transform>();
|
||||
|
||||
var assetBundle = ModHelper.Assets.LoadBundle("assets/network");
|
||||
var networkManager = Instantiate(assetBundle.LoadAsset<GameObject>("assets/networkmanager.prefab"));
|
||||
@ -51,10 +51,31 @@ namespace QSB {
|
||||
NotificationManager.SharedInstance.PostNotification(data, false);
|
||||
}
|
||||
|
||||
public static Transform GetSectorByName (Sector.Name sectorName) {
|
||||
var sectors = GameObject.FindObjectsOfType<Sector>();
|
||||
foreach (var sector in sectors) {
|
||||
if (sectorName == sector.GetName()) {
|
||||
return sector.transform;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void OnReceiveMessage (NetworkMessage netMsg) {
|
||||
QSB.LogToScreen("global message receive");
|
||||
QSB.LogToScreen("Global message receive");
|
||||
SectorMessage msg = netMsg.ReadMessage<SectorMessage>();
|
||||
players[msg.senderId].OnReceiveMessage(msg.sectorId);
|
||||
|
||||
var sectorName = (Sector.Name) msg.sectorId;
|
||||
var sectorTransform = GetSectorByName(sectorName);
|
||||
|
||||
if (sectorTransform == null) {
|
||||
QSB.LogToScreen("Sector", sectorName, "not found");
|
||||
return;
|
||||
}
|
||||
|
||||
QSB.LogToScreen("Found sector", sectorName, ", setting for", msg.senderId);
|
||||
|
||||
playerSectors[msg.senderId] = sectorTransform;
|
||||
}
|
||||
|
||||
static class Patches {
|
||||
|
Loading…
x
Reference in New Issue
Block a user