コード例 #1
0
        private void UpdatePositionForOthers(Vector2 position)
        {
            var id = playerGameObjectGetter.GetPlayerGameObject().Id;
            var directionTransform = playerGameObjectGetter.GetPlayerGameObject().Components.GetComponent <IDirectionTransform>().AssertNotNull();
            var direction          = directionTransform.Direction.GetDirectionsFromDirection();
            var parameters         = new SceneObjectPositionChangedEventParameters(id, position.X, position.Y, direction);

            interestAreaNotifier.NotifySubscribers((byte)GameEvents.PositionChanged, parameters, MessageSendOptions.DefaultUnreliable((byte)GameDataChannels.Position));
        }
コード例 #2
0
        private void OnPositionChanged(SceneObjectPositionChangedEventParameters parameters)
        {
            var id = parameters.SceneObjectId;

            if (sceneObject.Id != id)
            {
                return;
            }

            var position  = new Vector2(parameters.X, parameters.Y);
            var direction = parameters.Direction;

            SetPosition(position, direction);
        }
コード例 #3
0
        private void OnPositionChanged(Vector2 position)
        {
            var body = GetBody().AssertNotNull();

            body.SetXForm(position.FromVector2(), body.GetAngle());

            if (Vector2.Distance(position, lastPosition) > 0.1f)
            {
                UpdatePositionForAll();
                lastPosition = position;
            }

            void UpdatePositionForAll()
            {
                var direction  = directionTransform.Direction.GetDirectionsFromDirection();
                var parameters = new SceneObjectPositionChangedEventParameters(Id, position.X, position.Y, direction);

                InterestAreaNotifier.NotifySubscribers((byte)GameEvents.PositionChanged, parameters, MessageSendOptions.DefaultUnreliable((byte)GameDataChannels.Position));
            }
        }