changing three FLoat values for orientation into a Vector3; all tests updated

This commit is contained in:
FateJH 2017-07-10 15:19:47 -04:00
parent 9095564e68
commit e071f6ea56
5 changed files with 120 additions and 111 deletions

View file

@ -5,19 +5,16 @@ import net.psforever.packet.Marshallable
import net.psforever.types.{Angular, Vector3} import net.psforever.types.{Angular, Vector3}
import scodec.codecs._ import scodec.codecs._
import scodec.Codec import scodec.Codec
import shapeless.{::, HNil}
/** /**
* A specific location and heading in game world coordinates and game world measurements. * A specific location and heading in game world coordinates and game world measurements.
* @param coord the xyz-coordinate location in the world * @param coord the xyz-coordinate location in the world
* @param roll the amount of roll that affects orientation * @param orient the ijk-orientation around the object's center
* @param pitch the amount of pitch that affects orientation
* @param yaw the amount of yaw that affects orientation
* @param vel optional movement data (that occurs upon placement) * @param vel optional movement data (that occurs upon placement)
*/ */
final case class PlacementData(coord : Vector3, final case class PlacementData(coord : Vector3,
roll : Float, orient : Vector3,
pitch : Float,
yaw : Float,
vel : Option[Vector3] = None vel : Option[Vector3] = None
) extends StreamBitSize { ) extends StreamBitSize {
override def bitsize : Long = { override def bitsize : Long = {
@ -35,7 +32,7 @@ object PlacementData extends Marshallable[PlacementData] {
* @return a `PlacementData` object * @return a `PlacementData` object
*/ */
def apply(x : Float, y : Float, z : Float) : PlacementData = def apply(x : Float, y : Float, z : Float) : PlacementData =
new PlacementData(Vector3(x, y, z), 0f, 0f, 0f) new PlacementData(Vector3(x, y, z), Vector3(0f,0f,0f))
/** /**
* An abbreviated constructor for creating `PlacementData`, ignoring the `Vector3` for position data, supplying other important fields. * An abbreviated constructor for creating `PlacementData`, ignoring the `Vector3` for position data, supplying other important fields.
@ -48,7 +45,7 @@ object PlacementData extends Marshallable[PlacementData] {
* @return a `PlacementData` object * @return a `PlacementData` object
*/ */
def apply(x : Float, y : Float, z : Float, roll : Float, pitch : Float, yaw : Float) : PlacementData = def apply(x : Float, y : Float, z : Float, roll : Float, pitch : Float, yaw : Float) : PlacementData =
new PlacementData(Vector3(x, y, z), roll, pitch, yaw) new PlacementData(Vector3(x, y, z), Vector3(roll, pitch, yaw))
/** /**
* An abbreviated constructor for creating `PlacementData`, ignoring the `Vector3` for position data, supplying all other fields. * An abbreviated constructor for creating `PlacementData`, ignoring the `Vector3` for position data, supplying all other fields.
@ -62,7 +59,7 @@ object PlacementData extends Marshallable[PlacementData] {
* @return a `PlacementData` object * @return a `PlacementData` object
*/ */
def apply(x : Float, y : Float, z : Float, roll : Float, pitch : Float, yaw : Float, vel : Vector3) : PlacementData = def apply(x : Float, y : Float, z : Float, roll : Float, pitch : Float, yaw : Float, vel : Vector3) : PlacementData =
new PlacementData(Vector3(x, y, z), roll, pitch, yaw, Some(vel)) new PlacementData(Vector3(x, y, z), Vector3(roll, pitch, yaw), Some(vel))
implicit val codec : Codec[PlacementData] = ( implicit val codec : Codec[PlacementData] = (
("coord" | Vector3.codec_pos) :: ("coord" | Vector3.codec_pos) ::
@ -70,5 +67,14 @@ object PlacementData extends Marshallable[PlacementData] {
("pitch" | Angular.codec_pitch) :: ("pitch" | Angular.codec_pitch) ::
("yaw" | Angular.codec_yaw()) :: ("yaw" | Angular.codec_yaw()) ::
optional(bool, "vel" | Vector3.codec_vel) optional(bool, "vel" | Vector3.codec_vel)
).as[PlacementData] ).xmap[PlacementData] (
{
case xyz :: i :: j :: k :: vel :: HNil =>
PlacementData(xyz, Vector3(i, j, k), vel)
},
{
case PlacementData(xyz, Vector3(i, j, k), vel) =>
xyz :: i :: j :: k :: vel :: HNil
}
)
} }

View file

@ -180,9 +180,9 @@ class ObjectCreateDetailedMessageTest extends Specification {
char.appearance.pos.coord.x mustEqual 3674.8438f char.appearance.pos.coord.x mustEqual 3674.8438f
char.appearance.pos.coord.y mustEqual 2726.789f char.appearance.pos.coord.y mustEqual 2726.789f
char.appearance.pos.coord.z mustEqual 91.15625f char.appearance.pos.coord.z mustEqual 91.15625f
char.appearance.pos.roll mustEqual 0 char.appearance.pos.orient.x mustEqual 0
char.appearance.pos.pitch mustEqual 0f char.appearance.pos.orient.y mustEqual 0f
char.appearance.pos.yaw mustEqual 36.5625f char.appearance.pos.orient.z mustEqual 36.5625f
char.appearance.basic_appearance.name mustEqual "IlllIIIlllIlIllIlllIllI" char.appearance.basic_appearance.name mustEqual "IlllIIIlllIlIllIlllIllI"
char.appearance.basic_appearance.faction mustEqual PlanetSideEmpire.VS char.appearance.basic_appearance.faction mustEqual PlanetSideEmpire.VS
char.appearance.basic_appearance.sex mustEqual CharacterGender.Female char.appearance.basic_appearance.sex mustEqual CharacterGender.Female
@ -367,8 +367,7 @@ class ObjectCreateDetailedMessageTest extends Specification {
val app = CharacterAppearanceData( val app = CharacterAppearanceData(
PlacementData( PlacementData(
Vector3(3674.8438f, 2726.789f, 91.15625f), Vector3(3674.8438f, 2726.789f, 91.15625f),
0, Vector3(0f, 0f, 36.5625f)
0f, 36.5625f
), ),
BasicCharacterData( BasicCharacterData(
"IlllIIIlllIlIllIlllIllI", "IlllIIIlllIlIllIlllIllI",

View file

@ -48,9 +48,9 @@ class ObjectCreateMessageTest extends Specification {
projectile.pos.coord.x mustEqual 4644.5938f projectile.pos.coord.x mustEqual 4644.5938f
projectile.pos.coord.y mustEqual 5472.0938f projectile.pos.coord.y mustEqual 5472.0938f
projectile.pos.coord.z mustEqual 82.375f projectile.pos.coord.z mustEqual 82.375f
projectile.pos.roll mustEqual 0f projectile.pos.orient.x mustEqual 0f
projectile.pos.pitch mustEqual 30.9375f projectile.pos.orient.y mustEqual 30.9375f
projectile.pos.yaw mustEqual 171.5625f projectile.pos.orient.z mustEqual 171.5625f
projectile.unk1 mustEqual 0 projectile.unk1 mustEqual 0
projectile.unk2 mustEqual TrackedProjectileData.striker_missile_targetting_projectile_data projectile.unk2 mustEqual TrackedProjectileData.striker_missile_targetting_projectile_data
case _ => case _ =>
@ -88,9 +88,9 @@ class ObjectCreateMessageTest extends Specification {
drop.pos.coord.x mustEqual 4579.3438f drop.pos.coord.x mustEqual 4579.3438f
drop.pos.coord.y mustEqual 5615.0703f drop.pos.coord.y mustEqual 5615.0703f
drop.pos.coord.z mustEqual 72.953125f drop.pos.coord.z mustEqual 72.953125f
drop.pos.pitch mustEqual 0f drop.pos.orient.x mustEqual 0f
drop.pos.roll mustEqual 0f drop.pos.orient.y mustEqual 0f
drop.pos.yaw mustEqual 98.4375f drop.pos.orient.z mustEqual 98.4375f
drop.obj.isInstanceOf[CommonTerminalData] mustEqual true drop.obj.isInstanceOf[CommonTerminalData] mustEqual true
val term = drop.obj.asInstanceOf[CommonTerminalData] val term = drop.obj.asInstanceOf[CommonTerminalData]
term.faction mustEqual PlanetSideEmpire.NC term.faction mustEqual PlanetSideEmpire.NC
@ -249,9 +249,9 @@ class ObjectCreateMessageTest extends Specification {
flag.pos.coord.x mustEqual 3912.0312f flag.pos.coord.x mustEqual 3912.0312f
flag.pos.coord.y mustEqual 5169.4375f flag.pos.coord.y mustEqual 5169.4375f
flag.pos.coord.z mustEqual 59.96875f flag.pos.coord.z mustEqual 59.96875f
flag.pos.roll mustEqual 0f flag.pos.orient.x mustEqual 0f
flag.pos.pitch mustEqual 0f flag.pos.orient.y mustEqual 0f
flag.pos.yaw mustEqual 47.8125f flag.pos.orient.z mustEqual 47.8125f
flag.faction mustEqual PlanetSideEmpire.NC flag.faction mustEqual PlanetSideEmpire.NC
flag.unk1 mustEqual 21 flag.unk1 mustEqual 21
flag.unk2 mustEqual 4 flag.unk2 mustEqual 4
@ -274,9 +274,9 @@ class ObjectCreateMessageTest extends Specification {
drop.pos.coord.x mustEqual 4708.461f drop.pos.coord.x mustEqual 4708.461f
drop.pos.coord.y mustEqual 5547.539f drop.pos.coord.y mustEqual 5547.539f
drop.pos.coord.z mustEqual 72.703125f drop.pos.coord.z mustEqual 72.703125f
drop.pos.roll mustEqual 0f drop.pos.orient.x mustEqual 0f
drop.pos.pitch mustEqual 0f drop.pos.orient.y mustEqual 0f
drop.pos.yaw mustEqual 194.0625f drop.pos.orient.z mustEqual 194.0625f
drop.obj.isInstanceOf[ACEData] mustEqual true drop.obj.isInstanceOf[ACEData] mustEqual true
val ace = drop.obj.asInstanceOf[ACEData] val ace = drop.obj.asInstanceOf[ACEData]
ace.unk1 mustEqual 8 ace.unk1 mustEqual 8
@ -299,9 +299,9 @@ class ObjectCreateMessageTest extends Specification {
drop.pos.coord.x mustEqual 4777.633f drop.pos.coord.x mustEqual 4777.633f
drop.pos.coord.y mustEqual 5485.4062f drop.pos.coord.y mustEqual 5485.4062f
drop.pos.coord.z mustEqual 85.8125f drop.pos.coord.z mustEqual 85.8125f
drop.pos.roll mustEqual 0f drop.pos.orient.x mustEqual 0f
drop.pos.pitch mustEqual 0f drop.pos.orient.y mustEqual 0f
drop.pos.yaw mustEqual 14.0625f drop.pos.orient.z mustEqual 14.0625f
drop.obj.isInstanceOf[CommandDetonaterData] mustEqual true drop.obj.isInstanceOf[CommandDetonaterData] mustEqual true
case _ => case _ =>
ko ko
@ -321,9 +321,9 @@ class ObjectCreateMessageTest extends Specification {
drop.pos.coord.x mustEqual 4684.7344f drop.pos.coord.x mustEqual 4684.7344f
drop.pos.coord.y mustEqual 5547.4844f drop.pos.coord.y mustEqual 5547.4844f
drop.pos.coord.z mustEqual 83.765625f drop.pos.coord.z mustEqual 83.765625f
drop.pos.roll mustEqual 0f drop.pos.orient.x mustEqual 0f
drop.pos.pitch mustEqual 0f drop.pos.orient.y mustEqual 0f
drop.pos.yaw mustEqual 199.6875f drop.pos.orient.z mustEqual 199.6875f
drop.obj.isInstanceOf[AmmoBoxData] mustEqual true drop.obj.isInstanceOf[AmmoBoxData] mustEqual true
val box = drop.obj.asInstanceOf[AmmoBoxData] val box = drop.obj.asInstanceOf[AmmoBoxData]
box.unk mustEqual 0 box.unk mustEqual 0
@ -345,9 +345,9 @@ class ObjectCreateMessageTest extends Specification {
drop.pos.coord.x mustEqual 4691.1953f drop.pos.coord.x mustEqual 4691.1953f
drop.pos.coord.y mustEqual 5537.039f drop.pos.coord.y mustEqual 5537.039f
drop.pos.coord.z mustEqual 65.484375f drop.pos.coord.z mustEqual 65.484375f
drop.pos.roll mustEqual 0f drop.pos.orient.x mustEqual 0f
drop.pos.pitch mustEqual 0f drop.pos.orient.y mustEqual 0f
drop.pos.yaw mustEqual 0f drop.pos.orient.z mustEqual 0f
drop.obj.isInstanceOf[WeaponData] mustEqual true drop.obj.isInstanceOf[WeaponData] mustEqual true
val wep = drop.obj.asInstanceOf[WeaponData] val wep = drop.obj.asInstanceOf[WeaponData]
wep.unk1 mustEqual 4 wep.unk1 mustEqual 4
@ -377,9 +377,9 @@ class ObjectCreateMessageTest extends Specification {
drop.pos.coord.x mustEqual 4789.133f drop.pos.coord.x mustEqual 4789.133f
drop.pos.coord.y mustEqual 5522.3125f drop.pos.coord.y mustEqual 5522.3125f
drop.pos.coord.z mustEqual 72.3125f drop.pos.coord.z mustEqual 72.3125f
drop.pos.roll mustEqual 0f drop.pos.orient.x mustEqual 0f
drop.pos.pitch mustEqual 0f drop.pos.orient.y mustEqual 0f
drop.pos.yaw mustEqual 306.5625f drop.pos.orient.z mustEqual 306.5625f
drop.obj.isInstanceOf[WeaponData] mustEqual true drop.obj.isInstanceOf[WeaponData] mustEqual true
val wep = drop.obj.asInstanceOf[WeaponData] val wep = drop.obj.asInstanceOf[WeaponData]
wep.unk1 mustEqual 2 wep.unk1 mustEqual 2
@ -417,9 +417,9 @@ class ObjectCreateMessageTest extends Specification {
dropped.pos.coord.x mustEqual 4675.039f dropped.pos.coord.x mustEqual 4675.039f
dropped.pos.coord.y mustEqual 5506.953f dropped.pos.coord.y mustEqual 5506.953f
dropped.pos.coord.z mustEqual 72.703125f dropped.pos.coord.z mustEqual 72.703125f
dropped.pos.roll mustEqual 0f dropped.pos.orient.x mustEqual 0f
dropped.pos.pitch mustEqual 0f dropped.pos.orient.y mustEqual 0f
dropped.pos.yaw mustEqual 230.625f dropped.pos.orient.z mustEqual 230.625f
dropped.obj.isInstanceOf[REKData] mustEqual true dropped.obj.isInstanceOf[REKData] mustEqual true
val rek = dropped.obj.asInstanceOf[REKData] val rek = dropped.obj.asInstanceOf[REKData]
rek.unk1 mustEqual 8 rek.unk1 mustEqual 8
@ -443,9 +443,9 @@ class ObjectCreateMessageTest extends Specification {
boomer.deploy.pos.coord.x mustEqual 4704.172f boomer.deploy.pos.coord.x mustEqual 4704.172f
boomer.deploy.pos.coord.y mustEqual 5546.4375f boomer.deploy.pos.coord.y mustEqual 5546.4375f
boomer.deploy.pos.coord.z mustEqual 82.234375f boomer.deploy.pos.coord.z mustEqual 82.234375f
boomer.deploy.pos.roll mustEqual 0f boomer.deploy.pos.orient.x mustEqual 0f
boomer.deploy.pos.pitch mustEqual 0f boomer.deploy.pos.orient.y mustEqual 0f
boomer.deploy.pos.yaw mustEqual 272.8125f boomer.deploy.pos.orient.z mustEqual 272.8125f
boomer.deploy.unk mustEqual 0 boomer.deploy.unk mustEqual 0
boomer.deploy.player_guid mustEqual PlanetSideGUID(4145) boomer.deploy.player_guid mustEqual PlanetSideGUID(4145)
case _ => case _ =>
@ -466,9 +466,9 @@ class ObjectCreateMessageTest extends Specification {
turret.deploy.pos.coord.x mustEqual 4577.7812f turret.deploy.pos.coord.x mustEqual 4577.7812f
turret.deploy.pos.coord.y mustEqual 5624.828f turret.deploy.pos.coord.y mustEqual 5624.828f
turret.deploy.pos.coord.z mustEqual 72.046875f turret.deploy.pos.coord.z mustEqual 72.046875f
turret.deploy.pos.roll mustEqual 0f turret.deploy.pos.orient.x mustEqual 0f
turret.deploy.pos.pitch mustEqual 2.8125f turret.deploy.pos.orient.y mustEqual 2.8125f
turret.deploy.pos.yaw mustEqual 264.375f turret.deploy.pos.orient.z mustEqual 264.375f
turret.deploy.faction mustEqual PlanetSideEmpire.NC turret.deploy.faction mustEqual PlanetSideEmpire.NC
turret.deploy.unk mustEqual 12 turret.deploy.unk mustEqual 12
turret.deploy.player_guid mustEqual PlanetSideGUID(3871) turret.deploy.player_guid mustEqual PlanetSideGUID(3871)
@ -492,9 +492,9 @@ class ObjectCreateMessageTest extends Specification {
turret.deploy.pos.coord.x mustEqual 4527.633f turret.deploy.pos.coord.x mustEqual 4527.633f
turret.deploy.pos.coord.y mustEqual 6271.3594f turret.deploy.pos.coord.y mustEqual 6271.3594f
turret.deploy.pos.coord.z mustEqual 70.265625f turret.deploy.pos.coord.z mustEqual 70.265625f
turret.deploy.pos.roll mustEqual 0f turret.deploy.pos.orient.x mustEqual 0f
turret.deploy.pos.pitch mustEqual 0f turret.deploy.pos.orient.y mustEqual 0f
turret.deploy.pos.yaw mustEqual 154.6875f turret.deploy.pos.orient.z mustEqual 154.6875f
turret.deploy.faction mustEqual PlanetSideEmpire.VS turret.deploy.faction mustEqual PlanetSideEmpire.VS
turret.deploy.unk mustEqual 4 turret.deploy.unk mustEqual 4
turret.deploy.player_guid mustEqual PlanetSideGUID(4232) turret.deploy.player_guid mustEqual PlanetSideGUID(4232)
@ -533,9 +533,9 @@ class ObjectCreateMessageTest extends Specification {
trap.deploy.pos.coord.x mustEqual 3572.4453f trap.deploy.pos.coord.x mustEqual 3572.4453f
trap.deploy.pos.coord.y mustEqual 3277.9766f trap.deploy.pos.coord.y mustEqual 3277.9766f
trap.deploy.pos.coord.z mustEqual 114.0f trap.deploy.pos.coord.z mustEqual 114.0f
trap.deploy.pos.roll mustEqual 0f trap.deploy.pos.orient.x mustEqual 0f
trap.deploy.pos.pitch mustEqual 0f trap.deploy.pos.orient.y mustEqual 0f
trap.deploy.pos.yaw mustEqual 90.0f trap.deploy.pos.orient.z mustEqual 90.0f
trap.deploy.faction mustEqual PlanetSideEmpire.VS trap.deploy.faction mustEqual PlanetSideEmpire.VS
trap.deploy.unk mustEqual 4 trap.deploy.unk mustEqual 4
trap.health mustEqual 255 trap.health mustEqual 255
@ -558,9 +558,9 @@ class ObjectCreateMessageTest extends Specification {
aegis.deploy.pos.coord.x mustEqual 3571.2266f aegis.deploy.pos.coord.x mustEqual 3571.2266f
aegis.deploy.pos.coord.y mustEqual 3278.0938f aegis.deploy.pos.coord.y mustEqual 3278.0938f
aegis.deploy.pos.coord.z mustEqual 114.0f aegis.deploy.pos.coord.z mustEqual 114.0f
aegis.deploy.pos.roll mustEqual 0f aegis.deploy.pos.orient.x mustEqual 0f
aegis.deploy.pos.pitch mustEqual 0f aegis.deploy.pos.orient.y mustEqual 0f
aegis.deploy.pos.yaw mustEqual 90.0f aegis.deploy.pos.orient.z mustEqual 90.0f
aegis.deploy.faction mustEqual PlanetSideEmpire.VS aegis.deploy.faction mustEqual PlanetSideEmpire.VS
aegis.deploy.unk mustEqual 4 aegis.deploy.unk mustEqual 4
aegis.health mustEqual 255 aegis.health mustEqual 255
@ -583,9 +583,9 @@ class ObjectCreateMessageTest extends Specification {
omft.deploy.pos.coord.x mustEqual 3567.1406f omft.deploy.pos.coord.x mustEqual 3567.1406f
omft.deploy.pos.coord.y mustEqual 2988.0078f omft.deploy.pos.coord.y mustEqual 2988.0078f
omft.deploy.pos.coord.z mustEqual 71.84375f omft.deploy.pos.coord.z mustEqual 71.84375f
omft.deploy.pos.roll mustEqual 0f omft.deploy.pos.orient.x mustEqual 0f
omft.deploy.pos.pitch mustEqual 0f omft.deploy.pos.orient.y mustEqual 0f
omft.deploy.pos.yaw mustEqual 185.625f omft.deploy.pos.orient.z mustEqual 185.625f
omft.deploy.faction mustEqual PlanetSideEmpire.VS omft.deploy.faction mustEqual PlanetSideEmpire.VS
omft.deploy.unk mustEqual 4 omft.deploy.unk mustEqual 4
omft.deploy.player_guid mustEqual PlanetSideGUID(2502) omft.deploy.player_guid mustEqual PlanetSideGUID(2502)
@ -666,9 +666,9 @@ class ObjectCreateMessageTest extends Specification {
pc.appearance.pos.coord.x mustEqual 3674.8438f pc.appearance.pos.coord.x mustEqual 3674.8438f
pc.appearance.pos.coord.y mustEqual 2726.789f pc.appearance.pos.coord.y mustEqual 2726.789f
pc.appearance.pos.coord.z mustEqual 91.15625f pc.appearance.pos.coord.z mustEqual 91.15625f
pc.appearance.pos.roll mustEqual 0f pc.appearance.pos.orient.x mustEqual 0f
pc.appearance.pos.pitch mustEqual 0f pc.appearance.pos.orient.y mustEqual 0f
pc.appearance.pos.yaw mustEqual 64.6875f pc.appearance.pos.orient.z mustEqual 64.6875f
pc.appearance.pos.vel.isDefined mustEqual true pc.appearance.pos.vel.isDefined mustEqual true
pc.appearance.pos.vel.get.x mustEqual 1.4375f pc.appearance.pos.vel.get.x mustEqual 1.4375f
pc.appearance.pos.vel.get.y mustEqual -0.4375f pc.appearance.pos.vel.get.y mustEqual -0.4375f
@ -765,9 +765,9 @@ class ObjectCreateMessageTest extends Specification {
pc.appearance.pos.coord.x mustEqual 4629.8906f pc.appearance.pos.coord.x mustEqual 4629.8906f
pc.appearance.pos.coord.y mustEqual 6316.4453f pc.appearance.pos.coord.y mustEqual 6316.4453f
pc.appearance.pos.coord.z mustEqual 54.734375f pc.appearance.pos.coord.z mustEqual 54.734375f
pc.appearance.pos.roll mustEqual 0f pc.appearance.pos.orient.x mustEqual 0f
pc.appearance.pos.pitch mustEqual 0f pc.appearance.pos.orient.y mustEqual 0f
pc.appearance.pos.yaw mustEqual 126.5625f pc.appearance.pos.orient.z mustEqual 126.5625f
pc.appearance.pos.vel.isDefined mustEqual false pc.appearance.pos.vel.isDefined mustEqual false
pc.appearance.basic_appearance.name mustEqual "Angello" pc.appearance.basic_appearance.name mustEqual "Angello"
pc.appearance.basic_appearance.faction mustEqual PlanetSideEmpire.VS pc.appearance.basic_appearance.faction mustEqual PlanetSideEmpire.VS
@ -904,7 +904,7 @@ class ObjectCreateMessageTest extends Specification {
"encode (ace, dropped)" in { "encode (ace, dropped)" in {
val obj = DroppedItemData( val obj = DroppedItemData(
PlacementData(Vector3(4708.461f, 5547.539f, 72.703125f), 0f, 0f, 194.0625f), PlacementData(4708.461f, 5547.539f, 72.703125f, 0f, 0f, 194.0625f),
ACEData(8, 8) ACEData(8, 8)
) )
val msg = ObjectCreateMessage(ObjectClass.ace, PlanetSideGUID(4388), obj) val msg = ObjectCreateMessage(ObjectClass.ace, PlanetSideGUID(4388), obj)
@ -915,7 +915,7 @@ class ObjectCreateMessageTest extends Specification {
"encode (detonator, dropped)" in { "encode (detonator, dropped)" in {
val obj = DroppedItemData( val obj = DroppedItemData(
PlacementData(Vector3(4777.633f, 5485.4062f, 85.8125f), 0f, 0f, 14.0625f), PlacementData(4777.633f, 5485.4062f, 85.8125f, 0f, 0f, 14.0625f),
CommandDetonaterData() CommandDetonaterData()
) )
val msg = ObjectCreateMessage(ObjectClass.command_detonater, PlanetSideGUID(3682), obj) val msg = ObjectCreateMessage(ObjectClass.command_detonater, PlanetSideGUID(3682), obj)
@ -926,7 +926,7 @@ class ObjectCreateMessageTest extends Specification {
"encode (shotgun shells, dropped)" in { "encode (shotgun shells, dropped)" in {
val obj = DroppedItemData( val obj = DroppedItemData(
PlacementData(Vector3(4684.7344f, 5547.4844f, 83.765625f), 0f, 0f, 199.6875f), PlacementData(4684.7344f, 5547.4844f, 83.765625f, 0f, 0f, 199.6875f),
AmmoBoxData() AmmoBoxData()
) )
val msg = ObjectCreateMessage(ObjectClass.shotgun_shell, PlanetSideGUID(3453), obj) val msg = ObjectCreateMessage(ObjectClass.shotgun_shell, PlanetSideGUID(3453), obj)
@ -937,7 +937,7 @@ class ObjectCreateMessageTest extends Specification {
"encode (lasher, dropped)" in { "encode (lasher, dropped)" in {
val obj = DroppedItemData( val obj = DroppedItemData(
PlacementData(Vector3(4691.1953f, 5537.039f, 65.484375f), 0.0f, 0.0f, 0.0f), PlacementData(4691.1953f, 5537.039f, 65.484375f, 0.0f, 0.0f, 0.0f),
WeaponData(4, 0, ObjectClass.energy_cell, PlanetSideGUID(3268), 0, AmmoBoxData()) WeaponData(4, 0, ObjectClass.energy_cell, PlanetSideGUID(3268), 0, AmmoBoxData())
) )
val msg = ObjectCreateMessage(ObjectClass.lasher, PlanetSideGUID(3074), obj) val msg = ObjectCreateMessage(ObjectClass.lasher, PlanetSideGUID(3074), obj)
@ -948,7 +948,7 @@ class ObjectCreateMessageTest extends Specification {
"encode (punisher, dropped)" in { "encode (punisher, dropped)" in {
val obj = DroppedItemData( val obj = DroppedItemData(
PlacementData(Vector3(4789.133f, 5522.3125f, 72.3125f), 0f, 0f, 306.5625f), PlacementData(4789.133f, 5522.3125f, 72.3125f, 0f, 0f, 306.5625f),
WeaponData(2, 0, 0, WeaponData(2, 0, 0,
AmmoBoxData(ObjectClass.bullet_9mm, PlanetSideGUID(3528), 0, AmmoBoxData()) :: AmmoBoxData(ObjectClass.bullet_9mm, PlanetSideGUID(3528), 0, AmmoBoxData()) ::
AmmoBoxData(ObjectClass.rocket, PlanetSideGUID(3031), 1, AmmoBoxData()) :: AmmoBoxData(ObjectClass.rocket, PlanetSideGUID(3031), 1, AmmoBoxData()) ::
@ -963,7 +963,7 @@ class ObjectCreateMessageTest extends Specification {
"encode (REK, dropped)" in { "encode (REK, dropped)" in {
val obj = DroppedItemData( val obj = DroppedItemData(
PlacementData(Vector3(4675.039f, 5506.953f, 72.703125f), 0f, 0f, 230.625f), PlacementData(4675.039f, 5506.953f, 72.703125f, 0f, 0f, 230.625f),
REKData(8, 0, 3) REKData(8, 0, 3)
) )
val msg = ObjectCreateMessage(ObjectClass.remote_electronics_kit, PlanetSideGUID(4355), obj) val msg = ObjectCreateMessage(ObjectClass.remote_electronics_kit, PlanetSideGUID(4355), obj)
@ -975,7 +975,7 @@ class ObjectCreateMessageTest extends Specification {
"encode (boomer)" in { "encode (boomer)" in {
val obj = SmallDeployableData( val obj = SmallDeployableData(
CommonFieldData( CommonFieldData(
PlacementData(Vector3(4704.172f, 5546.4375f, 82.234375f), 0f, 0f, 272.8125f), PlacementData(4704.172f, 5546.4375f, 82.234375f, 0f, 0f, 272.8125f),
PlanetSideEmpire.TR, 0, PlanetSideGUID(4145) PlanetSideEmpire.TR, 0, PlanetSideGUID(4145)
) )
) )
@ -988,7 +988,7 @@ class ObjectCreateMessageTest extends Specification {
"encode (spitfire, short)" in { "encode (spitfire, short)" in {
val obj = SmallTurretData( val obj = SmallTurretData(
CommonFieldData( CommonFieldData(
PlacementData(Vector3(4577.7812f, 5624.828f, 72.046875f), 0f, 2.8125f, 264.375f), PlacementData(4577.7812f, 5624.828f, 72.046875f, 0f, 2.8125f, 264.375f),
PlanetSideEmpire.NC, 12, PlanetSideGUID(3871) PlanetSideEmpire.NC, 12, PlanetSideGUID(3871)
), ),
255 //sets to 0 255 //sets to 0
@ -1006,7 +1006,7 @@ class ObjectCreateMessageTest extends Specification {
"encode (spitfire)" in { "encode (spitfire)" in {
val obj = SmallTurretData( val obj = SmallTurretData(
CommonFieldData( CommonFieldData(
PlacementData(Vector3(4527.633f, 6271.3594f, 70.265625f), 0f, 0f, 154.6875f), PlacementData(4527.633f, 6271.3594f, 70.265625f, 0f, 0f, 154.6875f),
PlanetSideEmpire.VS, 4, PlanetSideGUID(4232) PlanetSideEmpire.VS, 4, PlanetSideGUID(4232)
), ),
255, 255,
@ -1025,7 +1025,7 @@ class ObjectCreateMessageTest extends Specification {
"encode (trap)" in { "encode (trap)" in {
val obj = TRAPData( val obj = TRAPData(
CommonFieldData( CommonFieldData(
PlacementData(Vector3(3572.4453f, 3277.9766f, 114.0f), 0f, 0f, 90.0f), PlacementData(3572.4453f, 3277.9766f, 114.0f, 0f, 0f, 90.0f),
PlanetSideEmpire.VS, 4, PlanetSideGUID(2502) PlanetSideEmpire.VS, 4, PlanetSideGUID(2502)
), ),
255 255
@ -1043,7 +1043,7 @@ class ObjectCreateMessageTest extends Specification {
"encode (aegis)" in { "encode (aegis)" in {
val obj = AegisShieldGeneratorData( val obj = AegisShieldGeneratorData(
CommonFieldData( CommonFieldData(
PlacementData(Vector3(3571.2266f, 3278.0938f, 114.0f), 0f, 0f, 90.0f), PlacementData(3571.2266f, 3278.0938f, 114.0f, 0f, 0f, 90.0f),
PlanetSideEmpire.VS, 4, PlanetSideGUID(2366) PlanetSideEmpire.VS, 4, PlanetSideGUID(2366)
), ),
255 255
@ -1057,7 +1057,7 @@ class ObjectCreateMessageTest extends Specification {
"encode (orion)" in { "encode (orion)" in {
val obj = OneMannedFieldTurretData( val obj = OneMannedFieldTurretData(
CommonFieldData( CommonFieldData(
PlacementData(Vector3(3567.1406f, 2988.0078f, 71.84375f), 0f, 0f, 185.625f), PlacementData(3567.1406f, 2988.0078f, 71.84375f, 0f, 0f, 185.625f),
PlanetSideEmpire.VS, 4, PlanetSideGUID(2502) PlanetSideEmpire.VS, 4, PlanetSideGUID(2502)
), ),
255, 255,
@ -1093,7 +1093,7 @@ class ObjectCreateMessageTest extends Specification {
CharacterAppearanceData( CharacterAppearanceData(
PlacementData( PlacementData(
Vector3(3674.8438f, 2726.789f, 91.15625f), Vector3(3674.8438f, 2726.789f, 91.15625f),
0f, 0f, 64.6875f, Vector3(0f, 0f, 64.6875f),
Some(Vector3(1.4375f, -0.4375f, 0f)) Some(Vector3(1.4375f, -0.4375f, 0f))
), ),
BasicCharacterData( BasicCharacterData(

View file

@ -33,9 +33,9 @@ class ObjectCreateMessageVehiclesTest extends Specification {
fury.basic.pos.coord.x mustEqual 6531.961f fury.basic.pos.coord.x mustEqual 6531.961f
fury.basic.pos.coord.y mustEqual 1872.1406f fury.basic.pos.coord.y mustEqual 1872.1406f
fury.basic.pos.coord.z mustEqual 24.734375f fury.basic.pos.coord.z mustEqual 24.734375f
fury.basic.pos.roll mustEqual 0f fury.basic.pos.orient.x mustEqual 0f
fury.basic.pos.pitch mustEqual 0f fury.basic.pos.orient.y mustEqual 0f
fury.basic.pos.yaw mustEqual 357.1875f fury.basic.pos.orient.z mustEqual 357.1875f
fury.basic.pos.vel.isDefined mustEqual false fury.basic.pos.vel.isDefined mustEqual false
fury.basic.faction mustEqual PlanetSideEmpire.VS fury.basic.faction mustEqual PlanetSideEmpire.VS
fury.basic.unk mustEqual 4 fury.basic.unk mustEqual 4
@ -78,9 +78,9 @@ class ObjectCreateMessageVehiclesTest extends Specification {
ant.basic.pos.coord.x mustEqual 3674.8438f ant.basic.pos.coord.x mustEqual 3674.8438f
ant.basic.pos.coord.y mustEqual 2726.789f ant.basic.pos.coord.y mustEqual 2726.789f
ant.basic.pos.coord.z mustEqual 91.15625f ant.basic.pos.coord.z mustEqual 91.15625f
ant.basic.pos.roll mustEqual 0f ant.basic.pos.orient.x mustEqual 0f
ant.basic.pos.pitch mustEqual 0f ant.basic.pos.orient.y mustEqual 0f
ant.basic.pos.yaw mustEqual 90.0f ant.basic.pos.orient.z mustEqual 90.0f
ant.basic.faction mustEqual PlanetSideEmpire.VS ant.basic.faction mustEqual PlanetSideEmpire.VS
ant.basic.unk mustEqual 4 ant.basic.unk mustEqual 4
ant.basic.player_guid mustEqual PlanetSideGUID(0) ant.basic.player_guid mustEqual PlanetSideGUID(0)
@ -104,9 +104,9 @@ class ObjectCreateMessageVehiclesTest extends Specification {
lightning.basic.pos.coord.x mustEqual 3674.8438f lightning.basic.pos.coord.x mustEqual 3674.8438f
lightning.basic.pos.coord.y mustEqual 2726.789f lightning.basic.pos.coord.y mustEqual 2726.789f
lightning.basic.pos.coord.z mustEqual 91.15625f lightning.basic.pos.coord.z mustEqual 91.15625f
lightning.basic.pos.roll mustEqual 0f lightning.basic.pos.orient.x mustEqual 0f
lightning.basic.pos.pitch mustEqual 0f lightning.basic.pos.orient.y mustEqual 0f
lightning.basic.pos.yaw mustEqual 90.0f lightning.basic.pos.orient.z mustEqual 90.0f
lightning.basic.faction mustEqual PlanetSideEmpire.VS lightning.basic.faction mustEqual PlanetSideEmpire.VS
lightning.basic.unk mustEqual 4 lightning.basic.unk mustEqual 4
lightning.basic.player_guid mustEqual PlanetSideGUID(0) lightning.basic.player_guid mustEqual PlanetSideGUID(0)
@ -155,9 +155,9 @@ class ObjectCreateMessageVehiclesTest extends Specification {
deliverer.basic.pos.coord.x mustEqual 6531.961f deliverer.basic.pos.coord.x mustEqual 6531.961f
deliverer.basic.pos.coord.y mustEqual 1872.1406f deliverer.basic.pos.coord.y mustEqual 1872.1406f
deliverer.basic.pos.coord.z mustEqual 24.734375f deliverer.basic.pos.coord.z mustEqual 24.734375f
deliverer.basic.pos.roll mustEqual 0f deliverer.basic.pos.orient.x mustEqual 0f
deliverer.basic.pos.pitch mustEqual 0f deliverer.basic.pos.orient.y mustEqual 0f
deliverer.basic.pos.yaw mustEqual 357.1875f deliverer.basic.pos.orient.z mustEqual 357.1875f
deliverer.basic.faction mustEqual PlanetSideEmpire.NC deliverer.basic.faction mustEqual PlanetSideEmpire.NC
deliverer.basic.unk mustEqual 4 deliverer.basic.unk mustEqual 4
deliverer.basic.player_guid mustEqual PlanetSideGUID(0) deliverer.basic.player_guid mustEqual PlanetSideGUID(0)
@ -221,9 +221,9 @@ class ObjectCreateMessageVehiclesTest extends Specification {
ams.basic.pos.coord.x mustEqual 3674.0f ams.basic.pos.coord.x mustEqual 3674.0f
ams.basic.pos.coord.y mustEqual 2726.789f ams.basic.pos.coord.y mustEqual 2726.789f
ams.basic.pos.coord.z mustEqual 91.15625f ams.basic.pos.coord.z mustEqual 91.15625f
ams.basic.pos.roll mustEqual 0f ams.basic.pos.orient.x mustEqual 0f
ams.basic.pos.pitch mustEqual 0f ams.basic.pos.orient.y mustEqual 0f
ams.basic.pos.yaw mustEqual 90.0f ams.basic.pos.orient.z mustEqual 90.0f
ams.basic.faction mustEqual PlanetSideEmpire.VS ams.basic.faction mustEqual PlanetSideEmpire.VS
ams.basic.unk mustEqual 0 ams.basic.unk mustEqual 0
ams.basic.player_guid mustEqual PlanetSideGUID(34082) ams.basic.player_guid mustEqual PlanetSideGUID(34082)
@ -253,9 +253,9 @@ class ObjectCreateMessageVehiclesTest extends Specification {
dams.pos.coord.x mustEqual 3674.0f dams.pos.coord.x mustEqual 3674.0f
dams.pos.coord.y mustEqual 2726.789f dams.pos.coord.y mustEqual 2726.789f
dams.pos.coord.z mustEqual 91.15625f dams.pos.coord.z mustEqual 91.15625f
dams.pos.roll mustEqual 0f dams.pos.orient.x mustEqual 0f
dams.pos.pitch mustEqual 0f dams.pos.orient.y mustEqual 0f
dams.pos.yaw mustEqual 90.0f dams.pos.orient.z mustEqual 90.0f
case _ => case _ =>
ko ko
} }
@ -274,9 +274,9 @@ class ObjectCreateMessageVehiclesTest extends Specification {
switchblade.basic.pos.coord.x mustEqual 6531.961f switchblade.basic.pos.coord.x mustEqual 6531.961f
switchblade.basic.pos.coord.y mustEqual 1872.1406f switchblade.basic.pos.coord.y mustEqual 1872.1406f
switchblade.basic.pos.coord.z mustEqual 24.734375f switchblade.basic.pos.coord.z mustEqual 24.734375f
switchblade.basic.pos.roll mustEqual 0f switchblade.basic.pos.orient.x mustEqual 0f
switchblade.basic.pos.pitch mustEqual 0f switchblade.basic.pos.orient.y mustEqual 0f
switchblade.basic.pos.yaw mustEqual 357.1875f switchblade.basic.pos.orient.z mustEqual 357.1875f
switchblade.basic.faction mustEqual PlanetSideEmpire.VS switchblade.basic.faction mustEqual PlanetSideEmpire.VS
switchblade.basic.unk mustEqual 4 switchblade.basic.unk mustEqual 4
switchblade.health mustEqual 255 switchblade.health mustEqual 255
@ -321,9 +321,9 @@ class ObjectCreateMessageVehiclesTest extends Specification {
droppod.basic.pos.coord.x mustEqual 5108.0f droppod.basic.pos.coord.x mustEqual 5108.0f
droppod.basic.pos.coord.y mustEqual 6164.0f droppod.basic.pos.coord.y mustEqual 6164.0f
droppod.basic.pos.coord.z mustEqual 1023.9844f droppod.basic.pos.coord.z mustEqual 1023.9844f
droppod.basic.pos.roll mustEqual 0f droppod.basic.pos.orient.x mustEqual 0f
droppod.basic.pos.pitch mustEqual 0f droppod.basic.pos.orient.y mustEqual 0f
droppod.basic.pos.yaw mustEqual 90.0f droppod.basic.pos.orient.z mustEqual 90.0f
droppod.basic.unk mustEqual 4 droppod.basic.unk mustEqual 4
droppod.basic.player_guid mustEqual PlanetSideGUID(0) droppod.basic.player_guid mustEqual PlanetSideGUID(0)
droppod.burn mustEqual false droppod.burn mustEqual false
@ -366,9 +366,9 @@ class ObjectCreateMessageVehiclesTest extends Specification {
shuttle.pos.get.coord.x mustEqual 5610.0156f shuttle.pos.get.coord.x mustEqual 5610.0156f
shuttle.pos.get.coord.y mustEqual 4255.258f shuttle.pos.get.coord.y mustEqual 4255.258f
shuttle.pos.get.coord.z mustEqual 134.1875f shuttle.pos.get.coord.z mustEqual 134.1875f
shuttle.pos.get.roll mustEqual 0f shuttle.pos.get.orient.x mustEqual 0f
shuttle.pos.get.pitch mustEqual 0f shuttle.pos.get.orient.y mustEqual 0f
shuttle.pos.get.yaw mustEqual 180.0f shuttle.pos.get.orient.z mustEqual 180.0f
case _ => case _ =>
ko ko
} }
@ -455,7 +455,8 @@ class ObjectCreateMessageVehiclesTest extends Specification {
"encode (ams)" in { "encode (ams)" in {
val obj = AMSData( val obj = AMSData(
CommonFieldData(PlacementData(3674.0f, 2726.789f, 91.15625f, 0f, 0f, 90.0f), CommonFieldData(
PlacementData(3674.0f, 2726.789f, 91.15625f, 0f, 0f, 90.0f),
PlanetSideEmpire.VS, 0, PlanetSideEmpire.VS, 0,
PlanetSideGUID(34082) PlanetSideGUID(34082)
), ),
@ -485,8 +486,10 @@ class ObjectCreateMessageVehiclesTest extends Specification {
"encode (switchblade)" in { "encode (switchblade)" in {
val obj = Vehicle2Data( val obj = Vehicle2Data(
CommonFieldData(PlacementData(6531.961f, 1872.1406f, 24.734375f, 0f, 0f, 357.1875f), CommonFieldData(
PlanetSideEmpire.VS, 4 PlacementData(6531.961f, 1872.1406f, 24.734375f, 0f, 0f, 357.1875f),
PlanetSideEmpire.VS,
4
), ),
255, 255,
DriveState.Mobile, DriveState.Mobile,
@ -504,7 +507,8 @@ class ObjectCreateMessageVehiclesTest extends Specification {
val obj = DroppodData( val obj = DroppodData(
CommonFieldData( CommonFieldData(
PlacementData(5108.0f, 6164.0f, 1023.9844f, 0f, 0f, 90.0f), PlacementData(5108.0f, 6164.0f, 1023.9844f, 0f, 0f, 90.0f),
PlanetSideEmpire.VS, 4 PlanetSideEmpire.VS,
4
) )
) )
val msg = ObjectCreateMessage(ObjectClass.droppod, PlanetSideGUID(3595), obj) val msg = ObjectCreateMessage(ObjectClass.droppod, PlanetSideGUID(3595), obj)

View file

@ -111,7 +111,7 @@ class WorldSessionActor extends Actor with MDCContextAware {
val app = CharacterAppearanceData( val app = CharacterAppearanceData(
PlacementData( PlacementData(
Vector3(3674.8438f, 2726.789f, 91.15625f), Vector3(3674.8438f, 2726.789f, 91.15625f),
0f, 0f, 90f Vector3(0f, 0f, 90f)
), ),
BasicCharacterData( BasicCharacterData(
"IlllIIIlllIlIllIlllIllI", "IlllIIIlllIlIllIlllIllI",