forked from Kolyah35/minecraft-pe-0.6.1
69 lines
1.6 KiB
C++
Executable File
69 lines
1.6 KiB
C++
Executable File
#ifndef NET_MINECRAFT_NETWORK_PACKET__SetEntityMotionPacket_H__
|
|
#define NET_MINECRAFT_NETWORK_PACKET__SetEntityMotionPacket_H__
|
|
|
|
//package net.minecraft.network.packet;
|
|
|
|
#include "../Packet.h"
|
|
#include "../../world/entity/Entity.h"
|
|
|
|
class SetEntityMotionPacket: public Packet
|
|
{
|
|
public:
|
|
SetEntityMotionPacket() {}
|
|
|
|
SetEntityMotionPacket(Entity* e) {
|
|
init(e->entityId, e->xd, e->yd, e->zd);
|
|
}
|
|
|
|
SetEntityMotionPacket(int id, float xd, float yd, float zd) {
|
|
init(id, xd, yd, zd);
|
|
}
|
|
|
|
void write(RakNet::BitStream* bitStream)
|
|
{
|
|
const float M = 3.9f;
|
|
short xa = (short)(8000.0f * Mth::clamp(xd, -M, M));
|
|
short ya = (short)(8000.0f * Mth::clamp(yd, -M, M));
|
|
short za = (short)(8000.0f * Mth::clamp(zd, -M, M));
|
|
|
|
bitStream->Write((RakNet::MessageID)(ID_USER_PACKET_ENUM + PACKET_SETENTITYMOTION));
|
|
bitStream->Write(id);
|
|
bitStream->Write(xa);
|
|
bitStream->Write(ya);
|
|
bitStream->Write(za);
|
|
}
|
|
|
|
void read(RakNet::BitStream* bitStream)
|
|
{
|
|
short xa, ya, za;
|
|
bitStream->Read(id);
|
|
bitStream->Read(xa);
|
|
bitStream->Read(ya);
|
|
bitStream->Read(za);
|
|
|
|
xd = xa / 8000.0f;
|
|
yd = ya / 8000.0f;
|
|
zd = za / 8000.0f;
|
|
}
|
|
|
|
void handle(const RakNet::RakNetGUID& source, NetEventCallback* callback)
|
|
{
|
|
callback->handle(source, (SetEntityMotionPacket*)this);
|
|
}
|
|
|
|
private:
|
|
void init(int entityId, float xd, float yd, float zd) {
|
|
this->id = entityId;
|
|
this->xd = xd;
|
|
this->yd = yd;
|
|
this->zd = zd;
|
|
}
|
|
|
|
public:
|
|
int id;
|
|
float xd, yd, zd;
|
|
|
|
};
|
|
|
|
#endif /*NET_MINECRAFT_NETWORK_PACKET__SetEntityMotionPacket_H__*/
|