Пример #1
0
    private void OnMovement(InputValue value)
    {
        Vector2 rawInpVec = value.Get <Vector2>();

        //Debug.Log("OnMovement" + rawInpVec);
        MovementEvent?.Invoke(rawInpVec);
    }
Пример #2
0
    [ClientRpc] void RpcEndMovement(int i)
    {
        MovementEvent movementEvent = movementEvents [i];

        movementEvent.done = true;
        UpdateColor();
    }
Пример #3
0
 public void HandleMissive(MovementEvent missive)
 {
     if (!Footstep.isPlaying)
     {
         footstepSound(missive.position);
     }
 }
Пример #4
0
 public MovableImpl(ILoggerFactory loggerFactory, MovementEvent movementEvent, IEventRecorder eventRecorder)
 {
     _movementEvent = movementEvent;
     _eventRecorder = eventRecorder;
     _logger        = loggerFactory.CreateLogger <MovableImpl>();
     _stringBuilder = new StringBuilder();
 }
Пример #5
0
        private void DeselectCurrentPosition(MovementEvent state)
        {
            var gameHasStarted = (state != null);

            if (gameHasStarted)
            {
                results[state.MovementData.CurrentPosition.ToString()].Deselect();
            }
        }
Пример #6
0
        private void ProcessMovement()
        {
            var destination = MouseHelper.GetPositionUnderMouse();

            var movementEvent = new MovementEvent(destination);

            movementEventRepository.SetValue(movementEvent);

            SetDirection();
        }
Пример #7
0
    void EndMovement(int i)
    {
        MovementEvent movementEvent = movementEvents [i];

        print("Arrive at " + VTEUtil.GetTime() + " after " + (VTEUtil.GetTime() - movementEvent.time));
        print("Completing movement " + i.ToString() + " : " + movementEvent.ToString());
        movementEvent.done = true;
        gameObject.SendMessage("OnArrivedAtPlanet", movementEvent.tgtPlanet);
        RpcEndMovement(i);
    }
Пример #8
0
        public static MovementEvent read(BinaryReader binaryReader)
        {
            MovementEvent newObj = new MovementEvent();

            newObj.object_id          = binaryReader.ReadUInt32();
            newObj.instance_timestamp = binaryReader.ReadUInt16();
            newObj.movement_data      = MovementData.read(binaryReader);

            return(newObj);
        }
    void FixedUpdate()
    {
        frameMovement.sprint = _movement.sprintTime;
        Vector3 tempForce = _movement.ApplyForces(frameMovement.forceNextFrame);

        MovementEvent?.Invoke(frameMovement);
        frameMovement                = new FrameMovement();
        frameMovement.position       = transform.position;
        frameMovement.forceNextFrame = tempForce;
    }
Пример #10
0
 public MovementInfo(MovementEvent onFall, MovementEvent onJump)
 {
     this.mOnFall                   = onFall;
     this.mOnJump                   = onJump;
     this.IsAllowedToMove           = true;
     this.mIsFalling                = false;
     this.mIsJumping                = false;
     this.IsPushedByArcaneLevitator = false;
     this.IsMovementForced          = false;
     this.mMoveDirection            = new Vector3();
     this.ClearInfo();
 }
Пример #11
0
 public MovementInfo(MovementEvent onFall, MovementEvent onJump)
 {
     this.mOnFall = onFall;
     this.mOnJump = onJump;
     this.IsAllowedToMove = true;
     this.mIsFalling = false;
     this.mIsJumping = false;
     this.IsPushedByArcaneLevitator = false;
     this.IsMovementForced = false;
     this.mMoveDirection = new Vector3();
     this.ClearInfo();
 }
Пример #12
0
    void OnMovementEvent(MovementEvent e)
    {
        mouseDrag = false;

        if (e.Direction == "left")
        {
            moveLeft = !e.EndClick;
        }
        else
        {
            moveRight = !e.EndClick;
        }
    }
Пример #13
0
    public void AddMovementEvent(FVector2 destination, float travelTime, int interpType = 0, float delay = 0.0f, bool guaranteeArrival = false )
    {
        SetupPhysics();
        MovementEvent move = new MovementEvent();
        move.destination = destination;
        move.travelTime = travelTime;
        move.interpType = interpType;
        move.delay = delay;
        move.guaranteeArrival = guaranteeArrival;
        movementEventList.AddLast(move);

        if(!movementActive) {
            StartMovementEvent();
        }
    }
