mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-15 21:18:06 +02:00
fix up bounds handling in Line3DOverlay
This commit is contained in:
parent
9b3c16d489
commit
5f570c1ba8
2 changed files with 20 additions and 11 deletions
|
@ -53,7 +53,7 @@ glm::vec3 Line3DOverlay::getEnd() const {
|
|||
if (_endParentID != QUuid()) {
|
||||
glm::vec3 localOffset = _direction * _length;
|
||||
bool success;
|
||||
worldEnd = localToWorld(localOffset, _endParentID, _endParentJointIndex, success);
|
||||
worldEnd = localToWorld(getLocalStart() + localOffset, _endParentID, _endParentJointIndex, success);
|
||||
return worldEnd;
|
||||
}
|
||||
|
||||
|
@ -86,8 +86,13 @@ void Line3DOverlay::setEnd(const glm::vec3& end) {
|
|||
qDebug() << "Line3DOverlay::setEnd failed";
|
||||
return;
|
||||
}
|
||||
_direction = glm::normalize(offset);
|
||||
|
||||
_length = glm::length(offset);
|
||||
if (_length > 0.0f) {
|
||||
_direction = glm::normalize(offset);
|
||||
} else {
|
||||
_direction = glm::vec3(0.0f);
|
||||
}
|
||||
}
|
||||
|
||||
void Line3DOverlay::setLocalEnd(const glm::vec3& localEnd) {
|
||||
|
@ -98,16 +103,18 @@ void Line3DOverlay::setLocalEnd(const glm::vec3& localEnd) {
|
|||
glm::vec3 localStart = getLocalStart();
|
||||
offset = localEnd - localStart;
|
||||
}
|
||||
_direction = glm::normalize(offset);
|
||||
_length = glm::length(offset);
|
||||
if (_length > 0.0f) {
|
||||
_direction = glm::normalize(offset);
|
||||
} else {
|
||||
_direction = glm::vec3(0.0f);
|
||||
}
|
||||
}
|
||||
|
||||
AABox Line3DOverlay::getBounds() const {
|
||||
auto extents = Extents{};
|
||||
extents.addPoint(getStart());
|
||||
extents.addPoint(getEnd());
|
||||
extents.transform(getTransform());
|
||||
|
||||
return AABox(extents);
|
||||
}
|
||||
|
||||
|
@ -122,19 +129,20 @@ void Line3DOverlay::render(RenderArgs* args) {
|
|||
glm::vec4 colorv4(color.red / MAX_COLOR, color.green / MAX_COLOR, color.blue / MAX_COLOR, alpha);
|
||||
auto batch = args->_batch;
|
||||
if (batch) {
|
||||
// batch->setModelTransform(getTransform());
|
||||
batch->setModelTransform(Transform());
|
||||
glm::vec3 start = getStart();
|
||||
glm::vec3 end = getEnd();
|
||||
|
||||
auto geometryCache = DependencyManager::get<GeometryCache>();
|
||||
if (getIsDashedLine()) {
|
||||
// TODO: add support for color to renderDashedLine()
|
||||
geometryCache->bindSimpleProgram(*batch, false, false, false, true, true);
|
||||
geometryCache->renderDashedLine(*batch, getStart(), getEnd(), colorv4, _geometryCacheID);
|
||||
geometryCache->renderDashedLine(*batch, start, end, colorv4, _geometryCacheID);
|
||||
} else if (_glow > 0.0f) {
|
||||
geometryCache->renderGlowLine(*batch, getStart(), getEnd(),
|
||||
colorv4, _glow, _glowWidth, _geometryCacheID);
|
||||
geometryCache->renderGlowLine(*batch, start, end, colorv4, _glow, _glowWidth, _geometryCacheID);
|
||||
} else {
|
||||
geometryCache->bindSimpleProgram(*batch, false, false, false, true, true);
|
||||
geometryCache->renderLine(*batch, getStart(), getEnd(), colorv4, _geometryCacheID);
|
||||
geometryCache->renderLine(*batch, start, end, colorv4, _geometryCacheID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -160,13 +160,14 @@ RenderDeferredTask::RenderDeferredTask(RenderFetchCullSortTask::Output items) {
|
|||
addJob<DrawOverlay3D>("DrawOverlay3DOpaque", overlayOpaquesInputs, true);
|
||||
addJob<DrawOverlay3D>("DrawOverlay3DTransparent", overlayTransparentsInputs, false);
|
||||
|
||||
|
||||
// Debugging stages
|
||||
{
|
||||
|
||||
|
||||
// Bounds do not draw on stencil buffer, so they must come last
|
||||
addJob<DrawBounds>("DrawMetaBounds", metas);
|
||||
addJob<DrawBounds>("DrawOverlayOpaqueBounds", overlayOpaques);
|
||||
addJob<DrawBounds>("DrawOverlayTransparentBounds", overlayTransparents);
|
||||
|
||||
// Debugging Deferred buffer job
|
||||
const auto debugFramebuffers = render::Varying(DebugDeferredBuffer::Inputs(deferredFramebuffer, linearDepthTarget, surfaceGeometryFramebuffer, ambientOcclusionFramebuffer));
|
||||
|
|
Loading…
Reference in a new issue