mirror of
https://github.com/lubosz/overte.git
synced 2025-08-07 17:41:12 +02:00
Add NO_DEPTH_SORT ItemKey flag
This commit is contained in:
parent
874f722504
commit
b2c503af0e
1 changed files with 19 additions and 11 deletions
|
@ -32,15 +32,16 @@ class Context;
|
||||||
class ItemKey {
|
class ItemKey {
|
||||||
public:
|
public:
|
||||||
enum FlagBit {
|
enum FlagBit {
|
||||||
TYPE_SHAPE = 0, // Item is a Shape
|
TYPE_SHAPE = 0, // Item is a Shape
|
||||||
TYPE_LIGHT, // Item is a Light
|
TYPE_LIGHT, // Item is a Light
|
||||||
TRANSLUCENT, // Transparent and not opaque, for some odd reason TRANSPARENCY doesn't work...
|
TRANSLUCENT, // Transparent and not opaque, for some odd reason TRANSPARENCY doesn't work...
|
||||||
VIEW_SPACE, // Transformed in view space, and not in world space
|
VIEW_SPACE, // Transformed in view space, and not in world space
|
||||||
DYNAMIC, // Dynamic and bound will change unlike static item
|
DYNAMIC, // Dynamic and bound will change unlike static item
|
||||||
DEFORMED, // Deformed within bound, not solid
|
DEFORMED, // Deformed within bound, not solid
|
||||||
INVISIBLE, // Visible or not? could be just here to cast shadow
|
INVISIBLE, // Visible or not? could be just here to cast shadow
|
||||||
SHADOW_CASTER, // Item cast shadows
|
SHADOW_CASTER, // Item cast shadows
|
||||||
PICKABLE, // Item can be picked/selected
|
PICKABLE, // Item can be picked/selected
|
||||||
|
NO_DEPTH_SORT, // Item should not be depth sorted
|
||||||
|
|
||||||
NUM_FLAGS, // Not a valid flag
|
NUM_FLAGS, // Not a valid flag
|
||||||
};
|
};
|
||||||
|
@ -68,6 +69,7 @@ public:
|
||||||
Builder& withInvisible() { _flags.set(INVISIBLE); return (*this); }
|
Builder& withInvisible() { _flags.set(INVISIBLE); return (*this); }
|
||||||
Builder& withShadowCaster() { _flags.set(SHADOW_CASTER); return (*this); }
|
Builder& withShadowCaster() { _flags.set(SHADOW_CASTER); return (*this); }
|
||||||
Builder& withPickable() { _flags.set(PICKABLE); return (*this); }
|
Builder& withPickable() { _flags.set(PICKABLE); return (*this); }
|
||||||
|
Builder& withNoDepthSort() { _flags.set(NO_DEPTH_SORT); return (*this); }
|
||||||
|
|
||||||
// Convenient standard keys that we will keep on using all over the place
|
// Convenient standard keys that we will keep on using all over the place
|
||||||
static ItemKey opaqueShape() { return Builder().withTypeShape().build(); }
|
static ItemKey opaqueShape() { return Builder().withTypeShape().build(); }
|
||||||
|
@ -79,7 +81,7 @@ public:
|
||||||
|
|
||||||
bool isWorldSpace() const { return !_flags[VIEW_SPACE]; }
|
bool isWorldSpace() const { return !_flags[VIEW_SPACE]; }
|
||||||
bool isViewSpace() const { return _flags[VIEW_SPACE]; }
|
bool isViewSpace() const { return _flags[VIEW_SPACE]; }
|
||||||
|
|
||||||
bool isStatic() const { return !_flags[DYNAMIC]; }
|
bool isStatic() const { return !_flags[DYNAMIC]; }
|
||||||
bool isDynamic() const { return _flags[DYNAMIC]; }
|
bool isDynamic() const { return _flags[DYNAMIC]; }
|
||||||
|
|
||||||
|
@ -87,11 +89,14 @@ public:
|
||||||
bool isDeformed() const { return _flags[DEFORMED]; }
|
bool isDeformed() const { return _flags[DEFORMED]; }
|
||||||
|
|
||||||
bool isVisible() const { return !_flags[INVISIBLE]; }
|
bool isVisible() const { return !_flags[INVISIBLE]; }
|
||||||
bool isUnvisible() const { return _flags[INVISIBLE]; }
|
bool isInvisible() const { return _flags[INVISIBLE]; }
|
||||||
|
|
||||||
bool isShadowCaster() const { return _flags[SHADOW_CASTER]; }
|
bool isShadowCaster() const { return _flags[SHADOW_CASTER]; }
|
||||||
|
|
||||||
bool isPickable() const { return _flags[PICKABLE]; }
|
bool isPickable() const { return _flags[PICKABLE]; }
|
||||||
|
|
||||||
|
bool isDepthSort() const { return !_flags[NO_DEPTH_SORT]; }
|
||||||
|
bool isNoDepthSort() const { return _flags[NO_DEPTH_SORT]; }
|
||||||
};
|
};
|
||||||
|
|
||||||
inline QDebug operator<<(QDebug debug, const ItemKey& itemKey) {
|
inline QDebug operator<<(QDebug debug, const ItemKey& itemKey) {
|
||||||
|
@ -141,6 +146,9 @@ public:
|
||||||
|
|
||||||
Builder& withPickable() { _value.set(ItemKey::PICKABLE); _mask.set(ItemKey::PICKABLE); return (*this); }
|
Builder& withPickable() { _value.set(ItemKey::PICKABLE); _mask.set(ItemKey::PICKABLE); return (*this); }
|
||||||
|
|
||||||
|
Builder& withDepthSort() { _value.reset(ItemKey::NO_DEPTH_SORT); _mask.set(ItemKey::NO_DEPTH_SORT); return (*this); }
|
||||||
|
Builder& withNotDepthSort() { _value.set(ItemKey::NO_DEPTH_SORT); _mask.set(ItemKey::NO_DEPTH_SORT); return (*this); }
|
||||||
|
|
||||||
// Convenient standard keys that we will keep on using all over the place
|
// Convenient standard keys that we will keep on using all over the place
|
||||||
static ItemFilter opaqueShape() { return Builder().withTypeShape().withOpaque().build(); }
|
static ItemFilter opaqueShape() { return Builder().withTypeShape().withOpaque().build(); }
|
||||||
static ItemFilter transparentShape() { return Builder().withTypeShape().withTransparent().build(); }
|
static ItemFilter transparentShape() { return Builder().withTypeShape().withTransparent().build(); }
|
||||||
|
|
Loading…
Reference in a new issue