@@ -10,3 +10,57 @@ Press `F11` (`F10` for MacOS) to open up the dev tools.
1010 * Inspect individual nodes
1111 * Easily change attributes like the position and color of nodes
1212 * Multiple built-in themes
13+
14+ ## API
15+
16+ Developers can register their own node's properties to show up in DevTools like so:
17+
18+ ``` cpp
19+ #include < geode.devtools/include/API.hpp>
20+
21+ class MySprite : public CCSprite {
22+ public:
23+ enum class RandomEnum {
24+ Option1,
25+ Option2,
26+ Option3
27+ };
28+
29+ static void registerDevTools() {
30+ //
31+ devtools::registerNode<MySprite>([](MySprite* node) {
32+ devtools::label("My Sprite");
33+ devtools::property("Some Flag", node->m_someFlag);
34+ devtools::property("Some Float", node->m_someFloat);
35+ devtools::property("Some Int", node->m_someInt);
36+ devtools::property("Some String", node->m_someString);
37+ devtools::property("Some Color", node->m_someColor);
38+ devtools::enumerable("Some Enum", node->m_someEnum, {
39+ { RandomEnum::Option1, "Option 1" },
40+ { RandomEnum::Option2, "Option 2" },
41+ { RandomEnum::Option3, "Option 3" }
42+ });
43+ devtools::button ("Shake It", [ &] {
44+ node->runAction(CCShaky3D::create(
45+ 0.5f, CCSize(10, 10), 5, false
46+ ));
47+ });
48+ });
49+ }
50+
51+ private:
52+ float m_someFloat = 3.14f;
53+ int m_someInt = 42;
54+ std::string m_someString = "text";
55+ ccColor3B m_someColor = {255, 0, 0};
56+ RandomEnum m_someEnum = RandomEnum::Option1;
57+ bool m_someFlag = true;
58+ };
59+
60+ $on_mod(Loaded) {
61+ // makes sure DevTools is loaded before registering
62+ devtools::waitForDevTools([ ] {
63+ MySprite::registerDevTools();
64+ });
65+ }
66+ ```
0 commit comments