mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
Merge pull request #16272 from hyperlogic/bug-fix/stuck-in-network-idle-role
Fix for avatars that are stuck in idle pose for observers
This commit is contained in:
commit
f8167e04d0
2 changed files with 19 additions and 1 deletions
|
@ -359,7 +359,7 @@ protected:
|
||||||
A,
|
A,
|
||||||
B
|
B
|
||||||
};
|
};
|
||||||
NetworkAnimState() : clipNodeEnum(NetworkAnimState::None) {}
|
NetworkAnimState() : clipNodeEnum(NetworkAnimState::None), fps(30.0f), loop(false), firstFrame(0.0f), lastFrame(0.0f), blendTime(FLT_MAX) {}
|
||||||
NetworkAnimState(ClipNodeEnum clipNodeEnumIn, const QString& urlIn, float fpsIn, bool loopIn, float firstFrameIn, float lastFrameIn) :
|
NetworkAnimState(ClipNodeEnum clipNodeEnumIn, const QString& urlIn, float fpsIn, bool loopIn, float firstFrameIn, float lastFrameIn) :
|
||||||
clipNodeEnum(clipNodeEnumIn), url(urlIn), fps(fpsIn), loop(loopIn), firstFrame(firstFrameIn), lastFrame(lastFrameIn) {}
|
clipNodeEnum(clipNodeEnumIn), url(urlIn), fps(fpsIn), loop(loopIn), firstFrame(firstFrameIn), lastFrame(lastFrameIn) {}
|
||||||
|
|
||||||
|
|
|
@ -133,7 +133,21 @@ void Avatar::setShowNamesAboveHeads(bool show) {
|
||||||
showNamesAboveHeads = show;
|
showNamesAboveHeads = show;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char* avatarTransitStatusToStringMap[] = {
|
||||||
|
"IDLE",
|
||||||
|
"STARTED",
|
||||||
|
"PRE_TRANSIT",
|
||||||
|
"START_TRANSIT",
|
||||||
|
"TRANSITING",
|
||||||
|
"END_TRANSIT",
|
||||||
|
"POST_TRANSIT",
|
||||||
|
"ENDED",
|
||||||
|
"ABORT_TRANSIT"
|
||||||
|
};
|
||||||
|
|
||||||
AvatarTransit::Status AvatarTransit::update(float deltaTime, const glm::vec3& avatarPosition, const AvatarTransit::TransitConfig& config) {
|
AvatarTransit::Status AvatarTransit::update(float deltaTime, const glm::vec3& avatarPosition, const AvatarTransit::TransitConfig& config) {
|
||||||
|
AvatarTransit::Status previousStatus = _status;
|
||||||
|
|
||||||
float oneFrameDistance = _isActive ? glm::length(avatarPosition - _endPosition) : glm::length(avatarPosition - _lastPosition);
|
float oneFrameDistance = _isActive ? glm::length(avatarPosition - _endPosition) : glm::length(avatarPosition - _lastPosition);
|
||||||
if (oneFrameDistance > (config._minTriggerDistance * _scale)) {
|
if (oneFrameDistance > (config._minTriggerDistance * _scale)) {
|
||||||
if (oneFrameDistance < (config._maxTriggerDistance * _scale)) {
|
if (oneFrameDistance < (config._maxTriggerDistance * _scale)) {
|
||||||
|
@ -150,6 +164,10 @@ AvatarTransit::Status AvatarTransit::update(float deltaTime, const glm::vec3& av
|
||||||
reset();
|
reset();
|
||||||
_status = Status::ENDED;
|
_status = Status::ENDED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (previousStatus != _status) {
|
||||||
|
qDebug(avatars_renderer) << "AvatarTransit " << avatarTransitStatusToStringMap[(int)previousStatus] << "->" << avatarTransitStatusToStringMap[_status];
|
||||||
|
}
|
||||||
return _status;
|
return _status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue