mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-08 11:38:18 +02:00
Starting to implement the update function to ModelEntityItem_cpp Also put access to the currently playing frame in RenderableModelEntityItem_cpp
This commit is contained in:
parent
ded81fcab0
commit
20fd893b47
5 changed files with 57 additions and 12 deletions
|
@ -971,9 +971,6 @@ void ModelEntityRenderer::onRemoveFromSceneTyped(const TypedEntityPointer& entit
|
||||||
entity->setModel({});
|
entity->setModel({});
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator!=(const AnimationPropertyGroup& a, const AnimationPropertyGroup& b) {
|
|
||||||
return !(a == b);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ModelEntityRenderer::animate(const TypedEntityPointer& entity) {
|
void ModelEntityRenderer::animate(const TypedEntityPointer& entity) {
|
||||||
if (!_animation || !_animation->isLoaded()) {
|
if (!_animation || !_animation->isLoaded()) {
|
||||||
|
@ -1357,6 +1354,7 @@ void ModelEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& sce
|
||||||
auto newAnimationProperties = entity->getAnimationProperties();
|
auto newAnimationProperties = entity->getAnimationProperties();
|
||||||
if (newAnimationProperties != _renderAnimationProperties) {
|
if (newAnimationProperties != _renderAnimationProperties) {
|
||||||
qCDebug(entitiesrenderer) << "this is where the change is currently handled in the rendering code";
|
qCDebug(entitiesrenderer) << "this is where the change is currently handled in the rendering code";
|
||||||
|
qCDebug(entitiesrenderer) << "getting the currently playing frame from the modelentityitem update" << entity->getCurrentlyPlayingFrame();
|
||||||
withWriteLock([&] {
|
withWriteLock([&] {
|
||||||
if ( (newAnimationProperties.getCurrentFrame() != _renderAnimationProperties.getCurrentFrame()) || (newAnimationProperties.getFirstFrame() != _renderAnimationProperties.getFirstFrame()) || (newAnimationProperties.getLastFrame() != _renderAnimationProperties.getLastFrame()) || (newAnimationProperties.getRunning() && !_renderAnimationProperties.getRunning())) {
|
if ( (newAnimationProperties.getCurrentFrame() != _renderAnimationProperties.getCurrentFrame()) || (newAnimationProperties.getFirstFrame() != _renderAnimationProperties.getFirstFrame()) || (newAnimationProperties.getLastFrame() != _renderAnimationProperties.getLastFrame()) || (newAnimationProperties.getRunning() && !_renderAnimationProperties.getRunning())) {
|
||||||
if (!(newAnimationProperties.getCurrentFrame() > newAnimationProperties.getLastFrame()) && !(newAnimationProperties.getCurrentFrame() < newAnimationProperties.getFirstFrame())) {
|
if (!(newAnimationProperties.getCurrentFrame() > newAnimationProperties.getLastFrame()) && !(newAnimationProperties.getCurrentFrame() < newAnimationProperties.getFirstFrame())) {
|
||||||
|
|
|
@ -31,6 +31,18 @@ bool operator==(const AnimationPropertyGroup& a, const AnimationPropertyGroup& b
|
||||||
(a._hold == b._hold);
|
(a._hold == b._hold);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool operator!=(const AnimationPropertyGroup& a, const AnimationPropertyGroup& b) {
|
||||||
|
return
|
||||||
|
(a._url != b._url) ||
|
||||||
|
(a._currentFrame != b._currentFrame) ||
|
||||||
|
(a._running != b._running) ||
|
||||||
|
(a._loop != b._loop) ||
|
||||||
|
(a._firstFrame != b._firstFrame) ||
|
||||||
|
(a._lastFrame != b._lastFrame) ||
|
||||||
|
(a._hold != b._hold);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void AnimationPropertyGroup::copyToScriptValue(const EntityPropertyFlags& desiredProperties, QScriptValue& properties, QScriptEngine* engine, bool skipDefaults, EntityItemProperties& defaultEntityProperties) const {
|
void AnimationPropertyGroup::copyToScriptValue(const EntityPropertyFlags& desiredProperties, QScriptValue& properties, QScriptEngine* engine, bool skipDefaults, EntityItemProperties& defaultEntityProperties) const {
|
||||||
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_ANIMATION_URL, Animation, animation, URL, url);
|
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_ANIMATION_URL, Animation, animation, URL, url);
|
||||||
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_ANIMATION_ALLOW_TRANSLATION, Animation, animation, AllowTranslation, allowTranslation);
|
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_ANIMATION_ALLOW_TRANSLATION, Animation, animation, AllowTranslation, allowTranslation);
|
||||||
|
|
|
@ -89,6 +89,7 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend bool operator==(const AnimationPropertyGroup& a, const AnimationPropertyGroup& b);
|
friend bool operator==(const AnimationPropertyGroup& a, const AnimationPropertyGroup& b);
|
||||||
|
friend bool operator!=(const AnimationPropertyGroup& a, const AnimationPropertyGroup& b);
|
||||||
void setFromOldAnimationSettings(const QString& value);
|
void setFromOldAnimationSettings(const QString& value);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -187,12 +187,33 @@ void ModelEntityItem::appendSubclassData(OctreePacketData* packetData, EncodeBit
|
||||||
|
|
||||||
|
|
||||||
//angus
|
//angus
|
||||||
/*
|
|
||||||
void ModelEntityItem::update(const quint64& now) {
|
void ModelEntityItem::update(const quint64& now) {
|
||||||
|
|
||||||
//put something here
|
//put something here
|
||||||
qCDebug(entities) << "model entity item update";
|
//qCDebug(entities) << "model entity item update" << getName() << " " << getEntityItemID();
|
||||||
|
|
||||||
|
{
|
||||||
|
auto currentAnimationProperties = this->getAnimationProperties();
|
||||||
|
|
||||||
|
if (_previousAnimationProperties != currentAnimationProperties) {
|
||||||
|
qCDebug(entities) << "this is where the _currentFrame change is handled in the ModelEntityItem.cpp code";
|
||||||
|
withWriteLock([&] {
|
||||||
|
//if ( (newAnimationProperties.getCurrentFrame() != _renderAnimationProperties.getCurrentFrame()) || (newAnimationProperties.getFirstFrame() != _renderAnimationProperties.getFirstFrame()) || (newAnimationProperties.getLastFrame() != _renderAnimationProperties.getLastFrame()) || (newAnimationProperties.getRunning() && !_renderAnimationProperties.getRunning())) {
|
||||||
|
// if (!(newAnimationProperties.getCurrentFrame() > newAnimationProperties.getLastFrame()) && !(newAnimationProperties.getCurrentFrame() < newAnimationProperties.getFirstFrame())) {
|
||||||
|
// _currentFrame = newAnimationProperties.getCurrentFrame();
|
||||||
|
// _endAnim = _currentFrame + ( newAnimationProperties.getLastFrame() - newAnimationProperties.getFirstFrame() );
|
||||||
|
//_lastAnimated = 0;
|
||||||
|
// }
|
||||||
|
//}else if ( _renderAnimationProperties.getLoop() && !newAnimationProperties.getLoop()) {
|
||||||
|
// int currentframe_mod_length = (int)(_currentFrame - (int)(glm::floor(newAnimationProperties.getCurrentFrame()))) % ((int)(glm::floor(newAnimationProperties.getLastFrame())) - (int)(glm::floor(newAnimationProperties.getFirstFrame())) + 1);
|
||||||
|
// _endAnim = _currentFrame + ((int)(newAnimationProperties.getLastFrame()) - (int)(newAnimationProperties.getFirstFrame())) - (float)currentframe_mod_length;
|
||||||
|
// }
|
||||||
|
_previousAnimationProperties = currentAnimationProperties;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -200,10 +221,10 @@ bool ModelEntityItem::needsToCallUpdate() const {
|
||||||
|
|
||||||
|
|
||||||
//put something here
|
//put something here
|
||||||
qCDebug(entities) << "needs to call update";
|
//qCDebug(entities) << "needs to call update";
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
//angus
|
//angus
|
||||||
|
|
||||||
|
|
||||||
|
@ -603,8 +624,9 @@ float ModelEntityItem::getAnimationLastFrame() const {
|
||||||
return _animationProperties.getLastFrame();
|
return _animationProperties.getLastFrame();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
//angus change
|
||||||
bool ModelEntityItem::getAnimationIsPlaying() const {
|
bool ModelEntityItem::getAnimationIsPlaying() const {
|
||||||
return resultWithReadLock<float>([&] {
|
return resultWithReadLock<bool>([&] {
|
||||||
return _animationProperties.getRunning();
|
return _animationProperties.getRunning();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -614,11 +636,17 @@ float ModelEntityItem::getAnimationCurrentFrame() const {
|
||||||
return _animationProperties.getCurrentFrame();
|
return _animationProperties.getCurrentFrame();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
//angus change
|
||||||
bool ModelEntityItem::isAnimatingSomething() const {
|
bool ModelEntityItem::isAnimatingSomething() const {
|
||||||
return resultWithReadLock<float>([&] {
|
return resultWithReadLock<bool>([&] {
|
||||||
return !_animationProperties.getURL().isEmpty() &&
|
return !_animationProperties.getURL().isEmpty() &&
|
||||||
_animationProperties.getRunning() &&
|
_animationProperties.getRunning() &&
|
||||||
(_animationProperties.getFPS() != 0.0f);
|
(_animationProperties.getFPS() != 0.0f);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float ModelEntityItem::getCurrentlyPlayingFrame() const {
|
||||||
|
return resultWithReadLock<float>([&] {
|
||||||
|
return _currentlyPlayingFrame;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
|
@ -47,8 +47,8 @@ public:
|
||||||
bool& somethingChanged) override;
|
bool& somethingChanged) override;
|
||||||
|
|
||||||
//angus
|
//angus
|
||||||
//virtual void update(const quint64& now) override;
|
virtual void update(const quint64& now) override;
|
||||||
//virtual bool needsToCallUpdate() const override;
|
virtual bool needsToCallUpdate() const override;
|
||||||
//angus
|
//angus
|
||||||
virtual void debugDump() const override;
|
virtual void debugDump() const override;
|
||||||
|
|
||||||
|
@ -107,6 +107,8 @@ public:
|
||||||
float getAnimationCurrentFrame() const;
|
float getAnimationCurrentFrame() const;
|
||||||
bool isAnimatingSomething() const;
|
bool isAnimatingSomething() const;
|
||||||
|
|
||||||
|
float getCurrentlyPlayingFrame() const;
|
||||||
|
|
||||||
static const QString DEFAULT_TEXTURES;
|
static const QString DEFAULT_TEXTURES;
|
||||||
const QString getTextures() const;
|
const QString getTextures() const;
|
||||||
void setTextures(const QString& textures);
|
void setTextures(const QString& textures);
|
||||||
|
@ -163,6 +165,10 @@ protected:
|
||||||
QString _textures;
|
QString _textures;
|
||||||
|
|
||||||
ShapeType _shapeType = SHAPE_TYPE_NONE;
|
ShapeType _shapeType = SHAPE_TYPE_NONE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
float _currentlyPlayingFrame{ 0 };
|
||||||
|
AnimationPropertyGroup _previousAnimationProperties;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // hifi_ModelEntityItem_h
|
#endif // hifi_ModelEntityItem_h
|
||||||
|
|
Loading…
Reference in a new issue