public DropTerrain(TerrainModel t) { Position = t.Position; }
public bool Drop(TerrainModel t) { return Send(new DropTerrain(t)); }
public int UpdateTerrainCubes(TerrainModel terrain, FSharpOption<TerrainModel> old) { HashSet<ClientConnection> newClients; int newCube = WorldModel.GetCubeKey(terrain.Position); if (!CubeClients.TryGetValue(newCube, out newClients)) newClients = new HashSet<ClientConnection>(); if (old != null) { int oldCube = WorldModel.GetCubeKey(old.Value.Position); HashSet<ClientConnection> oldClients; if (!CubeClients.TryGetValue(oldCube, out oldClients)) oldClients = new HashSet<ClientConnection>(); if (oldCube != newCube) foreach (var c in oldClients.Except(newClients)) c.Drop(terrain); } foreach (var c in newClients) c.Send(terrain); return newCube; }