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; }
public void ModifySpeed(float mod) { for (int i = 0; i < 4; i++) { moveSpeeds[i] *= mod; } updateFlags |= ActorUpdateFlags.Speed; }
//character's newMainState kind of messes with this public void ChangeState(ushort newState) { if (newState != currentMainState) { currentMainState = newState; updateFlags |= (ActorUpdateFlags.State | ActorUpdateFlags.Position); } }
public void QueuePositionUpdate(Vector3 pos) { if (positionUpdates == null) { positionUpdates = new List <Vector3>(); } positionUpdates.Add(pos); this.updateFlags |= ActorUpdateFlags.Position; }
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; }
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); }
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; }
public void ChangeSpeed(int type, float value) { moveSpeeds[type] = value; updateFlags |= ActorUpdateFlags.Speed; }
public void SubstateModified() { updateFlags |= (ActorUpdateFlags.SubState); }