Added Sync to new players functionality to syncvars
This commit is contained in:
parent
c1e6e6cbf9
commit
7b9d2d14a7
@ -240,6 +240,72 @@ namespace MLAPI
|
|||||||
syncedFields[fieldIndex].SetValue(this, value);
|
syncedFields[fieldIndex].SetValue(this, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal void FlushToClient(int clientId)
|
||||||
|
{
|
||||||
|
//This NetworkedBehaviour has no SyncVars
|
||||||
|
if (dirtyFields.Length == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
using (MemoryStream stream = new MemoryStream())
|
||||||
|
{
|
||||||
|
using (BinaryWriter writer = new BinaryWriter(stream))
|
||||||
|
{
|
||||||
|
//Write all indexes
|
||||||
|
writer.Write(dirtyFields.Length);
|
||||||
|
for (byte i = 0; i < dirtyFields.Length; i++)
|
||||||
|
{
|
||||||
|
writer.Write(networkId);
|
||||||
|
writer.Write(networkedObject.GetOrderIndex(this));
|
||||||
|
writer.Write(networkedBehaviourId);
|
||||||
|
writer.Write(i); //Index
|
||||||
|
switch (syncedFieldTypes[i])
|
||||||
|
{
|
||||||
|
case FieldType.Bool:
|
||||||
|
writer.Write((bool)syncedFields[i].GetValue(this));
|
||||||
|
break;
|
||||||
|
case FieldType.Byte:
|
||||||
|
writer.Write((byte)syncedFields[i].GetValue(this));
|
||||||
|
break;
|
||||||
|
case FieldType.Char:
|
||||||
|
writer.Write((char)syncedFields[i].GetValue(this));
|
||||||
|
break;
|
||||||
|
case FieldType.Double:
|
||||||
|
writer.Write((double)syncedFields[i].GetValue(this));
|
||||||
|
break;
|
||||||
|
case FieldType.Single:
|
||||||
|
writer.Write((float)syncedFields[i].GetValue(this));
|
||||||
|
break;
|
||||||
|
case FieldType.Int:
|
||||||
|
writer.Write((int)syncedFields[i].GetValue(this));
|
||||||
|
break;
|
||||||
|
case FieldType.Long:
|
||||||
|
writer.Write((long)syncedFields[i].GetValue(this));
|
||||||
|
break;
|
||||||
|
case FieldType.SByte:
|
||||||
|
writer.Write((sbyte)syncedFields[i].GetValue(this));
|
||||||
|
break;
|
||||||
|
case FieldType.Short:
|
||||||
|
writer.Write((short)syncedFields[i].GetValue(this));
|
||||||
|
break;
|
||||||
|
case FieldType.UInt:
|
||||||
|
writer.Write((uint)syncedFields[i].GetValue(this));
|
||||||
|
break;
|
||||||
|
case FieldType.ULong:
|
||||||
|
writer.Write((ulong)syncedFields[i].GetValue(this));
|
||||||
|
break;
|
||||||
|
case FieldType.UShort:
|
||||||
|
writer.Write((ushort)syncedFields[i].GetValue(this));
|
||||||
|
break;
|
||||||
|
case FieldType.String:
|
||||||
|
writer.Write((string)syncedFields[i].GetValue(this));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
NetworkingManager.singleton.Send(clientId, "MLAPI_SYNC_VAR_UPDATE", "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED", stream.ToArray());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private float lastSyncTime = 0f;
|
private float lastSyncTime = 0f;
|
||||||
internal void SyncVarUpdate()
|
internal void SyncVarUpdate()
|
||||||
{
|
{
|
||||||
|
@ -112,6 +112,15 @@ namespace MLAPI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Flushes all syncVars to client
|
||||||
|
internal void FlushToClient(int clientId)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < NetworkedBehaviours.Count; i++)
|
||||||
|
{
|
||||||
|
NetworkedBehaviours[i].FlushToClient(clientId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
internal ushort GetOrderIndex(NetworkedBehaviour instance)
|
internal ushort GetOrderIndex(NetworkedBehaviour instance)
|
||||||
{
|
{
|
||||||
NetworkedBehaviour[] behaviours = GetComponentsInChildren<NetworkedBehaviour>();
|
NetworkedBehaviour[] behaviours = GetComponentsInChildren<NetworkedBehaviour>();
|
||||||
|
@ -1136,6 +1136,11 @@ namespace MLAPI
|
|||||||
}
|
}
|
||||||
Send("MLAPI_ADD_OBJECT", "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED", stream.GetBuffer(), clientId);
|
Send("MLAPI_ADD_OBJECT", "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED", stream.GetBuffer(), clientId);
|
||||||
}
|
}
|
||||||
|
//Flush syncvars:
|
||||||
|
foreach (KeyValuePair<uint, NetworkedObject> networkedObject in SpawnManager.spawnedObjects)
|
||||||
|
{
|
||||||
|
networkedObject.Value.FlushToClient(clientId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user