private void GenerateGameObject(ServerGameObject serverGameObject) { var serverToGamePosition = tiles[serverGameObject.Position.I, serverGameObject.Position.J].transform.position; GameObject go; if (objects.ContainsKey(serverGameObject.Id)) { go = objects[serverGameObject.Id]; if (serverGameObject.Type == GameObjectType.Player) { go.GetComponent <Player>().MoveTo(serverToGamePosition); } } else { go = Instantiate(prefabs[serverGameObject.Type]); if (serverGameObject.Type == GameObjectType.Player) { go.GetComponent <Player>().IsEnemy = serverGameObject.Id != PlayerId; } objects.Add(serverGameObject.Id, go); go.transform.position = serverToGamePosition; go.GetComponent <ServerIdKeeper>().ServerId = serverGameObject.Id; } }
public void SendPlayerMoveData(int i, int j) { var go = new ServerGameObject { Id = field.PlayerId, Position = new ServerPosition(i, j), Type = GameObjectType.Player }; transport.SendPacketToServer(go); }
public static void Serialize(ServerGameObject node, ByteBuffer buffer) { using (SafeWrapByteBuffer.Get(buffer)) { buffer.Append(node.gameObject.activeSelf); buffer.AppendUnicodeString(node.gameObject.name); buffer.Append(node.instanceID); buffer.Append(node.children.Count); for (int i = 0; i < node.children.Count; i++) { NetGameObject.Serialize(node.children[i], buffer); } } }
public static byte[] CreateCommandPacket(ulong tickId, ServerGameObject targetState) { var builder = new FlatBufferBuilder(1); Packet.StartDataVector(builder, 1); ObjectChange.CreateObjectChange(builder, targetState.Id, ObjectType.Player, targetState.Position.I, targetState.Position.J); var dataOffset = builder.EndVector(); Packet.StartPacket(builder); Packet.AddTickId(builder, tickId); Packet.AddType(builder, SuperPvp.Core.Transport.PacketType.Command); Packet.AddData(builder, dataOffset); var packet = Packet.EndPacket(builder); builder.Finish(packet.Value); return(builder.SizedByteArray()); }
public void SendPacketToServer(ServerGameObject change) { var buffer = PacketGenerator.CreateCommandPacket(tick, change); endpoint.SendMessage(buffer, buffer.Length, QosType.Reliable); }