From 02a24712caa119ba7822698d44149e8f10b5f149 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Wed, 7 Oct 2015 19:52:29 -0700 Subject: [PATCH] fix isEmitting property for particle effects, cleaned up some particle property editing in edit.js --- examples/edit.js | 2 +- examples/html/entityProperties.html | 75 +++++++++---------- .../entities/src/EntityItemProperties.cpp | 4 + 3 files changed, 42 insertions(+), 39 deletions(-) diff --git a/examples/edit.js b/examples/edit.js index 0a1f31f0d7..98ad21f4e2 100644 --- a/examples/edit.js +++ b/examples/edit.js @@ -1275,7 +1275,7 @@ PropertiesTool = function(opts) { webView.eventBridge.emitScriptEvent(JSON.stringify(data)); }); - webView.eventBridge.webEventReceived.connect(function(data) { + webView.eventBridge.webEventReceived.connect(function (data) { data = JSON.parse(data); if (data.type == "print") { if (data.message) { diff --git a/examples/html/entityProperties.html b/examples/html/entityProperties.html index 268e95010c..ac46272a4d 100644 --- a/examples/html/entityProperties.html +++ b/examples/html/entityProperties.html @@ -305,14 +305,10 @@ var elParticleSections = document.querySelectorAll(".particle-section"); allSections.push(elParticleSections); + var elParticleIsEmitting = document.getElementById("property-particle-is-emitting"); var elParticleMaxParticles = document.getElementById("property-particle-maxparticles"); var elParticleLifeSpan = document.getElementById("property-particle-lifespan"); var elParticleEmitRate = document.getElementById("property-particle-emit-rate"); - var elParticleEmitDirectionX = document.getElementById("property-particle-emit-direction-x"); - var elParticleEmitDirectionY = document.getElementById("property-particle-emit-direction-y"); - var elParticleEmitDirectionZ = document.getElementById("property-particle-emit-direction-z"); - var elParticleEmitStrength = document.getElementById("property-particle-emit-strength"); - var elParticleLocalGravity = document.getElementById("property-particle-localgravity"); var elParticleRadius = document.getElementById("property-particle-radius"); var elTextSections = document.querySelectorAll(".text-section"); @@ -511,7 +507,7 @@ elColorSection.style.display = 'none'; } - if (properties.type == "Model" || properties.type == "ParticleEffect") { + if (properties.type == "Model") { for (var i = 0; i < elModelSections.length; i++) { elModelSections[i].style.display = 'block'; } @@ -617,15 +613,38 @@ elParticleSections[i].style.display = 'block'; } + elParticleIsEmitting.checked = properties.isEmitting; elParticleMaxParticles.value = properties.maxParticles; elParticleLifeSpan.value = properties.lifespan.toFixed(2); elParticleEmitRate.value = properties.emitRate.toFixed(1); - elParticleEmitDirectionX.value = properties.emitDirection.x.toFixed(2); - elParticleEmitDirectionY.value = properties.emitDirection.y.toFixed(2); - elParticleEmitDirectionZ.value = properties.emitDirection.z.toFixed(2); - elParticleEmitStrength.value = properties.emitStrength.toFixed(2); - elParticleLocalGravity.value = properties.localGravity.toFixed(2); elParticleRadius.value = properties.particleRadius.toFixed(3); + + /* + COPY_ENTITY_PROPERTY_TO_PROPERTIES(shapeType, getShapeType); + COPY_ENTITY_PROPERTY_TO_PROPERTIES(colorSpread, getColorSpread); + COPY_ENTITY_PROPERTY_TO_PROPERTIES(colorStart, getColorStart); + COPY_ENTITY_PROPERTY_TO_PROPERTIES(colorFinish, getColorFinish); + COPY_ENTITY_PROPERTY_TO_PROPERTIES(alphaSpread, getAlphaSpread); + COPY_ENTITY_PROPERTY_TO_PROPERTIES(alphaStart, getAlphaStart); + COPY_ENTITY_PROPERTY_TO_PROPERTIES(alphaFinish, getAlphaFinish); + COPY_ENTITY_PROPERTY_TO_PROPERTIES(textures, getTextures); + // float emitSpeed + // float speedSpread + // quat emitOrientation + // vec3 emitDimensions + // float emitRadiusStart + // float polarStart + // float polarFinish + // float azimuthStart + // float azimuthFinish + // vec3 emitAcceleration + // vec3 accelerationSpread + // float radiusStart + // float radiusSpread?? + // float radiusFinish + // float RadiusSpread + */ + } else if (properties.type == "PolyVox") { for (var i = 0; i < elPolyVoxSections.length; i++) { elPolyVoxSections[i].style.display = 'block'; @@ -758,16 +777,10 @@ elWebSourceURL.addEventListener('change', createEmitTextPropertyUpdateFunction('sourceUrl')); + elParticleIsEmitting.addEventListener('change', createEmitCheckedPropertyUpdateFunction('isEmitting')); elParticleMaxParticles.addEventListener('change', createEmitNumberPropertyUpdateFunction('maxParticles')); elParticleLifeSpan.addEventListener('change', createEmitNumberPropertyUpdateFunction('lifespan')); elParticleEmitRate.addEventListener('change', createEmitNumberPropertyUpdateFunction('emitRate')); - var particleEmitDirectionChangeFunction = createEmitVec3PropertyUpdateFunctionWithMultiplier( - 'emitDirection', elParticleEmitDirectionX, elParticleEmitDirectionY, elParticleEmitDirectionZ, DEGREES_TO_RADIANS); - elParticleEmitDirectionX.addEventListener('change', particleEmitDirectionChangeFunction); - elParticleEmitDirectionY.addEventListener('change', particleEmitDirectionChangeFunction); - elParticleEmitDirectionZ.addEventListener('change', particleEmitDirectionChangeFunction); - elParticleEmitStrength.addEventListener('change', createEmitNumberPropertyUpdateFunction('emitStrength')); - elParticleLocalGravity.addEventListener('change', createEmitNumberPropertyUpdateFunction('localGravity')); elParticleRadius.addEventListener('change', createEmitNumberPropertyUpdateFunction('particleRadius')); elModelURL.addEventListener('change', createEmitTextPropertyUpdateFunction('modelURL')); @@ -1362,6 +1375,12 @@ +
+ Is Emitting + + + +
Max Particles
@@ -1380,26 +1399,6 @@
-
-
Particle Emission Direction
-
-
X
-
Y
-
Z
-
-
-
-
Particle Emission Strength
-
- -
-
-
-
Particle Local Gravity
-
- -
-
Particle Radius
diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index b17ca41e9b..62d7e69202 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -313,6 +313,7 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { CHECK_PROPERTY_CHANGE(PROP_TEXT_COLOR, textColor); CHECK_PROPERTY_CHANGE(PROP_BACKGROUND_COLOR, backgroundColor); CHECK_PROPERTY_CHANGE(PROP_SHAPE_TYPE, shapeType); + CHECK_PROPERTY_CHANGE(PROP_EMITTING_PARTICLES, isEmitting); CHECK_PROPERTY_CHANGE(PROP_MAX_PARTICLES, maxParticles); CHECK_PROPERTY_CHANGE(PROP_LIFESPAN, lifespan); CHECK_PROPERTY_CHANGE(PROP_EMIT_RATE, emitRate); @@ -424,6 +425,7 @@ QScriptValue EntityItemProperties::copyToScriptValue(QScriptEngine* engine, bool // Particles only if (_type == EntityTypes::ParticleEffect) { + COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_EMITTING_PARTICLES, isEmitting); COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_MAX_PARTICLES, maxParticles); COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_LIFESPAN, lifespan); COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_EMIT_RATE, emitRate); @@ -1118,6 +1120,7 @@ bool EntityItemProperties::encodeEntityEditPacket(PacketType command, EntityItem APPEND_ENTITY_PROPERTY(PROP_ACTION_DATA, properties.getActionData()); APPEND_ENTITY_PROPERTY(PROP_ALPHA, properties.getAlpha()); } + if (propertyCount > 0) { int endOfEntityItemData = packetData->getUncompressedByteOffset(); @@ -1472,6 +1475,7 @@ void EntityItemProperties::markAllChanged() { _backgroundColorChanged = true; _shapeTypeChanged = true; + _isEmittingChanged = true; _maxParticlesChanged = true; _lifespanChanged = true; _emitRateChanged = true;