This packet instructs the basic aspects of how the player character is positioned and how the player character moves.
Each client keeps track of where a character "currently" is according to that client.
<code>pos</code> reflects an update in regards to where the character should be moved.
Data between this "currently" and "new" are interpolated over a fixed time interval.
Position and velocity data is standard to normal PlanetSide ranges.
All angles follow the convention that every <code>0x1</code> is about 2.8125 degrees; so, <code>0x10</code> is 45.0 degrees.<br>
<br>
The avatar model normally moves from where it "currently" is to <code>pos</code>.
When <code>vel</code> is defined, <code>pos</code> is treated as where the avatar model starts its animation.
In that case, it appears to teleport to <code>pos</code> to carry out the interpolated movement according to <code>vel</code>.
After the move, it remains at essentially <code>pos + vel * t</code>.
The repositioning always takes the same amount of time.
The player model is left in a walking/running animation (in place) until directed otherwise.<br>
<br>
If the model must interact with the environment during a velocity-driven move, it copes with local physics.
A demonstration of this is what happens when one player "runs past"/"into" another player running up stairs.
The climbing player is frequently reported by the other to appear to bounce over that player's head.
If the other player is off the ground, passing too near to the observer can cause a rubber band effect on trajectory.
This effect is entirely client-side to the observer and affects the moving player in no way.</p></div><dlclass="paramcmts block"><dtclass="param">guid</dt><ddclass="cmt"><p>the avatar's guid</p></dd><dtclass="param">pos</dt><ddclass="cmt"><p>the position of the avatar in the world environment (in three coordinates)</p></dd><dtclass="param">vel</dt><ddclass="cmt"><p>an optional velocity</p></dd><dtclass="param">facingYaw</dt><ddclass="cmt"><p>a "yaw" angle</p></dd><dtclass="param">facingPitch</dt><ddclass="cmt"><p>a "pitch" angle</p></dd><dtclass="param">facingYawUpper</dt><ddclass="cmt"><p>a "yaw" angle that represents the angle of the avatar's upper body with respect to its forward-facing direction;
this number is normally 0 for forward facing;
the range is limited between approximately 61 degrees of center turned to left or right</p></dd><dtclass="param">timestamp</dt><ddclass="cmt"><p>A sequential counter</p></dd><dtclass="param">is_crouching</dt><ddclass="cmt"><p>avatar is crouching</p></dd><dtclass="param">is_jumping</dt><ddclass="cmt"><p>avatar is jumping;
must remain flagged for jump to maintain animation</p></dd><dtclass="param">jump_thrust</dt><ddclass="cmt"><p>provide a measure of vertical stability when really close to the avatar character</p></dd><dtclass="param">is_cloaked</dt><ddclass="cmt"><p>avatar is cloaked by virtue of an Infiltration Suit</p></dd></dl><dlclass="attributes block"><dt>Source</dt><dd><ahref="https://github.com/psforever/PSF-LoginServer/blob/master//home/runner/work/PSF-LoginServer/PSF-LoginServer/src/main/scala/net/psforever/packet/game/PlayerStateMessage.scala"target="_blank">PlayerStateMessage.scala</a></dd></dl><divclass="toggleContainer"><divclass="toggle block"><span>Linear Supertypes</span><divclass="superTypes hiddenContent"><spanname="scala.Product"class="extype">Product</span>, <spanname="scala.Equals"class="extype">Equals</span>, <ahref="../PlanetSideGamePacket.html"name="net.psforever.packet.PlanetSideGamePacket"id="net.psforever.packet.PlanetSideGamePacket"class="extype">PlanetSideGamePacket</a>, <ahref="../PlanetSidePacket.html"name="net.psforever.packet.PlanetSidePacket"id="net.psforever.packet.PlanetSidePacket"class="extype">PlanetSidePacket</a>, <ahref="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html#java.io.Serializable"name="java.io.Serializable"id="java.io.Serializable"class="extype">Serializable</a>, <spanname="scala.AnyRef"class="extype">AnyRef</span>, <spanname="scala.Any"class="extype">Any</span></div></div></div></div><divid="mbrsel"><divclass="toggle"></div><divid="memberfilter"><iclass="material-icons arrow"></i><spanclass="input"><inputplaceholder="Filter all members"id="mbrsel-input"type="text"accesskey="/"/></span><iclass="clear material-icons"></i></div><divid="filterby"><divid="order"><spanclass="filtertype">Ordering</span><ol><liclass="alpha in"><span>Alphabetic</span></li><liclass="inherit out"><span>By Inheritance</span></li></ol></div><divclass="ancestors"><spanclass="filtertype">Inherited<br/></span><olid="linearization"><liclass="in"name="net.psforever.packet.game.PlayerStateMessage"><span>PlayerStateMessage</span></li><liclass="in"name="scala.Product"><span>Product</span></li><liclass="in"name="scala.Equals"><span>Equals</span></li><liclass="in"name="net.psforever.packet.PlanetSideGamePacket"><span>PlanetSideGamePacket</span></li><liclass="in"name="net.psforever.packet.PlanetSidePacket"><span>PlanetSidePacket</span></li><liclass="in"name="java.io.Serializable"><span>Serializable</span></li><liclass="in"name="scala.AnyRef"><span>AnyRef</span></li><liclass="in"name="scala.Any"><span>Any</span></li></ol></div><divclass="ancestors"><spanclass="filtertype"></span><ol><liclass="hideall out"><span>Hide All</span></li><liclass="showall in"><span>Show All</span></li></ol></div><divid="visbl"><spanclass="filtertype">Visibility</span><ol><liclass="public in"><span>Public</span></li><liclass="protected out"><span>Protected</span></li></ol></div></div></div><divid="template"><divid="allMembers"><divid="constructors"class="members"><h3>Instance Constructors</h3><ol><liclass="indented0 "name="net.psforever.packet.game.PlayerStateMessage#<init>"group="Ungrouped"fullComment="yes"data-isabs="false"visbl="pub"><aid="<init>(guid:net.psforever.types.PlanetSideGUID,pos:net.psforever.types.Vector3,vel:Option[net.psforever.types.Vector3],facingYaw:Float,facingPitch:Float,facingYawUpper:Float,timestamp:Int,is_crouching:Boolean,is_jumping:Boolean,jump_thrust:Boolean,is_cloaked:Boolean):net.psforever.packet.game.PlayerStateMessage"></a><aid="<init>:PlayerStateMessage"></a><spanclass="permalink"><ahref="../../../../net/psforever/packet/game/PlayerStateMessage.html#<init>(guid:net.psforever.types.PlanetSideGUID,pos:net.psforever.types.Vector3,vel:Option[net.psforever.types.Vector3],facingYaw:Float,facingPitch:Float,facingYawUpper:Float,timestamp:Int,is_crouching:Boolean,is_jumping:Boolean,jump_thrust:Boolean,is_cloaked:Boolean):net.psforever.packet.game.PlayerStateMessage"title="Per
this number is normally 0 for forward facing;
the range is limited between approximately 61 degrees of center turned to left or right</p></dd><dtclass="param">timestamp</dt><ddclass="cmt"><p>A sequential counter</p></dd><dtclass="param">is_crouching</dt><ddclass="cmt"><p>avatar is crouching</p></dd><dtclass="param">is_jumping</dt><ddclass="cmt"><p>avatar is jumping;
must remain flagged for jump to maintain animation</p></dd><dtclass="param">jump_thrust</dt><ddclass="cmt"><p>provide a measure of vertical stability when really close to the avatar character</p></dd><dtclass="param">is_cloaked</dt><ddclass="cmt"><p>avatar is cloaked by virtue of an Infiltration Suit</p></dd></dl></div></li></ol></div><divid="types"class="types members"><h3>Type Members</h3><ol><liclass="indented0 "name="net.psforever.packet.game.PlayerStateMessage.Packet"group="Ungrouped"fullComment="no"data-isabs="false"visbl="pub"><aid="Packet=net.psforever.packet.game.PlayerStateMessage"></a><aid="Packet:Packet"></a><spanclass="permalink"><ahref="../../../../net/psforever/packet/game/PlayerStateMessage.html#Packet=net.psforever.packet.game.PlayerStateMessage"title="Permalink"><iclass="material-icons"></i></a></span><spanclass="modifier_kind"><spanclass="modifier"></span><spanclass="kind">type</span></span><spanclass="symbol"><spanclass="name">Packet</span><spanclass="result alias"> = <ahref=""name="net.psforever.packet.game.PlayerStateMessage"id="net.psforever.packet.game.PlayerStateMessage"class="extype">PlayerStateMessage</a></span></span></li></ol></div><divclass="values members"><h3>Value Members</h3><ol><liclass="indented0 "name="scala.AnyRef#!="group="Ungrouped"fullComment="yes"data-isabs="false"visbl="pub"><aid="!=(x$1:Any):Boolean"></a><aid="!=(Any):Boolean"></a><spanclass="permalink"><ahref="../../../../net/psforever/packet/game/PlayerStateMessage.html#!=(x$1:Any):Boolean"title="Permalink"><iclass="material-icons"></i></a></span><spanclass="modifier_kind"><spanclass="modifier">final </span><spanclass="kind">def</span></span><spanclass="symbol"><spanclass="name"title="gt4s: $bang$eq">!=</span><spanclass="params">(<spanname="arg0">arg0: <spanname="scala.Any"class="extype">Any</span></span>)</span><spanclass="result">: <spanname="scala.Boolean"class="extype">Boolean</span></span></span><divclass="fullcomment"><dlclass="attributes block"><dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div></li><liclass="indented0 "name="scala.AnyRef###"group="Ungrouped"fullComment="yes"data-isabs="false"visbl="pub"><aid="##:Int"></a><spanclass="permalink"><ahref="../../../../net/psforever/packet/game/PlayerStateMessage.html###:Int"title="Permalink"><iclass="material-icons"></i></a></span><spanclass="modifier_kind"><spanclass="modifier">final </span><spanclass="kind">def</span></span><spanclass="symbol"><spanclass="name"title="gt4s: $hash$hash">##</span><spanclass="result">: <spanname="scala.Int"class="extype">Int</span></span></span><divclass="fullcomment"><dlclass="attributes block"><dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div></li><liclass="indented0 "name="scala.AnyRef#=="group="Ungrouped"fullComment="yes"data-isabs="false"visbl="pub"><aid="==(x$1:Any):Boolean"></a><aid="==(Any):Boolean"></a><spanclass="permalink"><ahref="../../../../net/psforever/packet/game/PlayerStateMessage.html#==(x$1:Any):Boolean"title="Permalink"><iclass="material-icons"></i></a></span><spanclass="modifier_kind"><spanclass="modifier">final </span><spanclass="kind">def</span></span><spanclass="symbol"><spanclass="name"title="gt4s: $eq$eq">==</span><spanclass="params">(<spanname="arg0">arg0: <spanname="scala.Any"class="extype">Any</span></span>)</span><spanclass="result">: <spanname="scala.Boolean"class="extype">Boolean</span></span></span><divclass="fullcomment"><dlclass="attributes block"><dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div></li><liclass="indented0 "name="scala.Any#asInstanceOf"group="Ungrouped"fullComment="yes"data-isabs="false"visbl="pub"><aid="asInstanceOf[T0]:T0"></a><spanclass="permalink"><ahref="../../../../net/psforever/packet/game/PlayerStateMessage.html#asInstanceOf[T0]:T0"title="Permalink"><iclass="material-icons"></i></a></span><spanclass="modifier_kind"><spanclass="modifier">final </span><spanclass="kind">def</span></span>