diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index 9302ed5049..c4364858e8 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -86,7 +86,6 @@ CONSTRUCT_PROPERTY(lifespan, ParticleEffectEntityItem::DEFAULT_LIFESPAN), CONSTRUCT_PROPERTY(emitRate, ParticleEffectEntityItem::DEFAULT_EMIT_RATE), CONSTRUCT_PROPERTY(emitDirection, ParticleEffectEntityItem::DEFAULT_EMIT_DIRECTION), CONSTRUCT_PROPERTY(directionSpread, ParticleEffectEntityItem::DEFAULT_DIRECTION_SPREAD), -CONSTRUCT_PROPERTY(emitStrength, ParticleEffectEntityItem::DEFAULT_EMIT_STRENGTH), CONSTRUCT_PROPERTY(localGravity, ParticleEffectEntityItem::DEFAULT_LOCAL_GRAVITY), CONSTRUCT_PROPERTY(particleRadius, ParticleEffectEntityItem::DEFAULT_PARTICLE_RADIUS), CONSTRUCT_PROPERTY(marketplaceID, ENTITY_ITEM_DEFAULT_MARKETPLACE_ID), @@ -352,7 +351,6 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { CHECK_PROPERTY_CHANGE(PROP_EMIT_RATE, emitRate); CHECK_PROPERTY_CHANGE(PROP_EMIT_DIRECTION, emitDirection); CHECK_PROPERTY_CHANGE(PROP_DIRECTION_SPREAD, directionSpread); - CHECK_PROPERTY_CHANGE(PROP_EMIT_STRENGTH, emitStrength); CHECK_PROPERTY_CHANGE(PROP_LOCAL_GRAVITY, localGravity); CHECK_PROPERTY_CHANGE(PROP_PARTICLE_RADIUS, particleRadius); CHECK_PROPERTY_CHANGE(PROP_MARKETPLACE_ID, marketplaceID); @@ -455,7 +453,6 @@ QScriptValue EntityItemProperties::copyToScriptValue(QScriptEngine* engine, bool COPY_PROPERTY_TO_QSCRIPTVALUE(emitRate); COPY_PROPERTY_TO_QSCRIPTVALUE(emitDirection); COPY_PROPERTY_TO_QSCRIPTVALUE(directionSpread); - COPY_PROPERTY_TO_QSCRIPTVALUE(emitStrength); COPY_PROPERTY_TO_QSCRIPTVALUE(localGravity); COPY_PROPERTY_TO_QSCRIPTVALUE(particleRadius); COPY_PROPERTY_TO_QSCRIPTVALUE(marketplaceID); @@ -576,7 +573,6 @@ void EntityItemProperties::copyFromScriptValue(const QScriptValue& object, bool COPY_PROPERTY_FROM_QSCRIPTVALUE(emitRate, float, setEmitRate); COPY_PROPERTY_FROM_QSCRIPTVALUE(emitDirection, glmVec3, setEmitDirection); COPY_PROPERTY_FROM_QSCRIPTVALUE(directionSpread, glmVec3, setDirectionSpread); - COPY_PROPERTY_FROM_QSCRIPTVALUE(emitStrength, float, setEmitStrength); COPY_PROPERTY_FROM_QSCRIPTVALUE(localGravity, float, setLocalGravity); COPY_PROPERTY_FROM_QSCRIPTVALUE(particleRadius, float, setParticleRadius); COPY_PROPERTY_FROM_QSCRIPTVALUE(marketplaceID, QString, setMarketplaceID); @@ -818,7 +814,6 @@ bool EntityItemProperties::encodeEntityEditPacket(PacketType::Value command, Ent APPEND_ENTITY_PROPERTY(PROP_EMIT_RATE, properties.getEmitRate()); APPEND_ENTITY_PROPERTY(PROP_EMIT_DIRECTION, properties.getEmitDirection()); APPEND_ENTITY_PROPERTY(PROP_DIRECTION_SPREAD, properties.getDirectionSpread()); - APPEND_ENTITY_PROPERTY(PROP_EMIT_STRENGTH, properties.getEmitStrength()); APPEND_ENTITY_PROPERTY(PROP_LOCAL_GRAVITY, properties.getLocalGravity()); APPEND_ENTITY_PROPERTY(PROP_PARTICLE_RADIUS, properties.getParticleRadius()); @@ -1088,7 +1083,6 @@ bool EntityItemProperties::decodeEntityEditPacket(const unsigned char* data, int READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_EMIT_RATE, float, setEmitRate); READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_EMIT_DIRECTION, glm::vec3, setEmitDirection); READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_DIRECTION_SPREAD, glm::vec3, setDirectionSpread); - READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_EMIT_STRENGTH, float, setEmitStrength); READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_LOCAL_GRAVITY, float, setLocalGravity); READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_PARTICLE_RADIUS, float, setParticleRadius); } @@ -1220,7 +1214,6 @@ void EntityItemProperties::markAllChanged() { _emitRateChanged = true; _emitDirectionChanged = true; _directionSpreadChanged = true; - _emitStrengthChanged = true; _localGravityChanged = true; _particleRadiusChanged = true; diff --git a/libraries/entities/src/EntityItemProperties.h b/libraries/entities/src/EntityItemProperties.h index a3f512b36e..4ebe29eda9 100644 --- a/libraries/entities/src/EntityItemProperties.h +++ b/libraries/entities/src/EntityItemProperties.h @@ -133,7 +133,6 @@ public: DEFINE_PROPERTY(PROP_EMIT_RATE, EmitRate, emitRate, float); DEFINE_PROPERTY_REF(PROP_EMIT_DIRECTION, EmitDirection, emitDirection, glm::vec3); DEFINE_PROPERTY_REF(PROP_DIRECTION_SPREAD, DirectionSpread, directionSpread, glm::vec3); - DEFINE_PROPERTY(PROP_EMIT_STRENGTH, EmitStrength, emitStrength, float); DEFINE_PROPERTY(PROP_LOCAL_GRAVITY, LocalGravity, localGravity, float); DEFINE_PROPERTY(PROP_PARTICLE_RADIUS, ParticleRadius, particleRadius, float); DEFINE_PROPERTY_REF(PROP_MARKETPLACE_ID, MarketplaceID, marketplaceID, QString); @@ -313,7 +312,6 @@ inline QDebug operator<<(QDebug debug, const EntityItemProperties& properties) { DEBUG_PROPERTY_IF_CHANGED(debug, properties, Lifespan, lifespan, ""); DEBUG_PROPERTY_IF_CHANGED(debug, properties, EmitRate, emitRate, ""); DEBUG_PROPERTY_IF_CHANGED(debug, properties, EmitDirection, emitDirection, ""); - DEBUG_PROPERTY_IF_CHANGED(debug, properties, EmitStrength, emitStrength, ""); DEBUG_PROPERTY_IF_CHANGED(debug, properties, LocalGravity, localGravity, ""); DEBUG_PROPERTY_IF_CHANGED(debug, properties, ParticleRadius, particleRadius, ""); DEBUG_PROPERTY_IF_CHANGED(debug, properties, MarketplaceID, marketplaceID, ""); diff --git a/libraries/entities/src/ParticleEffectEntityItem.cpp b/libraries/entities/src/ParticleEffectEntityItem.cpp index e1019efba5..403d9e4df5 100644 --- a/libraries/entities/src/ParticleEffectEntityItem.cpp +++ b/libraries/entities/src/ParticleEffectEntityItem.cpp @@ -52,7 +52,6 @@ const float ParticleEffectEntityItem::DEFAULT_LIFESPAN = 3.0f; const float ParticleEffectEntityItem::DEFAULT_EMIT_RATE = 15.0f; const glm::vec3 ParticleEffectEntityItem::DEFAULT_EMIT_DIRECTION(0.0f, 1.0f, 0.0f); const glm::vec3 ParticleEffectEntityItem::DEFAULT_DIRECTION_SPREAD(0.0f, 0.0f, 0.0f); -const float ParticleEffectEntityItem::DEFAULT_EMIT_STRENGTH = 25.0f; const float ParticleEffectEntityItem::DEFAULT_LOCAL_GRAVITY = -9.8f; const float ParticleEffectEntityItem::DEFAULT_PARTICLE_RADIUS = 0.025f; const QString ParticleEffectEntityItem::DEFAULT_TEXTURES = ""; @@ -69,7 +68,6 @@ ParticleEffectEntityItem::ParticleEffectEntityItem(const EntityItemID& entityIte _lifespan(DEFAULT_LIFESPAN), _emitRate(DEFAULT_EMIT_RATE), _emitDirection(DEFAULT_EMIT_DIRECTION), - _emitStrength(DEFAULT_EMIT_STRENGTH), _localGravity(DEFAULT_LOCAL_GRAVITY), _particleRadius(DEFAULT_PARTICLE_RADIUS), _lastAnimated(usecTimestampNow()), @@ -95,78 +93,29 @@ ParticleEffectEntityItem::ParticleEffectEntityItem(const EntityItemID& entityIte ParticleEffectEntityItem::~ParticleEffectEntityItem() { } -void ParticleEffectEntityItem::setDimensions(const glm::vec3& value) { - computeAndUpdateDimensions(); -} void ParticleEffectEntityItem::setLifespan(float lifespan) { _lifespan = lifespan; - computeAndUpdateDimensions(); } void ParticleEffectEntityItem::setEmitDirection(glm::vec3 emitDirection) { _emitDirection = glm::normalize(emitDirection); - computeAndUpdateDimensions(); } void ParticleEffectEntityItem::setDirectionSpread(glm::vec3 directionSpread) { _directionSpread = directionSpread; } -void ParticleEffectEntityItem::setEmitStrength(float emitStrength) { - _emitStrength = emitStrength; - computeAndUpdateDimensions(); -} void ParticleEffectEntityItem::setLocalGravity(float localGravity) { _localGravity = localGravity; - computeAndUpdateDimensions(); } void ParticleEffectEntityItem::setParticleRadius(float particleRadius) { _particleRadius = particleRadius; - computeAndUpdateDimensions(); } -void ParticleEffectEntityItem::computeAndUpdateDimensions() { - const float t = _lifespan * 1.1f; // add 10% extra time, to account for incremental timer accumulation error. - const float MAX_RANDOM_FACTOR = (0.5f * 0.25f); - const float maxOffset = (MAX_RANDOM_FACTOR * _emitStrength) + _particleRadius; - - // bounds for x and z is easy to compute because there is no at^2 term. - float xMax = (_emitDirection.x * _emitStrength + maxOffset) * t; - float xMin = (_emitDirection.x * _emitStrength - maxOffset) * t; - - float zMax = (_emitDirection.z * _emitStrength + maxOffset) * t; - float zMin = (_emitDirection.z * _emitStrength - maxOffset) * t; - - // yEnd is where the particle will end. - float a = _localGravity; - float atSquared = a * t * t; - float v = _emitDirection.y * _emitStrength + maxOffset; - float vt = v * t; - float yEnd = 0.5f * atSquared + vt; - - // yApex is where the particle is at it's apex. - float yApexT = (-v / a); - float yApex = 0.0f; - - // only set apex if it's within the lifespan of the particle. - if (yApexT >= 0.0f && yApexT <= t) { - yApex = -(v * v) / (2.0f * a); - } - - float yMax = std::max(yApex, yEnd); - float yMin = std::min(yApex, yEnd); - - // times 2 because dimensions are diameters not radii. - glm::vec3 dims(2.0f * std::max(fabsf(xMin), fabsf(xMax)), - 2.0f * std::max(fabsf(yMin), fabsf(yMax)), - 2.0f * std::max(fabsf(zMin), fabsf(zMax))); - - EntityItem::setDimensions(dims); -} EntityItemProperties ParticleEffectEntityItem::getProperties() const { EntityItemProperties properties = EntityItem::getProperties(); // get the properties from our base class @@ -182,7 +131,7 @@ EntityItemProperties ParticleEffectEntityItem::getProperties() const { COPY_ENTITY_PROPERTY_TO_PROPERTIES(lifespan, getLifespan); COPY_ENTITY_PROPERTY_TO_PROPERTIES(emitRate, getEmitRate); COPY_ENTITY_PROPERTY_TO_PROPERTIES(emitDirection, getEmitDirection); - COPY_ENTITY_PROPERTY_TO_PROPERTIES(emitStrength, getEmitStrength); + COPY_ENTITY_PROPERTY_TO_PROPERTIES(localGravity, getLocalGravity); COPY_ENTITY_PROPERTY_TO_PROPERTIES(particleRadius, getParticleRadius); COPY_ENTITY_PROPERTY_TO_PROPERTIES(textures, getTextures); @@ -204,7 +153,6 @@ bool ParticleEffectEntityItem::setProperties(const EntityItemProperties& propert SET_ENTITY_PROPERTY_FROM_PROPERTIES(lifespan, setLifespan); SET_ENTITY_PROPERTY_FROM_PROPERTIES(emitRate, setEmitRate); SET_ENTITY_PROPERTY_FROM_PROPERTIES(emitDirection, setEmitDirection); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(emitStrength, setEmitStrength); SET_ENTITY_PROPERTY_FROM_PROPERTIES(localGravity, setLocalGravity); SET_ENTITY_PROPERTY_FROM_PROPERTIES(particleRadius, setParticleRadius); SET_ENTITY_PROPERTY_FROM_PROPERTIES(textures, setTextures); @@ -260,7 +208,6 @@ int ParticleEffectEntityItem::readEntitySubclassDataFromBuffer(const unsigned ch READ_ENTITY_PROPERTY(PROP_LIFESPAN, float, setLifespan); READ_ENTITY_PROPERTY(PROP_EMIT_RATE, float, setEmitRate); READ_ENTITY_PROPERTY(PROP_EMIT_DIRECTION, glm::vec3, setEmitDirection); - READ_ENTITY_PROPERTY(PROP_EMIT_STRENGTH, float, setEmitStrength); READ_ENTITY_PROPERTY(PROP_LOCAL_GRAVITY, float, setLocalGravity); READ_ENTITY_PROPERTY(PROP_PARTICLE_RADIUS, float, setParticleRadius); READ_ENTITY_PROPERTY(PROP_TEXTURES, QString, setTextures); @@ -284,7 +231,6 @@ EntityPropertyFlags ParticleEffectEntityItem::getEntityProperties(EncodeBitstrea requestedProperties += PROP_LIFESPAN; requestedProperties += PROP_EMIT_RATE; requestedProperties += PROP_EMIT_DIRECTION; - requestedProperties += PROP_EMIT_STRENGTH; requestedProperties += PROP_LOCAL_GRAVITY; requestedProperties += PROP_PARTICLE_RADIUS; requestedProperties += PROP_TEXTURES; @@ -312,7 +258,6 @@ void ParticleEffectEntityItem::appendSubclassData(OctreePacketData* packetData, APPEND_ENTITY_PROPERTY(PROP_LIFESPAN, getLifespan()); APPEND_ENTITY_PROPERTY(PROP_EMIT_RATE, getEmitRate()); APPEND_ENTITY_PROPERTY(PROP_EMIT_DIRECTION, getEmitDirection()); - APPEND_ENTITY_PROPERTY(PROP_EMIT_STRENGTH, getEmitStrength()); APPEND_ENTITY_PROPERTY(PROP_LOCAL_GRAVITY, getLocalGravity()); APPEND_ENTITY_PROPERTY(PROP_PARTICLE_RADIUS, getParticleRadius()); APPEND_ENTITY_PROPERTY(PROP_TEXTURES, getTextures()); @@ -544,7 +489,7 @@ void ParticleEffectEntityItem::stepSimulation(float deltaTime) { // set initial conditions _particlePositions[i] = glm::vec3(0.0f, 0.0f, 0.0f); - _particleVelocities[i] = _emitDirection * _emitStrength + randOffset; + _particleVelocities[i] = _emitDirection + randOffset; integrateParticle(i, timeLeftInFrame); extendBounds(_particlePositions[i]); diff --git a/libraries/entities/src/ParticleEffectEntityItem.h b/libraries/entities/src/ParticleEffectEntityItem.h index 651dc55616..584bc7beff 100644 --- a/libraries/entities/src/ParticleEffectEntityItem.h +++ b/libraries/entities/src/ParticleEffectEntityItem.h @@ -86,8 +86,6 @@ public: void setAnimationLastFrame(float lastFrame) { _animationLoop.setLastFrame(lastFrame); } float getAnimationLastFrame() const { return _animationLoop.getLastFrame(); } - virtual void setDimensions(const glm::vec3& value) override; - static const quint32 DEFAULT_MAX_PARTICLES; void setMaxParticles(quint32 maxParticles); quint32 getMaxParticles() const { return _maxParticles; } @@ -109,9 +107,6 @@ public: void setDirectionSpread(glm::vec3 directionSpread); const glm::vec3& getDirectionSpread() const { return _directionSpread; } - static const float DEFAULT_EMIT_STRENGTH; - void setEmitStrength(float emitStrength); - float getEmitStrength() const { return _emitStrength; } static const float DEFAULT_LOCAL_GRAVITY; void setLocalGravity(float localGravity); @@ -121,7 +116,6 @@ public: void setParticleRadius(float particleRadius); float getParticleRadius() const { return _particleRadius; } - void computeAndUpdateDimensions(); bool getAnimationIsPlaying() const { return _animationLoop.isRunning(); } float getAnimationFrameIndex() const { return _animationLoop.getFrameIndex(); } @@ -152,7 +146,6 @@ protected: float _emitRate; glm::vec3 _emitDirection; glm::vec3 _directionSpread; - float _emitStrength; float _localGravity; float _particleRadius; quint64 _lastAnimated;