tweaks to JS particle editing api

This commit is contained in:
Brad Hefta-Gaub 2014-01-21 20:05:00 -08:00
parent eb1e72b838
commit 164e703dec
3 changed files with 38 additions and 21 deletions

View file

@ -847,7 +847,8 @@ ParticleProperties::ParticleProperties() :
_lifetimeChanged(false), _lifetimeChanged(false),
_scriptChanged(false), _scriptChanged(false),
_inHandChanged(false), _inHandChanged(false),
_shouldDieChanged(false) _shouldDieChanged(false),
_defaultSettings(true)
{ {
} }
@ -937,7 +938,7 @@ void ParticleProperties::copyFromScriptValue(const QScriptValue &object) {
newPosition.x = x.toVariant().toFloat(); newPosition.x = x.toVariant().toFloat();
newPosition.y = y.toVariant().toFloat(); newPosition.y = y.toVariant().toFloat();
newPosition.z = z.toVariant().toFloat(); newPosition.z = z.toVariant().toFloat();
if (newPosition != _position) { if (_defaultSettings || newPosition != _position) {
_position = newPosition; _position = newPosition;
_positionChanged = true; _positionChanged = true;
} }
@ -954,9 +955,9 @@ void ParticleProperties::copyFromScriptValue(const QScriptValue &object) {
newColor.red = red.toVariant().toInt(); newColor.red = red.toVariant().toInt();
newColor.green = green.toVariant().toInt(); newColor.green = green.toVariant().toInt();
newColor.blue = blue.toVariant().toInt(); newColor.blue = blue.toVariant().toInt();
if (newColor.red != _color.red || if (_defaultSettings || (newColor.red != _color.red ||
newColor.green != _color.green || newColor.green != _color.green ||
newColor.blue != _color.blue) { newColor.blue != _color.blue)) {
_color = newColor; _color = newColor;
_colorChanged = true; _colorChanged = true;
} }
@ -967,7 +968,7 @@ void ParticleProperties::copyFromScriptValue(const QScriptValue &object) {
if (radius.isValid()) { if (radius.isValid()) {
float newRadius; float newRadius;
newRadius = radius.toVariant().toFloat(); newRadius = radius.toVariant().toFloat();
if (newRadius != _radius) { if (_defaultSettings || newRadius != _radius) {
_radius = newRadius; _radius = newRadius;
_radiusChanged = true; _radiusChanged = true;
} }
@ -983,7 +984,7 @@ void ParticleProperties::copyFromScriptValue(const QScriptValue &object) {
newVelocity.x = x.toVariant().toFloat(); newVelocity.x = x.toVariant().toFloat();
newVelocity.y = y.toVariant().toFloat(); newVelocity.y = y.toVariant().toFloat();
newVelocity.z = z.toVariant().toFloat(); newVelocity.z = z.toVariant().toFloat();
if (newVelocity != _velocity) { if (_defaultSettings || newVelocity != _velocity) {
_velocity = newVelocity; _velocity = newVelocity;
_velocityChanged = true; _velocityChanged = true;
} }
@ -1000,7 +1001,7 @@ void ParticleProperties::copyFromScriptValue(const QScriptValue &object) {
newGravity.x = x.toVariant().toFloat(); newGravity.x = x.toVariant().toFloat();
newGravity.y = y.toVariant().toFloat(); newGravity.y = y.toVariant().toFloat();
newGravity.z = z.toVariant().toFloat(); newGravity.z = z.toVariant().toFloat();
if (newGravity != _gravity) { if (_defaultSettings || newGravity != _gravity) {
_gravity = newGravity; _gravity = newGravity;
_gravityChanged = true; _gravityChanged = true;
} }
@ -1011,7 +1012,7 @@ void ParticleProperties::copyFromScriptValue(const QScriptValue &object) {
if (damping.isValid()) { if (damping.isValid()) {
float newDamping; float newDamping;
newDamping = damping.toVariant().toFloat(); newDamping = damping.toVariant().toFloat();
if (newDamping != _damping) { if (_defaultSettings || newDamping != _damping) {
_damping = newDamping; _damping = newDamping;
_dampingChanged = true; _dampingChanged = true;
} }
@ -1021,7 +1022,7 @@ void ParticleProperties::copyFromScriptValue(const QScriptValue &object) {
if (lifetime.isValid()) { if (lifetime.isValid()) {
float newLifetime; float newLifetime;
newLifetime = lifetime.toVariant().toFloat(); newLifetime = lifetime.toVariant().toFloat();
if (newLifetime != _lifetime) { if (_defaultSettings || newLifetime != _lifetime) {
_lifetime = newLifetime; _lifetime = newLifetime;
_lifetimeChanged = true; _lifetimeChanged = true;
} }
@ -1031,7 +1032,7 @@ void ParticleProperties::copyFromScriptValue(const QScriptValue &object) {
if (script.isValid()) { if (script.isValid()) {
QString newScript; QString newScript;
newScript = script.toVariant().toString(); newScript = script.toVariant().toString();
if (newScript != _script) { if (_defaultSettings || newScript != _script) {
_script = newScript; _script = newScript;
_scriptChanged = true; _scriptChanged = true;
} }
@ -1041,7 +1042,7 @@ void ParticleProperties::copyFromScriptValue(const QScriptValue &object) {
if (inHand.isValid()) { if (inHand.isValid()) {
bool newInHand; bool newInHand;
newInHand = inHand.toVariant().toBool(); newInHand = inHand.toVariant().toBool();
if (newInHand != _inHand) { if (_defaultSettings || newInHand != _inHand) {
_inHand = newInHand; _inHand = newInHand;
_inHandChanged = true; _inHandChanged = true;
} }
@ -1051,7 +1052,7 @@ void ParticleProperties::copyFromScriptValue(const QScriptValue &object) {
if (shouldDie.isValid()) { if (shouldDie.isValid()) {
bool newShouldDie; bool newShouldDie;
newShouldDie = shouldDie.toVariant().toBool(); newShouldDie = shouldDie.toVariant().toBool();
if (newShouldDie != _shouldDie) { if (_defaultSettings || newShouldDie != _shouldDie) {
_shouldDie = newShouldDie; _shouldDie = newShouldDie;
_shouldDieChanged = true; _shouldDieChanged = true;
} }
@ -1124,6 +1125,7 @@ void ParticleProperties::copyFromParticle(const Particle& particle) {
_scriptChanged = false; _scriptChanged = false;
_inHandChanged = false; _inHandChanged = false;
_shouldDieChanged = false; _shouldDieChanged = false;
_defaultSettings = false;
} }
QScriptValue ParticlePropertiesToScriptValue(QScriptEngine* engine, const ParticleProperties& properties) { QScriptValue ParticlePropertiesToScriptValue(QScriptEngine* engine, const ParticleProperties& properties) {

View file

@ -112,6 +112,7 @@ private:
bool _scriptChanged; bool _scriptChanged;
bool _inHandChanged; bool _inHandChanged;
bool _shouldDieChanged; bool _shouldDieChanged;
bool _defaultSettings;
}; };
Q_DECLARE_METATYPE(ParticleProperties); Q_DECLARE_METATYPE(ParticleProperties);
QScriptValue ParticlePropertiesToScriptValue(QScriptEngine* engine, const ParticleProperties& properties); QScriptValue ParticlePropertiesToScriptValue(QScriptEngine* engine, const ParticleProperties& properties);

View file

@ -38,24 +38,38 @@ void ParticlesScriptingInterface::editParticle(ParticleID particleID, const Part
uint32_t actualID = particleID.id; uint32_t actualID = particleID.id;
if (!particleID.isKnownID) { if (!particleID.isKnownID) {
actualID = Particle::getIDfromCreatorTokenID(particleID.creatorTokenID); actualID = Particle::getIDfromCreatorTokenID(particleID.creatorTokenID);
// hmmm... we kind of want to bail if someone attempts to edit an unknown // hmmm... we kind of want to bail if someone attempts to edit an unknown
if (actualID == UNKNOWN_PARTICLE_ID) { if (actualID == UNKNOWN_PARTICLE_ID) {
//qDebug() << "ParticlesScriptingInterface::editParticle()... BAILING!!! particleID.creatorTokenID="
qDebug() << "ParticlesScriptingInterface::editParticle()... BAILING!!! particleID.creatorTokenID=" << particleID.creatorTokenID; // << particleID.creatorTokenID;
return; // bailing early return; // bailing early
} }
} }
particleID.id = actualID; particleID.id = actualID;
particleID.isKnownID = true; particleID.isKnownID = true;
qDebug() << "ParticlesScriptingInterface::editParticle()... FOUND IT!!! actualID=" << actualID; //qDebug() << "ParticlesScriptingInterface::editParticle()... FOUND IT!!! actualID=" << actualID;
qDebug() << "ParticlesScriptingInterface::editParticle()... properties.getPositon()="
<< properties.getPosition().x << ", "
<< properties.getPosition().y << ", "
<< properties.getPosition().z << "...";
bool wantDebugging = false;
if (wantDebugging) {
uint16_t containsBits = properties.getChangedBits();
qDebug() << "ParticlesScriptingInterface::editParticle()... containsBits=" << containsBits;
if ((containsBits & PACKET_CONTAINS_POSITION) == PACKET_CONTAINS_POSITION) {
qDebug() << "ParticlesScriptingInterface::editParticle()... properties.getPositon()="
<< properties.getPosition().x << ", "
<< properties.getPosition().y << ", "
<< properties.getPosition().z << "...";
}
if ((containsBits & PACKET_CONTAINS_VELOCITY) == PACKET_CONTAINS_VELOCITY) {
qDebug() << "ParticlesScriptingInterface::editParticle()... properties.getVelocity()="
<< properties.getVelocity().x << ", "
<< properties.getVelocity().y << ", "
<< properties.getVelocity().z << "...";
}
if ((containsBits & PACKET_CONTAINS_INHAND) == PACKET_CONTAINS_INHAND) {
qDebug() << "ParticlesScriptingInterface::editParticle()... properties.getInHand()=" << properties.getInHand();
}
}
queueParticleMessage(PACKET_TYPE_PARTICLE_ADD_OR_EDIT, particleID, properties); queueParticleMessage(PACKET_TYPE_PARTICLE_ADD_OR_EDIT, particleID, properties);
} }