mirror of
https://github.com/overte-org/overte.git
synced 2025-08-19 18:39:05 +02:00
fooling around with communicating the update transform to render thread through a trasnaction, not the solution yet
This commit is contained in:
parent
e48c456d24
commit
73ec095235
2 changed files with 12 additions and 6 deletions
|
@ -181,14 +181,15 @@ void Web3DOverlay::buildWebSurface() {
|
|||
|
||||
void Web3DOverlay::update(float deltatime) {
|
||||
if (_renderTransformDirty) {
|
||||
auto updateTransform = evalRenderTransform();
|
||||
auto itemID = getRenderItemID();
|
||||
if (render::Item::isValidID(itemID)) {
|
||||
render::ScenePointer scene = qApp->getMain3DScene();
|
||||
render::Transaction transaction;
|
||||
transaction.updateItem<Overlay>(itemID, [](Overlay& data) {
|
||||
transaction.updateItem<Overlay>(itemID, [updateTransform](Overlay& data) {
|
||||
auto web3D = dynamic_cast<Web3DOverlay*>(&data);
|
||||
if (web3D) {
|
||||
web3D->evalRenderTransform();
|
||||
web3D->setRenderTransform(updateTransform);// evalRenderTransform();
|
||||
}
|
||||
});
|
||||
scene->enqueueTransaction(transaction);
|
||||
|
@ -203,7 +204,7 @@ void Web3DOverlay::update(float deltatime) {
|
|||
|
||||
Transform Web3DOverlay::evalRenderTransform() const {
|
||||
if (_renderTransformDirty) {
|
||||
_renderTransform = getTransform();
|
||||
_updateTransform = getTransform();
|
||||
|
||||
// FIXME: applyTransformTo causes tablet overlay to detach from tablet entity.
|
||||
// Perhaps rather than deleting the following code it should be run only if isFacingAvatar() is true?
|
||||
|
@ -213,11 +214,15 @@ Transform Web3DOverlay::evalRenderTransform() const {
|
|||
*/
|
||||
|
||||
if (glm::length2(getDimensions()) != 1.0f) {
|
||||
_renderTransform.postScale(vec3(getDimensions(), 1.0f));
|
||||
_updateTransform.postScale(vec3(getDimensions(), 1.0f));
|
||||
}
|
||||
_renderTransformDirty = false;
|
||||
}
|
||||
return _renderTransform;
|
||||
return _updateTransform;
|
||||
}
|
||||
|
||||
void Web3DOverlay::setRenderTransform(const Transform& transform) {
|
||||
_renderTransform = transform;
|
||||
}
|
||||
|
||||
QString Web3DOverlay::pickURL() {
|
||||
|
|
|
@ -38,7 +38,7 @@ public:
|
|||
virtual void update(float deltatime) override;
|
||||
|
||||
Transform evalRenderTransform() const override;
|
||||
|
||||
void setRenderTransform(const Transform& transform);
|
||||
|
||||
QObject* getEventHandler();
|
||||
void setProxyWindow(QWindow* proxyWindow);
|
||||
|
@ -95,6 +95,7 @@ private:
|
|||
std::map<uint32_t, QTouchEvent::TouchPoint> _activeTouchPoints;
|
||||
QTouchDevice _touchDevice;
|
||||
|
||||
mutable Transform _updateTransform;
|
||||
mutable Transform _renderTransform;
|
||||
|
||||
uint8_t _desiredMaxFPS { 10 };
|
||||
|
|
Loading…
Reference in a new issue