本文整理汇总了C++中NetIO::findNib方法的典型用法代码示例。如果您正苦于以下问题:C++ NetIO::findNib方法的具体用法?C++ NetIO::findNib怎么用?C++ NetIO::findNib使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NetIO
的用法示例。
在下文中一共展示了NetIO::findNib方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: munitionDetonationMsgFactory
//------------------------------------------------------------------------------
// munitionDetonationMsgFactory() -- (Output) Munition detonation message factory
//------------------------------------------------------------------------------
bool Nib::munitionDetonationMsgFactory(const double)
{
std::cout << "rprfom::Nib::sendMunitionDetonation() HERE!!" << std::endl;
// Early out -- we must be registered
if (!isRegistered()) return false;
NetIO* netIO = static_cast<NetIO*>(getNetIO());
// Create the parameter/value set
RTI::ParameterHandleValuePairSet* pParams =
RTI::ParameterSetFactory::create( NetIO::NUM_INTERACTION_PARAMETER );
// Set our mode so that we don't do this again.
setMode(simulation::Player::DETONATED);
// If our player just detonated, then it must be a weapon!
simulation::Weapon* mPlayer = dynamic_cast<simulation::Weapon*>(getPlayer());
if (mPlayer == nullptr) return false; // Early out -- it wasn't a weapon
// ---
// Event ID
// ---
unsigned short fireEvent = getWeaponFireEvent();
EventIdentifierStruct eventIdentifier;
base::NetHandler::toNetOrder(&eventIdentifier.eventCount, fireEvent);
base::utStrncpy(
reinterpret_cast<char*>(&eventIdentifier.issuingObjectIdentifier.id[0]),
sizeof(eventIdentifier.issuingObjectIdentifier.id),
getObjectName(),
RTIObjectIdStruct::ID_SIZE );
pParams->add(
netIO->getInteractionParameterHandle(NetIO::EVENT_IDENTIFIER_MD_PI),
reinterpret_cast<char*>(&eventIdentifier),
sizeof(EventIdentifierStruct) );
// ---
// Location & Velocity
// ---
{
osg::Vec3d geocPos = getDrPosition();
osg::Vec3d geocVel = getDrVelocity();
osg::Vec3d geocAcc = getDrAcceleration();
// World Coordinates
WorldLocationStruct detonationLocation;
base::NetHandler::toNetOrder(&detonationLocation.x, geocPos[base::Nav::IX]);
base::NetHandler::toNetOrder(&detonationLocation.y, geocPos[base::Nav::IY]);
base::NetHandler::toNetOrder(&detonationLocation.z, geocPos[base::Nav::IZ]);
pParams->add(
netIO->getInteractionParameterHandle(NetIO::DETONATION_LOCATION_MD_PI),
reinterpret_cast<char*>(&detonationLocation),
sizeof(WorldLocationStruct) );
// Velocity
VelocityVectorStruct finalVelocityVector;
base::NetHandler::toNetOrder(&finalVelocityVector.xVelocity, static_cast<float>(geocVel[base::Nav::IX]));
base::NetHandler::toNetOrder(&finalVelocityVector.yVelocity, static_cast<float>(geocVel[base::Nav::IY]));
base::NetHandler::toNetOrder(&finalVelocityVector.zVelocity, static_cast<float>(geocVel[base::Nav::IZ]));
pParams->add(
netIO->getInteractionParameterHandle(NetIO::FINAL_VELOCITY_VECTOR_MD_PI),
reinterpret_cast<char*>(&finalVelocityVector),
sizeof(VelocityVectorStruct) );
}
// ---
// Munition Object identifiers:
// ---
{
RTIObjectIdStruct munitionObjectIdentifier;
base::utStrncpy(
reinterpret_cast<char*>(&munitionObjectIdentifier.id[0]),
sizeof(munitionObjectIdentifier.id),
getObjectName(),
RTIObjectIdStruct::ID_SIZE );
pParams->add(
netIO->getInteractionParameterHandle(NetIO::MUNITION_OBJECT_IDENTIFIER_MD_PI),
reinterpret_cast<char*>(&munitionObjectIdentifier),
sizeof(RTIObjectIdStruct) );
}
// ---
// Firing Object identifier:
//
// Get the firing player and its NIB.
// First check to see if it's an IPlayer from an HLA network.
// If it's not, then check our output list.
// ---
{
Nib* fNib = nullptr;
simulation::Player* fPlayer = mPlayer->getLaunchVehicle();
if (fPlayer != nullptr) {
if (fPlayer->isNetworkedPlayer()) {
fNib = dynamic_cast<Nib*>( fPlayer->getNib() );
}
else {
fNib = dynamic_cast<Nib*>( netIO->findNib(fPlayer, simulation::NetIO::OUTPUT_NIB) );
//.........这里部分代码省略.........