Skip to content

Conversation

@Prevter
Copy link
Contributor

@Prevter Prevter commented Aug 18, 2025

Adds a way for other mods to add custom properties into "Attributes" tab of the inspector.
Here's how it would be used:

#include <geode.devtools/include/API.hpp>

class MySprite : public CCSprite {
public:
    enum class RandomEnum {
        Option1,
        Option2,
        Option3
    };

    static void registerDevTools() {
        devtools::registerNode<MySprite>([](MySprite* node) {
            devtools::label("My Sprite");
            devtools::property("Some Flag", node->m_someFlag);
            devtools::property("Some Float", node->m_someFloat);
            devtools::property("Some Int", node->m_someInt);
            devtools::property("Some String", node->m_someString);
            devtools::property("Some Color", node->m_someColor);
            devtools::enumerable("Some Enum", node->m_someEnum, {
                { RandomEnum::Option1, "Option 1" },
                { RandomEnum::Option2, "Option 2" },
                { RandomEnum::Option3, "Option 3" }
            });
            devtools::button("Shake It", [&]{
                node->runAction(CCShaky3D::create(
                    0.5f, CCSize(10, 10), 5, false
                ));
            });
        });
    }

private:
    float m_someFloat = 3.14f;
    int m_someInt = 42;
    std::string m_someString = "text";
    ccColor3B m_someColor = {255, 0, 0};
    RandomEnum m_someEnum = RandomEnum::Option1;
    bool m_someFlag = true;
};

$on_mod(Loaded) {
    // makes sure DevTools is loaded before registering
    devtools::waitForDevTools([] {
        MySprite::registerDevTools();
    });
}

in devtools ui it would look like this:
image

@AlphiiGD
Copy link

LGTM 🔥

@matcool
Copy link
Member

matcool commented Sep 25, 2025

LGTM

@matcool matcool merged commit d401ac2 into geode-sdk:main Sep 25, 2025
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants