本文整理汇总了C++中TrackObject::getPhysicalObject方法的典型用法代码示例。如果您正苦于以下问题:C++ TrackObject::getPhysicalObject方法的具体用法?C++ TrackObject::getPhysicalObject怎么用?C++ TrackObject::getPhysicalObject使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TrackObject
的用法示例。
在下文中一共展示了TrackObject::getPhysicalObject方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: init
/** Initialises all track objects.
*/
void TrackObjectManager::init()
{
int moveable_objects = 0;
bool warned = false;
for (unsigned i = 0; i < m_all_objects.m_contents_vector.size(); i++)
{
TrackObject* curr = m_all_objects.m_contents_vector[i];
curr->onWorldReady();
if (moveable_objects > stk_config->m_max_moveable_objects)
{
if (!warned)
{
Log::warn("TrackObjectManager",
"Too many moveable objects (>%d) in networking.",
stk_config->m_max_moveable_objects);
warned = true;
}
curr->setInitiallyVisible(false);
curr->setEnabled(false);
continue;
}
// onWorldReady will hide some track objects using scripting
if (NetworkConfig::get()->isNetworking() &&
curr->isEnabled() && curr->getPhysicalObject() &&
curr->getPhysicalObject()->isDynamic())
{
curr->getPhysicalObject()->getBody()
->setActivationState(DISABLE_DEACTIVATION);
curr->getPhysicalObject()->addForRewind();
moveable_objects++;
}
}
} // init
示例2: handleExplosion
void TrackObjectManager::handleExplosion(const Vec3 &pos, const PhysicalObject *mp,
bool secondary_hits)
{
TrackObject* curr;
for_in (curr, m_all_objects)
{
if(secondary_hits || mp == curr->getPhysicalObject())
curr->handleExplosion(pos, mp == curr->getPhysicalObject());
}
} // handleExplosion
示例3: reset
/** Initialises all track objects.
*/
void TrackObjectManager::reset()
{
TrackObject* curr;
for_in (curr, m_all_objects)
{
curr->reset();
if (!curr->isEnabled())
{
//PhysicalObjects may need to be added
if (curr->getType() == "mesh")
{
if (curr->getPhysicalObject() != NULL)
curr->getPhysicalObject()->addBody();
}
}
curr->setEnable(true);
}
示例4: reset
/** Called when a battle is restarted.
*/
void SoccerWorld::reset()
{
WorldWithRank::reset();
if(race_manager->hasTimeTarget())
{
WorldStatus::setClockMode(WorldStatus::CLOCK_COUNTDOWN, race_manager->getTimeTarget());
countDownReachedZero = false;
}
else WorldStatus::setClockMode(CLOCK_CHRONO);
m_can_score_points = true;
memset(m_team_goals, 0, sizeof(m_team_goals));
// Reset original positions for the soccer balls
TrackObjectManager* tom = getTrack()->getTrackObjectManager();
assert(tom);
m_redScorers.clear();
m_redScoreTimes.clear();
m_blueScorers.clear();
m_blueScoreTimes.clear();
m_lastKartToHitBall = -1;
PtrVector<TrackObject>& objects = tom->getObjects();
for(unsigned int i=0; i<objects.size(); i++)
{
TrackObject* obj = objects.get(i);
if(!obj->isSoccerBall())
continue;
obj->reset();
obj->getPhysicalObject()->reset();
}
if (m_goal_sound != NULL &&
m_goal_sound->getStatus() == SFXBase::SFX_PLAYING)
{
m_goal_sound->stop();
}
initKartList();
} // reset
示例5: onCheckGoalTriggered
//-----------------------------------------------------------------------------
void SoccerWorld::onCheckGoalTriggered(bool first_goal)
{
if (isRaceOver())
return;
if (m_can_score_points)
{
m_team_goals[first_goal ? 0 : 1]++;
World *world = World::getWorld();
world->setPhase(WorldStatus::GOAL_PHASE);
m_goal_sound->play();
if(m_lastKartToHitBall != -1)
{
if(first_goal)
{
m_redScorers.push_back(m_lastKartToHitBall);
if(race_manager->hasTimeTarget())
m_redScoreTimes.push_back(race_manager->getTimeTarget() - world->getTime());
else
m_redScoreTimes.push_back(world->getTime());
}
else
{
m_blueScorers.push_back(m_lastKartToHitBall);
if(race_manager->hasTimeTarget())
m_blueScoreTimes.push_back(race_manager->getTimeTarget() - world->getTime());
else
m_blueScoreTimes.push_back(world->getTime());
}
}
}
// Reset original positions for the soccer balls
TrackObjectManager* tom = getTrack()->getTrackObjectManager();
assert(tom);
PtrVector<TrackObject>& objects = tom->getObjects();
for(unsigned int i=0; i<objects.size(); i++)
{
TrackObject* obj = objects.get(i);
if(!obj->isSoccerBall())
continue;
obj->reset();
obj->getPhysicalObject()->reset();
}
//Resetting the ball triggers the goal check line one more time.
//This ensures that only one goal is counted, and the second is ignored.
m_can_score_points = !m_can_score_points;
//for(int i=0 ; i < getNumKarts() ; i++
/*if(World::getWorld()->getTrack()->isAutoRescueEnabled() &&
!getKartAnimation() && fabs(getRoll())>60*DEGREE_TO_RAD &&
fabs(getSpeed())<3.0f )
{
new RescueAnimation(this, true);
}*/
// TODO: rescue the karts
} // onCheckGoalTriggered