();
+ return nodeList->getThisNodeCanViewAssetURLs();
+}
+
void EntityScriptingInterface::setEntityTree(EntityTreePointer elementTree) {
if (_entityTree) {
disconnect(_entityTree.get(), &EntityTree::addingEntityPointer, this, &EntityScriptingInterface::onAddingEntity);
diff --git a/libraries/entities/src/EntityScriptingInterface.h b/libraries/entities/src/EntityScriptingInterface.h
index d4597df2aa..8d74e6821c 100644
--- a/libraries/entities/src/EntityScriptingInterface.h
+++ b/libraries/entities/src/EntityScriptingInterface.h
@@ -288,6 +288,14 @@ public slots:
*/
Q_INVOKABLE bool canRezAvatarEntities();
+ /*@jsdoc
+ * Checks whether or not the script can view asset URLs
+ * @function Entities.canViewAssetURLs
+ * @returns {boolean} true
if the domain server will allow the script to view asset URLs,
+ * otherwise false
.
+ */
+ Q_INVOKABLE bool canViewAssetURLs();
+
/*@jsdoc
* How an entity is hosted and sent to others for display.
*
@@ -2249,6 +2257,14 @@ signals:
*/
void canRezAvatarEntitiesChanged(bool canRezAvatarEntities);
+ /*@jsdoc
+ * Triggered when your ability to view asset URLs is changed.
+ * @function Entities.canViewAssetURLsChanged
+ * @param {boolean} canViewAssetURLs - true
if the script can view asset URLs,
+ * false
if it can't.
+ * @returns {Signal}
+ */
+ void canViewAssetURLsChanged(bool canViewAssetURLs);
/*@jsdoc
* Triggered when a mouse button is clicked while the mouse cursor is on an entity, or a controller trigger is fully
diff --git a/libraries/entities/src/GrabPropertyGroup.cpp b/libraries/entities/src/GrabPropertyGroup.cpp
index 86dc72c2f3..a4037ff98f 100644
--- a/libraries/entities/src/GrabPropertyGroup.cpp
+++ b/libraries/entities/src/GrabPropertyGroup.cpp
@@ -20,7 +20,9 @@
void GrabPropertyGroup::copyToScriptValue(const EntityPropertyFlags& desiredProperties, ScriptValue& properties,
ScriptEngine* engine, bool skipDefaults,
- EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags) const {
+ EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags,
+ bool isMyOwnAvatarEntity) const {
+ auto nodeList = DependencyManager::get();
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_GRAB_GRABBABLE, Grab, grab, Grabbable, grabbable);
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_GRAB_KINEMATIC, Grab, grab, GrabKinematic, grabKinematic);
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_GRAB_FOLLOWS_CONTROLLER, Grab, grab, GrabFollowsController, grabFollowsController);
@@ -36,7 +38,7 @@ void GrabPropertyGroup::copyToScriptValue(const EntityPropertyFlags& desiredProp
EquippableRightPosition, equippableRightPosition);
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_GRAB_RIGHT_EQUIPPABLE_ROTATION_OFFSET, Grab, grab,
EquippableRightRotation, equippableRightRotation);
- COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_GRAB_EQUIPPABLE_INDICATOR_URL, Grab, grab,
+ COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE_IF_URL_PERMISSION(PROP_GRAB_EQUIPPABLE_INDICATOR_URL, Grab, grab,
EquippableIndicatorURL, equippableIndicatorURL);
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_GRAB_EQUIPPABLE_INDICATOR_SCALE, Grab, grab,
EquippableIndicatorScale, equippableIndicatorScale);
diff --git a/libraries/entities/src/GrabPropertyGroup.h b/libraries/entities/src/GrabPropertyGroup.h
index 16e886f7f4..23211bde21 100644
--- a/libraries/entities/src/GrabPropertyGroup.h
+++ b/libraries/entities/src/GrabPropertyGroup.h
@@ -75,7 +75,8 @@ public:
// EntityItemProperty related helpers
virtual void copyToScriptValue(const EntityPropertyFlags& desiredProperties, ScriptValue& properties,
ScriptEngine* engine, bool skipDefaults,
- EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags) const override;
+ EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags,
+ bool isMyOwnAvatarEntity) const override;
virtual void copyFromScriptValue(const ScriptValue& object, const QSet &namesSet, bool& _defaultSettings) override;
void merge(const GrabPropertyGroup& other);
diff --git a/libraries/entities/src/HazePropertyGroup.cpp b/libraries/entities/src/HazePropertyGroup.cpp
index 8bf10e6944..fd091de8ac 100644
--- a/libraries/entities/src/HazePropertyGroup.cpp
+++ b/libraries/entities/src/HazePropertyGroup.cpp
@@ -19,7 +19,8 @@
#include "EntityItemPropertiesMacros.h"
void HazePropertyGroup::copyToScriptValue(const EntityPropertyFlags& desiredProperties, ScriptValue& properties, ScriptEngine* engine,
- bool skipDefaults, EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags) const {
+ bool skipDefaults, EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags,
+ bool isMyOwnAvatarEntity) const {
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_HAZE_RANGE, Haze, haze, HazeRange, hazeRange);
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE_TYPED(PROP_HAZE_COLOR, Haze, haze, HazeColor, hazeColor, u8vec3Color);
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE_TYPED(PROP_HAZE_GLARE_COLOR, Haze, haze, HazeGlareColor, hazeGlareColor, u8vec3Color);
diff --git a/libraries/entities/src/HazePropertyGroup.h b/libraries/entities/src/HazePropertyGroup.h
index 0d30cff79f..a84ec20713 100644
--- a/libraries/entities/src/HazePropertyGroup.h
+++ b/libraries/entities/src/HazePropertyGroup.h
@@ -80,7 +80,8 @@ public:
// EntityItemProperty related helpers
virtual void copyToScriptValue(const EntityPropertyFlags& desiredProperties, ScriptValue& properties,
ScriptEngine* engine, bool skipDefaults,
- EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags) const override;
+ EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags,
+ bool isMyOwnAvatarEntity) const override;
virtual void copyFromScriptValue(const ScriptValue& object, const QSet &namesSet, bool& _defaultSettings) override;
void merge(const HazePropertyGroup& other);
diff --git a/libraries/entities/src/KeyLightPropertyGroup.cpp b/libraries/entities/src/KeyLightPropertyGroup.cpp
index 0e7a98504e..f431aa55cc 100644
--- a/libraries/entities/src/KeyLightPropertyGroup.cpp
+++ b/libraries/entities/src/KeyLightPropertyGroup.cpp
@@ -28,7 +28,8 @@ const float KeyLightPropertyGroup::DEFAULT_KEYLIGHT_SHADOW_BIAS { 0.5f };
const float KeyLightPropertyGroup::DEFAULT_KEYLIGHT_SHADOW_MAX_DISTANCE { 40.0f };
void KeyLightPropertyGroup::copyToScriptValue(const EntityPropertyFlags& desiredProperties, ScriptValue& properties,
- ScriptEngine* engine, bool skipDefaults, EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags) const {
+ ScriptEngine* engine, bool skipDefaults, EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags,
+ bool isMyOwnAvatarEntity) const {
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE_TYPED(PROP_KEYLIGHT_COLOR, KeyLight, keyLight, Color, color, u8vec3Color);
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_KEYLIGHT_INTENSITY, KeyLight, keyLight, Intensity, intensity);
diff --git a/libraries/entities/src/KeyLightPropertyGroup.h b/libraries/entities/src/KeyLightPropertyGroup.h
index 72807dd9ca..4a412f9802 100644
--- a/libraries/entities/src/KeyLightPropertyGroup.h
+++ b/libraries/entities/src/KeyLightPropertyGroup.h
@@ -50,7 +50,8 @@ public:
// EntityItemProperty related helpers
virtual void copyToScriptValue(const EntityPropertyFlags& desiredProperties, ScriptValue& properties,
ScriptEngine* engine, bool skipDefaults,
- EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags) const override;
+ EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags,
+ bool isMyOwnAvatarEntity) const override;
virtual void copyFromScriptValue(const ScriptValue& object, const QSet &namesSet, bool& _defaultSettings) override;
void merge(const KeyLightPropertyGroup& other);
diff --git a/libraries/entities/src/PropertyGroup.h b/libraries/entities/src/PropertyGroup.h
index 342fcdac63..b73c2dad2a 100644
--- a/libraries/entities/src/PropertyGroup.h
+++ b/libraries/entities/src/PropertyGroup.h
@@ -34,7 +34,8 @@ public:
virtual ~PropertyGroup() = default;
// EntityItemProperty related helpers
- virtual void copyToScriptValue(const EntityPropertyFlags& desiredProperties, ScriptValue& properties, ScriptEngine* engine, bool skipDefaults, EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags) const = 0;
+ virtual void copyToScriptValue(const EntityPropertyFlags& desiredProperties, ScriptValue& properties, ScriptEngine* engine, bool skipDefaults,
+ EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags, bool isMyOwnAvatarEntity) const = 0;
virtual void copyFromScriptValue(const ScriptValue& object, const QSet &namesSet, bool& _defaultSettings) = 0;
virtual void debugDump() const { }
virtual void listChangedProperties(QList& out) { }
diff --git a/libraries/entities/src/PulsePropertyGroup.cpp b/libraries/entities/src/PulsePropertyGroup.cpp
index c7983a4e5f..ab61a1f8ad 100644
--- a/libraries/entities/src/PulsePropertyGroup.cpp
+++ b/libraries/entities/src/PulsePropertyGroup.cpp
@@ -60,8 +60,9 @@ void PulsePropertyGroup::setAlphaModeFromString(const QString& pulseMode) {
}
void PulsePropertyGroup::copyToScriptValue(const EntityPropertyFlags& desiredProperties, ScriptValue& properties,
- ScriptEngine* engine, bool skipDefaults,
- EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags) const {
+ ScriptEngine* engine, bool skipDefaults,
+ EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags,
+ bool isMyOwnAvatarEntity) const {
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_PULSE_MIN, Pulse, pulse, Min, min);
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_PULSE_MAX, Pulse, pulse, Max, max);
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_PULSE_PERIOD, Pulse, pulse, Period, period);
diff --git a/libraries/entities/src/PulsePropertyGroup.h b/libraries/entities/src/PulsePropertyGroup.h
index 3db8454ad0..649005b970 100644
--- a/libraries/entities/src/PulsePropertyGroup.h
+++ b/libraries/entities/src/PulsePropertyGroup.h
@@ -44,7 +44,8 @@ public:
// EntityItemProperty related helpers
virtual void copyToScriptValue(const EntityPropertyFlags& desiredProperties, ScriptValue& properties,
ScriptEngine* engine, bool skipDefaults,
- EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags) const override;
+ EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags,
+ bool isMyOwnAvatarEntity) const override;
virtual void copyFromScriptValue(const ScriptValue& object, const QSet &namesSet, bool& _defaultSettings) override;
void merge(const PulsePropertyGroup& other);
diff --git a/libraries/entities/src/RingGizmoPropertyGroup.cpp b/libraries/entities/src/RingGizmoPropertyGroup.cpp
index 60fa67e621..68021f44a2 100644
--- a/libraries/entities/src/RingGizmoPropertyGroup.cpp
+++ b/libraries/entities/src/RingGizmoPropertyGroup.cpp
@@ -23,8 +23,9 @@ const float RingGizmoPropertyGroup::MIN_RADIUS = 0.0f;
const float RingGizmoPropertyGroup::MAX_RADIUS = 0.5f;
void RingGizmoPropertyGroup::copyToScriptValue(const EntityPropertyFlags& desiredProperties, ScriptValue& properties,
- ScriptEngine* engine, bool skipDefaults,
- EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags) const {
+ ScriptEngine* engine, bool skipDefaults,
+ EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags,
+ bool isMyOwnAvatarEntity) const {
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_START_ANGLE, Ring, ring, StartAngle, startAngle);
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_END_ANGLE, Ring, ring, EndAngle, endAngle);
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_INNER_RADIUS, Ring, ring, InnerRadius, innerRadius);
diff --git a/libraries/entities/src/RingGizmoPropertyGroup.h b/libraries/entities/src/RingGizmoPropertyGroup.h
index e4c83e2944..51ef709f5b 100644
--- a/libraries/entities/src/RingGizmoPropertyGroup.h
+++ b/libraries/entities/src/RingGizmoPropertyGroup.h
@@ -60,7 +60,8 @@ public:
// EntityItemProperty related helpers
virtual void copyToScriptValue(const EntityPropertyFlags& desiredProperties, ScriptValue& properties,
ScriptEngine* engine, bool skipDefaults,
- EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags) const override;
+ EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags,
+ bool isMyOwnAvatarEntity) const override;
virtual void copyFromScriptValue(const ScriptValue& object, const QSet &namesSet, bool& _defaultSettings) override;
void merge(const RingGizmoPropertyGroup& other);
diff --git a/libraries/entities/src/SkyboxPropertyGroup.cpp b/libraries/entities/src/SkyboxPropertyGroup.cpp
index a4c2f99042..9c3ad46fce 100644
--- a/libraries/entities/src/SkyboxPropertyGroup.cpp
+++ b/libraries/entities/src/SkyboxPropertyGroup.cpp
@@ -20,9 +20,11 @@
const glm::u8vec3 SkyboxPropertyGroup::DEFAULT_COLOR = { 0, 0, 0 };
-void SkyboxPropertyGroup::copyToScriptValue(const EntityPropertyFlags& desiredProperties, ScriptValue& properties, ScriptEngine* engine, bool skipDefaults, EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags) const {
+void SkyboxPropertyGroup::copyToScriptValue(const EntityPropertyFlags& desiredProperties, ScriptValue& properties, ScriptEngine* engine,
+ bool skipDefaults, EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags, bool isMyOwnAvatarEntity) const {
+ auto nodeList = DependencyManager::get();
COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE_TYPED(PROP_SKYBOX_COLOR, Skybox, skybox, Color, color, u8vec3Color);
- COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE(PROP_SKYBOX_URL, Skybox, skybox, URL, url);
+ COPY_GROUP_PROPERTY_TO_QSCRIPTVALUE_IF_URL_PERMISSION(PROP_SKYBOX_URL, Skybox, skybox, URL, url);
}
void SkyboxPropertyGroup::copyFromScriptValue(const ScriptValue& object, const QSet &namesSet, bool& _defaultSettings) {
diff --git a/libraries/entities/src/SkyboxPropertyGroup.h b/libraries/entities/src/SkyboxPropertyGroup.h
index d3c88e0f7e..30c9ef1d3a 100644
--- a/libraries/entities/src/SkyboxPropertyGroup.h
+++ b/libraries/entities/src/SkyboxPropertyGroup.h
@@ -43,7 +43,8 @@ public:
// EntityItemProperty related helpers
virtual void copyToScriptValue(const EntityPropertyFlags& desiredProperties, ScriptValue& properties,
ScriptEngine* engine, bool skipDefaults,
- EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags) const override;
+ EntityItemProperties& defaultEntityProperties, bool returnNothingOnEmptyPropertyFlags,
+ bool isMyOwnAvatarEntity) const override;
virtual void copyFromScriptValue(const ScriptValue& object, const QSet &namesSet, bool& _defaultSettings) override;
void merge(const SkyboxPropertyGroup& other);
diff --git a/libraries/networking/src/LimitedNodeList.cpp b/libraries/networking/src/LimitedNodeList.cpp
index e4d3f0a207..33b2fcad78 100644
--- a/libraries/networking/src/LimitedNodeList.cpp
+++ b/libraries/networking/src/LimitedNodeList.cpp
@@ -197,6 +197,10 @@ void LimitedNodeList::setPermissions(const NodePermissions& newPermissions) {
newPermissions.can(NodePermissions::Permission::canRezAvatarEntities)) {
emit canRezAvatarEntitiesChanged(_permissions.can(NodePermissions::Permission::canRezAvatarEntities));
}
+ if (originalPermissions.can(NodePermissions::Permission::canViewAssetURLs) !=
+ newPermissions.can(NodePermissions::Permission::canViewAssetURLs)) {
+ emit canViewAssetURLsChanged(_permissions.can(NodePermissions::Permission::canViewAssetURLs));
+ }
}
void LimitedNodeList::setSocketLocalPort(SocketType socketType, quint16 socketLocalPort) {
diff --git a/libraries/networking/src/LimitedNodeList.h b/libraries/networking/src/LimitedNodeList.h
index 0634538880..103f7e0755 100644
--- a/libraries/networking/src/LimitedNodeList.h
+++ b/libraries/networking/src/LimitedNodeList.h
@@ -132,6 +132,7 @@ public:
bool getThisNodeCanReplaceContent() const { return _permissions.can(NodePermissions::Permission::canReplaceDomainContent); }
bool getThisNodeCanGetAndSetPrivateUserData() const { return _permissions.can(NodePermissions::Permission::canGetAndSetPrivateUserData); }
bool getThisNodeCanRezAvatarEntities() const { return _permissions.can(NodePermissions::Permission::canRezAvatarEntities); }
+ bool getThisNodeCanViewAssetURLs() const { return _permissions.can(NodePermissions::Permission::canViewAssetURLs); }
quint16 getSocketLocalPort(SocketType socketType) const { return _nodeSocket.localPort(socketType); }
Q_INVOKABLE void setSocketLocalPort(SocketType socketType, quint16 socketLocalPort);
@@ -392,6 +393,7 @@ signals:
void canReplaceContentChanged(bool canReplaceContent);
void canGetAndSetPrivateUserDataChanged(bool canGetAndSetPrivateUserData);
void canRezAvatarEntitiesChanged(bool canRezAvatarEntities);
+ void canViewAssetURLsChanged(bool canViewAssetURLs);
protected slots:
void connectedForLocalSocketTest();
diff --git a/libraries/networking/src/Node.h b/libraries/networking/src/Node.h
index cc056ea7d0..92a4c424c8 100644
--- a/libraries/networking/src/Node.h
+++ b/libraries/networking/src/Node.h
@@ -84,6 +84,7 @@ public:
bool getCanReplaceContent() const { return _permissions.can(NodePermissions::Permission::canReplaceDomainContent); }
bool getCanGetAndSetPrivateUserData() const { return _permissions.can(NodePermissions::Permission::canGetAndSetPrivateUserData); }
bool getCanRezAvatarEntities() const { return _permissions.can(NodePermissions::Permission::canRezAvatarEntities); }
+ bool getCanViewAssetURLs() const { return _permissions.can(NodePermissions::Permission::canViewAssetURLs); }
using NodesIgnoredPair = std::pair, bool>;
diff --git a/libraries/networking/src/NodePermissions.cpp b/libraries/networking/src/NodePermissions.cpp
index e7cf953645..8a23c7dbd3 100644
--- a/libraries/networking/src/NodePermissions.cpp
+++ b/libraries/networking/src/NodePermissions.cpp
@@ -68,6 +68,7 @@ NodePermissions::NodePermissions(QMap perms) {
permissions |= perms["id_can_replace_content"].toBool() ? Permission::canReplaceDomainContent : Permission::none;
permissions |= perms["id_can_get_and_set_private_user_data"].toBool() ?
Permission::canGetAndSetPrivateUserData : Permission::none;
+ permissions |= perms["id_can_view_asset_urls"].toBool() ? Permission::canViewAssetURLs : Permission::none;
}
QVariant NodePermissions::toVariant(QHash groupRanks) {
@@ -95,6 +96,7 @@ QVariant NodePermissions::toVariant(QHash groupRanks) {
values["id_can_kick"] = can(Permission::canKick);
values["id_can_replace_content"] = can(Permission::canReplaceDomainContent);
values["id_can_get_and_set_private_user_data"] = can(Permission::canGetAndSetPrivateUserData);
+ values["id_can_view_asset_urls"] = can(Permission::canViewAssetURLs);
return QVariant(values);
}
@@ -167,6 +169,9 @@ QDebug operator<<(QDebug debug, const NodePermissions& perms) {
if (perms.can(NodePermissions::Permission::canGetAndSetPrivateUserData)) {
debug << " get-and-set-private-user-data";
}
+ if (perms.can(NodePermissions::Permission::canViewAssetURLs)) {
+ debug << " can-view-asset-urls";
+ }
debug.nospace() << "]";
return debug.nospace();
}
diff --git a/libraries/networking/src/NodePermissions.h b/libraries/networking/src/NodePermissions.h
index 29baf130e6..81eaf68457 100644
--- a/libraries/networking/src/NodePermissions.h
+++ b/libraries/networking/src/NodePermissions.h
@@ -79,7 +79,8 @@ public:
canKick = 64,
canReplaceDomainContent = 128,
canGetAndSetPrivateUserData = 1024,
- canRezAvatarEntities = 2048
+ canRezAvatarEntities = 2048,
+ canViewAssetURLs = 4096
};
Q_DECLARE_FLAGS(Permissions, Permission)
Permissions permissions;
diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js
index 449d1d8222..be1ba053ab 100644
--- a/scripts/system/create/edit.js
+++ b/scripts/system/create/edit.js
@@ -2786,6 +2786,10 @@
}
}
} else if (data.type === "propertiesPageReady") {
+ emitScriptEvent({
+ type: 'urlPermissionChanged',
+ canViewAssetURLs: Entities.canViewAssetURLs(),
+ });
updateSelections(true);
} else if (data.type === "tooltipsRequest") {
emitScriptEvent({
@@ -2901,6 +2905,13 @@
});
});
+ Entities.canViewAssetURLsChanged.connect((value) => {
+ emitScriptEvent({
+ type: 'urlPermissionChanged',
+ canViewAssetURLs: value,
+ });
+ });
+
createToolsWindow.webEventReceived.addListener(this, onWebEventReceived);
webView.webEventReceived.connect(this, onWebEventReceived);
diff --git a/scripts/system/create/entityProperties/html/js/entityProperties.js b/scripts/system/create/entityProperties/html/js/entityProperties.js
index 8b594d85b5..dd8d67e24d 100644
--- a/scripts/system/create/entityProperties/html/js/entityProperties.js
+++ b/scripts/system/create/entityProperties/html/js/entityProperties.js
@@ -303,6 +303,7 @@ const GROUPS = [
type: "string",
propertyID: "zoneCompoundShapeURL",
propertyName: "compoundShapeURL", // actual entity property name
+ placeholder: "URL",
},
{
label: "Flying Allowed",
@@ -318,6 +319,7 @@ const GROUPS = [
label: "Filter",
type: "string",
propertyID: "filterURL",
+ placeholder: "URL",
}
]
},
@@ -417,6 +419,7 @@ const GROUPS = [
type: "string",
propertyID: "skybox.url",
showPropertyRule: { "skyboxMode": "enabled" },
+ placeholder: "URL",
}
]
},
@@ -445,6 +448,7 @@ const GROUPS = [
type: "string",
propertyID: "ambientLight.ambientURL",
showPropertyRule: { "ambientLightMode": "enabled" },
+ placeholder: "URL",
},
{
type: "buttons",
@@ -626,6 +630,7 @@ const GROUPS = [
label: "Compound Shape",
type: "string",
propertyID: "compoundShapeURL",
+ placeholder: "URL",
},
{
label: "Use Original Pivot",
@@ -636,6 +641,7 @@ const GROUPS = [
label: "Animation",
type: "string",
propertyID: "animation.url",
+ placeholder: "URL",
},
{
label: "Play Automatically",
@@ -749,6 +755,7 @@ const GROUPS = [
label: "Source",
type: "string",
propertyID: "sourceUrl",
+ placeholder: "URL",
},
{
label: "Source Resolution",
@@ -870,6 +877,7 @@ const GROUPS = [
label: "Material URL",
type: "string",
propertyID: "materialURL",
+ placeholder: "URL",
},
{
label: "Material Data",
@@ -1038,6 +1046,7 @@ const GROUPS = [
type: "string",
propertyID: "particleCompoundShapeURL",
propertyName: "compoundShapeURL",
+ placeholder: "URL",
},
{
label: "Emit Dimensions",
@@ -1360,18 +1369,21 @@ const GROUPS = [
type: "string",
propertyID: "xTextureURL",
propertyName: "xTextureURL",
+ placeholder: "URL",
},
{
label: "Y Texture URL",
type: "string",
propertyID: "yTextureURL",
propertyName: "yTextureURL",
+ placeholder: "URL",
},
{
label: "Z Texture URL",
type: "string",
propertyID: "zTextureURL",
propertyName: "zTextureURL",
+ placeholder: "URL",
},
]
},
@@ -1828,6 +1840,7 @@ let currentSelections = [];
let createAppTooltip = new CreateAppTooltip();
let currentSpaceMode = PROPERTY_SPACE_MODE.LOCAL;
let zonesList = [];
+let canViewAssetURLs = false;
function createElementFromHTML(htmlString) {
let elTemplate = document.createElement('template');
@@ -2497,7 +2510,7 @@ function createStringProperty(property, elProperty) {
let elInput = createElementFromHTML(`
`);
@@ -4714,7 +4727,7 @@ function loaded() {
break;
case 'vec3rgb':
updateVectorMinMax(properties[property]);
- break;
+ break;
case 'rect':
updateRectMinMax(properties[property]);
break;
@@ -4727,6 +4740,16 @@ function loaded() {
}
} else if (data.type === 'zoneListRequest') {
zonesList = data.zones;
+ } else if (data.type === 'urlPermissionChanged') {
+ canViewAssetURLs = data.canViewAssetURLs;
+ Object.entries(properties).forEach(function ([propertyID, property]) {
+ if (property.data.placeholder && property.data.placeholder === "URL") {
+ if (!canViewAssetURLs) {
+ property.elInput.value = "";
+ }
+ property.elInput.placeholder = canViewAssetURLs ? property.data.placeholder : "You don't have permission to view this URL";
+ }
+ });
}
});