diff --git a/libraries/entities/src/AtmospherePropertyGroup.cpp b/libraries/entities/src/AtmospherePropertyGroup.cpp index 96f5dffb12..acbb23afbd 100644 --- a/libraries/entities/src/AtmospherePropertyGroup.cpp +++ b/libraries/entities/src/AtmospherePropertyGroup.cpp @@ -44,12 +44,12 @@ void AtmospherePropertyGroup::copyToScriptValue(QScriptValue& properties, QScrip void AtmospherePropertyGroup::copyFromScriptValue(const QScriptValue& object, bool& _defaultSettings) { COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE_VEC3(atmosphere, center, setCenter); - COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(atmosphere, innerRadius, setInnerRadius); - COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(atmosphere, outerRadius, setOuterRadius); - COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(atmosphere, mieScattering, setMieScattering); - COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(atmosphere, rayleighScattering, setRayleighScattering); + COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(atmosphere, innerRadius, float, setInnerRadius); + COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(atmosphere, outerRadius, float, setOuterRadius); + COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(atmosphere, mieScattering, float, setMieScattering); + COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(atmosphere, rayleighScattering, float, setRayleighScattering); COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE_VEC3(atmosphere, scatteringWavelengths, setScatteringWavelengths); - COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE_BOOL(atmosphere, hasStars, setHasStars); + COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(atmosphere, hasStars, bool, setHasStars); } void AtmospherePropertyGroup::debugDump() const { diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index cee7cd9fda..e839ce5590 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -459,55 +459,55 @@ void EntityItemProperties::copyFromScriptValue(const QScriptValue& object) { COPY_PROPERTY_FROM_QSCRIPTVALUE_VEC3(position, setPosition); COPY_PROPERTY_FROM_QSCRIPTVALUE_VEC3(dimensions, setDimensions); COPY_PROPERTY_FROM_QSCRIPTVALUE_QUAT(rotation, setRotation); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(density, setDensity); + COPY_PROPERTY_FROM_QSCRIPTVALUE(density, float, setDensity); COPY_PROPERTY_FROM_QSCRIPTVALUE_VEC3(velocity, setVelocity); COPY_PROPERTY_FROM_QSCRIPTVALUE_VEC3(gravity, setGravity); COPY_PROPERTY_FROM_QSCRIPTVALUE_VEC3(acceleration, setAcceleration); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(damping, setDamping); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(lifetime, setLifetime); - COPY_PROPERTY_FROM_QSCRIPTVALUE_STRING(script, setScript); + COPY_PROPERTY_FROM_QSCRIPTVALUE(damping, float, setDamping); + COPY_PROPERTY_FROM_QSCRIPTVALUE(lifetime, float, setLifetime); + COPY_PROPERTY_FROM_QSCRIPTVALUE(script, QString, setScript); COPY_PROPERTY_FROM_QSCRIPTVALUE_VEC3(registrationPoint, setRegistrationPoint); COPY_PROPERTY_FROM_QSCRIPTVALUE_VEC3(angularVelocity, setAngularVelocity); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(angularDamping, setAngularDamping); - COPY_PROPERTY_FROM_QSCRIPTVALUE_BOOL(visible, setVisible); + COPY_PROPERTY_FROM_QSCRIPTVALUE(angularDamping, float, setAngularDamping); + COPY_PROPERTY_FROM_QSCRIPTVALUE(visible, bool, setVisible); COPY_PROPERTY_FROM_QSCRIPTVALUE_COLOR(color, setColor); - COPY_PROPERTY_FROM_QSCRIPTVALUE_STRING(modelURL, setModelURL); - COPY_PROPERTY_FROM_QSCRIPTVALUE_STRING(compoundShapeURL, setCompoundShapeURL); - COPY_PROPERTY_FROM_QSCRIPTVALUE_STRING(animationURL, setAnimationURL); - COPY_PROPERTY_FROM_QSCRIPTVALUE_BOOL(animationIsPlaying, setAnimationIsPlaying); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(animationFPS, setAnimationFPS); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(animationFrameIndex, setAnimationFrameIndex); - COPY_PROPERTY_FROM_QSCRIPTVALUE_STRING(animationSettings, setAnimationSettings); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(glowLevel, setGlowLevel); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(localRenderAlpha, setLocalRenderAlpha); - COPY_PROPERTY_FROM_QSCRIPTVALUE_BOOL(ignoreForCollisions, setIgnoreForCollisions); - COPY_PROPERTY_FROM_QSCRIPTVALUE_BOOL(collisionsWillMove, setCollisionsWillMove); - COPY_PROPERTY_FROM_QSCRIPTVALUE_BOOL(isSpotlight, setIsSpotlight); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(intensity, setIntensity); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(exponent, setExponent); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(cutoff, setCutoff); - COPY_PROPERTY_FROM_QSCRIPTVALUE_BOOL(locked, setLocked); - COPY_PROPERTY_FROM_QSCRIPTVALUE_STRING(textures, setTextures); - COPY_PROPERTY_FROM_QSCRIPTVALUE_STRING(userData, setUserData); - COPY_PROPERTY_FROM_QSCRIPTVALUE_UUID(simulatorID, setSimulatorID); - COPY_PROPERTY_FROM_QSCRIPTVALUE_STRING(text, setText); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(lineHeight, setLineHeight); + COPY_PROPERTY_FROM_QSCRIPTVALUE(modelURL, QString, setModelURL); + COPY_PROPERTY_FROM_QSCRIPTVALUE(compoundShapeURL, QString, setCompoundShapeURL); + COPY_PROPERTY_FROM_QSCRIPTVALUE(animationURL, QString, setAnimationURL); + COPY_PROPERTY_FROM_QSCRIPTVALUE(animationIsPlaying, bool, setAnimationIsPlaying); + COPY_PROPERTY_FROM_QSCRIPTVALUE(animationFPS, float, setAnimationFPS); + COPY_PROPERTY_FROM_QSCRIPTVALUE(animationFrameIndex, float, setAnimationFrameIndex); + COPY_PROPERTY_FROM_QSCRIPTVALUE(animationSettings, QString, setAnimationSettings); + COPY_PROPERTY_FROM_QSCRIPTVALUE(glowLevel, float, setGlowLevel); + COPY_PROPERTY_FROM_QSCRIPTVALUE(localRenderAlpha, float, setLocalRenderAlpha); + COPY_PROPERTY_FROM_QSCRIPTVALUE(ignoreForCollisions, bool, setIgnoreForCollisions); + COPY_PROPERTY_FROM_QSCRIPTVALUE(collisionsWillMove, bool, setCollisionsWillMove); + COPY_PROPERTY_FROM_QSCRIPTVALUE(isSpotlight, bool, setIsSpotlight); + COPY_PROPERTY_FROM_QSCRIPTVALUE(intensity, float, setIntensity); + COPY_PROPERTY_FROM_QSCRIPTVALUE(exponent, float, setExponent); + COPY_PROPERTY_FROM_QSCRIPTVALUE(cutoff, float, setCutoff); + COPY_PROPERTY_FROM_QSCRIPTVALUE(locked, bool, setLocked); + COPY_PROPERTY_FROM_QSCRIPTVALUE(textures, QString, setTextures); + COPY_PROPERTY_FROM_QSCRIPTVALUE(userData, QString, setUserData); + COPY_PROPERTY_FROM_QSCRIPTVALUE(simulatorID, QUuid, setSimulatorID); + COPY_PROPERTY_FROM_QSCRIPTVALUE(text, QString, setText); + COPY_PROPERTY_FROM_QSCRIPTVALUE(lineHeight, float, setLineHeight); COPY_PROPERTY_FROM_QSCRIPTVALUE_COLOR(textColor, setTextColor); COPY_PROPERTY_FROM_QSCRIPTVALUE_COLOR(backgroundColor, setBackgroundColor); COPY_PROPERTY_FROM_QSCRITPTVALUE_ENUM(shapeType, ShapeType); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(maxParticles, setMaxParticles); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(lifespan, setLifespan); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(emitRate, setEmitRate); + COPY_PROPERTY_FROM_QSCRIPTVALUE(maxParticles, float, setMaxParticles); + COPY_PROPERTY_FROM_QSCRIPTVALUE(lifespan, float, setLifespan); + COPY_PROPERTY_FROM_QSCRIPTVALUE(emitRate, float, setEmitRate); COPY_PROPERTY_FROM_QSCRIPTVALUE_VEC3(emitDirection, setEmitDirection); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(emitStrength, setEmitStrength); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(localGravity, setLocalGravity); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(particleRadius, setParticleRadius); - COPY_PROPERTY_FROM_QSCRIPTVALUE_STRING(marketplaceID, setMarketplaceID); - COPY_PROPERTY_FROM_QSCRIPTVALUE_STRING(name, setName); + 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); + COPY_PROPERTY_FROM_QSCRIPTVALUE(name, QString, setName); COPY_PROPERTY_FROM_QSCRIPTVALUE_COLOR(keyLightColor, setKeyLightColor); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(keyLightIntensity, setKeyLightIntensity); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(keyLightAmbientIntensity, setKeyLightAmbientIntensity); + COPY_PROPERTY_FROM_QSCRIPTVALUE(keyLightIntensity, float, setKeyLightIntensity); + COPY_PROPERTY_FROM_QSCRIPTVALUE(keyLightAmbientIntensity, float, setKeyLightAmbientIntensity); COPY_PROPERTY_FROM_QSCRIPTVALUE_VEC3(keyLightDirection, setKeyLightDirection); COPY_PROPERTY_FROM_QSCRITPTVALUE_ENUM(backgroundMode, BackgroundMode); diff --git a/libraries/entities/src/EntityItemPropertiesMacros.h b/libraries/entities/src/EntityItemPropertiesMacros.h index 9b699e0128..0b0de44d39 100644 --- a/libraries/entities/src/EntityItemPropertiesMacros.h +++ b/libraries/entities/src/EntityItemPropertiesMacros.h @@ -120,32 +120,45 @@ inline QScriptValue convertScriptValue(QScriptEngine* e, const QScriptValue& v) QScriptValue V = convertScriptValue(engine, G); \ properties.setProperty(#P, V); \ } + + +inline float float_convertFromScriptValue(const QScriptValue& v) { return v.toVariant().toFloat(); } +inline uint16_t uint16_t_convertFromScriptValue(const QScriptValue& v) { return v.toVariant().toInt(); } +inline int int_convertFromScriptValue(const QScriptValue& v) { return v.toVariant().toInt(); } +inline bool bool_convertFromScriptValue(const QScriptValue& v) { return v.toVariant().toBool(); } +inline QString QString_convertFromScriptValue(const QScriptValue& v) { return v.toVariant().toString().trimmed(); } +inline QUuid QUuid_convertFromScriptValue(const QScriptValue& v) { return v.toVariant().toUuid(); } + -#define COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(P, S) \ - QScriptValue P = object.property(#P); \ - if (P.isValid()) { \ - float newValue = P.toVariant().toFloat(); \ - if (_defaultSettings || newValue != _##P) { \ - S(newValue); \ - } \ +#define COPY_PROPERTY_FROM_QSCRIPTVALUE(P, T, S) \ + { \ + QScriptValue V = object.property(#P); \ + if (V.isValid()) { \ + T newValue = T##_convertFromScriptValue(V); \ + if (_defaultSettings || newValue != _##P) { \ + S(newValue); \ + } \ + } \ } -#define COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT_GETTER(P, S, G) \ - QScriptValue P = object.property(#P); \ - if (P.isValid()) { \ - float newValue = P.toVariant().toFloat(); \ +#define COPY_PROPERTY_FROM_QSCRIPTVALUE_GETTER(P, T, S, G) \ +{ \ + QScriptValue V = object.property(#P); \ + if (V.isValid()) { \ + T newValue = T##_convertFromScriptValue(V); \ if (_defaultSettings || newValue != G()) { \ S(newValue); \ } \ - } + }\ +} -#define COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(G, P, S) \ +#define COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(G, P, T, S) \ { \ QScriptValue G = object.property(#G); \ if (G.isValid()) { \ - QScriptValue P = G.property(#P); \ - if (P.isValid()) { \ - float newValue = P.toVariant().toFloat(); \ + QScriptValue V = G.property(#P); \ + if (V.isValid()) { \ + T newValue = T##_convertFromScriptValue(V); \ if (_defaultSettings || newValue != _##P) { \ S(newValue); \ } \ @@ -153,103 +166,6 @@ inline QScriptValue convertScriptValue(QScriptEngine* e, const QScriptValue& v) } \ } -#define COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE_UINT16(G, P, S) \ - { \ - QScriptValue G = object.property(#G); \ - if (G.isValid()) { \ - QScriptValue P = G.property(#P); \ - if (P.isValid()) { \ - uint16_t newValue = P.toVariant().toInt(); \ - if (_defaultSettings || newValue != _##P) { \ - S(newValue); \ - } \ - } \ - } \ - } - -#define COPY_PROPERTY_FROM_QSCRIPTVALUE_INT(P, S) \ - QScriptValue P = object.property(#P); \ - if (P.isValid()) { \ - int newValue = P.toVariant().toInt(); \ - if (_defaultSettings || newValue != _##P) { \ - S(newValue); \ - } \ - } - -#define COPY_PROPERTY_FROM_QSCRIPTVALUE_INT_GETTER(P, S, G) \ - QScriptValue P = object.property(#P); \ - if (P.isValid()) { \ - int newValue = P.toVariant().toInt(); \ - if (_defaultSettings || newValue != G()) { \ - S(newValue); \ - } \ - } - -#define COPY_PROPERTY_FROM_QSCRIPTVALUE_BOOL(P, S) \ - QScriptValue P = object.property(#P); \ - if (P.isValid()) { \ - bool newValue = P.toVariant().toBool(); \ - if (_defaultSettings || newValue != _##P) { \ - S(newValue); \ - } \ - } - -#define COPY_PROPERTY_FROM_QSCRIPTVALUE_BOOL_GETTER(P, S, G) \ - QScriptValue P = object.property(#P); \ - if (P.isValid()) { \ - bool newValue = P.toVariant().toBool(); \ - if (_defaultSettings || newValue != G()) { \ - S(newValue); \ - } \ - } - - -#define COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE_BOOL(G, P, S) \ - { \ - QScriptValue G = object.property(#G); \ - if (G.isValid()) { \ - QScriptValue P = G.property(#P); \ - if (P.isValid()) { \ - bool newValue = P.toVariant().toBool(); \ - if (_defaultSettings || newValue != _##P) { \ - S(newValue); \ - } \ - } \ - } \ - } - -#define COPY_PROPERTY_FROM_QSCRIPTVALUE_STRING(P, S)\ - QScriptValue P = object.property(#P); \ - if (P.isValid()) { \ - QString newValue = P.toVariant().toString().trimmed();\ - if (_defaultSettings || newValue != _##P) { \ - S(newValue); \ - } \ - } - -#define COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE_STRING(G, P, S)\ - { \ - QScriptValue G = object.property(#G); \ - if (G.isValid()) { \ - QScriptValue P = G.property(#P); \ - if (P.isValid()) { \ - QString newValue = P.toVariant().toString().trimmed();\ - if (_defaultSettings || newValue != _##P) { \ - S(newValue); \ - } \ - } \ - } \ - } - -#define COPY_PROPERTY_FROM_QSCRIPTVALUE_UUID(P, S) \ - QScriptValue P = object.property(#P); \ - if (P.isValid()) { \ - QUuid newValue = P.toVariant().toUuid(); \ - if (_defaultSettings || newValue != _##P) { \ - S(newValue); \ - } \ - } - #define COPY_PROPERTY_FROM_QSCRIPTVALUE_VEC3(P, S) \ QScriptValue P = object.property(#P); \ if (P.isValid()) { \ diff --git a/libraries/entities/src/SkyboxPropertyGroup.cpp b/libraries/entities/src/SkyboxPropertyGroup.cpp index a2b5b7dc2f..ff0b0242f8 100644 --- a/libraries/entities/src/SkyboxPropertyGroup.cpp +++ b/libraries/entities/src/SkyboxPropertyGroup.cpp @@ -27,7 +27,7 @@ void SkyboxPropertyGroup::copyToScriptValue(QScriptValue& properties, QScriptEng void SkyboxPropertyGroup::copyFromScriptValue(const QScriptValue& object, bool& _defaultSettings) { COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE_COLOR(skybox, color, setColor); - COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE_STRING(skybox, url, setURL); + COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(skybox, url, QString, setURL); } void SkyboxPropertyGroup::debugDump() const { diff --git a/libraries/entities/src/StagePropertyGroup.cpp b/libraries/entities/src/StagePropertyGroup.cpp index 8466b4ca60..937dc2412e 100644 --- a/libraries/entities/src/StagePropertyGroup.cpp +++ b/libraries/entities/src/StagePropertyGroup.cpp @@ -49,20 +49,20 @@ void StagePropertyGroup::copyToScriptValue(QScriptValue& properties, QScriptEngi void StagePropertyGroup::copyFromScriptValue(const QScriptValue& object, bool& _defaultSettings) { // Backward compatibility support for the old way of doing stage properties - COPY_PROPERTY_FROM_QSCRIPTVALUE_BOOL_GETTER(stageSunModelEnabled, setSunModelEnabled, getSunModelEnabled); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT_GETTER(stageLatitude, setLatitude, getLatitude); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT_GETTER(stageLongitude, setLongitude, getLongitude); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT_GETTER(stageAltitude, setAltitude, getAltitude); - COPY_PROPERTY_FROM_QSCRIPTVALUE_INT_GETTER(stageDay, setDay, getDay); - COPY_PROPERTY_FROM_QSCRIPTVALUE_FLOAT_GETTER(stageHour, setHour, getHour); + COPY_PROPERTY_FROM_QSCRIPTVALUE_GETTER(stageSunModelEnabled, bool, setSunModelEnabled, getSunModelEnabled); + COPY_PROPERTY_FROM_QSCRIPTVALUE_GETTER(stageLatitude, float, setLatitude, getLatitude); + COPY_PROPERTY_FROM_QSCRIPTVALUE_GETTER(stageLongitude, float, setLongitude, getLongitude); + COPY_PROPERTY_FROM_QSCRIPTVALUE_GETTER(stageAltitude, float, setAltitude, getAltitude); + COPY_PROPERTY_FROM_QSCRIPTVALUE_GETTER(stageDay, uint16_t, setDay, getDay); + COPY_PROPERTY_FROM_QSCRIPTVALUE_GETTER(stageHour, float, setHour, getHour); - COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE_BOOL(stage, sunModelEnabled, setSunModelEnabled); - COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(stage, latitude, setLatitude); - COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(stage, longitude, setLongitude); - COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(stage, altitude, setAltitude); - COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE_UINT16(stage, day, setDay); - COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE_FLOAT(stage, hour, setHour); - COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE_BOOL(stage, automaticHourDay, setAutomaticHourDay); + COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(stage, sunModelEnabled, bool, setSunModelEnabled); + COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(stage, latitude, float, setLatitude); + COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(stage, longitude, float, setLongitude); + COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(stage, altitude, float, setAltitude); + COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(stage, day, uint16_t, setDay); + COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(stage, hour, float, setHour); + COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(stage, automaticHourDay, bool, setAutomaticHourDay); } void StagePropertyGroup::debugDump() const {