13 #ifndef hifi_EntityEditFilters_h
14 #define hifi_EntityEditFilters_h
18 #include <glm/glm.hpp>
22 #include <ScriptValue.h>
24 #include "EntityItemID.h"
25 #include "EntityItemProperties.h"
26 #include "EntityTree.h"
30 class EntityEditFilters :
public QObject,
public Dependency {
35 bool wantsOriginalProperties {
false };
36 bool wantsZoneProperties {
false };
38 bool wantsToFilterAdd {
true };
39 bool wantsToFilterEdit {
true };
40 bool wantsToFilterPhysics {
true };
41 bool wantsToFilterDelete {
true };
43 EntityPropertyFlags includedOriginalProperties;
44 EntityPropertyFlags includedZoneProperties;
45 bool wantsZoneBoundingBox {
false };
47 std::function<bool()> uncaughtExceptions;
48 ScriptEnginePointer engine;
51 FilterData(): rejectAll(false) {};
52 bool valid() {
return (rejectAll || (engine !=
nullptr && filterFn.isFunction() && uncaughtExceptions)); }
55 EntityEditFilters() {};
56 EntityEditFilters(EntityTreePointer tree ): _tree(tree) {};
58 void addFilter(
EntityItemID entityID, QString filterURL);
62 EntityTree::FilterType filterType,
EntityItemID& entityID,
const EntityItemPointer& existingEntity);
71 QList<EntityItemID> getZonesByPosition(glm::vec3& position);
73 EntityTreePointer _tree {};
74 bool _rejectAll {
false};
78 QMap<EntityItemID, FilterData> _filterDataMap;
Abstract ID for editing model items. Used in EntityItem JS API.
Definition: EntityItemID.h:28
Definition: EntityItemProperties.h:106
Provides an engine-independent interface for a scripting engine.
Definition: ScriptEngine.h:93
[ScriptInterface] Provides an engine-independent interface for QScriptValue
Definition: ScriptValue.h:40