final case class ProjectileStateMessage(projectile_guid: PlanetSideGUID, shot_pos: Vector3, shot_vel: Vector3, shot_original_orient: Vector3, sequence_num: Int, end: Boolean, hit_target_guid: PlanetSideGUID) extends PlanetSideGamePacket with Product with Serializable
Dispatched to deliberately control certain projectiles of a weapon on other players' clients.
This packet should be generated by firing specific weapons in specific fire modes.
For example, the Phoenix (hunterseeker
) discharged in its primary fire mode generates this packet;
but, the Phoenix in secondary fire mode does not.
The Striker (striker
) discharged in its primary fire mode generates this packet;
but, the Striker in secondary fire mode does not.
The chosen fire mode(s) are not a straight-fire projectile but one that has special control asserted over it.
For the Phoenix, it is user operated (camera-guided).
For the Striker, it tracks towards a valid target while the weapon's reticle hovers over that target.
This packet will continue to be dispatched by the client for as long as the projectile being tracked is in the air.
All projectiles have a maximum lifespan before they will lose control and either despawn and/or explode.
This number is tracked in the packet for simplicity.
This control can not be demonstrated until that projectile is physically constructed on the other clients
in the same way that a player or a vehicle is constructed.
A projectile that exhibits intentional construction behavior is flagged using the property exists_on_remote_client
.
The model comes with a number of caveats,
some that originate from the object construction process itself,
but also some from this packet.
For example,
as indicated by the static shot_original_orient
values reported by this packet.
a discharged controlled projectile will not normally rotate.
A minor loss of lifespan may be levied.
- projectile_guid
when dispatched by the client, the client-specific local unique identifier of the projectile; when dispatched by the server, the global unique identifier for the synchronized projectile object
- shot_pos
the position of the projectile
- shot_vel
the velocity of the projectile
- shot_original_orient
the orientation of the projectile when it was discharged
- sequence_num
an incrementing index of the packet in this projectile's lifetime; suggests the "time alive" and indicates a place in packet ordering
- end
indicates the projectile has reached the end of its lifespan; usually, it should explode
- hit_target_guid
the global unique identifier of the object the projwectile collided with; will be 0 if it reached the end of its life naturally, without colliding with anything
- Source
- ProjectileStateMessage.scala
- See also
ProjectileDefinition
RemoteProjectileData
- Alphabetic
- By Inheritance
- ProjectileStateMessage
- Product
- Equals
- PlanetSideGamePacket
- PlanetSidePacket
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new ProjectileStateMessage(projectile_guid: PlanetSideGUID, shot_pos: Vector3, shot_vel: Vector3, shot_original_orient: Vector3, sequence_num: Int, end: Boolean, hit_target_guid: PlanetSideGUID)
- projectile_guid
when dispatched by the client, the client-specific local unique identifier of the projectile; when dispatched by the server, the global unique identifier for the synchronized projectile object
- shot_pos
the position of the projectile
- shot_vel
the velocity of the projectile
- shot_original_orient
the orientation of the projectile when it was discharged
- sequence_num
an incrementing index of the packet in this projectile's lifetime; suggests the "time alive" and indicates a place in packet ordering
- end
indicates the projectile has reached the end of its lifespan; usually, it should explode
- hit_target_guid
the global unique identifier of the object the projwectile collided with; will be 0 if it reached the end of its life naturally, without colliding with anything
Type Members
- type Packet = ProjectileStateMessage
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def encode: Attempt[BitVector]
- Definition Classes
- ProjectileStateMessage → PlanetSidePacket
- val end: Boolean
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- val hit_target_guid: PlanetSideGUID
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def opcode: GamePacketOpcode.Value
- Definition Classes
- ProjectileStateMessage → PlanetSideGamePacket → PlanetSidePacket
- def productElementNames: Iterator[String]
- Definition Classes
- Product
- val projectile_guid: PlanetSideGUID
- val sequence_num: Int
- val shot_original_orient: Vector3
- val shot_pos: Vector3
- val shot_vel: Vector3
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()