diff --git a/direct/src/leveleditor/LevelEditorBase.py b/direct/src/leveleditor/LevelEditorBase.py index 1667e462ed..48a33d0812 100755 --- a/direct/src/leveleditor/LevelEditorBase.py +++ b/direct/src/leveleditor/LevelEditorBase.py @@ -27,7 +27,10 @@ class LevelEditorBase(DirectObject): self.NPParent = render # define your own config file in inherited class - self.settingsFile = None + self.settingsFile = None + + # you can show/hide specific properties by using propertiesMask and this mode + self.mode = BitMask32() def initialize(self): """ You should call this in your __init__ method of inherited LevelEditor class """ diff --git a/direct/src/leveleditor/ObjectPaletteBase.py b/direct/src/leveleditor/ObjectPaletteBase.py index 31e45c84fd..e0041624ca 100755 --- a/direct/src/leveleditor/ObjectPaletteBase.py +++ b/direct/src/leveleditor/ObjectPaletteBase.py @@ -9,7 +9,7 @@ class ObjectGen: class ObjectBase(ObjectGen): """ Base class for obj definitions """ def __init__(self, name='', createFunction = None, model = None, models= [], anims = [], animNames = [], properties={}, - movable = True, actor = False, named=False, orderedProperties=[]): + movable = True, actor = False, named=False, orderedProperties=[], propertiesMask={}): ObjectGen.__init__(self, name) self.createFunction = createFunction self.model = model @@ -20,7 +20,10 @@ class ObjectBase(ObjectGen): self.movable = movable self.actor = actor self.named = named + # to maintain order of properties in UI self.orderedProperties = orderedProperties[:] + # to show/hide properties per editor mode + self.propertiesMask = copy.deepcopy(propertiesMask) class ObjectPaletteBase: """ diff --git a/direct/src/leveleditor/ObjectPropertyUI.py b/direct/src/leveleditor/ObjectPropertyUI.py index 99bbd62e12..31afa018c5 100755 --- a/direct/src/leveleditor/ObjectPropertyUI.py +++ b/direct/src/leveleditor/ObjectPropertyUI.py @@ -343,6 +343,16 @@ class ObjectPropertyUI(ScrolledPanel): propNames.append(key) for key in propNames: + # handling properties mask + propMask = BitMask32() + for modeKey in objDef.propertiesMask.keys(): + if key in objDef.propertiesMask[modeKey]: + propMask |= modeKey + + if not propMask.isZero(): + if (self.editor.mode & propMask).isZero(): + continue + propDef = objDef.properties[key] propType = propDef[OG.PROP_TYPE] propDataType = propDef[OG.PROP_DATATYPE]