From 1dd4c4c67470c4edbd032c0af2a864923d056527 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Wed, 29 Oct 2014 10:13:48 -0700 Subject: [PATCH] move sitting points back to a contained element to fix the crash Ryan was seeing --- .../entities/src/EntityItemProperties.cpp | 31 ++++++------------- libraries/entities/src/EntityItemProperties.h | 2 +- 2 files changed, 10 insertions(+), 23 deletions(-) diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index 83d13e369d..b6184c80f7 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -99,26 +99,17 @@ EntityItemProperties::EntityItemProperties() : _cutoffChanged(false), _defaultSettings(true), - _sittingPoints(NULL), _naturalDimensions(1.0f, 1.0f, 1.0f) { } EntityItemProperties::~EntityItemProperties() { - if (_sittingPoints) { - delete _sittingPoints; - _sittingPoints = NULL; - } } void EntityItemProperties::setSittingPoints(const QVector& sittingPoints) { - if (!_sittingPoints) { - _sittingPoints = new QVector; - } - _sittingPoints->clear(); - + _sittingPoints.clear(); foreach (SittingPoint sitPoint, sittingPoints) { - _sittingPoints->append(sitPoint); + _sittingPoints.append(sitPoint); } } @@ -222,18 +213,14 @@ QScriptValue EntityItemProperties::copyToScriptValue(QScriptEngine* engine) cons // Sitting properties support QScriptValue sittingPoints = engine->newObject(); - if (_sittingPoints) { - for (int i = 0; i < _sittingPoints->size(); ++i) { - QScriptValue sittingPoint = engine->newObject(); - sittingPoint.setProperty("name", _sittingPoints->at(i).name); - sittingPoint.setProperty("position", vec3toScriptValue(engine, _sittingPoints->at(i).position)); - sittingPoint.setProperty("rotation", quatToScriptValue(engine, _sittingPoints->at(i).rotation)); - sittingPoints.setProperty(i, sittingPoint); - } - sittingPoints.setProperty("length", _sittingPoints->size()); - } else { - sittingPoints.setProperty("length", 0); + for (int i = 0; i < _sittingPoints.size(); ++i) { + QScriptValue sittingPoint = engine->newObject(); + sittingPoint.setProperty("name", _sittingPoints.at(i).name); + sittingPoint.setProperty("position", vec3toScriptValue(engine, _sittingPoints.at(i).position)); + sittingPoint.setProperty("rotation", quatToScriptValue(engine, _sittingPoints.at(i).rotation)); + sittingPoints.setProperty(i, sittingPoint); } + sittingPoints.setProperty("length", _sittingPoints.size()); COPY_PROPERTY_TO_QSCRIPTVALUE_GETTER(sittingPoints, sittingPoints); // gettable, but not settable AABox aaBox = getAABoxInMeters(); diff --git a/libraries/entities/src/EntityItemProperties.h b/libraries/entities/src/EntityItemProperties.h index f977b346cc..f8e513682a 100644 --- a/libraries/entities/src/EntityItemProperties.h +++ b/libraries/entities/src/EntityItemProperties.h @@ -362,7 +362,7 @@ private: // NOTE: The following are pseudo client only properties. They are only used in clients which can access // properties of model geometry. But these properties are not serialized like other properties. - QVector* _sittingPoints; + QVector _sittingPoints; glm::vec3 _naturalDimensions; }; Q_DECLARE_METATYPE(EntityItemProperties);