add TypeHints for inspector viewing

typehints operate as an additional label for a given class in the inspector, allowing one to specify what class-entry to use as a tag
examples: Prefab displays prefab filename
TSStatic displays the used shape asset name
SFXEmitter displays the played sound asset
GameBase derivatives display the datablock used
This commit is contained in:
AzaezelX 2023-05-23 12:35:07 -05:00
parent 0d981b62cf
commit b1f118898e
9 changed files with 48 additions and 1 deletions

View file

@ -275,6 +275,8 @@ public:
/// Returns the datablock for this object.
GameBaseData* getDataBlock() { return mDataBlock; }
/// returns the datablock name for this object
StringTableEntry getTypeHint() const override { return (mDataBlock) ? mDataBlock->getName() : StringTable->EmptyString(); };
/// Called when a new datablock is set. This allows subclasses to
/// appropriately handle new datablocks.
///

View file

@ -93,6 +93,10 @@ void Prefab::initPersistFields()
Parent::initPersistFields();
}
StringTableEntry Prefab::getTypeHint() const
{
return (mFilename != StringTable->EmptyString()) ? StringTable->insert(Torque::Path(mFilename).getFileName().c_str()) : StringTable->EmptyString();
}
extern bool gEditingMission;
bool Prefab::onAdd()

View file

@ -60,6 +60,9 @@ public:
static void initPersistFields();
/// returns the filename for this object
StringTableEntry getTypeHint() const override;
// SimObject
virtual bool onAdd();
virtual void onRemove();

View file

@ -106,6 +106,8 @@ class SFXEmitter : public SceneObject
DECLARE_SOUNDASSET(SFXEmitter, Sound);
DECLARE_ASSET_NET_SETGET(SFXEmitter, Sound, DirtyUpdateMask);
/// returns the shape asset used for this object
StringTableEntry getTypeHint() const override { return (getSoundAsset()) ? getSoundAsset()->getAssetName() : StringTable->EmptyString(); }
/// The sound source for the emitter.
SFXSource *mSource;

View file

@ -237,6 +237,8 @@ public:
DECLARE_CONOBJECT(TSStatic);
static void initPersistFields();
/// returns the shape asset used for this object
StringTableEntry getTypeHint() const override { return (getShapeAsset()) ? getShapeAsset()->getAssetName(): StringTable->EmptyString(); }
static void consoleInit();
static bool _setFieldSkin(void* object, const char* index, const char* data);
static const char* _getFieldSkin(void* object, const char* data);