Fixing invalid vector usage and strange picking crash

This commit is contained in:
Brad Davis 2015-07-19 23:03:46 -07:00
parent 4c3cfe1e82
commit 5159452335
2 changed files with 17 additions and 7 deletions

View file

@ -126,7 +126,7 @@ void Stars::render(RenderArgs* renderArgs, float alpha) {
srand(STARFIELD_SEED);
unsigned limit = STARFIELD_NUM_STARS;
std::vector<vec3> points;
points.reserve(limit);
points.resize(limit);
for (size_t star = 0; star < limit; ++star) {
points[star] = fromPolar(randPolar());
//auto color = computeStarColor(STAR_COLORIZATION);

View file

@ -210,15 +210,25 @@ QScriptValue pickRayToScriptValue(QScriptEngine* engine, const PickRay& pickRay)
void pickRayFromScriptValue(const QScriptValue& object, PickRay& pickRay) {
QScriptValue originValue = object.property("origin");
if (originValue.isValid()) {
pickRay.origin.x = originValue.property("x").toVariant().toFloat();
pickRay.origin.y = originValue.property("y").toVariant().toFloat();
pickRay.origin.z = originValue.property("z").toVariant().toFloat();
auto x = originValue.property("x");
auto y = originValue.property("y");
auto z = originValue.property("z");
if (x.isValid() && y.isValid() && z.isValid()) {
pickRay.origin.x = x.toVariant().toFloat();
pickRay.origin.y = y.toVariant().toFloat();
pickRay.origin.z = z.toVariant().toFloat();
}
}
QScriptValue directionValue = object.property("direction");
if (directionValue.isValid()) {
pickRay.direction.x = directionValue.property("x").toVariant().toFloat();
pickRay.direction.y = directionValue.property("y").toVariant().toFloat();
pickRay.direction.z = directionValue.property("z").toVariant().toFloat();
auto x = directionValue.property("x");
auto y = directionValue.property("y");
auto z = directionValue.property("z");
if (x.isValid() && y.isValid() && z.isValid()) {
pickRay.direction.x = x.toVariant().toFloat();
pickRay.direction.y = y.toVariant().toFloat();
pickRay.direction.z = z.toVariant().toFloat();
}
}
}