Skip to content

Commit b66856c

Browse files
committed
Updated NetworkedTransform to better deal with non player objects
1 parent 4e39d37 commit b66856c

File tree

1 file changed

+27
-3
lines changed

1 file changed

+27
-3
lines changed

MLAPI/MonoBehaviours/Prototyping/NetworkedTransform.cs

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ void Update()
6565
{
6666
if(isLocalPlayer)
6767
{
68+
//We own the object
6869
if(Time.time - lastSendTime >= timeForLerp && (Vector3.Distance(transform.position, lastSentPos) > MinMeters || Quaternion.Angle(transform.rotation, lastSentRot) > MinDegrees))
6970
{
7071
lastSendTime = Time.time;
@@ -86,9 +87,34 @@ void Update()
8687

8788
}
8889
}
90+
else if(ownerClientId == -2 && isServer)
91+
{
92+
//This object is not our localObject. But it's not owned by anyone. Thus it's a server object.
93+
if (Time.time - lastSendTime >= timeForLerp && (Vector3.Distance(transform.position, lastSentPos) > MinMeters || Quaternion.Angle(transform.rotation, lastSentRot) > MinDegrees))
94+
{
95+
lastSendTime = Time.time;
96+
lastSentPos = transform.position;
97+
lastSentRot = transform.rotation;
98+
using (MemoryStream writeStream = new MemoryStream(24))
99+
{
100+
using (BinaryWriter writer = new BinaryWriter(writeStream))
101+
{
102+
writer.Write(transform.position.x);
103+
writer.Write(transform.position.y);
104+
writer.Write(transform.position.z);
105+
writer.Write(transform.rotation.eulerAngles.x);
106+
writer.Write(transform.rotation.eulerAngles.y);
107+
writer.Write(transform.rotation.eulerAngles.z);
108+
}
109+
SendToServerTarget("MLAPI_OnRecieveTransformFromClient", "MLAPI_POSITION_UPDATE", writeStream.GetBuffer());
110+
}
111+
112+
}
113+
}
89114
else
90115
{
91-
if((isServer && InterpolateServer) || !isServer)
116+
//If we are server and interpolation is turned on for server OR we are not server and interpolation is turned on
117+
if((isServer && InterpolateServer && InterpolatePosition) || (!isServer && InterpolatePosition))
92118
{
93119
if(Vector3.Distance(transform.position, lerpEndPos) > SnapDistance)
94120
{
@@ -104,8 +130,6 @@ void Update()
104130

105131
private void OnRecieveTransformFromServer(int clientId, byte[] data)
106132
{
107-
if (isServer)
108-
return;
109133
using (MemoryStream stream = new MemoryStream(data))
110134
{
111135
using (BinaryReader reader = new BinaryReader(stream))

0 commit comments

Comments
 (0)