mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-06-27 18:58:45 +02:00
Merge pull request #15660 from SamGondelman/addBillboardCrash
BUGZ-421: Cleaning up name lookups to fix rare crash
This commit is contained in:
commit
07f63c21b4
4 changed files with 244 additions and 297 deletions
|
@ -104,41 +104,199 @@ bool EntityItemProperties::constructFromBuffer(const unsigned char* data, int da
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
QHash<QString, ShapeType> stringToShapeTypeLookup;
|
inline void addShapeType(QHash<QString, ShapeType>& lookup, ShapeType type) { lookup[ShapeInfo::getNameForShapeType(type)] = type; }
|
||||||
|
QHash<QString, ShapeType> stringToShapeTypeLookup = [] {
|
||||||
void addShapeType(ShapeType type) {
|
QHash<QString, ShapeType> toReturn;
|
||||||
stringToShapeTypeLookup[ShapeInfo::getNameForShapeType(type)] = type;
|
addShapeType(toReturn, SHAPE_TYPE_NONE);
|
||||||
|
addShapeType(toReturn, SHAPE_TYPE_BOX);
|
||||||
|
addShapeType(toReturn, SHAPE_TYPE_SPHERE);
|
||||||
|
addShapeType(toReturn, SHAPE_TYPE_CAPSULE_X);
|
||||||
|
addShapeType(toReturn, SHAPE_TYPE_CAPSULE_Y);
|
||||||
|
addShapeType(toReturn, SHAPE_TYPE_CAPSULE_Z);
|
||||||
|
addShapeType(toReturn, SHAPE_TYPE_CYLINDER_X);
|
||||||
|
addShapeType(toReturn, SHAPE_TYPE_CYLINDER_Y);
|
||||||
|
addShapeType(toReturn, SHAPE_TYPE_CYLINDER_Z);
|
||||||
|
addShapeType(toReturn, SHAPE_TYPE_HULL);
|
||||||
|
addShapeType(toReturn, SHAPE_TYPE_PLANE);
|
||||||
|
addShapeType(toReturn, SHAPE_TYPE_COMPOUND);
|
||||||
|
addShapeType(toReturn, SHAPE_TYPE_SIMPLE_HULL);
|
||||||
|
addShapeType(toReturn, SHAPE_TYPE_SIMPLE_COMPOUND);
|
||||||
|
addShapeType(toReturn, SHAPE_TYPE_STATIC_MESH);
|
||||||
|
addShapeType(toReturn, SHAPE_TYPE_ELLIPSOID);
|
||||||
|
addShapeType(toReturn, SHAPE_TYPE_CIRCLE);
|
||||||
|
return toReturn;
|
||||||
|
}();
|
||||||
|
QString EntityItemProperties::getShapeTypeAsString() const { return ShapeInfo::getNameForShapeType(_shapeType); }
|
||||||
|
void EntityItemProperties::setShapeTypeFromString(const QString& shapeName) {
|
||||||
|
auto shapeTypeItr = stringToShapeTypeLookup.find(shapeName.toLower());
|
||||||
|
if (shapeTypeItr != stringToShapeTypeLookup.end()) {
|
||||||
|
_shapeType = shapeTypeItr.value();
|
||||||
|
_shapeTypeChanged = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void buildStringToShapeTypeLookup() {
|
inline void addMaterialMappingMode(QHash<QString, MaterialMappingMode>& lookup, MaterialMappingMode mode) { lookup[MaterialMappingModeHelpers::getNameForMaterialMappingMode(mode)] = mode; }
|
||||||
addShapeType(SHAPE_TYPE_NONE);
|
const QHash<QString, MaterialMappingMode> stringToMaterialMappingModeLookup = [] {
|
||||||
addShapeType(SHAPE_TYPE_BOX);
|
QHash<QString, MaterialMappingMode> toReturn;
|
||||||
addShapeType(SHAPE_TYPE_SPHERE);
|
addMaterialMappingMode(toReturn, UV);
|
||||||
addShapeType(SHAPE_TYPE_CAPSULE_X);
|
addMaterialMappingMode(toReturn, PROJECTED);
|
||||||
addShapeType(SHAPE_TYPE_CAPSULE_Y);
|
return toReturn;
|
||||||
addShapeType(SHAPE_TYPE_CAPSULE_Z);
|
}();
|
||||||
addShapeType(SHAPE_TYPE_CYLINDER_X);
|
QString EntityItemProperties::getMaterialMappingModeAsString() const { return MaterialMappingModeHelpers::getNameForMaterialMappingMode(_materialMappingMode); }
|
||||||
addShapeType(SHAPE_TYPE_CYLINDER_Y);
|
void EntityItemProperties::setMaterialMappingModeFromString(const QString& materialMappingMode) {
|
||||||
addShapeType(SHAPE_TYPE_CYLINDER_Z);
|
auto materialMappingModeItr = stringToMaterialMappingModeLookup.find(materialMappingMode.toLower());
|
||||||
addShapeType(SHAPE_TYPE_HULL);
|
if (materialMappingModeItr != stringToMaterialMappingModeLookup.end()) {
|
||||||
addShapeType(SHAPE_TYPE_PLANE);
|
_materialMappingMode = materialMappingModeItr.value();
|
||||||
addShapeType(SHAPE_TYPE_COMPOUND);
|
_materialMappingModeChanged = true;
|
||||||
addShapeType(SHAPE_TYPE_SIMPLE_HULL);
|
}
|
||||||
addShapeType(SHAPE_TYPE_SIMPLE_COMPOUND);
|
|
||||||
addShapeType(SHAPE_TYPE_STATIC_MESH);
|
|
||||||
addShapeType(SHAPE_TYPE_ELLIPSOID);
|
|
||||||
addShapeType(SHAPE_TYPE_CIRCLE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QHash<QString, MaterialMappingMode> stringToMaterialMappingModeLookup;
|
inline void addBillboardMode(QHash<QString, BillboardMode>& lookup, BillboardMode mode) { lookup[BillboardModeHelpers::getNameForBillboardMode(mode)] = mode; }
|
||||||
|
const QHash<QString, BillboardMode> stringToBillboardModeLookup = [] {
|
||||||
void addMaterialMappingMode(MaterialMappingMode mode) {
|
QHash<QString, BillboardMode> toReturn;
|
||||||
stringToMaterialMappingModeLookup[MaterialMappingModeHelpers::getNameForMaterialMappingMode(mode)] = mode;
|
addBillboardMode(toReturn, BillboardMode::NONE);
|
||||||
|
addBillboardMode(toReturn, BillboardMode::YAW);
|
||||||
|
addBillboardMode(toReturn, BillboardMode::FULL);
|
||||||
|
return toReturn;
|
||||||
|
}();
|
||||||
|
QString EntityItemProperties::getBillboardModeAsString() const { return BillboardModeHelpers::getNameForBillboardMode(_billboardMode); }
|
||||||
|
void EntityItemProperties::setBillboardModeFromString(const QString& billboardMode) {
|
||||||
|
auto billboardModeItr = stringToBillboardModeLookup.find(billboardMode.toLower());
|
||||||
|
if (billboardModeItr != stringToBillboardModeLookup.end()) {
|
||||||
|
_billboardMode = billboardModeItr.value();
|
||||||
|
_billboardModeChanged = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void buildStringToMaterialMappingModeLookup() {
|
inline void addRenderLayer(QHash<QString, RenderLayer>& lookup, RenderLayer mode) { lookup[RenderLayerHelpers::getNameForRenderLayer(mode)] = mode; }
|
||||||
addMaterialMappingMode(UV);
|
const QHash<QString, RenderLayer> stringToRenderLayerLookup = [] {
|
||||||
addMaterialMappingMode(PROJECTED);
|
QHash<QString, RenderLayer> toReturn;
|
||||||
|
addRenderLayer(toReturn, RenderLayer::WORLD);
|
||||||
|
addRenderLayer(toReturn, RenderLayer::FRONT);
|
||||||
|
addRenderLayer(toReturn, RenderLayer::HUD);
|
||||||
|
return toReturn;
|
||||||
|
}();
|
||||||
|
QString EntityItemProperties::getRenderLayerAsString() const { return RenderLayerHelpers::getNameForRenderLayer(_renderLayer); }
|
||||||
|
void EntityItemProperties::setRenderLayerFromString(const QString& renderLayer) {
|
||||||
|
auto renderLayerItr = stringToRenderLayerLookup.find(renderLayer.toLower());
|
||||||
|
if (renderLayerItr != stringToRenderLayerLookup.end()) {
|
||||||
|
_renderLayer = renderLayerItr.value();
|
||||||
|
_renderLayerChanged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void addPrimitiveMode(QHash<QString, PrimitiveMode>& lookup, PrimitiveMode mode) { lookup[PrimitiveModeHelpers::getNameForPrimitiveMode(mode)] = mode; }
|
||||||
|
const QHash<QString, PrimitiveMode> stringToPrimitiveModeLookup = [] {
|
||||||
|
QHash<QString, PrimitiveMode> toReturn;
|
||||||
|
addPrimitiveMode(toReturn, PrimitiveMode::SOLID);
|
||||||
|
addPrimitiveMode(toReturn, PrimitiveMode::LINES);
|
||||||
|
return toReturn;
|
||||||
|
}();
|
||||||
|
QString EntityItemProperties::getPrimitiveModeAsString() const { return PrimitiveModeHelpers::getNameForPrimitiveMode(_primitiveMode); }
|
||||||
|
void EntityItemProperties::setPrimitiveModeFromString(const QString& primitiveMode) {
|
||||||
|
auto primitiveModeItr = stringToPrimitiveModeLookup.find(primitiveMode.toLower());
|
||||||
|
if (primitiveModeItr != stringToPrimitiveModeLookup.end()) {
|
||||||
|
_primitiveMode = primitiveModeItr.value();
|
||||||
|
_primitiveModeChanged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void addWebInputMode(QHash<QString, WebInputMode>& lookup, WebInputMode mode) { lookup[WebInputModeHelpers::getNameForWebInputMode(mode)] = mode; }
|
||||||
|
const QHash<QString, WebInputMode> stringToWebInputModeLookup = [] {
|
||||||
|
QHash<QString, WebInputMode> toReturn;
|
||||||
|
addWebInputMode(toReturn, WebInputMode::TOUCH);
|
||||||
|
addWebInputMode(toReturn, WebInputMode::MOUSE);
|
||||||
|
return toReturn;
|
||||||
|
}();
|
||||||
|
QString EntityItemProperties::getInputModeAsString() const { return WebInputModeHelpers::getNameForWebInputMode(_inputMode); }
|
||||||
|
void EntityItemProperties::setInputModeFromString(const QString& webInputMode) {
|
||||||
|
auto webInputModeItr = stringToWebInputModeLookup.find(webInputMode.toLower());
|
||||||
|
if (webInputModeItr != stringToWebInputModeLookup.end()) {
|
||||||
|
_inputMode = webInputModeItr.value();
|
||||||
|
_inputModeChanged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void addGizmoType(QHash<QString, GizmoType>& lookup, GizmoType mode) { lookup[GizmoTypeHelpers::getNameForGizmoType(mode)] = mode; }
|
||||||
|
const QHash<QString, GizmoType> stringToGizmoTypeLookup = [] {
|
||||||
|
QHash<QString, GizmoType> toReturn;
|
||||||
|
addGizmoType(toReturn, GizmoType::RING);
|
||||||
|
return toReturn;
|
||||||
|
}();
|
||||||
|
QString EntityItemProperties::getGizmoTypeAsString() const { return GizmoTypeHelpers::getNameForGizmoType(_gizmoType); }
|
||||||
|
void EntityItemProperties::setGizmoTypeFromString(const QString& gizmoType) {
|
||||||
|
auto gizmoTypeItr = stringToGizmoTypeLookup.find(gizmoType.toLower());
|
||||||
|
if (gizmoTypeItr != stringToGizmoTypeLookup.end()) {
|
||||||
|
_gizmoType = gizmoTypeItr.value();
|
||||||
|
_gizmoTypeChanged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void addComponentMode(QHash<QString, ComponentMode>& lookup, ComponentMode mode) { lookup[ComponentModeHelpers::getNameForComponentMode(mode)] = mode; }
|
||||||
|
const QHash<QString, ComponentMode> stringToComponentMode = [] {
|
||||||
|
QHash<QString, ComponentMode> toReturn;
|
||||||
|
addComponentMode(toReturn, ComponentMode::COMPONENT_MODE_INHERIT);
|
||||||
|
addComponentMode(toReturn, ComponentMode::COMPONENT_MODE_DISABLED);
|
||||||
|
addComponentMode(toReturn, ComponentMode::COMPONENT_MODE_ENABLED);
|
||||||
|
return toReturn;
|
||||||
|
}();
|
||||||
|
QString EntityItemProperties::getComponentModeAsString(uint32_t mode) { return ComponentModeHelpers::getNameForComponentMode((ComponentMode)mode); }
|
||||||
|
QString EntityItemProperties::getSkyboxModeAsString() const { return getComponentModeAsString(_skyboxMode); }
|
||||||
|
QString EntityItemProperties::getKeyLightModeAsString() const { return getComponentModeAsString(_keyLightMode); }
|
||||||
|
QString EntityItemProperties::getAmbientLightModeAsString() const { return getComponentModeAsString(_ambientLightMode); }
|
||||||
|
QString EntityItemProperties::getHazeModeAsString() const { return getComponentModeAsString(_hazeMode); }
|
||||||
|
QString EntityItemProperties::getBloomModeAsString() const { return getComponentModeAsString(_bloomMode); }
|
||||||
|
void EntityItemProperties::setSkyboxModeFromString(const QString& mode) {
|
||||||
|
auto modeItr = stringToComponentMode.find(mode.toLower());
|
||||||
|
if (modeItr != stringToComponentMode.end()) {
|
||||||
|
_skyboxMode = modeItr.value();
|
||||||
|
_skyboxModeChanged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void EntityItemProperties::setKeyLightModeFromString(const QString& mode) {
|
||||||
|
auto modeItr = stringToComponentMode.find(mode.toLower());
|
||||||
|
if (modeItr != stringToComponentMode.end()) {
|
||||||
|
_keyLightMode = modeItr.value();
|
||||||
|
_keyLightModeChanged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void EntityItemProperties::setAmbientLightModeFromString(const QString& mode) {
|
||||||
|
auto modeItr = stringToComponentMode.find(mode.toLower());
|
||||||
|
if (modeItr != stringToComponentMode.end()) {
|
||||||
|
_ambientLightMode = modeItr.value();
|
||||||
|
_ambientLightModeChanged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void EntityItemProperties::setHazeModeFromString(const QString& mode) {
|
||||||
|
auto modeItr = stringToComponentMode.find(mode.toLower());
|
||||||
|
if (modeItr != stringToComponentMode.end()) {
|
||||||
|
_hazeMode = modeItr.value();
|
||||||
|
_hazeModeChanged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void EntityItemProperties::setBloomModeFromString(const QString& mode) {
|
||||||
|
auto modeItr = stringToComponentMode.find(mode.toLower());
|
||||||
|
if (modeItr != stringToComponentMode.end()) {
|
||||||
|
_bloomMode = modeItr.value();
|
||||||
|
_bloomModeChanged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void addAvatarPriorityMode(QHash<QString, AvatarPriorityMode>& lookup, AvatarPriorityMode mode) { lookup[AvatarPriorityModeHelpers::getNameForAvatarPriorityMode(mode)] = mode; }
|
||||||
|
const QHash<QString, AvatarPriorityMode> stringToAvatarPriority = [] {
|
||||||
|
QHash<QString, AvatarPriorityMode> toReturn;
|
||||||
|
addAvatarPriorityMode(toReturn, AvatarPriorityMode::AVATAR_PRIORITY_INHERIT);
|
||||||
|
addAvatarPriorityMode(toReturn, AvatarPriorityMode::AVATAR_PRIORITY_CROWD);
|
||||||
|
addAvatarPriorityMode(toReturn, AvatarPriorityMode::AVATAR_PRIORITY_HERO);
|
||||||
|
return toReturn;
|
||||||
|
}();
|
||||||
|
QString EntityItemProperties::getAvatarPriorityAsString() const { return AvatarPriorityModeHelpers::getNameForAvatarPriorityMode((AvatarPriorityMode)_avatarPriority); }
|
||||||
|
void EntityItemProperties::setAvatarPriorityFromString(const QString& mode) {
|
||||||
|
auto modeItr = stringToAvatarPriority.find(mode.toLower());
|
||||||
|
if (modeItr != stringToAvatarPriority.end()) {
|
||||||
|
_avatarPriority = modeItr.value();
|
||||||
|
_avatarPriorityChanged = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QString getCollisionGroupAsString(uint16_t group) {
|
QString getCollisionGroupAsString(uint16_t group) {
|
||||||
|
@ -194,134 +352,6 @@ void EntityItemProperties::setCollisionMaskFromString(const QString& maskString)
|
||||||
_collisionMaskChanged = true;
|
_collisionMaskChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString EntityItemProperties::getShapeTypeAsString() const {
|
|
||||||
return ShapeInfo::getNameForShapeType(_shapeType);
|
|
||||||
}
|
|
||||||
|
|
||||||
void EntityItemProperties::setShapeTypeFromString(const QString& shapeName) {
|
|
||||||
if (stringToShapeTypeLookup.empty()) {
|
|
||||||
buildStringToShapeTypeLookup();
|
|
||||||
}
|
|
||||||
auto shapeTypeItr = stringToShapeTypeLookup.find(shapeName.toLower());
|
|
||||||
if (shapeTypeItr != stringToShapeTypeLookup.end()) {
|
|
||||||
_shapeType = shapeTypeItr.value();
|
|
||||||
_shapeTypeChanged = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QString EntityItemProperties::getComponentModeAsString(uint32_t mode) {
|
|
||||||
// return "inherit" if mode is not valid
|
|
||||||
if (mode < COMPONENT_MODE_ITEM_COUNT) {
|
|
||||||
return COMPONENT_MODES[mode].second;
|
|
||||||
} else {
|
|
||||||
return COMPONENT_MODES[COMPONENT_MODE_INHERIT].second;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QString EntityItemProperties::getHazeModeAsString() const {
|
|
||||||
return getComponentModeAsString(_hazeMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
QString EntityItemProperties::getBloomModeAsString() const {
|
|
||||||
return getComponentModeAsString(_bloomMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace {
|
|
||||||
const QStringList AVATAR_PRIORITIES_AS_STRING
|
|
||||||
{ "inherit", "crowd", "hero" };
|
|
||||||
}
|
|
||||||
|
|
||||||
QString EntityItemProperties::getAvatarPriorityAsString() const {
|
|
||||||
return AVATAR_PRIORITIES_AS_STRING.value(_avatarPriority);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::array<ComponentPair, COMPONENT_MODE_ITEM_COUNT>::const_iterator EntityItemProperties::findComponent(const QString& mode) {
|
|
||||||
return std::find_if(COMPONENT_MODES.begin(), COMPONENT_MODES.end(), [&](const ComponentPair& pair) {
|
|
||||||
return (pair.second == mode);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void EntityItemProperties::setHazeModeFromString(const QString& hazeMode) {
|
|
||||||
auto result = findComponent(hazeMode);
|
|
||||||
|
|
||||||
if (result != COMPONENT_MODES.end()) {
|
|
||||||
_hazeMode = result->first;
|
|
||||||
_hazeModeChanged = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void EntityItemProperties::setBloomModeFromString(const QString& bloomMode) {
|
|
||||||
auto result = findComponent(bloomMode);
|
|
||||||
|
|
||||||
if (result != COMPONENT_MODES.end()) {
|
|
||||||
_bloomMode = result->first;
|
|
||||||
_bloomModeChanged = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void EntityItemProperties::setAvatarPriorityFromString(QString const& avatarPriority) {
|
|
||||||
auto result = AVATAR_PRIORITIES_AS_STRING.indexOf(avatarPriority);
|
|
||||||
|
|
||||||
if (result != -1) {
|
|
||||||
_avatarPriority = result;
|
|
||||||
_avatarPriorityChanged = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QString EntityItemProperties::getKeyLightModeAsString() const {
|
|
||||||
return getComponentModeAsString(_keyLightMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void EntityItemProperties::setKeyLightModeFromString(const QString& keyLightMode) {
|
|
||||||
auto result = findComponent(keyLightMode);
|
|
||||||
|
|
||||||
if (result != COMPONENT_MODES.end()) {
|
|
||||||
_keyLightMode = result->first;
|
|
||||||
_keyLightModeChanged = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QString EntityItemProperties::getAmbientLightModeAsString() const {
|
|
||||||
return getComponentModeAsString(_ambientLightMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void EntityItemProperties::setAmbientLightModeFromString(const QString& ambientLightMode) {
|
|
||||||
auto result = findComponent(ambientLightMode);
|
|
||||||
|
|
||||||
if (result != COMPONENT_MODES.end()) {
|
|
||||||
_ambientLightMode = result->first;
|
|
||||||
_ambientLightModeChanged = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QString EntityItemProperties::getSkyboxModeAsString() const {
|
|
||||||
return getComponentModeAsString(_skyboxMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void EntityItemProperties::setSkyboxModeFromString(const QString& skyboxMode) {
|
|
||||||
auto result = findComponent(skyboxMode);
|
|
||||||
|
|
||||||
if (result != COMPONENT_MODES.end()) {
|
|
||||||
_skyboxMode = result->first;
|
|
||||||
_skyboxModeChanged = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QString EntityItemProperties::getMaterialMappingModeAsString() const {
|
|
||||||
return MaterialMappingModeHelpers::getNameForMaterialMappingMode(_materialMappingMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void EntityItemProperties::setMaterialMappingModeFromString(const QString& materialMappingMode) {
|
|
||||||
if (stringToMaterialMappingModeLookup.empty()) {
|
|
||||||
buildStringToMaterialMappingModeLookup();
|
|
||||||
}
|
|
||||||
auto materialMappingModeItr = stringToMaterialMappingModeLookup.find(materialMappingMode.toLower());
|
|
||||||
if (materialMappingModeItr != stringToMaterialMappingModeLookup.end()) {
|
|
||||||
_materialMappingMode = materialMappingModeItr.value();
|
|
||||||
_materialMappingModeChanged = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QString EntityItemProperties::getEntityHostTypeAsString() const {
|
QString EntityItemProperties::getEntityHostTypeAsString() const {
|
||||||
switch (_entityHostType) {
|
switch (_entityHostType) {
|
||||||
case entity::HostType::DOMAIN:
|
case entity::HostType::DOMAIN:
|
||||||
|
@ -345,137 +375,6 @@ void EntityItemProperties::setEntityHostTypeFromString(const QString& entityHost
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QHash<QString, BillboardMode> stringToBillboardModeLookup;
|
|
||||||
|
|
||||||
void addBillboardMode(BillboardMode mode) {
|
|
||||||
stringToBillboardModeLookup[BillboardModeHelpers::getNameForBillboardMode(mode)] = mode;
|
|
||||||
}
|
|
||||||
|
|
||||||
void buildStringToBillboardModeLookup() {
|
|
||||||
addBillboardMode(BillboardMode::NONE);
|
|
||||||
addBillboardMode(BillboardMode::YAW);
|
|
||||||
addBillboardMode(BillboardMode::FULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
QString EntityItemProperties::getBillboardModeAsString() const {
|
|
||||||
return BillboardModeHelpers::getNameForBillboardMode(_billboardMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void EntityItemProperties::setBillboardModeFromString(const QString& billboardMode) {
|
|
||||||
if (stringToBillboardModeLookup.empty()) {
|
|
||||||
buildStringToBillboardModeLookup();
|
|
||||||
}
|
|
||||||
auto billboardModeItr = stringToBillboardModeLookup.find(billboardMode.toLower());
|
|
||||||
if (billboardModeItr != stringToBillboardModeLookup.end()) {
|
|
||||||
_billboardMode = billboardModeItr.value();
|
|
||||||
_billboardModeChanged = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QHash<QString, RenderLayer> stringToRenderLayerLookup;
|
|
||||||
|
|
||||||
void addRenderLayer(RenderLayer mode) {
|
|
||||||
stringToRenderLayerLookup[RenderLayerHelpers::getNameForRenderLayer(mode)] = mode;
|
|
||||||
}
|
|
||||||
|
|
||||||
void buildStringToRenderLayerLookup() {
|
|
||||||
addRenderLayer(RenderLayer::WORLD);
|
|
||||||
addRenderLayer(RenderLayer::FRONT);
|
|
||||||
addRenderLayer(RenderLayer::HUD);
|
|
||||||
}
|
|
||||||
|
|
||||||
QString EntityItemProperties::getRenderLayerAsString() const {
|
|
||||||
return RenderLayerHelpers::getNameForRenderLayer(_renderLayer);
|
|
||||||
}
|
|
||||||
|
|
||||||
void EntityItemProperties::setRenderLayerFromString(const QString& renderLayer) {
|
|
||||||
if (stringToRenderLayerLookup.empty()) {
|
|
||||||
buildStringToRenderLayerLookup();
|
|
||||||
}
|
|
||||||
auto renderLayerItr = stringToRenderLayerLookup.find(renderLayer.toLower());
|
|
||||||
if (renderLayerItr != stringToRenderLayerLookup.end()) {
|
|
||||||
_renderLayer = renderLayerItr.value();
|
|
||||||
_renderLayerChanged = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QHash<QString, PrimitiveMode> stringToPrimitiveModeLookup;
|
|
||||||
|
|
||||||
void addPrimitiveMode(PrimitiveMode mode) {
|
|
||||||
stringToPrimitiveModeLookup[PrimitiveModeHelpers::getNameForPrimitiveMode(mode)] = mode;
|
|
||||||
}
|
|
||||||
|
|
||||||
void buildStringToPrimitiveModeLookup() {
|
|
||||||
addPrimitiveMode(PrimitiveMode::SOLID);
|
|
||||||
addPrimitiveMode(PrimitiveMode::LINES);
|
|
||||||
}
|
|
||||||
|
|
||||||
QString EntityItemProperties::getPrimitiveModeAsString() const {
|
|
||||||
return PrimitiveModeHelpers::getNameForPrimitiveMode(_primitiveMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void EntityItemProperties::setPrimitiveModeFromString(const QString& primitiveMode) {
|
|
||||||
if (stringToPrimitiveModeLookup.empty()) {
|
|
||||||
buildStringToPrimitiveModeLookup();
|
|
||||||
}
|
|
||||||
auto primitiveModeItr = stringToPrimitiveModeLookup.find(primitiveMode.toLower());
|
|
||||||
if (primitiveModeItr != stringToPrimitiveModeLookup.end()) {
|
|
||||||
_primitiveMode = primitiveModeItr.value();
|
|
||||||
_primitiveModeChanged = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QHash<QString, WebInputMode> stringToWebInputModeLookup;
|
|
||||||
|
|
||||||
void addWebInputMode(WebInputMode mode) {
|
|
||||||
stringToWebInputModeLookup[WebInputModeHelpers::getNameForWebInputMode(mode)] = mode;
|
|
||||||
}
|
|
||||||
|
|
||||||
void buildStringToWebInputModeLookup() {
|
|
||||||
addWebInputMode(WebInputMode::TOUCH);
|
|
||||||
addWebInputMode(WebInputMode::MOUSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
QString EntityItemProperties::getInputModeAsString() const {
|
|
||||||
return WebInputModeHelpers::getNameForWebInputMode(_inputMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void EntityItemProperties::setInputModeFromString(const QString& webInputMode) {
|
|
||||||
if (stringToWebInputModeLookup.empty()) {
|
|
||||||
buildStringToWebInputModeLookup();
|
|
||||||
}
|
|
||||||
auto webInputModeItr = stringToWebInputModeLookup.find(webInputMode.toLower());
|
|
||||||
if (webInputModeItr != stringToWebInputModeLookup.end()) {
|
|
||||||
_inputMode = webInputModeItr.value();
|
|
||||||
_inputModeChanged = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QHash<QString, GizmoType> stringToGizmoTypeLookup;
|
|
||||||
|
|
||||||
void addGizmoType(GizmoType mode) {
|
|
||||||
stringToGizmoTypeLookup[GizmoTypeHelpers::getNameForGizmoType(mode)] = mode;
|
|
||||||
}
|
|
||||||
|
|
||||||
void buildStringToGizmoTypeLookup() {
|
|
||||||
addGizmoType(GizmoType::RING);
|
|
||||||
}
|
|
||||||
|
|
||||||
QString EntityItemProperties::getGizmoTypeAsString() const {
|
|
||||||
return GizmoTypeHelpers::getNameForGizmoType(_gizmoType);
|
|
||||||
}
|
|
||||||
|
|
||||||
void EntityItemProperties::setGizmoTypeFromString(const QString& gizmoType) {
|
|
||||||
if (stringToGizmoTypeLookup.empty()) {
|
|
||||||
buildStringToGizmoTypeLookup();
|
|
||||||
}
|
|
||||||
auto gizmoTypeItr = stringToGizmoTypeLookup.find(gizmoType.toLower());
|
|
||||||
if (gizmoTypeItr != stringToGizmoTypeLookup.end()) {
|
|
||||||
_gizmoType = gizmoTypeItr.value();
|
|
||||||
_gizmoTypeChanged = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
EntityPropertyFlags EntityItemProperties::getChangedProperties() const {
|
EntityPropertyFlags EntityItemProperties::getChangedProperties() const {
|
||||||
EntityPropertyFlags changedProperties;
|
EntityPropertyFlags changedProperties;
|
||||||
|
|
||||||
|
|
|
@ -67,13 +67,6 @@
|
||||||
|
|
||||||
const quint64 UNKNOWN_CREATED_TIME = 0;
|
const quint64 UNKNOWN_CREATED_TIME = 0;
|
||||||
|
|
||||||
using ComponentPair = std::pair<const ComponentMode, const QString>;
|
|
||||||
const std::array<ComponentPair, COMPONENT_MODE_ITEM_COUNT> COMPONENT_MODES = { {
|
|
||||||
ComponentPair { COMPONENT_MODE_INHERIT, { "inherit" } },
|
|
||||||
ComponentPair { COMPONENT_MODE_DISABLED, { "disabled" } },
|
|
||||||
ComponentPair { COMPONENT_MODE_ENABLED, { "enabled" } }
|
|
||||||
} };
|
|
||||||
|
|
||||||
using vec3Color = glm::vec3;
|
using vec3Color = glm::vec3;
|
||||||
using u8vec3Color = glm::u8vec3;
|
using u8vec3Color = glm::u8vec3;
|
||||||
|
|
||||||
|
@ -400,8 +393,6 @@ public:
|
||||||
|
|
||||||
static QString getComponentModeAsString(uint32_t mode);
|
static QString getComponentModeAsString(uint32_t mode);
|
||||||
|
|
||||||
std::array<ComponentPair, COMPONENT_MODE_ITEM_COUNT>::const_iterator findComponent(const QString& mode);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
float getMaxDimension() const { return glm::compMax(_dimensions); }
|
float getMaxDimension() const { return glm::compMax(_dimensions); }
|
||||||
|
|
||||||
|
|
37
libraries/shared/src/ComponentMode.cpp
Normal file
37
libraries/shared/src/ComponentMode.cpp
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
//
|
||||||
|
// Created by Sam Gondelman on 5/31/19
|
||||||
|
// Copyright 2019 High Fidelity, Inc.
|
||||||
|
//
|
||||||
|
// Distributed under the Apache License, Version 2.0.
|
||||||
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "ComponentMode.h"
|
||||||
|
|
||||||
|
const char* componentModeNames[] = {
|
||||||
|
"inherit",
|
||||||
|
"disabled",
|
||||||
|
"enabled"
|
||||||
|
};
|
||||||
|
|
||||||
|
QString ComponentModeHelpers::getNameForComponentMode(ComponentMode mode) {
|
||||||
|
if (((int)mode <= 0) || ((int)mode >= (int)COMPONENT_MODE_ITEM_COUNT)) {
|
||||||
|
mode = (ComponentMode)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return componentModeNames[(int)mode];
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* avatarPriorityModeNames[] = {
|
||||||
|
"inherit",
|
||||||
|
"crowd",
|
||||||
|
"hero"
|
||||||
|
};
|
||||||
|
|
||||||
|
QString AvatarPriorityModeHelpers::getNameForAvatarPriorityMode(AvatarPriorityMode mode) {
|
||||||
|
if (((int)mode <= 0) || ((int)mode >= (int)AVATAR_PRIORITY_ITEM_COUNT)) {
|
||||||
|
mode = (AvatarPriorityMode)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return avatarPriorityModeNames[(int)mode];
|
||||||
|
}
|
|
@ -12,6 +12,8 @@
|
||||||
#ifndef hifi_ComponentMode_h
|
#ifndef hifi_ComponentMode_h
|
||||||
#define hifi_ComponentMode_h
|
#define hifi_ComponentMode_h
|
||||||
|
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
enum ComponentMode {
|
enum ComponentMode {
|
||||||
COMPONENT_MODE_INHERIT,
|
COMPONENT_MODE_INHERIT,
|
||||||
COMPONENT_MODE_DISABLED,
|
COMPONENT_MODE_DISABLED,
|
||||||
|
@ -20,5 +22,23 @@ enum ComponentMode {
|
||||||
COMPONENT_MODE_ITEM_COUNT
|
COMPONENT_MODE_ITEM_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum AvatarPriorityMode {
|
||||||
|
AVATAR_PRIORITY_INHERIT,
|
||||||
|
AVATAR_PRIORITY_CROWD,
|
||||||
|
AVATAR_PRIORITY_HERO,
|
||||||
|
|
||||||
|
AVATAR_PRIORITY_ITEM_COUNT
|
||||||
|
};
|
||||||
|
|
||||||
|
class ComponentModeHelpers {
|
||||||
|
public:
|
||||||
|
static QString getNameForComponentMode(ComponentMode mode);
|
||||||
|
};
|
||||||
|
|
||||||
|
class AvatarPriorityModeHelpers {
|
||||||
|
public:
|
||||||
|
static QString getNameForAvatarPriorityMode(AvatarPriorityMode mode);
|
||||||
|
};
|
||||||
|
|
||||||
#endif // hifi_ComponentMode_h
|
#endif // hifi_ComponentMode_h
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue