RPC on a NetObject (not an RPCConnection)
by Anthony Lovell · in Torque Game Engine · 10/20/2006 (8:28 am) · 2 replies
I am not having any luck trying to implement an RPC on a NetObject subclass. I see no examples in the TNL project that demonstrates this supposed capability, and wonder what tricks there might be?
My NetObject subclass's header declares the RPC as
My CPP file has this implementation:
and I get this compiler error (in next post... 4096 char limit)
My NetObject subclass's header declares the RPC as
TNL_DECLARE_RPC(rpcSetEnvironment,
(TNL::Float<16> lat,
TNL::Float<16> lng,
TNL::Int<6> maxVisHm,
TNL::Float<16> wavePeak,
TNL::Float<16> windDir,
TNL::Float<16> windSpeed,
TNL::Float<16> relHumidityAtSeaLevel,
TNL::Float<16> tempCAtSeaLevel,
TNL::Float<16> airPressureAtSeaLevel)
);My CPP file has this implementation:
TNL_IMPLEMENT_RPC(MyNetObject, rpcSetEnvironment, (
TNL::Float<16> lat,
TNL::Float<16> lng,
TNL::Int<9> maxVisHm,
TNL::Float<16> wavePeak,
TNL::Float<16> windDir,
TNL::Float<16> windSpeed,
TNL::Float<16> relHumidityAtSeaLevel,
TNL::Float<16> tempCAtSeaLevel,
TNL::Float<16> airPressureAtSeaLevel
),
(
lat,
lng,
maxVisHm,
wavePeak,
windDir,
windSpeed,
relHumidityAtSeaLevel,
tempCAtSeaLevel,
airPressureAtSeaLevel
),
(TNL::NetClassGroupPlayerShipMask | TNL::NetClassGroupShipWorldMask),
TNL::RPCGuaranteedOrdered, TNL::RPCDirServerToClient, 0)
{
// logic in here, of course
}and I get this compiler error (in next post... 4096 char limit)
#2
1. Don't use TNL_IMPLEMENT_RPC in these cases, but TNL_IMPLEMENT_NETOBJECT_RPC
2. Replace the EventConnection "directionality" enums with RPCToGhost or RPCToGhostParent
That said, I am not seeing total success yet, but the remaining issue might be something similarly silly.
IMO the RPC Doxygen comment should allude to the NetObject case, and offer a link to that sub-variety.
tone
10/20/2006 (8:41 am)
Ok... I have a simpler RPC working now. My mistakes were these:1. Don't use TNL_IMPLEMENT_RPC in these cases, but TNL_IMPLEMENT_NETOBJECT_RPC
2. Replace the EventConnection "directionality" enums with RPCToGhost or RPCToGhostParent
That said, I am not seeing total success yet, but the remaining issue might be something similarly silly.
IMO the RPC Doxygen comment should allude to the NetObject case, and offer a link to that sub-variety.
tone
Torque Owner Anthony Lovell
..\..\fsCore\things\MyNetObject.cpp(256) : error C2664: 'TNL::FunctorDecl<T>::FunctorDecl(void (__thiscall MyNetObject::* )(A,B,C,D,E,F,G,H,I))' : cannot convert parameter 1 from 'void (__thiscall MyNetObject::* )(TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Int<6>,TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Float<bitCount>)' to 'void (__thiscall MyNetObject::* )(A,B,C,D,E,F,G,H,I)' with [ T=void (__thiscall MyNetObject::* )(TNL::Float<16>,TNL::Float<16>,TNL::Int<9>,TNL::Float<16>,TNL::Float<16>,TNL::Float<16>,TNL::Float<16>,TNL::Float<16>,TNL::Float<16>), A=TNL::Float<16>, B=TNL::Float<16>, C=TNL::Int<9>, D=TNL::Float<16>, E=TNL::Float<16>, F=TNL::Float<16>, G=TNL::Float<16>, H=TNL::Float<16>, I=TNL::Float<16> ] and [ bitCount=16 ] and [ A=TNL::Float<16>, B=TNL::Float<16>, C=TNL::Int<9>, D=TNL::Float<16>, E=TNL::Float<16>, F=TNL::Float<16>, G=TNL::Float<16>, H=TNL::Float<16>, I=TNL::Float<16> ] Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast ..\..\fsCore\things\MyNetObject.cpp(256) : error C2511: 'void MyNetObject::rpcSetEnvironment(TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Int<9>,TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Float<bitCount>)' : overloaded member function not found in 'MyNetObject' with [ bitCount=16 ] c:\wtf\tone\floatsim\fscore\things\MyNetObject.h(33) : see declaration of 'MyNetObject' ..\..\fsCore\things\MyNetObject.cpp(256) : error C2511: 'TNL::NetEvent *MyNetObject::rpcSetEnvironment_construct(TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Int<9>,TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Float<bitCount>)' : overloaded member function not found in 'MyNetObject' with [ bitCount=16 ] c:\wtf\tone\floatsim\fscore\things\MyNetObject.h(33) : see declaration of 'MyNetObject' ..\..\fsCore\things\MyNetObject.cpp(256) : error C2511: 'void MyNetObject::rpcSetEnvironment_test(TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Int<9>,TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Float<bitCount>)' : overloaded member function not found in 'FSShip' with [ bitCount=16 ] c:\wtf\tone\floatsim\fscore\things\MyNetObject.h(33) : see declaration of 'MyNetObject' ..\..\fsCore\things\MyNetObject.cpp(257) : error C2511: 'void MyNetObject::rpcSetEnvironment_remote(TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Int<9>,TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Float<bitCount>,TNL::Float<bitCount>)' : overloaded member function not found in 'MyNetObject' with [ bitCount=16 ] c:\wtf\tone\floatsim\fscore\things\MyNetObject.h(33) : see declaration of 'MyNetObject'What might be wrong?
tone