Пример #14
0
    public void AddMovementEvent(FVector2 destination, float travelTime, int interpType = 0, float delay = 0.0f, bool guaranteeArrival = false)
    {
        SetupPhysics();
        MovementEvent move = new MovementEvent();

        move.destination      = destination;
        move.travelTime       = travelTime;
        move.interpType       = interpType;
        move.delay            = delay;
        move.guaranteeArrival = guaranteeArrival;
        movementEventList.AddLast(move);

        if (!movementActive)
        {
            StartMovementEvent();
        }
    }
Пример #15
0
    public override void OnEvent(MovementEvent _movementEvent)
    {
        base.OnEvent(_movementEvent);

        if (_movementEvent.character.Equals(character))
        {
            if (_movementEvent.type == MovementEventType.Stop)
            {
                StopEnemy(true);
            }
            else if (_movementEvent.type == MovementEventType.Move)
            {
                StopEnemy(false);
            }
        }
        return;
    }
Пример #16
0
    public float GetApparentTime()
    {
        float time = 0;

        for (int i = GetCurrentMovementEventIdx(); i >= 0; --i)
        {
            MovementEvent movementEvent = movementEvents [i];
            time = VTEUtil.GetApparentTime(movementEvent.startPos, movementEvent.tgtPos, movementEvent.time, unitsPerSec, VTEUtil.GetLocalPlayerComponent <Moveable> ().GetActualPosition());
            if (time >= 0)
            {
                break;
            }            // else {
//				print ("Going back " + (1 + GetCurrentMovementEventIdx () - i).ToString ());
//			}
        }
        return(time);
    }
Пример #17
0
    Vector3?GetPositionAt(float time)
    {
        if (time <= 0)
        {
            return(null);
        }
        InitMovementEvents();
        MovementEvent lastDeparture = movementEvents.FindLast(movementEvent => movementEvent.time <= time);

        if (lastDeparture == null)
        {
            return(null);
        }
        float timeRequired      = Vector3.Distance(lastDeparture.startPos, lastDeparture.tgtPos) / unitsPerSec;
        float fractionCompleted = (time - lastDeparture.time) / timeRequired;

        //		print (lastDeparture);
        //		print("Apparent Time" + time.ToString() + " Actual time " + VTEUtil.GetTime() );
        //		print ("Fraction completed = " + fractionCompleted);
        return(Vector3.Lerp(lastDeparture.startPos, lastDeparture.tgtPos, fractionCompleted));
    }
Пример #18
0
    private IEnumerator MovementEventHelper(MovementEvent move)
    {
        //print ("currentPosition: " + body.Position);
        //print ("should be moving");

        if (move.delay > 0.0f)
        {
            yield return(new WaitForSeconds(move.delay));
        }
        FVector2 speed = GetConstantSpeed(body.Position, move.destination, move.travelTime);

        body.LinearVelocity = speed;
        //Wait for movement to finish
        yield return(new WaitForSeconds(move.travelTime));

        //We're done, stop the object
        body.LinearVelocity = FVector2.Zero;

        if (move.guaranteeArrival)
        {
            body.Position = move.destination;
        }
    }
