fix image y flip and text crash

This commit is contained in:
SamGondelman 2019-07-03 23:14:52 -07:00
parent a87072a23d
commit ea1b117ca4
2 changed files with 47 additions and 35 deletions

View file

@ -199,9 +199,8 @@ void ImageEntityRenderer::doRender(RenderArgs* args) {
float x = _keepAspectRatio ? fromImage.width() / (2.0f * maxSize) : 0.5f;
float y = _keepAspectRatio ? fromImage.height() / (2.0f * maxSize) : 0.5f;
glm::vec2 texCoordBottomLeft((fromImage.x() + 0.5f) / imageWidth, -(fromImage.y() + 0.5f) / imageHeight);
glm::vec2 texCoordTopRight((fromImage.x() + fromImage.width() - 0.5f) / imageWidth,
-(fromImage.y() + fromImage.height() - 0.5f) / imageHeight);
glm::vec2 texCoordBottomLeft((fromImage.x() + 0.5f) / imageWidth, (fromImage.y() + fromImage.height() - 0.5f) / imageHeight);
glm::vec2 texCoordTopRight((fromImage.x() + fromImage.width() - 0.5f) / imageWidth, (fromImage.y() + 0.5f) / imageHeight);
DependencyManager::get<GeometryCache>()->renderQuad(
*batch, glm::vec2(-x, -y), glm::vec2(x, y), texCoordBottomLeft, texCoordTopRight,

View file

@ -277,7 +277,9 @@ entities::TextPayload::~TextPayload() {
}
ItemKey entities::TextPayload::getKey() const {
auto renderable = DependencyManager::get<EntityTreeRenderer>()->renderableForEntityId(_entityID);
auto entityTreeRenderer = DependencyManager::get<EntityTreeRenderer>();
if (entityTreeRenderer) {
auto renderable = entityTreeRenderer->renderableForEntityId(_entityID);
if (renderable) {
auto textRenderable = std::static_pointer_cast<TextEntityRenderer>(renderable);
ItemKey::Builder key;
@ -295,19 +297,25 @@ ItemKey entities::TextPayload::getKey() const {
}
return key;
}
}
return ItemKey::Builder::opaqueShape();
}
Item::Bound entities::TextPayload::getBound() const {
auto renderable = DependencyManager::get<EntityTreeRenderer>()->renderableForEntityId(_entityID);
auto entityTreeRenderer = DependencyManager::get<EntityTreeRenderer>();
if (entityTreeRenderer) {
auto renderable = entityTreeRenderer->renderableForEntityId(_entityID);
if (renderable) {
return std::static_pointer_cast<TextEntityRenderer>(renderable)->getBound();
}
}
return Item::Bound();
}
ShapeKey entities::TextPayload::getShapeKey() const {
auto renderable = DependencyManager::get<EntityTreeRenderer>()->renderableForEntityId(_entityID);
auto entityTreeRenderer = DependencyManager::get<EntityTreeRenderer>();
if (entityTreeRenderer) {
auto renderable = entityTreeRenderer->renderableForEntityId(_entityID);
if (renderable) {
auto textRenderable = std::static_pointer_cast<TextEntityRenderer>(renderable);
@ -323,6 +331,7 @@ ShapeKey entities::TextPayload::getShapeKey() const {
}
return builder.build();
}
}
return ShapeKey::Builder::invalid();
}
@ -336,7 +345,11 @@ void entities::TextPayload::render(RenderArgs* args) {
return;
}
auto renderable = DependencyManager::get<EntityTreeRenderer>()->renderableForEntityId(_entityID);
auto entityTreeRenderer = DependencyManager::get<EntityTreeRenderer>();
if (!entityTreeRenderer) {
return;
}
auto renderable = entityTreeRenderer->renderableForEntityId(_entityID);
if (!renderable) {
return;
}