From: <sv...@ww...> - 2004-05-29 02:38:39
|
Author: wolverine Date: 2004-05-28 19:38:33 -0700 (Fri, 28 May 2004) New Revision: 962 Modified: trunk/CSP/CSPSim/CHANGES.current trunk/CSP/CSPSim/Data/CSPSim.ini trunk/CSP/CSPSim/Include/Networking.h trunk/CSP/CSPSim/Source/ClientNode.cpp trunk/CSP/CSPSim/Source/DynamicObject.cpp trunk/CSP/CSPSim/Source/ServerNode.cpp Log: new changes file Modified: trunk/CSP/CSPSim/CHANGES.current =================================================================== --- trunk/CSP/CSPSim/CHANGES.current 2004-05-26 01:11:12 UTC (rev 961) +++ trunk/CSP/CSPSim/CHANGES.current 2004-05-29 02:38:33 UTC (rev 962) @@ -1,6 +1,15 @@ Version 0.4.0 (in progress) =========================== +2004-05-28: wolverine + * Created special data transfer structures that contain no virtual + functions and have the same fundamental binary structure as SimData types + minus the virutal function tables. These structures really just + create memory place holders in the object network messages that + the regular SimData types can be mem copied over, the elements of the + transfer structures do not need to be directly accessed except + for debugging purposes. + 2004-05-23: wolverine * Changes to the format of the object update message. Now There is a special class for the object update payload section that Modified: trunk/CSP/CSPSim/Data/CSPSim.ini =================================================================== --- trunk/CSP/CSPSim/Data/CSPSim.ini 2004-05-26 01:11:12 UTC (rev 961) +++ trunk/CSP/CSPSim/Data/CSPSim.ini 2004-05-29 02:38:33 UTC (rev 962) @@ -40,7 +40,7 @@ LocalMessagePort = 3150 LocalMessageHost = 127.0.0.1 RemoteMessagePort = 3160 -RemoteMessageHost = 127.0.0.1 +RemoteMessageHost = 127.0.0.1 ; balkan theater (demeter) Theater = sim:theater.balkan Modified: trunk/CSP/CSPSim/Include/Networking.h =================================================================== --- trunk/CSP/CSPSim/Include/Networking.h 2004-05-26 01:11:12 UTC (rev 961) +++ trunk/CSP/CSPSim/Include/Networking.h 2004-05-29 02:38:33 UTC (rev 962) @@ -93,7 +93,25 @@ }; - + +// Define some structs that will only used for data transfers. +// These differ from SimData structs in that they have no virtual +// functions and hence have more predictable binary sizes. +struct _Vector3Struct +{ + double x; + double y; + double z; +}; + +struct _QuatStruct +{ + double x; + double y; + double z; + double w; +}; + class ObjectUpdateMessagePayload { @@ -103,10 +121,10 @@ public: unsigned int id; simdata::SimTime timeStamp; - simdata::Vector3 globalPosition; - simdata::Vector3 linearVelocity; - simdata::Vector3 angularVelocity; - simdata::Quat attitude; + _Vector3Struct globalPosition; + _Vector3Struct linearVelocity; + _Vector3Struct angularVelocity; + _QuatStruct attitude; }; Modified: trunk/CSP/CSPSim/Source/ClientNode.cpp =================================================================== --- trunk/CSP/CSPSim/Source/ClientNode.cpp 2004-05-26 01:11:12 UTC (rev 961) +++ trunk/CSP/CSPSim/Source/ClientNode.cpp 2004-05-29 02:38:33 UTC (rev 962) @@ -24,6 +24,8 @@ printf("sizeof(simdata::Vector3) = %d\n", sizeof(simdata::Vector3)); printf("sizeof(simdata::Quat) = %d\n", sizeof(simdata::Quat)); printf("sizeof(simdata::SimTime) = %d\n", sizeof(simdata::SimTime)); + printf("sizeof(_Vector3Struct) = %d\n", sizeof(_Vector3Struct)); + printf("sizeof(_QuatStruct) = %d\n", sizeof(_QuatStruct)); printf("Network test client starting up...\n"); Modified: trunk/CSP/CSPSim/Source/DynamicObject.cpp =================================================================== --- trunk/CSP/CSPSim/Source/DynamicObject.cpp 2004-05-26 01:11:12 UTC (rev 961) +++ trunk/CSP/CSPSim/Source/DynamicObject.cpp 2004-05-29 02:38:33 UTC (rev 962) @@ -404,10 +404,10 @@ ObjectUpdateMessagePayload * ptrPayload = (ObjectUpdateMessagePayload*)message->getPayloadPtr(); ptrPayload->id = m_ID; ptrPayload->timeStamp = CSPSim::theSim->getElapsedTime(); - ptrPayload->globalPosition = b_GlobalPosition->value(); - ptrPayload->linearVelocity = b_LinearVelocity->value(); - ptrPayload->angularVelocity = b_AngularVelocity->value(); - ptrPayload->attitude = b_Attitude->value(); + b_GlobalPosition->value().writeBinary((unsigned char *)&(ptrPayload->globalPosition),24); + b_LinearVelocity->value().writeBinary((unsigned char *)&(ptrPayload->linearVelocity),24); + b_AngularVelocity->value().writeBinary((unsigned char *)&(ptrPayload->angularVelocity),24); + b_Attitude->value().writeBinary((unsigned char *)&(ptrPayload->attitude),24); CSP_LOG(APP, DEBUG, "DynamicObject::getUpdateMessage() - returning message"); @@ -436,10 +436,10 @@ //ptrPayload->timeStamp = CSPSim::theSim->getElapsedTime(); // //load the other values. - b_GlobalPosition->value() = ptrPayload->globalPosition; - b_LinearVelocity->value() = ptrPayload->linearVelocity; - b_AngularVelocity->value() = ptrPayload->angularVelocity; - b_Attitude->value() = ptrPayload->attitude; + b_GlobalPosition->value().readBinary((unsigned char*)&(ptrPayload->globalPosition),24); + b_LinearVelocity->value().readBinary((unsigned char *)&(ptrPayload->linearVelocity),24); + b_AngularVelocity->value().readBinary((unsigned char *)&(ptrPayload->angularVelocity),24); + b_Attitude->value().readBinary((unsigned char *)&(ptrPayload->attitude),24); } Modified: trunk/CSP/CSPSim/Source/ServerNode.cpp =================================================================== --- trunk/CSP/CSPSim/Source/ServerNode.cpp 2004-05-26 01:11:12 UTC (rev 961) +++ trunk/CSP/CSPSim/Source/ServerNode.cpp 2004-05-29 02:38:33 UTC (rev 962) @@ -37,9 +37,9 @@ printf("Client port: %d\n", node->getPort()); ObjectUpdateMessagePayload * ptrPayload = (ObjectUpdateMessagePayload*)message->getPayloadPtr(); printf("PositionX: %f, PositionY: %f, PositionZ: %f\n", - ptrPayload->globalPosition.x(), - ptrPayload->globalPosition.y(), - ptrPayload->globalPosition.z()); + ptrPayload->globalPosition.x, + ptrPayload->globalPosition.y, + ptrPayload->globalPosition.z); } else { |