@@ -372,17 +372,19 @@ void Witness::resetAOIEntities()
372372void Witness::onEnterSpace (Space* pSpace)
373373{
374374 Network::Bundle* pSendBundle = Network::Bundle::ObjPool ().createObject ();
375- Network::Bundle* pForwardBundle = Network::Bundle::ObjPool ().createObject ();
376- Network::Bundle* pForwardPosDirBundle = Network::Bundle::ObjPool ().createObject ();
377375
378- (*pForwardPosDirBundle).newMessage (ClientInterface::onUpdatePropertys);
379- MemoryStream* s1 = MemoryStream::ObjPool ().createObject ();
376+ // 通知位置强制改变
377+ Network::Bundle* pForwardPosDirBundle = Network::Bundle::ObjPool ().createObject ();
378+ Position3D &pos = pEntity_->position ();
379+ Direction3D &dir = pEntity_->direction ();
380+ (*pForwardPosDirBundle).newMessage (ClientInterface::onSetEntityPosAndDir);
380381 (*pForwardPosDirBundle) << pEntity_->id ();
381- pEntity_->addPositionAndDirectionToStream (*s1, true );
382- (*pForwardPosDirBundle).append (*s1);
383- MemoryStream::ObjPool ().reclaimObject (s1);
382+ (*pForwardPosDirBundle) << pos.x << pos.y << pos.z ;
383+ (*pForwardPosDirBundle) << dir.roll () << dir.pitch () << dir.yaw ();
384384 NETWORK_ENTITY_MESSAGE_FORWARD_CLIENT (pEntity_->id (), (*pSendBundle), (*pForwardPosDirBundle));
385385
386+ // 通知进入了新地图
387+ Network::Bundle* pForwardBundle = Network::Bundle::ObjPool ().createObject ();
386388 (*pForwardBundle).newMessage (ClientInterface::onEntityEnterSpace);
387389
388390 (*pForwardBundle) << pEntity_->id ();
@@ -391,6 +393,8 @@ void Witness::onEnterSpace(Space* pSpace)
391393 (*pForwardBundle) << pEntity_->isOnGround ();
392394
393395 NETWORK_ENTITY_MESSAGE_FORWARD_CLIENT (pEntity_->id (), (*pSendBundle), (*pForwardBundle));
396+
397+ // 发送消息并清理
394398 pEntity_->clientMailbox ()->postMail (pSendBundle);
395399
396400 Network::Bundle::ObjPool ().reclaimObject (pForwardBundle);
0 commit comments