Added support for sending velocity and rotation in PACKET_SPAWN_MOB and PACKET_SPAWN_OBJECT

git-svn-id: http://mc-server.googlecode.com/svn/trunk@1427 0a769ca7-a7f5-676a-18bf-c427514a06d6
master
keyboard.osh@gmail.com 2013-04-28 05:08:29 +00:00
parent 16370ff4eb
commit 9e38229b0d
3 changed files with 30 additions and 27 deletions

View File

@ -711,12 +711,14 @@ void cProtocol125::SendSpawnObject(const cEntity & a_Entity, char a_ObjectType,
WriteInt ((int)(a_Entity.GetPosX() * 32));
WriteInt ((int)(a_Entity.GetPosY() * 32));
WriteInt ((int)(a_Entity.GetPosZ() * 32));
WriteByte(a_Pitch);
WriteByte(a_Yaw);
WriteInt (a_ObjectData);
if (a_ObjectData != 0)
{
WriteShort((short)a_Entity.GetSpeedX());
WriteShort((short)a_Entity.GetSpeedY());
WriteShort((short)a_Entity.GetSpeedZ());
WriteShort((short)(a_Entity.GetSpeedX() * 400));
WriteShort((short)(a_Entity.GetSpeedY() * 400));
WriteShort((short)(a_Entity.GetSpeedZ() * 400));
}
Flush();
}
@ -734,10 +736,12 @@ void cProtocol125::SendSpawnVehicle(const cEntity & a_Vehicle, char a_VehicleTyp
WriteInt ((int)(a_Vehicle.GetPosX() * 32));
WriteInt ((int)(a_Vehicle.GetPosY() * 32));
WriteInt ((int)(a_Vehicle.GetPosZ() * 32));
WriteByte ((BYTE)((a_Vehicle.GetPitch() / 360.f) * 256));
WriteByte ((BYTE)((a_Vehicle.GetRotation() / 360.f) * 256));
WriteInt (1);
WriteShort(0); // TODO: SpeedX
WriteShort(0); // TODO: SpeedY
WriteShort(0); // TODO: SpeedZ
WriteShort((short)(a_Vehicle.GetSpeedX() * 400));
WriteShort((short)(a_Vehicle.GetSpeedY() * 400));
WriteShort((short)(a_Vehicle.GetSpeedZ() * 400));
Flush();
}

View File

@ -406,12 +406,12 @@ void cProtocol132::SendSpawnMob(const cMonster & a_Mob)
WriteInt (a_Mob.GetUniqueID());
WriteByte (a_Mob.GetMobType());
WriteVectorI((Vector3i)(a_Mob.GetPosition() * 32));
WriteByte (0); // yaw
WriteByte (0); // pitch
WriteByte (0); // head yaw
WriteShort (0); // Velocity Z
WriteShort (0); // Velocity X
WriteShort (0); // Velocity Y
WriteByte ((BYTE)((a_Mob.GetRotation() / 360.f) * 256));
WriteByte ((BYTE)((a_Mob.GetPitch() / 360.f) * 256));
WriteByte ((BYTE)((a_Mob.GetHeadYaw() / 360.f) * 256));
WriteShort ((short)(a_Mob.GetSpeedX() * 400));
WriteShort ((short)(a_Mob.GetSpeedY() * 400));
WriteShort ((short)(a_Mob.GetSpeedZ() * 400));
AString MetaData = GetEntityMetaData(a_Mob);
SendData (MetaData.data(), MetaData.size());
Flush();

View File

@ -191,12 +191,12 @@ void cProtocol146::SendSpawnFallingBlock(const cFallingBlock & a_FallingBlock)
WriteInt ((int)(a_FallingBlock.GetPosX() * 32));
WriteInt ((int)(a_FallingBlock.GetPosY() * 32));
WriteInt ((int)(a_FallingBlock.GetPosZ() * 32));
WriteByte (0); // Yaw
WriteByte (0); // Pitch
WriteByte (0); // Yaw
WriteInt (a_FallingBlock.GetBlockType()); // data indicator = blocktype
WriteShort(0); // SpeedX
WriteShort(0); // SpeedY
WriteShort(0); // SpeedZ
WriteShort((short)(a_FallingBlock.GetSpeedX() * 400));
WriteShort((short)(a_FallingBlock.GetSpeedY() * 400));
WriteShort((short)(a_FallingBlock.GetSpeedZ() * 400));
Flush();
}
@ -213,15 +213,14 @@ void cProtocol146::SendSpawnObject(const cEntity & a_Entity, char a_ObjectType,
WriteInt ((int)(a_Entity.GetPosX() * 32));
WriteInt ((int)(a_Entity.GetPosY() * 32));
WriteInt ((int)(a_Entity.GetPosZ() * 32));
WriteByte(a_Pitch);
WriteByte(a_Yaw);
WriteInt (a_ObjectData);
if (a_ObjectData != 0)
{
// TODO: Proper speed units
WriteShort((short)a_Entity.GetSpeedX());
WriteShort((short)a_Entity.GetSpeedY());
WriteShort((short)a_Entity.GetSpeedZ());
WriteByte(a_Yaw);
WriteByte(a_Pitch);
WriteShort((short)(a_Entity.GetSpeedX() * 400));
WriteShort((short)(a_Entity.GetSpeedY() * 400));
WriteShort((short)(a_Entity.GetSpeedZ() * 400));
}
Flush();
}
@ -239,12 +238,12 @@ void cProtocol146::SendSpawnVehicle(const cEntity & a_Vehicle, char a_VehicleTyp
WriteInt ((int)(a_Vehicle.GetPosX() * 32));
WriteInt ((int)(a_Vehicle.GetPosY() * 32));
WriteInt ((int)(a_Vehicle.GetPosZ() * 32));
WriteByte ((BYTE)((a_Vehicle.GetPitch() / 360.f) * 256));
WriteByte ((BYTE)((a_Vehicle.GetRotation() / 360.f) * 256));
WriteInt (1);
WriteShort(0); // TODO: SpeedX
WriteShort(0); // TODO: SpeedY
WriteShort(0); // TODO: SpeedZ
WriteByte (0); // TODO: Yaw
WriteByte (0); // TODO: Pitch
WriteShort((short)(a_Vehicle.GetSpeedX() * 400));
WriteShort((short)(a_Vehicle.GetSpeedY() * 400));
WriteShort((short)(a_Vehicle.GetSpeedZ() * 400));
Flush();
}