Exemplo n.º 1
0
 public void ChangeSpeed(float speedStop, float speedWalk, float speedRun, float speedActive)
 {
     moveSpeeds[0] = speedStop;
     moveSpeeds[1] = speedWalk;
     moveSpeeds[2] = speedRun;
     moveSpeeds[3] = speedActive;
     updateFlags  |= ActorUpdateFlags.Speed;
 }
Exemplo n.º 2
0
 public void ModifySpeed(float mod)
 {
     for (int i = 0; i < 4; i++)
     {
         moveSpeeds[i] *= mod;
     }
     updateFlags |= ActorUpdateFlags.Speed;
 }
Exemplo n.º 3
0
        //character's newMainState kind of messes with this
        public void ChangeState(ushort newState)
        {
            if (newState != currentMainState)
            {
                currentMainState = newState;

                updateFlags |= (ActorUpdateFlags.State | ActorUpdateFlags.Position);
            }
        }
Exemplo n.º 4
0
        public void QueuePositionUpdate(Vector3 pos)
        {
            if (positionUpdates == null)
            {
                positionUpdates = new List <Vector3>();
            }

            positionUpdates.Add(pos);
            this.updateFlags |= ActorUpdateFlags.Position;
        }
Exemplo n.º 5
0
        public virtual void ResetMoveSpeeds()
        {
            this.moveSpeeds[0] = SetActorSpeedPacket.DEFAULT_STOP;
            this.moveSpeeds[1] = SetActorSpeedPacket.DEFAULT_WALK;
            this.moveSpeeds[2] = SetActorSpeedPacket.DEFAULT_RUN;
            this.moveSpeeds[3] = SetActorSpeedPacket.DEFAULT_ACTIVE;

            this.moveState    = this.oldMoveState;
            this.updateFlags |= ActorUpdateFlags.Speed;
        }
Exemplo n.º 6
0
        public virtual void PostUpdate(DateTime tick, List <SubPacket> packets = null)
        {
            if (updateFlags != ActorUpdateFlags.None)
            {
                packets = packets ?? new List <SubPacket>();
                if ((updateFlags & ActorUpdateFlags.Position) != 0)
                {
                    if (positionUpdates != null && positionUpdates.Count > 0)
                    {
                        var pos = positionUpdates[0];
                        if (pos != null)
                        {
                            oldPositionX = positionX;
                            oldPositionY = positionY;
                            oldPositionZ = positionZ;
                            oldRotation  = rotation;

                            positionX = pos.X;
                            positionY = pos.Y;
                            positionZ = pos.Z;

                            zone.UpdateActorPosition(this);

                            //Program.Server.GetInstance().mLuaEngine.OnPath(actor, position, positionUpdates)
                        }
                        positionUpdates.Remove(pos);
                    }
                    packets.Add(CreatePositionUpdatePacket());
                }

                if ((updateFlags & ActorUpdateFlags.Speed) != 0)
                {
                    packets.Add(SetActorSpeedPacket.BuildPacket(actorId, moveSpeeds[0], moveSpeeds[1], moveSpeeds[2], moveSpeeds[3]));
                }

                if ((updateFlags & ActorUpdateFlags.Name) != 0)
                {
                    packets.Add(SetActorNamePacket.BuildPacket(actorId, displayNameId, customDisplayName));
                }

                if ((updateFlags & ActorUpdateFlags.State) != 0)
                {
                    packets.Add(SetActorStatePacket.BuildPacket(actorId, currentMainState, 0x3B));
                }

                if ((updateFlags & ActorUpdateFlags.SubState) != 0)
                {
                    packets.Add(SetActorSubStatePacket.BuildPacket(actorId, currentSubState));
                }

                updateFlags = ActorUpdateFlags.None;
            }
            zone.BroadcastPacketsAroundActor(this, packets);
        }
Exemplo n.º 7
0
        public void LookAt(float x, float z)
        {
            var rot1 = this.rotation;

            var dX   = this.positionX - x;
            var dY   = this.positionZ - z;
            var rot2 = Math.Atan2(dY, dX);
            var dRot = Math.PI - rot2 + Math.PI / 2;

            // pending move, dont need to unset it
            this.updateFlags |= ActorUpdateFlags.Position;
            rotation          = (float)dRot;
        }
Exemplo n.º 8
0
 public void ChangeSpeed(int type, float value)
 {
     moveSpeeds[type] = value;
     updateFlags     |= ActorUpdateFlags.Speed;
 }
Exemplo n.º 9
0
 public void SubstateModified()
 {
     updateFlags |= (ActorUpdateFlags.SubState);
 }