private unsafe void ProcessMessage(MyPacket p) { HandlerId id; Action <MyPacket> action; id.messageId = (MyMessageId)p.BitStream.ReadByte(8); id.receiverIndex = p.BitStream.ReadByte(8); if (((ulong)id.messageId) < this.m_thisFrameTraffic.Length) { int *numPtr1 = (int *)ref this.m_thisFrameTraffic[(int)id.messageId]; numPtr1[0] += p.BitStream.ByteLength; } p.Sender = new Endpoint(p.Sender.Id, id.receiverIndex); if (!this.m_handlers.TryGetValue(id, out action)) { HandlerId key = new HandlerId { messageId = id.messageId, receiverIndex = 0xff }; this.m_handlers.TryGetValue(key, out action); } if (action == null) { p.Return(); } else { MyStatsGraph.Begin(MyEnum <MyMessageId> .GetName(id.messageId), 0x7fffffff, "ProcessMessage", 0xe2, @"E:\Repo1\Sources\Sandbox.Game\Engine\Multiplayer\MyTransportLayer.cs"); action(p); MyStatsGraph.End(new float?((float)p.BitStream.ByteLength), 0f, "", "{0} B", null, "ProcessMessage", 0xe4, @"E:\Repo1\Sources\Sandbox.Game\Engine\Multiplayer\MyTransportLayer.cs"); } }
private HandlerIdViewModels() { Global.IsPublishHandlerIdAddedEvent = true; foreach (var item in HandlerId.GetHandlerIds()) { _dicById.Add(item.Id, new HandlerIdViewModel(item)); } Global.Access <HandlerIdAddedEvent>( Guid.Parse("b4dfdf20-d4f3-4a71-b42b-d33c142b7f15"), "新的处理器标识出现后更新VM内存数据", LogEnum.Console, action: message => { if (!_dicById.ContainsKey(message.Source.Id)) { _dicById.Add(message.Source.Id, new HandlerIdViewModel(message.Source)); OnPropertyChanged(nameof(List)); } }); Global.Access <HandlerIdUpdatedEvent>( Guid.Parse("7fed4d98-12ca-4291-be07-42e75fe87ad1"), "处理器标识信息更新后更新VM内存数据", LogEnum.Console, action: message => { if (_dicById.ContainsKey(message.Source.Id)) { var vm = _dicById[message.Source.Id]; vm.Update(message.Source); } }); }
public void Unregister(MyMessageId messageId, byte receiverIndex) { HandlerId key = new HandlerId { messageId = messageId, receiverIndex = receiverIndex }; this.m_handlers.Remove(key); }
public void Register(MyMessageId messageId, byte receiverIndex, Action <MyPacket> handler) { HandlerId key = new HandlerId { messageId = messageId, receiverIndex = receiverIndex }; this.m_handlers.Add(key, handler); }
private object UnitySliderSubHandler(HandlerId handlerId) { UnitySlider castedSlider = (UnitySlider)UnityObject; switch (handlerId.HandlerType) { case HandlerType.SliderData: return(new SliderDataHolder() { SliderBounds = castedSlider.SliderBounds, TickLabels = castedSlider.TickLabels, MainSliderHolders = castedSlider.MainSliderValues, GuessSliderHolders = castedSlider.GuessSliderValues, }); default: throw new ArgumentException($"Unknown handler id: '{handlerId.HandlerType}'"); } }
private object UnityImageSubHandler(HandlerId handlerId) { UnityImage castedImage = (UnityImage)UnityObject; switch (handlerId.HandlerType) { case HandlerType.Sprite: return(new SpriteHolder() { Sprites = castedImage.Sprites, SpriteGridWidth = castedImage.SpriteGridWidth, SpriteGridHeight = castedImage.SpriteGridHeight, BackgroundColor = castedImage.BackgroundColor }); default: throw new ArgumentException($"Unknown handler id: '{handlerId.SubType}'"); } }
public Player(string playerName) { //This players unique identifiers myHandlerId = new HandlerId(playerName + "Handler"); myPlayerId = new InstanceId(playerName + "Instance"); // Open DOB connection. Register player and joystick, subscribe for gameStates connection.Open(playerName, "", 0, this, this); connection.RegisterEntityHandler(Consoden.TankGame.Player.ClassTypeId, myHandlerId, Safir.Dob.InstanceIdPolicy.Enumeration.HandlerDecidesInstanceId, this); connection.RegisterEntityHandler(Consoden.TankGame.Joystick.ClassTypeId, myHandlerId, Safir.Dob.InstanceIdPolicy.Enumeration.HandlerDecidesInstanceId, this); connection.SubscribeEntity(Consoden.TankGame.GameState.ClassTypeId, this); //Create our player entity Consoden.TankGame.Player player = new Consoden.TankGame.Player(); player.Name.Val = playerName; connection.SetAll(player, myPlayerId, myHandlerId); //Run the game player Run(); }
public Player(string playerName) { //This players unique identifiers myHandlerId = new HandlerId (playerName + "Handler"); myPlayerId = new InstanceId (playerName + "Instance"); // Open DOB connection. Register player and joystick, subscribe for gameStates connection.Open (playerName, "", 0, this, this); connection.RegisterEntityHandler (Consoden.TankGame.Player.ClassTypeId, myHandlerId, Safir.Dob.InstanceIdPolicy.Enumeration.HandlerDecidesInstanceId, this); connection.RegisterEntityHandler (Consoden.TankGame.Joystick.ClassTypeId, myHandlerId, Safir.Dob.InstanceIdPolicy.Enumeration.HandlerDecidesInstanceId, this); connection.SubscribeEntity (Consoden.TankGame.GameState.ClassTypeId, this); //Create our player entity Consoden.TankGame.Player player = new Consoden.TankGame.Player (); player.Name.Val = playerName; connection.SetAll (player, myPlayerId, myHandlerId); //Run the game player Run (); }
/// <summary> /// Gets a handler specified by the Id /// </summary> /// <param name="id">The Id of the wanted handler</param> /// <returns>The wanted handler</returns> public static IHandler GetHandler(HandlerId id) { return Handlers.Find(handler => handler.Id == id); }
public bool Equals(HandlerId obj) { return(obj != null && (this.HandlerType == obj.HandlerType && this.SubType == obj.SubType)); }