Debugging the tablet disappearing in hmd

This commit is contained in:
sam gateau 2018-10-15 17:48:16 -07:00
parent 76fdf1b007
commit ae3d5c148a
2 changed files with 38 additions and 2 deletions

View file

@ -571,8 +571,24 @@ void ModelOverlay::locationChanged(bool tellPhysics) {
// FIXME Start using the _renderTransform instead of calling for Transform and Dimensions from here, do the custom things needed in evalRenderTransform()
if (_model && _model->isActive()) {
_model->setRotation(getWorldOrientation());
_model->setTranslation(getWorldPosition());
if (!_isLODEnabled) {
auto rot = _model->getRotation();
auto tra = _model->getTranslation();
auto nrot = getWorldOrientation();
auto ntra = getWorldPosition();
if (glm::any(glm::notEqual(rot, nrot))) {
rot = nrot;
_model->setRotation(rot);
}
if (glm::any(glm::notEqual(tra, ntra))) {
tra = ntra;
_model->setTranslation(tra);
}
} else {
_model->setRotation(getWorldOrientation());
_model->setTranslation(getWorldPosition());
}
}
}

View file

@ -228,6 +228,10 @@ void Model::updateRenderItems() {
bool isWireframe = self->isWireframe();
auto renderItemKeyGlobalFlags = self->getRenderItemKeyGlobalFlags();
if (renderItemKeyGlobalFlags.isLODDisabled()) {
modelTransform.setScale(glm::vec3(1.0f));
}
render::Transaction transaction;
for (int i = 0; i < (int) self->_modelMeshRenderItemIDs.size(); i++) {
@ -247,6 +251,8 @@ void Model::updateRenderItems() {
data.updateClusterBuffer(meshState.clusterMatrices);
}
auto bound = data.getBound();
Transform renderTransform = modelTransform;
if (useDualQuaternionSkinning) {
@ -264,6 +270,15 @@ void Model::updateRenderItems() {
}
data.updateTransformForSkinnedMesh(renderTransform, modelTransform);
if (renderItemKeyGlobalFlags.isLODDisabled()) {
auto newBound = data.getBound();
if (bound != newBound) {
data.updateTransformForSkinnedMesh(renderTransform, modelTransform);
} else {
data.updateTransformForSkinnedMesh(renderTransform, modelTransform);
}
}
data.updateKey(renderItemKeyGlobalFlags);
data.setShapeKey(invalidatePayloadShapeKey, isWireframe, useDualQuaternionSkinning);
});
@ -893,7 +908,12 @@ void Model::updateRenderItemsKey(const render::ScenePointer& scene) {
_needsFixupInScene = true;
return;
}
auto prevVal = _needsFixupInScene;
auto renderItemsKey = _renderItemKeyGlobalFlags;
if (renderItemsKey.isLODDisabled()) {
_needsFixupInScene = true;
_needsFixupInScene = prevVal;
}
render::Transaction transaction;
foreach(auto item, _modelMeshRenderItemsMap.keys()) {
transaction.updateItem<ModelMeshPartPayload>(item, [renderItemsKey](ModelMeshPartPayload& data) {