MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / update

Method update

source/game/StarNpc.cpp:378–479  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

376}
377
378void Npc::update(float dt, uint64_t) {
379 if (!inWorld())
380 return;
381
382 m_movementController->setTimestep(dt);
383
384 if (isMaster()) {
385 m_scriptComponent.update(m_scriptComponent.updateDt(dt));
386
387 if (inConflictingLoungeAnchor())
388 m_movementController->resetAnchorState();
389
390 if (auto loungeAnchor = as<LoungeAnchor>(m_movementController->entityAnchor())) {
391 if (loungeAnchor->emote)
392 requestEmote(*loungeAnchor->emote);
393 m_statusController->setPersistentEffects("lounging", loungeAnchor->statusEffects);
394 m_effectEmitter->addEffectSources("normal", loungeAnchor->effectEmitters);
395 switch (loungeAnchor->orientation) {
396 case LoungeOrientation::Sit:
397 m_humanoid.setState(Humanoid::Sit);
398 break;
399 case LoungeOrientation::Lay:
400 m_humanoid.setState(Humanoid::Lay);
401 break;
402 case LoungeOrientation::Stand:
403 m_humanoid.setState(Humanoid::Idle); // currently the same as "standard"
404 // idle, but this is lounging idle
405 break;
406 default:
407 m_humanoid.setState(Humanoid::Idle);
408 }
409 } else {
410 m_statusController->setPersistentEffects("lounging", {});
411 }
412
413 m_armor->effects(*m_effectEmitter);
414 m_tools->effects(*m_effectEmitter);
415
416 if (!m_disableWornArmor.get())
417 m_statusController->setPersistentEffects("armor", m_armor->statusEffects());
418 m_statusController->setPersistentEffects("tools", m_tools->statusEffects());
419
420 m_movementController->tickMaster(dt);
421 m_statusController->tickMaster(dt);
422
423 tickShared(dt);
424
425 if (!is<LoungeAnchor>(m_movementController->entityAnchor())) {
426 if (m_movementController->groundMovement()) {
427 if (m_movementController->running())
428 m_humanoid.setState(Humanoid::Run);
429 else if (m_movementController->walking())
430 m_humanoid.setState(Humanoid::Walk);
431 else if (m_movementController->crouching())
432 m_humanoid.setState(Humanoid::Duck);
433 else
434 m_humanoid.setState(Humanoid::Idle);
435 } else if (m_movementController->liquidMovement()) {

Callers 1

tickSharedMethod · 0.45

Calls 15

singletonClass · 0.85
GameTimerClass · 0.85
randfFunction · 0.85
setTimestepMethod · 0.80
updateDtMethod · 0.80
resetAnchorStateMethod · 0.80
entityAnchorMethod · 0.80
addEffectSourcesMethod · 0.80
groundMovementMethod · 0.80
walkingMethod · 0.80
crouchingMethod · 0.80
liquidMovementMethod · 0.80

Tested by

no test coverage detected