Exemple #1
0
        public void DistributeCommand(IControllable controllable, ControlAction action)
        {
            if (!Loader.Instance.Network.IsClusterSimulation || Loader.Instance.Network.IsClient)
            {
                return;
            }
            if (!Controllers.ContainsKey(controllable))
            {
                return;
            }
            var message = MessagesPool.Instance.GetMessage();

            message.AddressKey = Key;
            message.Content.PushString(action.Value);
            message.Content.PushString(action.Action);
            idsRegister.PushId(message, Controllers[controllable]);
            message.Type = DistributedMessageType.ReliableOrdered;
            BroadcastMessage(message);
        }
Exemple #2
0
        public void ReceiveMessage(IPeerManager sender, DistributedMessage distributedMessage)
        {
            if (!Loader.Instance.Network.IsClusterSimulation || !Loader.Instance.Network.IsClient)
            {
                return;
            }
            //Currently single control actions are supported
            var controllableId = idsRegister.PopId(distributedMessage.Content);
            var controller     = idsRegister.ResolveObject(controllableId) as ControllableController;

            if (controller == null)
            {
                return;
            }
            var action = new ControlAction
            {
                Action = distributedMessage.Content.PopString(), Value = distributedMessage.Content.PopString()
            };

            controller.Controllable.Control(new List <ControlAction> {
                action
            });
        }