fooling around with communicating the update transform to render thread through a trasnaction, not the solution yet

This commit is contained in:
samcake 2017-09-07 17:58:16 -07:00
parent e48c456d24
commit 73ec095235
2 changed files with 12 additions and 6 deletions

View file

@ -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() {

View file

@ -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 };