mirror of
https://github.com/overte-org/overte.git
synced 2025-04-19 16:23:39 +02:00
refactoring _fadeStartTime and isTransparent, make simple renderables switch to transparent when fade finishes
This commit is contained in:
parent
6604c27f23
commit
ac9a80131a
11 changed files with 26 additions and 21 deletions
|
@ -96,8 +96,16 @@ public: \
|
|||
virtual void removeFromScene(EntityItemPointer self, std::shared_ptr<render::Scene> scene, render::PendingChanges& pendingChanges) override { _renderHelper.removeFromScene(self, scene, pendingChanges); } \
|
||||
virtual void locationChanged(bool tellPhysics = true) override { EntityItem::locationChanged(tellPhysics); _renderHelper.notifyChanged(); } \
|
||||
virtual void dimensionsChanged() override { EntityItem::dimensionsChanged(); _renderHelper.notifyChanged(); } \
|
||||
void checkTransparency() { \
|
||||
bool transparent = isTransparent(); \
|
||||
if (transparent != prevIsTransparent) { \
|
||||
_renderHelper.notifyChanged(); \
|
||||
prevIsTransparent = transparent; \
|
||||
} \
|
||||
} \
|
||||
private: \
|
||||
SimpleRenderableEntityItem _renderHelper;
|
||||
SimpleRenderableEntityItem _renderHelper; \
|
||||
bool prevIsTransparent { isTransparent() };
|
||||
|
||||
|
||||
#endif // hifi_RenderableEntityItem_h
|
||||
|
|
|
@ -91,6 +91,9 @@ public:
|
|||
|
||||
render::ItemID getMetaRenderItem() { return _myMetaItem; }
|
||||
|
||||
// Transparency is handled in ModelMeshPartPayload
|
||||
bool isTransparent() override { return false; }
|
||||
|
||||
private:
|
||||
QVariantMap parseTexturesToMap(QString textures);
|
||||
void remapTextures();
|
||||
|
|
|
@ -167,6 +167,8 @@ void RenderablePolyLineEntityItem::update(const quint64& now) {
|
|||
}
|
||||
|
||||
void RenderablePolyLineEntityItem::render(RenderArgs* args) {
|
||||
checkTransparency();
|
||||
|
||||
QWriteLocker lock(&_quadReadWriteLock);
|
||||
if (_points.size() < 2 || _normals.size () < 2 || _strokeWidths.size() < 2) {
|
||||
return;
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
#include <PolyLineEntityItem.h>
|
||||
#include "RenderableEntityItem.h"
|
||||
#include <TextureCache.h>
|
||||
#include <Interpolate.h>
|
||||
|
||||
#include <QReadWriteLock>
|
||||
|
||||
|
@ -50,7 +49,6 @@ protected:
|
|||
gpu::BufferView _uniformBuffer;
|
||||
unsigned int _numVertices;
|
||||
QVector<glm::vec3> _vertices;
|
||||
quint64 _fadeStartTime { usecTimestampNow() };
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -71,18 +71,19 @@ void RenderableShapeEntityItem::setUserData(const QString& value) {
|
|||
}
|
||||
}
|
||||
|
||||
bool RenderableShapeEntityItem::isTransparent() {
|
||||
/*bool RenderableShapeEntityItem::isTransparent() {
|
||||
if (_procedural && _procedural->ready()) {
|
||||
return Interpolate::calculateFadeRatio(_procedural->getFadeStartTime()) < 1.0f;
|
||||
} else {
|
||||
return Interpolate::calculateFadeRatio(_fadeStartTime) < 1.0f;
|
||||
return EntityItem::isTransparent();
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
void RenderableShapeEntityItem::render(RenderArgs* args) {
|
||||
PerformanceTimer perfTimer("RenderableShapeEntityItem::render");
|
||||
//Q_ASSERT(getType() == EntityTypes::Shape);
|
||||
Q_ASSERT(args->_batch);
|
||||
checkTransparency();
|
||||
|
||||
if (!_procedural) {
|
||||
_procedural.reset(new Procedural(getUserData()));
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
|
||||
#include <ShapeEntityItem.h>
|
||||
#include <procedural/Procedural.h>
|
||||
#include <Interpolate.h>
|
||||
|
||||
#include "RenderableEntityItem.h"
|
||||
|
||||
|
@ -22,18 +21,17 @@ public:
|
|||
static EntityItemPointer factory(const EntityItemID& entityID, const EntityItemProperties& properties);
|
||||
static EntityItemPointer boxFactory(const EntityItemID& entityID, const EntityItemProperties& properties);
|
||||
static EntityItemPointer sphereFactory(const EntityItemID& entityID, const EntityItemProperties& properties);
|
||||
RenderableShapeEntityItem(const EntityItemID& entityItemID) : ShapeEntityItem(entityItemID) {}
|
||||
RenderableShapeEntityItem(const EntityItemID& entityItemID) : ShapeEntityItem(entityItemID) { _procedural.reset(nullptr); }
|
||||
|
||||
void render(RenderArgs* args) override;
|
||||
void setUserData(const QString& value) override;
|
||||
|
||||
bool isTransparent() override;
|
||||
// bool isTransparent() override;
|
||||
|
||||
SIMPLE_RENDERABLE();
|
||||
|
||||
private:
|
||||
QSharedPointer<Procedural> _procedural;
|
||||
quint64 _fadeStartTime { usecTimestampNow() };
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ EntityItemPointer RenderableTextEntityItem::factory(const EntityItemID& entityID
|
|||
void RenderableTextEntityItem::render(RenderArgs* args) {
|
||||
PerformanceTimer perfTimer("RenderableTextEntityItem::render");
|
||||
Q_ASSERT(getType() == EntityTypes::Text);
|
||||
checkTransparency();
|
||||
|
||||
static const float SLIGHTLY_BEHIND = -0.005f;
|
||||
float fadeRatio = Interpolate::calculateFadeRatio(_fadeStartTime);
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
|
||||
#include <TextEntityItem.h>
|
||||
#include <TextRenderer3D.h>
|
||||
#include <Interpolate.h>
|
||||
|
||||
#include "RenderableEntityItem.h"
|
||||
|
||||
|
@ -28,13 +27,10 @@ public:
|
|||
|
||||
virtual void render(RenderArgs* args) override;
|
||||
|
||||
bool isTransparent() override { return Interpolate::calculateFadeRatio(_fadeStartTime) < 1.0f; }
|
||||
|
||||
SIMPLE_RENDERABLE();
|
||||
|
||||
private:
|
||||
TextRenderer3D* _textRenderer = TextRenderer3D::getInstance(SANS_FONT_FAMILY, FIXED_FONT_POINT_SIZE / 2.0f);
|
||||
quint64 _fadeStartTime { usecTimestampNow() };
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -164,6 +164,8 @@ bool RenderableWebEntityItem::buildWebSurface(EntityTreeRenderer* renderer) {
|
|||
}
|
||||
|
||||
void RenderableWebEntityItem::render(RenderArgs* args) {
|
||||
checkTransparency();
|
||||
|
||||
#ifdef WANT_EXTRA_DEBUGGING
|
||||
{
|
||||
gpu::Batch& batch = *args->_batch;
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
#include <QSharedPointer>
|
||||
|
||||
#include <WebEntityItem.h>
|
||||
#include <Interpolate.h>
|
||||
|
||||
#include "RenderableEntityItem.h"
|
||||
|
||||
|
@ -36,8 +35,6 @@ public:
|
|||
void update(const quint64& now) override;
|
||||
bool needsToCallUpdate() const override { return _webSurface != nullptr; }
|
||||
|
||||
bool isTransparent() override { return Interpolate::calculateFadeRatio(_fadeStartTime) < 1.0f; }
|
||||
|
||||
SIMPLE_RENDERABLE();
|
||||
|
||||
private:
|
||||
|
@ -56,8 +53,6 @@ private:
|
|||
QMetaObject::Connection _mouseReleaseConnection;
|
||||
QMetaObject::Connection _mouseMoveConnection;
|
||||
QMetaObject::Connection _hoverLeaveConnection;
|
||||
|
||||
quint64 _fadeStartTime;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include <Transform.h>
|
||||
#include <Sound.h>
|
||||
#include <SpatiallyNestable.h>
|
||||
#include <Interpolate.h>
|
||||
|
||||
#include "EntityItemID.h"
|
||||
#include "EntityItemPropertiesDefaults.h"
|
||||
|
@ -435,7 +436,7 @@ public:
|
|||
QUuid getOwningAvatarID() const { return _owningAvatarID; }
|
||||
void setOwningAvatarID(const QUuid& owningAvatarID) { _owningAvatarID = owningAvatarID; }
|
||||
|
||||
virtual bool isTransparent() { return false; }
|
||||
virtual bool isTransparent() { return Interpolate::calculateFadeRatio(_fadeStartTime) < 1.0f; }
|
||||
|
||||
protected:
|
||||
|
||||
|
@ -566,7 +567,7 @@ protected:
|
|||
quint64 _lastUpdatedAngularVelocityTimestamp { 0 };
|
||||
quint64 _lastUpdatedAccelerationTimestamp { 0 };
|
||||
|
||||
|
||||
quint64 _fadeStartTime { usecTimestampNow() };
|
||||
};
|
||||
|
||||
#endif // hifi_EntityItem_h
|
||||
|
|
Loading…
Reference in a new issue