@@ -35,6 +35,7 @@ along with KBEngine. If not, see <http://www.gnu.org/licenses/>.
35
35
#include " server/telnet_server.hpp"
36
36
#include " dbmgr/dbmgr_interface.hpp"
37
37
#include " navigation/navigation.hpp"
38
+ #include " client_lib/client_interface.hpp"
38
39
39
40
#include " ../../server/baseappmgr/baseappmgr_interface.hpp"
40
41
#include " ../../server/cellappmgr/cellappmgr_interface.hpp"
@@ -1533,7 +1534,7 @@ PyObject* Cellapp::__py_address(PyObject* self, PyObject* args)
1533
1534
}
1534
1535
1535
1536
// -------------------------------------------------------------------------------------
1536
- void Cellapp::reqTeleportToTheCellApp (Network::Channel* pChannel, MemoryStream& s)
1537
+ void Cellapp::reqTeleportToCellApp (Network::Channel* pChannel, MemoryStream& s)
1537
1538
{
1538
1539
size_t rpos = s.rpos ();
1539
1540
@@ -1556,14 +1557,14 @@ void Cellapp::reqTeleportToTheCellApp(Network::Channel* pChannel, MemoryStream&
1556
1557
s.rpos (rpos);
1557
1558
1558
1559
Network::Bundle* pBundle = Network::Bundle::ObjPool ().createObject ();
1559
- (*pBundle).newMessage (CellappInterface::reqTeleportToTheCellAppCB );
1560
+ (*pBundle).newMessage (CellappInterface::reqTeleportToCellAppCB );
1560
1561
(*pBundle) << teleportEntityID;
1561
1562
(*pBundle) << success;
1562
1563
(*pBundle).append (&s);
1563
1564
pBundle->send (this ->networkInterface (), pChannel);
1564
1565
Network::Bundle::ObjPool ().reclaimObject (pBundle);
1565
1566
1566
- ERROR_MSG (fmt::format (" Cellapp::reqTeleportToTheCellApp : not found refEntity({}), spaceID({}), reqTeleportEntity({})!\n " ,
1567
+ ERROR_MSG (fmt::format (" Cellapp::reqTeleportToCellApp : not found refEntity({}), spaceID({}), reqTeleportEntity({})!\n " ,
1567
1568
nearbyMBRefID, spaceID, teleportEntityID));
1568
1569
1569
1570
s.opfini ();
@@ -1576,14 +1577,14 @@ void Cellapp::reqTeleportToTheCellApp(Network::Channel* pChannel, MemoryStream&
1576
1577
s.rpos (rpos);
1577
1578
1578
1579
Network::Bundle* pBundle = Network::Bundle::ObjPool ().createObject ();
1579
- (*pBundle).newMessage (CellappInterface::reqTeleportToTheCellAppCB );
1580
+ (*pBundle).newMessage (CellappInterface::reqTeleportToCellAppCB );
1580
1581
(*pBundle) << teleportEntityID;
1581
1582
(*pBundle) << success;
1582
1583
(*pBundle).append (&s);
1583
1584
pBundle->send (this ->networkInterface (), pChannel);
1584
1585
Network::Bundle::ObjPool ().reclaimObject (pBundle);
1585
1586
1586
- ERROR_MSG (fmt::format (" Cellapp::reqTeleportToTheCellApp : not found space({}), reqTeleportEntity({})!\n " , spaceID, teleportEntityID));
1587
+ ERROR_MSG (fmt::format (" Cellapp::reqTeleportToCellApp : not found space({}), reqTeleportEntity({})!\n " , spaceID, teleportEntityID));
1587
1588
s.opfini ();
1588
1589
return ;
1589
1590
}
@@ -1595,14 +1596,14 @@ void Cellapp::reqTeleportToTheCellApp(Network::Channel* pChannel, MemoryStream&
1595
1596
s.rpos (rpos);
1596
1597
1597
1598
Network::Bundle* pBundle = Network::Bundle::ObjPool ().createObject ();
1598
- (*pBundle).newMessage (CellappInterface::reqTeleportToTheCellAppCB );
1599
+ (*pBundle).newMessage (CellappInterface::reqTeleportToCellAppCB );
1599
1600
(*pBundle) << teleportEntityID;
1600
1601
(*pBundle) << success;
1601
1602
(*pBundle).append (&s);
1602
1603
pBundle->send (this ->networkInterface (), pChannel);
1603
1604
Network::Bundle::ObjPool ().reclaimObject (pBundle);
1604
1605
1605
- ERROR_MSG (fmt::format (" Cellapp::reqTeleportToTheCellApp : create reqTeleportEntity({}) is error!\n " , teleportEntityID));
1606
+ ERROR_MSG (fmt::format (" Cellapp::reqTeleportToCellApp : create reqTeleportEntity({}) is error!\n " , teleportEntityID));
1606
1607
s.opfini ();
1607
1608
return ;
1608
1609
}
@@ -1620,6 +1621,16 @@ void Cellapp::reqTeleportToTheCellApp(Network::Channel* pChannel, MemoryStream&
1620
1621
e->spaceID (space->id ());
1621
1622
e->setPositionAndDirection (pos, dir);
1622
1623
1624
+ // 进入新space之前必须通知客户端leaveSpace
1625
+ Network::Bundle* pSendBundle = Network::Bundle::ObjPool ().createObject ();
1626
+ Network::Bundle* pForwardBundle = Network::Bundle::ObjPool ().createObject ();
1627
+ (*pForwardBundle).newMessage (ClientInterface::onEntityLeaveSpace);
1628
+ (*pForwardBundle) << e->id ();
1629
+ NETWORK_ENTITY_MESSAGE_FORWARD_CLIENT (e->id (), (*pSendBundle), (*pForwardBundle));
1630
+ e->clientMailbox ()->postMail (pSendBundle);
1631
+ Network::Bundle::ObjPool ().reclaimObject (pForwardBundle);
1632
+
1633
+ // 进入新的space中
1623
1634
space->addEntityAndEnterWorld (e);
1624
1635
1625
1636
Entity* nearbyMBRef = Cellapp::getSingleton ().findEntity (nearbyMBRefID);
@@ -1629,7 +1640,7 @@ void Cellapp::reqTeleportToTheCellApp(Network::Channel* pChannel, MemoryStream&
1629
1640
1630
1641
{
1631
1642
Network::Bundle* pBundle = Network::Bundle::ObjPool ().createObject ();
1632
- (*pBundle).newMessage (CellappInterface::reqTeleportToTheCellAppCB );
1643
+ (*pBundle).newMessage (CellappInterface::reqTeleportToCellAppCB );
1633
1644
(*pBundle) << g_componentID;
1634
1645
(*pBundle) << teleportEntityID;
1635
1646
(*pBundle) << success;
@@ -1639,7 +1650,7 @@ void Cellapp::reqTeleportToTheCellApp(Network::Channel* pChannel, MemoryStream&
1639
1650
}
1640
1651
1641
1652
// -------------------------------------------------------------------------------------
1642
- void Cellapp::reqTeleportToTheCellAppCB (Network::Channel* pChannel, MemoryStream& s)
1653
+ void Cellapp::reqTeleportToCellAppCB (Network::Channel* pChannel, MemoryStream& s)
1643
1654
{
1644
1655
ENTITY_ID nearbyMBRefID = 0 , teleportEntityID = 0 ;
1645
1656
bool success;
@@ -1653,7 +1664,7 @@ void Cellapp::reqTeleportToTheCellAppCB(Network::Channel* pChannel, MemoryStream
1653
1664
{
1654
1665
if (!success)
1655
1666
{
1656
- ERROR_MSG (fmt::format (" Cellapp::reqTeleportToTheCellAppCB : not found reqTeleportEntity({}), lose entity!\n " ,
1667
+ ERROR_MSG (fmt::format (" Cellapp::reqTeleportToCellAppCB : not found reqTeleportEntity({}), lose entity!\n " ,
1657
1668
teleportEntityID));
1658
1669
1659
1670
s.opfini ();
0 commit comments