Пример #19
0
        /// <summary>
        /// Create a battle animation, given a certain move.
        /// </summary>
        /// <param name="move">The move to create an animation for.</param>
        /// <returns></returns>
        public Timeline createBattleAnimation(BattleMove move)
        {
            //TODO: Creating and handling a move's animation should be more robust and maintainable. This is a bit of a hack.

            //Create the animation timeline.
            Timeline animation = new Timeline(move);

            //Check the name of the move and create a fitting animation.
            switch (move.Name)
            {
                case "Ember":
                    {
                        //Add events to the timeline.
                        ModifyEnergyEvent energy = new ModifyEnergyEvent(animation, 0, null, move.User, -move.EnergyConsume);
                        ModifyControlEvent state = new ModifyControlEvent(animation, 0, energy, move, move.User, false);
                        ModifyCancelableEvent cancel = new ModifyCancelableEvent(animation, 0, energy, move, false);
                        ProjectileEvent projectile = new ProjectileEvent(animation, 0, null, move.User.Position, new Destination(move.Target));
                        ModifyHealthEvent damage = new ModifyHealthEvent(animation, 0, projectile, move.Target, -move.GetDamage());
                        ImpactEvent impact = new ImpactEvent(animation, 0, projectile, move);

                        //Add the events to the timeline.
                        animation.AddEvent(energy);
                        animation.AddEvent(state);
                        animation.AddEvent(cancel);
                        animation.AddEvent(projectile);
                        animation.AddEvent(damage);
                        animation.AddEvent(impact);
                        break;
                    }
                case "Scratch":
                    {
                        //Add events to the timeline.
                        ModifyControlEvent stateStart = new ModifyControlEvent(animation, 0, null, move, move.User, true);
                        MovementEvent moveTo = new MovementEvent(animation, 0, null, move.User, new Destination(move.Target), MovementType.Run);
                        ModifyCancelableEvent cancel = new ModifyCancelableEvent(animation, 0, moveTo, move, false);
                        ModifyHealthEvent damage = new ModifyHealthEvent(animation, 0, moveTo, move.Target, -move.GetDamage());
                        ModifyEnergyEvent energy = new ModifyEnergyEvent(animation, 0, damage, move.User, -move.EnergyConsume);
                        ModifyControlEvent stateEnd = new ModifyControlEvent(animation, 0, energy, move, move.User, false);
                        ImpactEvent impact = new ImpactEvent(animation, 0, moveTo, move);

                        //Add the events to the timeline.
                        animation.AddEvent(stateStart);
                        animation.AddEvent(moveTo);
                        animation.AddEvent(cancel);
                        animation.AddEvent(damage);
                        animation.AddEvent(energy);
                        animation.AddEvent(stateEnd);
                        animation.AddEvent(impact);
                        break;
                    }
                default: { goto case "Scratch"; }
            }

            //Return the animation.
            return animation;
        }
Пример #20
0
 private void RaiseMovementEvent(int entity, Direction dir)
 {
     MovementEvent?.Invoke(entity, dir);
 }
Пример #21
0
 public override void OnPointerDown(PointerEventData eventData)
 {
     base.OnPointerDown(eventData);
     _currentMovementEvent = MovementEvent.Moving;
     Debug.Log("PewPewJoystick is Moving");
 }
Пример #22
0
 public override void OnPointerUp(PointerEventData eventData)
 {
     base.OnPointerUp(eventData);
     _currentMovementEvent = MovementEvent.Stopped;
     Debug.Log("PewPewJoystick is Stopped");
 }
Пример #23
0
 public abstract void HandleMovementEvent(MovementEvent move);
