mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-05 02:37:08 +02:00
Added range and altitude to UI.
This commit is contained in:
parent
1a9625d272
commit
27af4685e7
10 changed files with 98 additions and 22 deletions
|
@ -1073,7 +1073,8 @@ void EntityItemProperties::entityPropertyFlagsFromScriptValue(const QScriptValue
|
|||
ADD_GROUP_PROPERTY_TO_MAP(PROP_SKYBOX_COLOR, Skybox, skybox, Color, color);
|
||||
ADD_GROUP_PROPERTY_TO_MAP(PROP_SKYBOX_URL, Skybox, skybox, URL, url);
|
||||
|
||||
ADD_GROUP_PROPERTY_TO_MAP(PROP_HAZE_HAZE_ACTIVE, Haze, haze, HazeActive, hazeActive);
|
||||
ADD_GROUP_PROPERTY_TO_MAP(PROP_HAZE_HAZE_RANGE, Haze, haze, HazeRange, hazeRange);
|
||||
ADD_GROUP_PROPERTY_TO_MAP(PROP_HAZE_HAZE_ALTITUDE, Haze, haze, HazeAltitude, hazeAltitude);
|
||||
|
||||
ADD_GROUP_PROPERTY_TO_MAP(PROP_STAGE_SUN_MODEL_ENABLED, Stage, stage, SunModelEnabled, sunModelEnabled);
|
||||
ADD_GROUP_PROPERTY_TO_MAP(PROP_STAGE_LATITUDE, Stage, stage, Latitude, latitude);
|
||||
|
|
|
@ -219,10 +219,11 @@ enum EntityPropertyList {
|
|||
PROP_STAGE_HOUR = PROP_QUADRATIC_ATTENUATION_UNUSED,
|
||||
PROP_STAGE_AUTOMATIC_HOURDAY = PROP_ANIMATION_FRAME_INDEX,
|
||||
PROP_BACKGROUND_MODE = PROP_MODEL_URL,
|
||||
PROP_HAZE_MODE = PROP_MODEL_URL,
|
||||
PROP_HAZE_MODE = PROP_COLOR,
|
||||
PROP_HAZE_HAZE_RANGE = PROP_INTENSITY,
|
||||
PROP_HAZE_HAZE_ALTITUDE = PROP_CUTOFF,
|
||||
PROP_SKYBOX_COLOR = PROP_ANIMATION_URL,
|
||||
PROP_SKYBOX_URL = PROP_ANIMATION_FPS,
|
||||
PROP_HAZE_HAZE_ACTIVE = PROP_ANIMATION_FRAME_INDEX,
|
||||
PROP_KEYLIGHT_AMBIENT_URL = PROP_ANIMATION_PLAYING,
|
||||
|
||||
// Aliases/Piggyback properties for Web. These properties intentionally reuse the enum values for
|
||||
|
|
|
@ -15,27 +15,40 @@
|
|||
#include "EntityItemProperties.h"
|
||||
#include "EntityItemPropertiesMacros.h"
|
||||
|
||||
const float HazePropertyGroup::DEFAULT_HAZE_RANGE = 1000.0f;
|
||||
const float HazePropertyGroup::DEFAULT_HAZE_ALTITUDE = 200.0f;
|
||||
|
||||
void HazePropertyGroup::copyToScriptValue(const EntityPropertyFlags& desiredProperties, QScriptValue& properties, QScriptEngine* engine, bool skipDefaults, EntityItemProperties& defaultEntityProperties) const {
|
||||
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_HAZE_HAZE_ACTIVE, Haze, haze, HazeActive, hazeActive);
|
||||
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_HAZE_HAZE_RANGE, Haze, haze, HazeRange, hazeRange);
|
||||
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_HAZE_HAZE_ALTITUDE, Haze, haze, HazeAltitude, hazeAltitude);
|
||||
}
|
||||
|
||||
void HazePropertyGroup::copyFromScriptValue(const QScriptValue& object, bool& _defaultSettings) {
|
||||
COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(haze, hazeActive, bool, setHazeActive);
|
||||
COPY_PROPERTY_FROM_QSCRIPTVALUE_GETTER(hazeHazeRange, float, setHazeRange, getHazeRange);
|
||||
COPY_PROPERTY_FROM_QSCRIPTVALUE_GETTER(hazeHazeAltitude, float, setHazeAltitude, getHazeAltitude);
|
||||
|
||||
COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(haze, hazeRange, float, setHazeRange);
|
||||
COPY_GROUP_PROPERTY_FROM_QSCRIPTVALUE(haze, hazeAltitude, float, setHazeAltitude);
|
||||
}
|
||||
|
||||
void HazePropertyGroup::merge(const HazePropertyGroup& other) {
|
||||
COPY_PROPERTY_IF_CHANGED(hazeActive);
|
||||
COPY_PROPERTY_IF_CHANGED(hazeRange);
|
||||
COPY_PROPERTY_IF_CHANGED(hazeAltitude);
|
||||
}
|
||||
|
||||
|
||||
void HazePropertyGroup::debugDump() const {
|
||||
qCDebug(entities) << " HazePropertyGroup: ---------------------------------------------";
|
||||
qCDebug(entities) << " HazeActive :" << getHazeActive() << " has changed:" << hazeActiveChanged();
|
||||
qCDebug(entities) << " _hazeRange:" << _hazeRange;
|
||||
qCDebug(entities) << " _hazeAltitude:" << _hazeAltitude;
|
||||
}
|
||||
|
||||
void HazePropertyGroup::listChangedProperties(QList<QString>& out) {
|
||||
if (hazeActiveChanged()) {
|
||||
out << "haze-hazeActive";
|
||||
if (hazeRangeChanged()) {
|
||||
out << "haze-range";
|
||||
}
|
||||
if (hazeAltitudeChanged()) {
|
||||
out << "haze-altitude";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -48,7 +61,8 @@ bool HazePropertyGroup::appendToEditPacket(OctreePacketData* packetData,
|
|||
|
||||
bool successPropertyFits = true;
|
||||
|
||||
APPEND_ENTITY_PROPERTY(PROP_HAZE_HAZE_ACTIVE, getHazeActive());
|
||||
APPEND_ENTITY_PROPERTY(PROP_HAZE_HAZE_RANGE, getHazeRange());
|
||||
APPEND_ENTITY_PROPERTY(PROP_HAZE_HAZE_ALTITUDE, getHazeAltitude());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -60,9 +74,11 @@ bool HazePropertyGroup::decodeFromEditPacket(EntityPropertyFlags& propertyFlags,
|
|||
bool overwriteLocalData = true;
|
||||
bool somethingChanged = false;
|
||||
|
||||
READ_ENTITY_PROPERTY(PROP_HAZE_HAZE_ACTIVE, bool, setHazeActive);
|
||||
READ_ENTITY_PROPERTY(PROP_HAZE_HAZE_RANGE, float, setHazeRange);
|
||||
READ_ENTITY_PROPERTY(PROP_HAZE_HAZE_ALTITUDE, float, setHazeAltitude);
|
||||
|
||||
DECODE_GROUP_PROPERTY_HAS_CHANGED(PROP_HAZE_HAZE_ACTIVE, HazeActive);
|
||||
DECODE_GROUP_PROPERTY_HAS_CHANGED(PROP_HAZE_HAZE_RANGE, HazeRange);
|
||||
DECODE_GROUP_PROPERTY_HAS_CHANGED(PROP_HAZE_HAZE_ALTITUDE, HazeAltitude);
|
||||
|
||||
processedBytes += bytesRead;
|
||||
|
||||
|
@ -72,25 +88,29 @@ bool HazePropertyGroup::decodeFromEditPacket(EntityPropertyFlags& propertyFlags,
|
|||
}
|
||||
|
||||
void HazePropertyGroup::markAllChanged() {
|
||||
_hazeActiveChanged = true;
|
||||
_hazeRangeChanged = true;
|
||||
_hazeAltitudeChanged = true;
|
||||
}
|
||||
|
||||
EntityPropertyFlags HazePropertyGroup::getChangedProperties() const {
|
||||
EntityPropertyFlags changedProperties;
|
||||
|
||||
CHECK_PROPERTY_CHANGE(PROP_HAZE_HAZE_ACTIVE, hazeActive);
|
||||
CHECK_PROPERTY_CHANGE(PROP_HAZE_HAZE_RANGE, hazeRange);
|
||||
CHECK_PROPERTY_CHANGE(PROP_HAZE_HAZE_ALTITUDE, hazeAltitude);
|
||||
|
||||
return changedProperties;
|
||||
}
|
||||
|
||||
void HazePropertyGroup::getProperties(EntityItemProperties& properties) const {
|
||||
COPY_ENTITY_GROUP_PROPERTY_TO_PROPERTIES(Haze, HazeActive, getHazeActive);
|
||||
COPY_ENTITY_GROUP_PROPERTY_TO_PROPERTIES(Haze, HazeRange, getHazeRange);
|
||||
COPY_ENTITY_GROUP_PROPERTY_TO_PROPERTIES(Haze, HazeAltitude, getHazeAltitude);
|
||||
}
|
||||
|
||||
bool HazePropertyGroup::setProperties(const EntityItemProperties& properties) {
|
||||
bool somethingChanged = false;
|
||||
|
||||
SET_ENTITY_GROUP_PROPERTY_FROM_PROPERTIES(Haze, HazeActive, hazeActive, setHazeActive);
|
||||
SET_ENTITY_GROUP_PROPERTY_FROM_PROPERTIES(Haze, HazeRange, hazeRange, setHazeRange);
|
||||
SET_ENTITY_GROUP_PROPERTY_FROM_PROPERTIES(Haze, HazeAltitude, hazeAltitude, setHazeAltitude);
|
||||
|
||||
return somethingChanged;
|
||||
}
|
||||
|
@ -98,8 +118,9 @@ bool HazePropertyGroup::setProperties(const EntityItemProperties& properties) {
|
|||
EntityPropertyFlags HazePropertyGroup::getEntityProperties(EncodeBitstreamParams& params) const {
|
||||
EntityPropertyFlags requestedProperties;
|
||||
|
||||
requestedProperties += PROP_HAZE_HAZE_ACTIVE;
|
||||
|
||||
requestedProperties += PROP_HAZE_HAZE_RANGE;
|
||||
requestedProperties += PROP_HAZE_HAZE_ALTITUDE;
|
||||
|
||||
return requestedProperties;
|
||||
}
|
||||
|
||||
|
@ -113,7 +134,8 @@ void HazePropertyGroup::appendSubclassData(OctreePacketData* packetData, EncodeB
|
|||
|
||||
bool successPropertyFits = true;
|
||||
|
||||
APPEND_ENTITY_PROPERTY(PROP_HAZE_HAZE_ACTIVE, getHazeActive());
|
||||
APPEND_ENTITY_PROPERTY(PROP_HAZE_HAZE_RANGE, getHazeRange());
|
||||
APPEND_ENTITY_PROPERTY(PROP_HAZE_HAZE_ALTITUDE, getHazeAltitude());
|
||||
}
|
||||
|
||||
int HazePropertyGroup::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead,
|
||||
|
@ -124,7 +146,8 @@ int HazePropertyGroup::readEntitySubclassDataFromBuffer(const unsigned char* dat
|
|||
int bytesRead = 0;
|
||||
const unsigned char* dataAt = data;
|
||||
|
||||
READ_ENTITY_PROPERTY(PROP_HAZE_HAZE_ACTIVE, bool, setHazeActive);
|
||||
READ_ENTITY_PROPERTY(PROP_HAZE_HAZE_ALTITUDE, float, setHazeRange);
|
||||
READ_ENTITY_PROPERTY(PROP_HAZE_HAZE_ALTITUDE, float, setHazeAltitude);
|
||||
|
||||
return bytesRead;
|
||||
}
|
||||
|
|
|
@ -74,7 +74,11 @@ public:
|
|||
EntityPropertyFlags& propertyFlags, bool overwriteLocalData,
|
||||
bool& somethingChanged) override;
|
||||
|
||||
DEFINE_PROPERTY(PROP_HAZE_HAZE_ACTIVE, HazeActive, hazeActive, bool, false);
|
||||
static const float DEFAULT_HAZE_RANGE;
|
||||
static const float DEFAULT_HAZE_ALTITUDE;
|
||||
|
||||
DEFINE_PROPERTY(PROP_HAZE_HAZE_RANGE, HazeRange, hazeRange, float, DEFAULT_HAZE_RANGE);
|
||||
DEFINE_PROPERTY(PROP_HAZE_HAZE_ALTITUDE, HazeAltitude, hazeAltitude, float, DEFAULT_HAZE_ALTITUDE);
|
||||
};
|
||||
|
||||
#endif // hifi_HazePropertyGroup_h
|
||||
|
|
|
@ -115,6 +115,8 @@ protected:
|
|||
|
||||
BackgroundMode _backgroundMode = BACKGROUND_MODE_INHERIT;
|
||||
HazeMode _hazeMode = HAZE_MODE_INHERIT;
|
||||
float _hazeRange = 1000.0;
|
||||
float _hazeAltitude = 200.0;
|
||||
|
||||
SkyboxPropertyGroup _skyboxProperties;
|
||||
HazePropertyGroup _hazeProperties;
|
||||
|
|
|
@ -186,12 +186,21 @@ public:
|
|||
void setHazeMode(HazeMode mode);
|
||||
HazeMode getHazeMode() const { return _hazeMode; }
|
||||
|
||||
void setHazeRange(float hazeRange) { _hazeRange = hazeRange; }
|
||||
float getHazeRange() const { return _hazeRange; }
|
||||
|
||||
void setHazeAltitude(float hazeAltitude) { _hazeAltitude = hazeAltitude; }
|
||||
float getHazeAltitude() const { return _hazeAltitude; }
|
||||
|
||||
void setHaze(const HazePointer& haze);
|
||||
const HazePointer& getHaze() const { valid(); return _haze; }
|
||||
|
||||
protected:
|
||||
BackgroundMode _backgroundMode = SKY_DEFAULT;
|
||||
|
||||
HazeMode _hazeMode = HAZE_OFF;
|
||||
float _hazeRange;
|
||||
float _hazeAltitude;
|
||||
|
||||
LightPointer _sunLight;
|
||||
mutable SkyboxPointer _skybox;
|
||||
|
|
|
@ -150,6 +150,22 @@ QString SceneScripting::Stage::getHazeMode() const {
|
|||
};
|
||||
}
|
||||
|
||||
void SceneScripting::Stage::setHazeRange(const float hazeRange) {
|
||||
_skyStage->setHazeRange(hazeRange);
|
||||
}
|
||||
|
||||
float SceneScripting::Stage::getHazeRange() const {
|
||||
return _skyStage->getHazeRange();
|
||||
}
|
||||
|
||||
void SceneScripting::Stage::setHazeAltitude(const float hazeAltitude) {
|
||||
_skyStage->setHazeAltitude(hazeAltitude);
|
||||
}
|
||||
|
||||
float SceneScripting::Stage::getHazeAltitude() const {
|
||||
return _skyStage->getHazeAltitude();
|
||||
}
|
||||
|
||||
SceneScriptingInterface::SceneScriptingInterface() : _stage{ new SceneScripting::Stage{ _skyStage } } {
|
||||
// Let's make sure the sunSkyStage is using a proceduralSkybox
|
||||
_skyStage->setSkybox(model::SkyboxPointer(new ProceduralSkybox()));
|
||||
|
|
|
@ -125,6 +125,14 @@ namespace SceneScripting {
|
|||
void setHazeMode(const QString& mode);
|
||||
QString getHazeMode() const;
|
||||
|
||||
Q_PROPERTY(float hazeRange READ getHazeRange WRITE setHazeRange)
|
||||
void setHazeRange(float value);
|
||||
float getHazeRange() const;
|
||||
|
||||
Q_PROPERTY(float hazeAltitude READ getHazeAltitude WRITE setHazeAltitude)
|
||||
void setHazeAltitude(float value);
|
||||
float getHazeAltitude() const;
|
||||
|
||||
protected:
|
||||
model::SunSkyStagePointer _skyStage;
|
||||
LocationPointer _location;
|
||||
|
|
|
@ -555,6 +555,12 @@
|
|||
<option value="enabled">Enabled</option>
|
||||
</select>
|
||||
</div>
|
||||
<fieldset class="zone-group zone-section stage-section property gen fstuple">
|
||||
<div class="tuple">
|
||||
<div><label>Range <span class="unit">m</span></label><input type="number" id="property-zone-haze-range" min="5" max="10000" step="5"></div>
|
||||
<div><label>Altitude <span class="unit">m</span></label><input type="number" id="property-zone-haze-altitude" min="10" max="5000" step="10"></div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
<fieldset class="minor">
|
||||
<legend class="sub-section-header zone-group zone-section stage-section">
|
||||
|
|
|
@ -658,6 +658,8 @@ function loaded() {
|
|||
var elZoneKeyLightAmbientURL = document.getElementById("property-zone-key-ambient-url");
|
||||
|
||||
var elZoneHazeMode = document.getElementById("property-zone-haze-mode");
|
||||
var elZoneHazeRange = document.getElementById("property-zone-haze-range");
|
||||
var elZoneHazeAltitude = document.getElementById("property-zone-haze-altitude");
|
||||
|
||||
var elZoneStageLatitude = document.getElementById("property-zone-stage-latitude");
|
||||
var elZoneStageLongitude = document.getElementById("property-zone-stage-longitude");
|
||||
|
@ -980,6 +982,9 @@ function loaded() {
|
|||
elZoneHazeMode.value = properties.hazeMode;
|
||||
setDropdownText(elZoneHazeMode);
|
||||
|
||||
elZoneHazeRange.value = properties.haze.hazeRange.toFixed(2);
|
||||
elZoneHazeAltitude.value = properties.haze.hazeAltitude.toFixed(2);
|
||||
|
||||
elZoneStageLatitude.value = properties.stage.latitude.toFixed(2);
|
||||
elZoneStageLongitude.value = properties.stage.longitude.toFixed(2);
|
||||
elZoneStageAltitude.value = properties.stage.altitude.toFixed(2);
|
||||
|
@ -1375,6 +1380,8 @@ function loaded() {
|
|||
elZoneKeyLightDirectionY.addEventListener('change', zoneKeyLightDirectionChangeFunction);
|
||||
|
||||
elZoneHazeMode.addEventListener('change', createEmitTextPropertyUpdateFunction('hazeMode'));
|
||||
elZoneHazeRange.addEventListener('change', createEmitGroupNumberPropertyUpdateFunction('haze', 'hazeRange'));
|
||||
elZoneStageLatitude.addEventListener('change', createEmitGroupNumberPropertyUpdateFunction('haze', 'hazeAltitude'));
|
||||
|
||||
elZoneStageLatitude.addEventListener('change', createEmitGroupNumberPropertyUpdateFunction('stage', 'latitude'));
|
||||
elZoneStageLongitude.addEventListener('change', createEmitGroupNumberPropertyUpdateFunction('stage', 'longitude'));
|
||||
|
@ -1383,7 +1390,6 @@ function loaded() {
|
|||
elZoneStageDay.addEventListener('change', createEmitGroupNumberPropertyUpdateFunction('stage', 'day'));
|
||||
elZoneStageHour.addEventListener('change', createEmitGroupNumberPropertyUpdateFunction('stage', 'hour'));
|
||||
|
||||
|
||||
elZoneBackgroundMode.addEventListener('change', createEmitTextPropertyUpdateFunction('backgroundMode'));
|
||||
|
||||
var zoneSkyboxColorChangeFunction = createEmitGroupColorPropertyUpdateFunction('skybox', 'color',
|
||||
|
|
Loading…
Reference in a new issue