Merge pull request #15037 from amerhifi/quest-demo

case 21447: fixed quest debug crash when a case of  _widths = 0 for polyline
This commit is contained in:
Sam Gondelman 2019-02-26 16:42:01 -08:00 committed by GitHub
commit fd46296e8c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -183,18 +183,19 @@ void PolyLineEntityRenderer::doRenderUpdateAsynchronousTyped(const TypedEntityPo
void PolyLineEntityRenderer::updateGeometry() {
int maxNumVertices = std::min(_points.length(), _normals.length());
bool doesStrokeWidthVary = false;
if (_widths.size() >= 0) {
if (_widths.size() > 0) {
float prevWidth = _widths[0];
for (int i = 1; i < maxNumVertices; i++) {
float width = PolyLineEntityItem::DEFAULT_LINE_WIDTH;
if (i < _widths.length()) {
width = _widths[i];
}
if (width != _widths[i - 1]) {
float width = i < _widths.length() ? _widths[i] : PolyLineEntityItem::DEFAULT_LINE_WIDTH;
if (width != prevWidth) {
doesStrokeWidthVary = true;
break;
}
if (i > _widths.length() + 1) {
break;
}
prevWidth = width;
}
}
@ -206,12 +207,13 @@ void PolyLineEntityRenderer::updateGeometry() {
std::vector<PolylineVertex> vertices;
vertices.reserve(maxNumVertices);
for (int i = 0; i < maxNumVertices; i++) {
// Position
glm::vec3 point = _points[i];
// uCoord
float width = i < _widths.size() ? _widths[i] : PolyLineEntityItem::DEFAULT_LINE_WIDTH;
if (i > 0) { // First uCoord is 0.0f
if (!_isUVModeStretch) {
accumulatedDistance += glm::distance(point, _points[i - 1]);