public static void receiveObject(byte[] data, out IdentityAndTransform iat) { ByteReceiver br = new ByteReceiver(data); var objectID = br.getInt(); int authorityID = br.getInt(); var type = (ObjectType)br.getInt(); var prefabIndex = br.getInt(); var pos = br.getVector3(); var rot = br.getQuaternion(); iat = NetTransportManager.instance.spawnObjectSync(prefabIndex, authorityID, pos, rot, objectID); switch (type) { case ObjectType.Planet: var mass = br.getFloat(); var linVel = br.getVector3(); var angVel = br.getVector3(); var seed = br.getInt(); var radius = br.getFloat(); UniverseManager.instance.syncPlanet(iat, mass, linVel, angVel, seed, radius); break; case ObjectType.Rigidbody: var massR = br.getFloat(); var linVelR = br.getVector3(); var angVelR = br.getVector3(); makeRigidBody(iat.instance, massR, linVelR, angVelR); break; } }
private void receiveRelayS(ByteReceiver br) { DataType typeL = (DataType)br.getInt(); int uniqueID = br.getInt(); br.clean(); ReceiveDataEvent(typeL, playerInfoList[findWithUniqueID(uniqueID)], br.data); }
public virtual void receiveSyncOthers(ByteReceiver br) { br.clean(); if (isServer()) { return; } //Remove all synced PlayerInfo's int count = 0; for (int i = 0; i < playerInfoList.Count; i++) { if (playerInfoList [count].synced) { playerInfoList.RemoveAt(count); } else { count++; } } int max = br.getInt(); for (int i = 0; i < max; i++) { var pi = new PlayerInfo(); br.index = pi.deserialize(br.data, br.index); pi.synced = true; playerInfoList.Add(pi); } updatePlayerInfoListArrays(); }
public override void ReceiveDataEvent(DataType type, PlayerInfo playerInfo, byte[] data, int index = 0) { base.ReceiveDataEvent(type, playerInfo, data, index); if (type == DataType.Sync) { ByteReceiver br = new ByteReceiver(data, index); var stype = (SyncType)br.getInt(); data = br.clean(); switch (stype) { case SyncType.Spawning: receiveSpawn(data); break; case SyncType.TransUpdate: receiveTransUpdate(data); break; case SyncType.Request: if (!server) { logMessage("Request Received, not server", "error"); return; } receiveRequest(data, playerInfo); break; } } }
public void ReceiveDataBasicEvent(int hostId, int connectionID, int channelId, byte[] data, int size) { ByteReceiver br = new ByteReceiver(data); var type = (DataType)br.getInt(); br.clean(); ReceiveDataEvent(type, playerInfoList [findWithConnID(connectionID)], br.data); }
public int deserialize(byte[] bytes, int index) { ByteReceiver br = new ByteReceiver(bytes, index); uniqueID = br.getInt(); color = br.getColor(); name = br.getString(); return(br.index); }
private void receiveRequest(byte[] data, PlayerInfo pi) { ByteReceiver br = new ByteReceiver(data); switch ((RequestType)br.getInt()) { case RequestType.Universe: sendUniverseDataUpdate(pi.connID); break; } }
private void receiveTransUpdate(byte[] data) { receiveLightEnable(); ByteReceiver br = new ByteReceiver(data); int objID = br.getInt(); var updateType = (TransUpdateType)br.getInt(); int transIndex = findIndexByID(objID); if (transIndex != -1) { var netTrans = IDAndTransforms [transIndex].netTrans; switch (updateType) { case TransUpdateType.Transform: netTrans.receiveTransform(br); break; // case TransUpdateType.Position: // IDAndTransforms[transIndex].netTrans .moveTo(br.getVector3 ()); // break; // case TransUpdateType.Rotation: // IDAndTransforms[transIndex].netTrans .rotateTo(br.getQuaternion ()); // break; // case TransUpdateType.Scale: // IDAndTransforms[transIndex].netTrans .trans.localScale = br.getVector3 (); // break; case TransUpdateType.TransAndRigidbody: netTrans.receiveTransform(br); var body = netTrans.trans.GetComponent <Rigidbody> (); body.velocity = br.getVector3(); body.angularVelocity = br.getVector3(); break; } } else { logMessage("ObjectNotFound ID:" + objID, "error"); } }
public override void ReceiveDataEvent(DataType type, PlayerInfo playerInfo, byte[] data, int index = 0) { base.ReceiveDataEvent(type, playerInfo, data, index); ByteReceiver br = new ByteReceiver(data, index); switch (type) { case DataType.ListUpdate: switch ((ListUpdateType)br.getInt()) { case ListUpdateType.UpdateYourself: receiveUpdateYourself(br); break; case ListUpdateType.SyncOthers: receiveSyncOthers(br); break; } break; case DataType.Relay: int[] uniqueIDs = br.getIntArray(); bool runInServer = br.getBool(); br.clean(); sendRelayS(br.data, playerInfo.uniqueID, uniqueIDs); if (runInServer) { receiveRelayData(br, playerInfo.uniqueID); } break; case DataType.RelayS: receiveRelayS(br); break; } }