Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/game/StarPlayer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/game/StarPlayer.cpp')
-rw-r--r--source/game/StarPlayer.cpp22
1 files changed, 13 insertions, 9 deletions
diff --git a/source/game/StarPlayer.cpp b/source/game/StarPlayer.cpp
index facde2e..151163f 100644
--- a/source/game/StarPlayer.cpp
+++ b/source/game/StarPlayer.cpp
@@ -1025,14 +1025,21 @@ void Player::update(float dt, uint64_t) {
m_humanoid->setDance({});
bool isClient = world()->isClient();
- if (isClient)
- m_armor->setupHumanoidClothingDrawables(*m_humanoid, forceNude());
m_tools->suppressItems(suppressedItems);
m_tools->tick(dt, m_shifting, m_pendingMoves);
- if (auto overrideFacingDirection = m_tools->setupHumanoidHandItems(*m_humanoid, position(), aimPosition()))
- m_movementController->controlFace(*overrideFacingDirection);
+ Direction facingDirection = m_movementController->facingDirection();
+
+ auto overrideFacingDirection = m_tools->setupHumanoidHandItems(*m_humanoid, position(), aimPosition());
+ if (overrideFacingDirection)
+ m_movementController->controlFace(facingDirection = *overrideFacingDirection);
+
+ m_humanoid->setFacingDirection(facingDirection);
+ m_humanoid->setMovingBackwards(facingDirection != m_movementController->movingDirection());
+
+ if (isClient)
+ m_armor->setupHumanoidClothingDrawables(*m_humanoid, forceNude());
m_effectsAnimator->resetTransformationGroup("flip");
if (m_movementController->facingDirection() == Direction::Left)
@@ -1074,7 +1081,7 @@ void Player::update(float dt, uint64_t) {
m_effectEmitter->setSourcePosition("primary", handPosition(ToolHand::Primary) + position());
m_effectEmitter->setSourcePosition("alt", handPosition(ToolHand::Alt) + position());
- m_effectEmitter->setDirection(facingDirection());
+ m_effectEmitter->setDirection(facingDirection);
m_effectEmitter->tick(dt, *entityMode());
@@ -1089,7 +1096,7 @@ void Player::update(float dt, uint64_t) {
}
if (calculateHeadRotation) { // master or not an OpenStarbound player
float headRotation = 0.f;
- if (Humanoid::globalHeadRotation() && (m_humanoid->primaryHandHoldingItem() || m_humanoid->altHandHoldingItem() || m_humanoid->dance())) {
+ if (Humanoid::globalHeadRotation() && (m_humanoid->handHoldingItem(ToolHand::Primary) || m_humanoid->handHoldingItem(ToolHand::Alt) || m_humanoid->dance())) {
auto primary = m_tools->primaryHandItem();
auto alt = m_tools->altHandItem();
String const disableFlag = "disableHeadRotation";
@@ -1108,9 +1115,6 @@ void Player::update(float dt, uint64_t) {
}
}
- m_humanoid->setFacingDirection(m_movementController->facingDirection());
- m_humanoid->setMovingBackwards(m_movementController->facingDirection() != m_movementController->movingDirection());
-
m_pendingMoves.clear();
if (isClient)