public GameActor(string name) { _logger = LogManager.GetLogger(string.Format("RoomActor({0})", name)); _name = name; _userMap = new Dictionary <string, UserData>(); _zone = new ServerZone(EntityFactory.Default); }
public override void OnStopServer() { Debug.Log("EntityNetworkManager.OnStopServer"); if (_zone != null) { OnZoneStop(_zone); _zone = null; _zoneChannelMap = null; } }
public override void OnStartServer() { Debug.Log("EntityNetworkManager.OnStartServer"); _zone = new ServerZone(EntityFactory.Default); _zone.EntitySpawned = OnEntitySpawn; _zone.EntityDespawned = OnEntityDespawn; _zone.EntityInvalidTargetInvoked = OnEntityInvalidTargetInvoke; _zone.EntityInvalidOwnershipInvoked = OnEntityInvalidOwnershipInvoke; _zoneChannelMap = new Dictionary <int, ProtobufChannelToServerZoneInbound>(); OnZoneStart(_zone); }
private static void Main(string[] args) { var typeTable = new TypeAliasTable(); var typeModel = TypeModel.Create(); typeModel.Add(typeof(TrackablePocoTracker <ISpaceShipData>), false) .SetSurrogate(typeof(TrackableSpaceShipDataTrackerSurrogate)); var serverZone = new ServerZone(EntityFactory.Default); var clientZones = Enumerable.Range(0, 2).Select(i => { var channelUp = new ProtobufChannelToServerZoneOutbound { TypeTable = typeTable, TypeModel = typeModel, OutboundChannel = new DummyChannelToServerZoneInbound { Channel = new ProtobufChannelToServerZoneInbound { TypeTable = typeTable, TypeModel = typeModel, ClientId = i + 1, InboundServerZone = serverZone, } } }; var clientZone = new ClientZone(EntityFactory.Default, channelUp); var channel = new ProtobufChannelToClientZoneOutbound { TypeTable = typeTable, TypeModel = typeModel, OutboundChannel = new ProtobufChannelToClientZoneInbound() { TypeTable = typeTable, TypeModel = typeModel, InboundClientZone = clientZone, } }; serverZone.AddClient(i + 1, channel); return(clientZone); }).ToArray(); serverZone.RunAction(zone => { zone.Spawn(typeof(ISpaceShip), 0, EntityFlags.AnyoneCanControl); }); var cship1A = (ClientSpaceShip)clientZones[0].GetEntity(1); var cship1B = (ClientSpaceShip)clientZones[1].GetEntity(1); Console.WriteLine($"cship1A.Score = {cship1A.Data.Score}"); clientZones[0].RunAction(_ => cship1A.Say("Hello")); Console.WriteLine($"cship1A.Score = {cship1A.Data.Score}"); clientZones[0].RunAction(_ => cship1A.Stop(1, 2)); clientZones[1].RunAction(_ => { cship1B.Say("World"); cship1B.Shoot(1, 2, 3, 4); }); }