Sitelet https://github.com/geode-sdk/DevTools/pull/63
Skip to content

Add node properties API - #63

Merged
matcool merged 1 commit into
geode-sdk:mainfrom
prevter:properties-api
Sep 25, 2025
Merged

matcool merged 1 commit into
geode-sdk:mainfrom
prevter:properties-api

Conversation

@prevter

@prevter prevter commented Aug 18, 2025

Copy link
Copy Markdown
Member

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
Copy Markdown

LGTM 🔥

@matcool

matcool commented Sep 25, 2025

Copy link
Copy Markdown
Member

LGTM

@matcool
matcool merged commit d401ac2 into geode-sdk:main Sep 25, 2025
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