Пример #24
0
        /// <summary>
        /// Processes the message
        /// </summary>
        /// <param name="connectionBase">The connection base</param>
        /// <param name="message">The playerio message</param>
        /// <param name="handled">Whether the message was already handled</param>
        public void Process(ConnectionBase connectionBase, Message message, bool handled)
        {
            int    userId     = message.GetInt(0);
            double x          = message.GetDouble(1);
            double y          = message.GetDouble(2);
            double speedX     = message.GetDouble(3);
            double speedY     = message.GetDouble(4);
            int    modifierX  = message.GetInt(5);
            int    modifierY  = message.GetInt(6);
            int    horizontal = message.GetInt(7);
            int    vertical   = message.GetInt(8);
            bool   spacedown  = message.GetBoolean(10);

            WorldConnection worldCon = (WorldConnection)connectionBase;
            WorldPlayer     player   = worldCon.Players.GetPlayer(userId);

            if (!handled && player != null)
            {
                Input playerInput = 0;

                if (horizontal != player.Horizontal)
                {
                    if (horizontal < 0)
                    {
                        playerInput |= Input.HoldLeft;
                    }
                    else if (horizontal > 0)
                    {
                        playerInput |= Input.HoldRight;
                    }
                    else if (horizontal == 0)
                    {
                        if ((player.LastInput & Input.HoldLeft) != 0)
                        {
                            playerInput |= Input.ReleaseLeft;
                        }
                        else if ((player.LastInput & Input.HoldRight) != 0)
                        {
                            playerInput |= Input.ReleaseRight;
                        }
                    }
                }

                if (vertical != player.Vertical)
                {
                    if (vertical < 0)
                    {
                        playerInput |= Input.HoldUp;
                    }
                    else if (vertical > 0)
                    {
                        playerInput |= Input.HoldDown;
                    }
                    else if (vertical == 0)
                    {
                        if ((player.LastInput & Input.HoldUp) != 0)
                        {
                            playerInput |= Input.ReleaseUp;
                        }
                        else if ((player.LastInput & Input.HoldDown) != 0)
                        {
                            playerInput |= Input.ReleaseDown;
                        }
                    }
                }

                player.X          = x;
                player.Y          = y;
                player.SpeedX     = speedX;
                player.SpeedY     = speedY;
                player.ModifierX  = modifierX;
                player.ModifierY  = modifierY;
                player.Horizontal = horizontal;
                player.Vertical   = vertical;
                player.SpaceDown  = spacedown;
                player.LastInput  = playerInput;

                worldCon.Physics.ServerUpdate(player);
            }

            MovementEvent movementEvent = new MovementEvent()
            {
                Raw    = message,
                Player = player,
                Input  = (player == null) ? Input.Nothing : player.LastInput
            };

            connectionBase.RaiseServerEvent <MovementEvent>(movementEvent);
        }
    public void UpdateFromRecordedMovement(FrameMovement frameMovement)
    {
        _head.rotation = frameMovement.look;
        if (grabFrameBuffer > 0 || frameMovement.grab)
        {
            if (_grabber.Grab())
            {
                grabFrameBuffer = 0;
            }
            else
            {
                --grabFrameBuffer;
            }
        }
        if (frameMovement.release)
        {
            if (_grabber.Release())
            {
                grabFrameBuffer = 0;
            }
        }

        SetAnimatorValues(frameMovement.hMov, frameMovement.vMov);

        /*
         * if (frameMovement.jump) _movement.Jump();
         * _movement.sprintTime = frameMovement.sprint;
         * _movement.ApplyForces(frameMovement.forceNextFrame);
         *
         * if (Vector3.Distance(transform.position, frameMovement.position) < 0.1f)
         * {
         *  transform.position = frameMovement.position;
         * }
         * else
         * {
         *  Debug.Log(name + " desynced!");
         * }
         */

        if (synced && frameMovement.jump && !_feet.isGrounded && _movement.jumping)
        {
            //synced = false;
            Debug.Log(name + " desynced!");
        }

        if (synced)
        {
            _movement.Move(frameMovement.position);
        }
        else
        {
            if (frameMovement.jump)
            {
                _movement.Jump();
            }
            _movement.sprintTime = frameMovement.sprint;
            _movement.ApplyForces(frameMovement.forceNextFrame);
        }

        MovementEvent?.Invoke(frameMovement);
    }
Пример #26
0
    public override bool acceptMessageData(BinaryReader messageDataReader, TreeView outputTreeView)
    {
        bool handled = true;

        PacketOpcode opcode = Util.readOpcode(messageDataReader);

        switch (opcode)
        {
        // TODO: PacketOpcode.Evt_Movement__PositionAndMovement_ID
        case PacketOpcode.Evt_Movement__Jump_ID: {
            Jump message = Jump.read(messageDataReader);
            message.contributeToTreeView(outputTreeView);
            break;
        }

        case PacketOpcode.Evt_Movement__MoveToState_ID: {
            MoveToState message = MoveToState.read(messageDataReader);
            message.contributeToTreeView(outputTreeView);
            break;
        }

        case PacketOpcode.Evt_Movement__DoMovementCommand_ID: {
            DoMovementCommand message = DoMovementCommand.read(messageDataReader);
            message.contributeToTreeView(outputTreeView);
            break;
        }

        // TODO: PacketOpcode.Evt_Movement__TurnEvent_ID
        // TODO: PacketOpcode.Evt_Movement__TurnToEvent_ID
        case PacketOpcode.Evt_Movement__StopMovementCommand_ID: {
            StopMovementCommand message = StopMovementCommand.read(messageDataReader);
            message.contributeToTreeView(outputTreeView);
            break;
        }

        case PacketOpcode.Evt_Movement__UpdatePosition_ID: {
            UpdatePosition message = UpdatePosition.read(messageDataReader);
            message.contributeToTreeView(outputTreeView);
            break;
        }

        case PacketOpcode.Evt_Movement__MovementEvent_ID: {
            MovementEvent message = MovementEvent.read(messageDataReader);
            message.contributeToTreeView(outputTreeView);
            break;
        }

        case PacketOpcode.Evt_Movement__AutonomyLevel_ID: {
            AutonomyLevel message = AutonomyLevel.read(messageDataReader);
            message.contributeToTreeView(outputTreeView);
            break;
        }

        case PacketOpcode.Evt_Movement__AutonomousPosition_ID: {
            AutonomousPosition message = AutonomousPosition.read(messageDataReader);
            message.contributeToTreeView(outputTreeView);
            break;
        }

        case PacketOpcode.Evt_Movement__Jump_NonAutonomous_ID: {
            Jump_NonAutonomous message = Jump_NonAutonomous.read(messageDataReader);
            message.contributeToTreeView(outputTreeView);
            break;
        }

        default: {
            handled = false;
            break;
        }
        }

        return(handled);
    }
