mirror of
https://github.com/AleziaKurdis/overte.git
synced 2025-04-07 09:52:36 +02:00
commit
e4d17f45cf
10 changed files with 62 additions and 16 deletions
|
@ -65,6 +65,13 @@ void ShapeEntityRenderer::doRenderUpdateAsynchronousTyped(const TypedEntityPoint
|
|||
materialChanged = true;
|
||||
}
|
||||
|
||||
bool unlit = entity->getUnlit();
|
||||
if (_unlit != unlit) {
|
||||
_unlit = unlit;
|
||||
_material->setUnlit(unlit);
|
||||
materialChanged = true;
|
||||
}
|
||||
|
||||
auto userData = entity->getUserData();
|
||||
if (_proceduralData != userData) {
|
||||
_proceduralData = userData;
|
||||
|
|
|
@ -42,6 +42,7 @@ private:
|
|||
std::shared_ptr<graphics::ProceduralMaterial> _material { std::make_shared<graphics::ProceduralMaterial>() };
|
||||
glm::vec3 _color { NAN };
|
||||
float _alpha { NAN };
|
||||
bool _unlit { false };
|
||||
|
||||
gpu::BufferPointer _colorBuffer { std::make_shared<gpu::Buffer>() };
|
||||
};
|
||||
|
|
|
@ -536,6 +536,7 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const {
|
|||
CHECK_PROPERTY_CHANGE(PROP_COMPOUND_SHAPE_URL, compoundShapeURL);
|
||||
CHECK_PROPERTY_CHANGE(PROP_COLOR, color);
|
||||
CHECK_PROPERTY_CHANGE(PROP_ALPHA, alpha);
|
||||
CHECK_PROPERTY_CHANGE(PROP_UNLIT, unlit);
|
||||
changedProperties += _pulse.getChangedProperties();
|
||||
CHECK_PROPERTY_CHANGE(PROP_TEXTURES, textures);
|
||||
|
||||
|
@ -611,7 +612,6 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const {
|
|||
CHECK_PROPERTY_CHANGE(PROP_RIGHT_MARGIN, rightMargin);
|
||||
CHECK_PROPERTY_CHANGE(PROP_TOP_MARGIN, topMargin);
|
||||
CHECK_PROPERTY_CHANGE(PROP_BOTTOM_MARGIN, bottomMargin);
|
||||
CHECK_PROPERTY_CHANGE(PROP_UNLIT, unlit);
|
||||
CHECK_PROPERTY_CHANGE(PROP_FONT, font);
|
||||
CHECK_PROPERTY_CHANGE(PROP_TEXT_EFFECT, textEffect);
|
||||
CHECK_PROPERTY_CHANGE(PROP_TEXT_EFFECT_COLOR, textEffectColor);
|
||||
|
@ -1386,6 +1386,8 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const {
|
|||
* @property {Vec3} dimensions=0.1,0.1,0.1 - The dimensions of the entity.
|
||||
* @property {Color} color=255,255,255 - The color of the entity.
|
||||
* @property {number} alpha=1 - The opacity of the entity, range <code>0.0</code> – <code>1.0</code>.
|
||||
* @property {boolean} unlit=false - <code>true</code> if the entity is unaffected by lighting, <code>false</code> if it is lit
|
||||
* by the key light and local lights.
|
||||
* @property {Entities.Pulse} pulse - Color and alpha pulse.
|
||||
* <p class="important">Deprecated: This property is deprecated and will be removed.</p>
|
||||
* @example <caption>Create a cylinder.</caption>
|
||||
|
@ -1861,6 +1863,7 @@ ScriptValue EntityItemProperties::copyToScriptValue(ScriptEngine* engine, bool s
|
|||
if (_type == EntityTypes::Box || _type == EntityTypes::Sphere || _type == EntityTypes::Shape) {
|
||||
COPY_PROPERTY_TO_QSCRIPTVALUE_TYPED(PROP_COLOR, color, u8vec3Color);
|
||||
COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_ALPHA, alpha);
|
||||
COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_UNLIT, unlit);
|
||||
_pulse.copyToScriptValue(_desiredProperties, properties, engine, skipDefaults, defaultEntityProperties, returnNothingOnEmptyPropertyFlags, isMyOwnAvatarEntity);
|
||||
COPY_PROPERTY_TO_QSCRIPTVALUE(PROP_SHAPE, shape);
|
||||
}
|
||||
|
@ -2205,6 +2208,7 @@ void EntityItemProperties::copyFromScriptValue(const ScriptValue& object, bool h
|
|||
COPY_PROPERTY_FROM_QSCRIPTVALUE(compoundShapeURL, QString, setCompoundShapeURL);
|
||||
COPY_PROPERTY_FROM_QSCRIPTVALUE(color, u8vec3Color, setColor);
|
||||
COPY_PROPERTY_FROM_QSCRIPTVALUE(alpha, float, setAlpha);
|
||||
COPY_PROPERTY_FROM_QSCRIPTVALUE(unlit, bool, setUnlit);
|
||||
_pulse.copyFromScriptValue(object, namesSet, _defaultSettings);
|
||||
COPY_PROPERTY_FROM_QSCRIPTVALUE(textures, QString, setTextures);
|
||||
|
||||
|
@ -2280,7 +2284,6 @@ void EntityItemProperties::copyFromScriptValue(const ScriptValue& object, bool h
|
|||
COPY_PROPERTY_FROM_QSCRIPTVALUE(rightMargin, float, setRightMargin);
|
||||
COPY_PROPERTY_FROM_QSCRIPTVALUE(topMargin, float, setTopMargin);
|
||||
COPY_PROPERTY_FROM_QSCRIPTVALUE(bottomMargin, float, setBottomMargin);
|
||||
COPY_PROPERTY_FROM_QSCRIPTVALUE(unlit, bool, setUnlit);
|
||||
COPY_PROPERTY_FROM_QSCRIPTVALUE(font, QString, setFont);
|
||||
COPY_PROPERTY_FROM_QSCRIPTVALUE_ENUM(textEffect, TextEffect);
|
||||
COPY_PROPERTY_FROM_QSCRIPTVALUE(textEffectColor, u8vec3Color, setTextEffectColor);
|
||||
|
@ -2499,6 +2502,7 @@ void EntityItemProperties::merge(const EntityItemProperties& other) {
|
|||
COPY_PROPERTY_IF_CHANGED(compoundShapeURL);
|
||||
COPY_PROPERTY_IF_CHANGED(color);
|
||||
COPY_PROPERTY_IF_CHANGED(alpha);
|
||||
COPY_PROPERTY_IF_CHANGED(unlit);
|
||||
_pulse.merge(other._pulse);
|
||||
COPY_PROPERTY_IF_CHANGED(textures);
|
||||
|
||||
|
@ -2574,7 +2578,6 @@ void EntityItemProperties::merge(const EntityItemProperties& other) {
|
|||
COPY_PROPERTY_IF_CHANGED(rightMargin);
|
||||
COPY_PROPERTY_IF_CHANGED(topMargin);
|
||||
COPY_PROPERTY_IF_CHANGED(bottomMargin);
|
||||
COPY_PROPERTY_IF_CHANGED(unlit);
|
||||
COPY_PROPERTY_IF_CHANGED(font);
|
||||
COPY_PROPERTY_IF_CHANGED(textEffect);
|
||||
COPY_PROPERTY_IF_CHANGED(textEffectColor);
|
||||
|
@ -2830,6 +2833,7 @@ bool EntityItemProperties::getPropertyInfo(const QString& propertyName, EntityPr
|
|||
ADD_PROPERTY_TO_MAP(PROP_COMPOUND_SHAPE_URL, CompoundShapeURL, compoundShapeURL, QString);
|
||||
ADD_PROPERTY_TO_MAP(PROP_COLOR, Color, color, u8vec3Color);
|
||||
ADD_PROPERTY_TO_MAP_WITH_RANGE(PROP_ALPHA, Alpha, alpha, float, particle::MINIMUM_ALPHA, particle::MAXIMUM_ALPHA);
|
||||
ADD_PROPERTY_TO_MAP(PROP_UNLIT, Unlit, unlit, bool);
|
||||
{ // Pulse
|
||||
ADD_GROUP_PROPERTY_TO_MAP(PROP_PULSE_MIN, Pulse, pulse, Min, min);
|
||||
ADD_GROUP_PROPERTY_TO_MAP(PROP_PULSE_MAX, Pulse, pulse, Max, max);
|
||||
|
@ -2950,7 +2954,6 @@ bool EntityItemProperties::getPropertyInfo(const QString& propertyName, EntityPr
|
|||
ADD_PROPERTY_TO_MAP(PROP_RIGHT_MARGIN, RightMargin, rightMargin, float);
|
||||
ADD_PROPERTY_TO_MAP(PROP_TOP_MARGIN, TopMargin, topMargin, float);
|
||||
ADD_PROPERTY_TO_MAP(PROP_BOTTOM_MARGIN, BottomMargin, bottomMargin, float);
|
||||
ADD_PROPERTY_TO_MAP(PROP_UNLIT, Unlit, unlit, bool);
|
||||
ADD_PROPERTY_TO_MAP(PROP_FONT, Font, font, QString);
|
||||
ADD_PROPERTY_TO_MAP(PROP_TEXT_EFFECT, TextEffect, textEffect, TextEffect);
|
||||
ADD_PROPERTY_TO_MAP(PROP_TEXT_EFFECT_COLOR, TextEffectColor, textEffectColor, u8vec3Color);
|
||||
|
@ -3502,6 +3505,7 @@ OctreeElement::AppendState EntityItemProperties::encodeEntityEditPacket(PacketTy
|
|||
properties.getType() == EntityTypes::Sphere) {
|
||||
APPEND_ENTITY_PROPERTY(PROP_COLOR, properties.getColor());
|
||||
APPEND_ENTITY_PROPERTY(PROP_ALPHA, properties.getAlpha());
|
||||
APPEND_ENTITY_PROPERTY(PROP_UNLIT, properties.getUnlit());
|
||||
_staticPulse.setProperties(properties);
|
||||
_staticPulse.appendToEditPacket(packetData, requestedProperties, propertyFlags,
|
||||
propertiesDidntFit, propertyCount, appendState);
|
||||
|
@ -3979,6 +3983,7 @@ bool EntityItemProperties::decodeEntityEditPacket(const unsigned char* data, int
|
|||
properties.getType() == EntityTypes::Sphere) {
|
||||
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_COLOR, u8vec3Color, setColor);
|
||||
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_ALPHA, float, setAlpha);
|
||||
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_UNLIT, bool, setUnlit);
|
||||
properties.getPulse().decodeFromEditPacket(propertyFlags, dataAt, processedBytes);
|
||||
|
||||
READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_SHAPE, QString, setShape);
|
||||
|
@ -4200,6 +4205,7 @@ void EntityItemProperties::markAllChanged() {
|
|||
_compoundShapeURLChanged = true;
|
||||
_colorChanged = true;
|
||||
_alphaChanged = true;
|
||||
_unlitChanged = true;
|
||||
_pulse.markAllChanged();
|
||||
_texturesChanged = true;
|
||||
|
||||
|
@ -4275,7 +4281,6 @@ void EntityItemProperties::markAllChanged() {
|
|||
_rightMarginChanged = true;
|
||||
_topMarginChanged = true;
|
||||
_bottomMarginChanged = true;
|
||||
_unlitChanged = true;
|
||||
_fontChanged = true;
|
||||
_textEffectChanged = true;
|
||||
_textEffectColorChanged = true;
|
||||
|
@ -4674,6 +4679,9 @@ QList<QString> EntityItemProperties::listChangedProperties() {
|
|||
if (alphaChanged()) {
|
||||
out += "alpha";
|
||||
}
|
||||
if (unlitChanged()) {
|
||||
out += "unlit";
|
||||
}
|
||||
getPulse().listChangedProperties(out);
|
||||
if (texturesChanged()) {
|
||||
out += "textures";
|
||||
|
@ -4875,9 +4883,6 @@ QList<QString> EntityItemProperties::listChangedProperties() {
|
|||
if (bottomMarginChanged()) {
|
||||
out += "bottomMargin";
|
||||
}
|
||||
if (unlitChanged()) {
|
||||
out += "unlit";
|
||||
}
|
||||
if (fontChanged()) {
|
||||
out += "font";
|
||||
}
|
||||
|
|
|
@ -254,6 +254,7 @@ public:
|
|||
DEFINE_PROPERTY_REF(PROP_COMPOUND_SHAPE_URL, CompoundShapeURL, compoundShapeURL, QString, "");
|
||||
DEFINE_PROPERTY_REF(PROP_COLOR, Color, color, u8vec3Color, ENTITY_ITEM_DEFAULT_COLOR);
|
||||
DEFINE_PROPERTY(PROP_ALPHA, Alpha, alpha, float, ENTITY_ITEM_DEFAULT_ALPHA);
|
||||
DEFINE_PROPERTY_REF(PROP_UNLIT, Unlit, unlit, bool, false);
|
||||
DEFINE_PROPERTY_GROUP(Pulse, pulse, PulsePropertyGroup);
|
||||
DEFINE_PROPERTY_REF(PROP_TEXTURES, Textures, textures, QString, "");
|
||||
|
||||
|
@ -329,7 +330,6 @@ public:
|
|||
DEFINE_PROPERTY_REF(PROP_RIGHT_MARGIN, RightMargin, rightMargin, float, TextEntityItem::DEFAULT_MARGIN);
|
||||
DEFINE_PROPERTY_REF(PROP_TOP_MARGIN, TopMargin, topMargin, float, TextEntityItem::DEFAULT_MARGIN);
|
||||
DEFINE_PROPERTY_REF(PROP_BOTTOM_MARGIN, BottomMargin, bottomMargin, float, TextEntityItem::DEFAULT_MARGIN);
|
||||
DEFINE_PROPERTY_REF(PROP_UNLIT, Unlit, unlit, bool, false);
|
||||
DEFINE_PROPERTY_REF(PROP_FONT, Font, font, QString, ROBOTO_FONT_FAMILY);
|
||||
DEFINE_PROPERTY_REF_ENUM(PROP_TEXT_EFFECT, TextEffect, textEffect, TextEffect, TextEffect::NO_EFFECT);
|
||||
DEFINE_PROPERTY_REF(PROP_TEXT_EFFECT_COLOR, TextEffectColor, textEffectColor, u8vec3Color, TextEntityItem::DEFAULT_TEXT_COLOR);
|
||||
|
|
|
@ -121,6 +121,7 @@ enum EntityPropertyList {
|
|||
PROP_COMPOUND_SHAPE_URL,
|
||||
PROP_COLOR,
|
||||
PROP_ALPHA,
|
||||
PROP_UNLIT,
|
||||
PROP_PULSE_MIN,
|
||||
PROP_PULSE_MAX,
|
||||
PROP_PULSE_PERIOD,
|
||||
|
@ -266,12 +267,11 @@ enum EntityPropertyList {
|
|||
PROP_RIGHT_MARGIN = PROP_DERIVED_7,
|
||||
PROP_TOP_MARGIN = PROP_DERIVED_8,
|
||||
PROP_BOTTOM_MARGIN = PROP_DERIVED_9,
|
||||
PROP_UNLIT = PROP_DERIVED_10,
|
||||
PROP_FONT = PROP_DERIVED_11,
|
||||
PROP_TEXT_EFFECT = PROP_DERIVED_12,
|
||||
PROP_TEXT_EFFECT_COLOR = PROP_DERIVED_13,
|
||||
PROP_TEXT_EFFECT_THICKNESS = PROP_DERIVED_14,
|
||||
PROP_TEXT_ALIGNMENT = PROP_DERIVED_15,
|
||||
PROP_FONT = PROP_DERIVED_10,
|
||||
PROP_TEXT_EFFECT = PROP_DERIVED_11,
|
||||
PROP_TEXT_EFFECT_COLOR = PROP_DERIVED_12,
|
||||
PROP_TEXT_EFFECT_THICKNESS = PROP_DERIVED_13,
|
||||
PROP_TEXT_ALIGNMENT = PROP_DERIVED_14,
|
||||
|
||||
// Zone
|
||||
// Keylight
|
||||
|
|
|
@ -119,6 +119,7 @@ EntityItemProperties ShapeEntityItem::getProperties(const EntityPropertyFlags& d
|
|||
|
||||
COPY_ENTITY_PROPERTY_TO_PROPERTIES(color, getColor);
|
||||
COPY_ENTITY_PROPERTY_TO_PROPERTIES(alpha, getAlpha);
|
||||
COPY_ENTITY_PROPERTY_TO_PROPERTIES(unlit, getUnlit);
|
||||
withReadLock([&] {
|
||||
_pulseProperties.getProperties(properties);
|
||||
});
|
||||
|
@ -170,6 +171,7 @@ bool ShapeEntityItem::setSubClassProperties(const EntityItemProperties& properti
|
|||
|
||||
SET_ENTITY_PROPERTY_FROM_PROPERTIES(color, setColor);
|
||||
SET_ENTITY_PROPERTY_FROM_PROPERTIES(alpha, setAlpha);
|
||||
SET_ENTITY_PROPERTY_FROM_PROPERTIES(unlit, setUnlit);
|
||||
withWriteLock([&] {
|
||||
bool pulsePropertiesChanged = _pulseProperties.setProperties(properties);
|
||||
somethingChanged |= pulsePropertiesChanged;
|
||||
|
@ -190,6 +192,7 @@ int ShapeEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data,
|
|||
|
||||
READ_ENTITY_PROPERTY(PROP_COLOR, glm::u8vec3, setColor);
|
||||
READ_ENTITY_PROPERTY(PROP_ALPHA, float, setAlpha);
|
||||
READ_ENTITY_PROPERTY(PROP_UNLIT, bool, setUnlit);
|
||||
withWriteLock([&] {
|
||||
int bytesFromPulse = _pulseProperties.readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args,
|
||||
propertyFlags, overwriteLocalData,
|
||||
|
@ -206,6 +209,7 @@ EntityPropertyFlags ShapeEntityItem::getEntityProperties(EncodeBitstreamParams&
|
|||
EntityPropertyFlags requestedProperties = EntityItem::getEntityProperties(params);
|
||||
requestedProperties += PROP_COLOR;
|
||||
requestedProperties += PROP_ALPHA;
|
||||
requestedProperties += PROP_UNLIT;
|
||||
requestedProperties += _pulseProperties.getEntityProperties(params);
|
||||
requestedProperties += PROP_SHAPE;
|
||||
return requestedProperties;
|
||||
|
@ -222,6 +226,7 @@ void ShapeEntityItem::appendSubclassData(OctreePacketData* packetData, EncodeBit
|
|||
bool successPropertyFits = true;
|
||||
APPEND_ENTITY_PROPERTY(PROP_COLOR, getColor());
|
||||
APPEND_ENTITY_PROPERTY(PROP_ALPHA, getAlpha());
|
||||
APPEND_ENTITY_PROPERTY(PROP_UNLIT, getUnlit());
|
||||
withReadLock([&] {
|
||||
_pulseProperties.appendSubclassData(packetData, params, entityTreeElementExtraEncodeData, requestedProperties,
|
||||
propertyFlags, propertiesDidntFit, propertyCount, appendState);
|
||||
|
@ -255,6 +260,19 @@ float ShapeEntityItem::getAlpha() const {
|
|||
});
|
||||
}
|
||||
|
||||
void ShapeEntityItem::setUnlit(bool unlit) {
|
||||
withWriteLock([&] {
|
||||
_needsRenderUpdate |= _unlit != unlit;
|
||||
_unlit = unlit;
|
||||
});
|
||||
}
|
||||
|
||||
bool ShapeEntityItem::getUnlit() const {
|
||||
return resultWithReadLock<bool>([&] {
|
||||
return _unlit;
|
||||
});
|
||||
}
|
||||
|
||||
void ShapeEntityItem::setUnscaledDimensions(const glm::vec3& value) {
|
||||
const float MAX_FLAT_DIMENSION = 0.0001f;
|
||||
const auto shape = getShape();
|
||||
|
@ -468,4 +486,4 @@ void ShapeEntityItem::setUserData(const QString& value) {
|
|||
_needsRenderUpdate |= _userData != value;
|
||||
_userData = value;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -82,6 +82,9 @@ public:
|
|||
glm::u8vec3 getColor() const;
|
||||
void setColor(const glm::u8vec3& value);
|
||||
|
||||
bool getUnlit() const;
|
||||
void setUnlit(bool unlit);
|
||||
|
||||
void setUnscaledDimensions(const glm::vec3& value) override;
|
||||
|
||||
bool supportsDetailedIntersection() const override;
|
||||
|
@ -107,6 +110,7 @@ public:
|
|||
protected:
|
||||
glm::u8vec3 _color;
|
||||
float _alpha { 1.0f };
|
||||
bool _unlit { false };
|
||||
PulsePropertyGroup _pulseProperties;
|
||||
entity::Shape _shape { entity::Shape::Sphere };
|
||||
|
||||
|
|
|
@ -296,6 +296,7 @@ enum class EntityVersion : PacketVersion {
|
|||
AudioZones,
|
||||
AnimationSmoothFrames,
|
||||
ProceduralParticles,
|
||||
ShapeUnlit,
|
||||
|
||||
// Add new versions above here
|
||||
NUM_PACKET_TYPE,
|
||||
|
|
|
@ -8,6 +8,10 @@
|
|||
"shapeAlpha": {
|
||||
"tooltip": "The opacity of the entity between 0.0 fully transparent and 1.0 completely opaque."
|
||||
},
|
||||
"shapeUnlit": {
|
||||
"tooltip": "If enabled, the entity will not be lit by the keylight or local lights.",
|
||||
"jsPropertyName": "unlit"
|
||||
},
|
||||
"text": {
|
||||
"tooltip": "The text to display on the entity."
|
||||
},
|
||||
|
|
|
@ -178,6 +178,12 @@ const GROUPS = [
|
|||
propertyID: "shapeAlpha",
|
||||
propertyName: "alpha",
|
||||
},
|
||||
{
|
||||
label: "Unlit",
|
||||
type: "bool",
|
||||
propertyID: "shapeUnlit",
|
||||
propertyName: "unlit"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue