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