Пример #27
0
        public static MovementEvent read(BinaryReader binaryReader)
        {
            MovementEvent newObj = new MovementEvent();

            newObj.object_id                = binaryReader.ReadUInt32();
            newObj.instance_timestamp       = binaryReader.ReadUInt16();
            newObj.server_control_timestamp = binaryReader.ReadUInt16();
            newObj.movement_timestamp       = binaryReader.ReadUInt16();
            newObj.autonomous               = binaryReader.ReadByte();

            Util.readToAlign(binaryReader);

            newObj.movementType__guessedname = (MovementTypes.Type)binaryReader.ReadUInt16();
            newObj.style = (MotionStyle)command_ids[binaryReader.ReadUInt16()];

            switch (newObj.movementType__guessedname)
            {
            // TODO: This now needs to mimic the rest of MovementManager::unpack_movement here
            case MovementTypes.Type.Invalid: {
                newObj.motionState__guessedname = InterpretedMotionState.read(binaryReader);
                if (((ushort)newObj.movementType__guessedname & 0x100) != 0)           // TODO: Double check that this is the correct mask here
                {
                    newObj.stickToObject = binaryReader.ReadUInt32();
                }
                break;
            }

            case MovementTypes.Type.MoveToObject: {
                newObj.moveToObject = binaryReader.ReadUInt32();
                newObj.moveToPos    = Position.readOrigin(binaryReader);
                newObj.movementParams__guessedname = MovementParameters.read(newObj.movementType__guessedname, binaryReader);
                newObj.my_run_rate = binaryReader.ReadSingle();
                break;
            }

            case MovementTypes.Type.MoveToPosition: {
                newObj.moveToPos = Position.readOrigin(binaryReader);
                newObj.movementParams__guessedname = MovementParameters.read(newObj.movementType__guessedname, binaryReader);
                newObj.my_run_rate = binaryReader.ReadSingle();
                break;
            }

            case MovementTypes.Type.TurnToObject: {
                newObj.turnToObject  = binaryReader.ReadUInt32();
                newObj.turnToHeading = binaryReader.ReadSingle();
                newObj.movementParams__guessedname = MovementParameters.read(newObj.movementType__guessedname, binaryReader);
                break;
            }

            case MovementTypes.Type.TurnToHeading: {
                newObj.movementParams__guessedname = MovementParameters.read(newObj.movementType__guessedname, binaryReader);
                break;
            }

            default: {
                break;
            }
            }

            return(newObj);
        }
Пример #28
0
    private IEnumerator MovementEventHelper(MovementEvent move)
    {
        //print ("currentPosition: " + body.Position);
        //print ("should be moving");

        if(move.delay > 0.0f) {
            yield return new WaitForSeconds(move.delay);
        }
        FVector2 speed = GetConstantSpeed(body.Position, move.destination, move.travelTime);
        body.LinearVelocity = speed;
        //Wait for movement to finish
        yield return new WaitForSeconds(move.travelTime);

        //We're done, stop the object
        body.LinearVelocity = FVector2.Zero;

        if(move.guaranteeArrival) {
            body.Position = move.destination;
        }
    }
Пример #29
0
 /// <summary>
 /// Sends movement event with ControlledEntity
 /// </summary>
 /// <param name="dir">Direction of movement</param>
 private void MoveEntity(Direction dir)
 {
     MovementEvent?.Invoke(ControlledEntity, dir);
 }