This commit is contained in:
SamGondelman 2017-12-20 14:18:01 -08:00
parent bd06dc6443
commit 2ba3e337db
4 changed files with 24 additions and 22 deletions

View file

@ -209,9 +209,9 @@ void CauterizedModel::updateRenderItems() {
} }
data.updateTransformForCauterizedMesh(renderTransform); data.updateTransformForCauterizedMesh(renderTransform);
data.setKey(data.evalKey(isVisible, isLayeredInFront, isLayeredInHUD)); data.setKey(isVisible, isLayeredInFront || isLayeredInHUD);
data.setLayer(data.evalLayer(isLayeredInFront, isLayeredInHUD)); data.setLayer(isLayeredInFront, isLayeredInHUD);
data.setShapeKey(invalidatePayloadShapeKey ? render::ShapeKey::Builder::invalid() : data.evalShapeKey(isWireframe)); data.setShapeKey(invalidatePayloadShapeKey, isWireframe);
}); });
} }

View file

@ -386,7 +386,7 @@ void ModelMeshPartPayload::updateTransformForSkinnedMesh(const Transform& render
_worldBound.transform(boundTransform); _worldBound.transform(boundTransform);
} }
render::ItemKey ModelMeshPartPayload::evalKey(bool isVisible, bool isLayeredInFront, bool isLayeredInHUD) const { void ModelMeshPartPayload::setKey(bool isVisible, bool isLayered) {
ItemKey::Builder builder; ItemKey::Builder builder;
builder.withTypeShape(); builder.withTypeShape();
@ -394,7 +394,7 @@ render::ItemKey ModelMeshPartPayload::evalKey(bool isVisible, bool isLayeredInFr
builder.withInvisible(); builder.withInvisible();
} }
if (isLayeredInFront || isLayeredInHUD) { if (isLayered) {
builder.withLayered(); builder.withLayered();
} }
@ -409,20 +409,20 @@ render::ItemKey ModelMeshPartPayload::evalKey(bool isVisible, bool isLayeredInFr
} }
} }
return builder.build(); _itemKey = builder.build();
} }
ItemKey ModelMeshPartPayload::getKey() const { ItemKey ModelMeshPartPayload::getKey() const {
return _itemKey; return _itemKey;
} }
int ModelMeshPartPayload::evalLayer(bool isLayeredInFront, bool isLayeredInHUD) const { void ModelMeshPartPayload::setLayer(bool isLayeredInFront, bool isLayeredInHUD) {
if (isLayeredInFront) { if (isLayeredInFront) {
return Item::LAYER_3D_FRONT; _layer = Item::LAYER_3D_FRONT;
} else if (isLayeredInHUD) { } else if (isLayeredInHUD) {
return Item::LAYER_3D_HUD; _layer = Item::LAYER_3D_HUD;
} else { } else {
return Item::LAYER_3D; _layer = Item::LAYER_3D;
} }
} }
@ -430,7 +430,12 @@ int ModelMeshPartPayload::getLayer() const {
return _layer; return _layer;
} }
ShapeKey ModelMeshPartPayload::evalShapeKey(bool isWireframe) const { void ModelMeshPartPayload::setShapeKey(bool invalidateShapeKey, bool isWireframe) {
if (invalidateShapeKey) {
_shapeKey = ShapeKey::Builder::invalid();
return;
}
model::MaterialKey drawMaterialKey; model::MaterialKey drawMaterialKey;
if (_drawMaterial) { if (_drawMaterial) {
drawMaterialKey = _drawMaterial->getKey(); drawMaterialKey = _drawMaterial->getKey();
@ -472,7 +477,7 @@ ShapeKey ModelMeshPartPayload::evalShapeKey(bool isWireframe) const {
if (isWireframe) { if (isWireframe) {
builder.withWireframe(); builder.withWireframe();
} }
return builder.build(); _shapeKey = builder.build();
} }
ShapeKey ModelMeshPartPayload::getShapeKey() const { ShapeKey ModelMeshPartPayload::getShapeKey() const {

View file

@ -96,12 +96,9 @@ public:
render::ShapeKey getShapeKey() const override; // shape interface render::ShapeKey getShapeKey() const override; // shape interface
void render(RenderArgs* args) override; void render(RenderArgs* args) override;
render::ItemKey evalKey(bool isVisible, bool isLayeredInFront, bool isLayeredInHUD) const; void setKey(bool isVisible, bool isLayered);
void setKey(const render::ItemKey& itemKey) { _itemKey = itemKey; } void setLayer(bool isLayeredInFront, bool isLayeredInHUD);
int evalLayer(bool isLayeredInFront, bool isLayeredInHUD) const; void setShapeKey(bool invalidateShapeKey, bool isWireframe);
void setLayer(int layer) { _layer = layer; }
render::ShapeKey evalShapeKey(bool isWireframe) const;
void setShapeKey(const render::ShapeKey& shapeKey) { _shapeKey = shapeKey; };
// ModelMeshPartPayload functions to perform render // ModelMeshPartPayload functions to perform render
void bindMesh(gpu::Batch& batch) override; void bindMesh(gpu::Batch& batch) override;
@ -123,8 +120,8 @@ private:
void initCache(const ModelPointer& model); void initCache(const ModelPointer& model);
render::ItemKey _itemKey { render::ItemKey::Builder::opaqueShape().build() }; render::ItemKey _itemKey { render::ItemKey::Builder::opaqueShape().build() };
int _layer { render::Item::LAYER_3D };
render::ShapeKey _shapeKey { render::ShapeKey::Builder::invalid() }; render::ShapeKey _shapeKey { render::ShapeKey::Builder::invalid() };
int _layer { render::Item::LAYER_3D };
}; };
namespace render { namespace render {

View file

@ -278,9 +278,9 @@ void Model::updateRenderItems() {
} }
data.updateTransformForSkinnedMesh(renderTransform, modelTransform); data.updateTransformForSkinnedMesh(renderTransform, modelTransform);
data.setKey(data.evalKey(isVisible, isLayeredInFront, isLayeredInHUD)); data.setKey(isVisible, isLayeredInFront || isLayeredInHUD);
data.setLayer(data.evalLayer(isLayeredInFront, isLayeredInHUD)); data.setLayer(isLayeredInFront, isLayeredInHUD);
data.setShapeKey(invalidatePayloadShapeKey ? render::ShapeKey::Builder::invalid() : data.evalShapeKey(isWireframe)); data.setShapeKey(invalidatePayloadShapeKey, isWireframe);
}); });
} }