mirror of
https://github.com/overte-org/overte.git
synced 2025-04-22 19:13:38 +02:00
make PROP_DIFFUSE_COLOR a true property and wire up LightEntityProperties correctly
This commit is contained in:
parent
a516d062a6
commit
f3242d8778
3 changed files with 30 additions and 13 deletions
|
@ -80,6 +80,7 @@ EntityItemProperties::EntityItemProperties() :
|
|||
_localRenderAlphaChanged(false),
|
||||
_isSpotlightChanged(false),
|
||||
|
||||
_diffuseColor(),
|
||||
_ambientColor(),
|
||||
_specularColor(),
|
||||
_constantAttenuation(1.0f),
|
||||
|
@ -88,6 +89,7 @@ EntityItemProperties::EntityItemProperties() :
|
|||
_exponent(0.0f),
|
||||
_cutoff(PI),
|
||||
|
||||
_diffuseColorChanged(false),
|
||||
_ambientColorChanged(false),
|
||||
_specularColorChanged(false),
|
||||
_constantAttenuationChanged(false),
|
||||
|
@ -156,6 +158,7 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const {
|
|||
CHECK_PROPERTY_CHANGE(PROP_IGNORE_FOR_COLLISIONS, ignoreForCollisions);
|
||||
CHECK_PROPERTY_CHANGE(PROP_COLLISIONS_WILL_MOVE, collisionsWillMove);
|
||||
CHECK_PROPERTY_CHANGE(PROP_IS_SPOTLIGHT, isSpotlight);
|
||||
CHECK_PROPERTY_CHANGE(PROP_DIFFUSE_COLOR, diffuseColor);
|
||||
CHECK_PROPERTY_CHANGE(PROP_AMBIENT_COLOR, ambientColor);
|
||||
CHECK_PROPERTY_CHANGE(PROP_SPECULAR_COLOR, specularColor);
|
||||
CHECK_PROPERTY_CHANGE(PROP_CONSTANT_ATTENUATION, constantAttenuation);
|
||||
|
@ -205,8 +208,6 @@ QScriptValue EntityItemProperties::copyToScriptValue(QScriptEngine* engine) cons
|
|||
COPY_PROPERTY_TO_QSCRIPTVALUE(ignoreForCollisions);
|
||||
COPY_PROPERTY_TO_QSCRIPTVALUE(collisionsWillMove);
|
||||
COPY_PROPERTY_TO_QSCRIPTVALUE(isSpotlight);
|
||||
|
||||
// NOTE: we do want this, so we will read both aliases diffuseColor and color
|
||||
COPY_PROPERTY_TO_QSCRIPTVALUE_COLOR_GETTER(diffuseColor, getDiffuseColor());
|
||||
COPY_PROPERTY_TO_QSCRIPTVALUE_COLOR_GETTER(ambientColor, getAmbientColor());
|
||||
COPY_PROPERTY_TO_QSCRIPTVALUE_COLOR_GETTER(specularColor, getSpecularColor());
|
||||
|
@ -438,6 +439,7 @@ bool EntityItemProperties::encodeEntityEditPacket(PacketType command, EntityItem
|
|||
APPEND_ENTITY_PROPERTY(PROP_IGNORE_FOR_COLLISIONS, appendValue, properties.getIgnoreForCollisions());
|
||||
APPEND_ENTITY_PROPERTY(PROP_COLLISIONS_WILL_MOVE, appendValue, properties.getCollisionsWillMove());
|
||||
APPEND_ENTITY_PROPERTY(PROP_IS_SPOTLIGHT, appendValue, properties.getIsSpotlight());
|
||||
APPEND_ENTITY_PROPERTY(PROP_DIFFUSE_COLOR, appendColor, properties.getDiffuseColor());
|
||||
APPEND_ENTITY_PROPERTY(PROP_AMBIENT_COLOR, appendColor, properties.getAmbientColor());
|
||||
APPEND_ENTITY_PROPERTY(PROP_SPECULAR_COLOR, appendColor, properties.getSpecularColor());
|
||||
APPEND_ENTITY_PROPERTY(PROP_CONSTANT_ATTENUATION, appendValue, properties.getConstantAttenuation());
|
||||
|
@ -644,6 +646,7 @@ bool EntityItemProperties::decodeEntityEditPacket(const unsigned char* data, int
|
|||
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_IGNORE_FOR_COLLISIONS, bool, setIgnoreForCollisions);
|
||||
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_COLLISIONS_WILL_MOVE, bool, setCollisionsWillMove);
|
||||
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_IS_SPOTLIGHT, bool, setIsSpotlight);
|
||||
READ_ENTITY_PROPERTY_COLOR_TO_PROPERTIES(PROP_DIFFUSE_COLOR, setDiffuseColor);
|
||||
READ_ENTITY_PROPERTY_COLOR_TO_PROPERTIES(PROP_AMBIENT_COLOR, setAmbientColor);
|
||||
READ_ENTITY_PROPERTY_COLOR_TO_PROPERTIES(PROP_SPECULAR_COLOR, setSpecularColor);
|
||||
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_CONSTANT_ATTENUATION, float, setConstantAttenuation);
|
||||
|
@ -707,6 +710,7 @@ void EntityItemProperties::markAllChanged() {
|
|||
_localRenderAlphaChanged = true;
|
||||
_isSpotlightChanged = true;
|
||||
|
||||
_diffuseColorChanged = true;
|
||||
_ambientColorChanged = true;
|
||||
_specularColorChanged = true;
|
||||
_constantAttenuationChanged = true;
|
||||
|
|
|
@ -51,7 +51,6 @@ enum EntityPropertyList {
|
|||
|
||||
// these properties are supported by some derived classes
|
||||
PROP_COLOR,
|
||||
PROP_DIFFUSE_COLOR = PROP_COLOR, // used by light class
|
||||
PROP_MODEL_URL,
|
||||
PROP_ANIMATION_URL,
|
||||
PROP_ANIMATION_FPS,
|
||||
|
@ -67,6 +66,7 @@ enum EntityPropertyList {
|
|||
|
||||
// property used by Light entity
|
||||
PROP_IS_SPOTLIGHT,
|
||||
PROP_DIFFUSE_COLOR,
|
||||
PROP_AMBIENT_COLOR,
|
||||
PROP_SPECULAR_COLOR,
|
||||
PROP_CONSTANT_ATTENUATION,
|
||||
|
@ -246,16 +246,11 @@ public:
|
|||
bool getIsSpotlight() const { return _isSpotlight; }
|
||||
void setIsSpotlight(bool value) { _isSpotlight = value; _isSpotlightChanged = true; }
|
||||
|
||||
// total hack for now
|
||||
//void setDiffuseColor(const xColor& value) { setColor(value); }
|
||||
//void setAmbientColor(const xColor& value) { setColor(value); }
|
||||
//void setSpecularColor(const xColor& value) { setColor(value); }
|
||||
|
||||
xColor getDiffuseColor() const { return _color; } // diffuseColor is an alias for color
|
||||
xColor getDiffuseColor() const { return _diffuseColor; }
|
||||
xColor getAmbientColor() const { return _ambientColor; }
|
||||
xColor getSpecularColor() const { return _specularColor; }
|
||||
|
||||
void setDiffuseColor(const xColor& value) { _color = value; _colorChanged = true; }
|
||||
void setDiffuseColor(const xColor& value) { _diffuseColor = value; _diffuseColorChanged = true; }
|
||||
void setAmbientColor(const xColor& value) { _ambientColor = value; _ambientColorChanged = true; }
|
||||
void setSpecularColor(const xColor& value) { _specularColor = value; _specularColorChanged = true; }
|
||||
|
||||
|
@ -345,6 +340,7 @@ private:
|
|||
bool _localRenderAlphaChanged;
|
||||
bool _isSpotlightChanged;
|
||||
|
||||
xColor _diffuseColor;
|
||||
xColor _ambientColor;
|
||||
xColor _specularColor;
|
||||
float _constantAttenuation;
|
||||
|
@ -353,6 +349,7 @@ private:
|
|||
float _exponent;
|
||||
float _cutoff;
|
||||
|
||||
bool _diffuseColorChanged;
|
||||
bool _ambientColorChanged;
|
||||
bool _specularColorChanged;
|
||||
bool _constantAttenuationChanged;
|
||||
|
|
|
@ -67,8 +67,7 @@ bool LightEntityItem::setProperties(const EntityItemProperties& properties, bool
|
|||
bool somethingChanged = EntityItem::setProperties(properties, forceCopy); // set the properties in our base class
|
||||
|
||||
SET_ENTITY_PROPERTY_FROM_PROPERTIES(isSpotlight, setIsSpotlight);
|
||||
SET_ENTITY_PROPERTY_FROM_PROPERTIES(color, setDiffuseColor);
|
||||
//SET_ENTITY_PROPERTY_FROM_PROPERTIES(diffuseColor, setDiffuseColor);
|
||||
SET_ENTITY_PROPERTY_FROM_PROPERTIES(diffuseColor, setDiffuseColor);
|
||||
SET_ENTITY_PROPERTY_FROM_PROPERTIES(ambientColor, setAmbientColor);
|
||||
SET_ENTITY_PROPERTY_FROM_PROPERTIES(specularColor, setSpecularColor);
|
||||
SET_ENTITY_PROPERTY_FROM_PROPERTIES(isSpotlight, setIsSpotlight);
|
||||
|
@ -103,6 +102,11 @@ int LightEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data,
|
|||
READ_ENTITY_PROPERTY_COLOR(PROP_DIFFUSE_COLOR, _diffuseColor);
|
||||
READ_ENTITY_PROPERTY_COLOR(PROP_AMBIENT_COLOR, _ambientColor);
|
||||
READ_ENTITY_PROPERTY_COLOR(PROP_SPECULAR_COLOR, _specularColor);
|
||||
READ_ENTITY_PROPERTY(PROP_CONSTANT_ATTENUATION, float, _constantAttenuation);
|
||||
READ_ENTITY_PROPERTY(PROP_LINEAR_ATTENUATION, float, _linearAttenuation);
|
||||
READ_ENTITY_PROPERTY(PROP_QUADRATIC_ATTENUATION, float, _quadraticAttenuation);
|
||||
READ_ENTITY_PROPERTY(PROP_EXPONENT, float, _exponent);
|
||||
READ_ENTITY_PROPERTY(PROP_CUTOFF, float, _cutoff);
|
||||
|
||||
return bytesRead;
|
||||
}
|
||||
|
@ -111,8 +115,15 @@ int LightEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data,
|
|||
// TODO: eventually only include properties changed since the params.lastViewFrustumSent time
|
||||
EntityPropertyFlags LightEntityItem::getEntityProperties(EncodeBitstreamParams& params) const {
|
||||
EntityPropertyFlags requestedProperties = EntityItem::getEntityProperties(params);
|
||||
requestedProperties += PROP_COLOR;
|
||||
requestedProperties += PROP_IS_SPOTLIGHT;
|
||||
requestedProperties += PROP_DIFFUSE_COLOR;
|
||||
requestedProperties += PROP_AMBIENT_COLOR;
|
||||
requestedProperties += PROP_SPECULAR_COLOR;
|
||||
requestedProperties += PROP_CONSTANT_ATTENUATION;
|
||||
requestedProperties += PROP_LINEAR_ATTENUATION;
|
||||
requestedProperties += PROP_QUADRATIC_ATTENUATION;
|
||||
requestedProperties += PROP_EXPONENT;
|
||||
requestedProperties += PROP_CUTOFF;
|
||||
return requestedProperties;
|
||||
}
|
||||
|
||||
|
@ -129,4 +140,9 @@ void LightEntityItem::appendSubclassData(OctreePacketData* packetData, EncodeBit
|
|||
APPEND_ENTITY_PROPERTY(PROP_DIFFUSE_COLOR, appendColor, getDiffuseColor());
|
||||
APPEND_ENTITY_PROPERTY(PROP_AMBIENT_COLOR, appendColor, getAmbientColor());
|
||||
APPEND_ENTITY_PROPERTY(PROP_SPECULAR_COLOR, appendColor, getSpecularColor());
|
||||
APPEND_ENTITY_PROPERTY(PROP_CONSTANT_ATTENUATION, appendValue, getConstantAttenuation());
|
||||
APPEND_ENTITY_PROPERTY(PROP_LINEAR_ATTENUATION, appendValue, getLinearAttenuation());
|
||||
APPEND_ENTITY_PROPERTY(PROP_QUADRATIC_ATTENUATION, appendValue, getQuadraticAttenuation());
|
||||
APPEND_ENTITY_PROPERTY(PROP_EXPONENT, appendValue, getExponent());
|
||||
APPEND_ENTITY_PROPERTY(PROP_CUTOFF, appendValue, getCutoff());
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue