public void TerrainDataRequest(Connection connection, int terrainMessageId, Point3D location, float rotationLeft, float rotationUp)
            {
                Console.WriteLine("< TerrainDataRequest: {0}", terrainMessageId);

                byte[] data = Connection.PrepareByteArray(MessageCodes.Terrain, Point3D.SerializedSize + 12);

                BitConverter.GetBytes(terrainMessageId).CopyTo(data, 5);
                location.Serialize(ref data, 9);
                BitConverter.GetBytes(rotationLeft).CopyTo(data, Point3D.SerializedSize + 9);
                BitConverter.GetBytes(rotationUp).CopyTo(data, Point3D.SerializedSize + 13);

                connection.SendMessage(ref data, NetworkChannels.TerrainDataChannel);
            }
            public void PlaceOrRemoveCubeNotification(Connection connection, bool place, Point3D location, float rotationLeft, float rotationUp, ushort materialId)
            {
                //Console.WriteLine("< PlaceOrRemoveCubeNotification");

                byte[] data = Connection.PrepareByteArray(MessageCodes.PlaceOrRemoveCube, Point3D.SerializedSize + 11);

                data[5] = (byte)(place ? 1 : 0);
                location.Serialize(ref data, 6);
                BitConverter.GetBytes(rotationLeft).CopyTo(data, Point3D.SerializedSize + 6);
                BitConverter.GetBytes(rotationUp).CopyTo(data, Point3D.SerializedSize + 10);
                BitConverter.GetBytes(materialId).CopyTo(data, Point3D.SerializedSize + 14);

                connection.SendMessage(ref data, NetworkChannels.TerrainDataChannel);
            }
            public void PlayerMovedNotification(Connection connection, Point3D location, float rotationLeft, float rotationUp)
            {
                //Console.WriteLine("< PlayerMovedNotification: Pos {0}, L {1:0.0}, U {2:0.0}", location, rotationLeft, rotationUp);

                byte[] data = Connection.PrepareByteArray(MessageCodes.Moved, Point3D.SerializedSize + 8);

                location.Serialize(ref data, 5);
                BitConverter.GetBytes(rotationLeft).CopyTo(data, Point3D.SerializedSize + 5);
                BitConverter.GetBytes(rotationUp).CopyTo(data, Point3D.SerializedSize + 9);

                connection.SendMessage(ref data, NetDeliveryMethod.ReliableSequenced, NetworkChannels.EntityMessagesChannel);
            }