@@ -8,7 +8,7 @@ using namespace geode::prelude;
88
99template <typename T>
1010static void handleType () {
11- new EventListener<EventFilter< devtools::PropertyFnEvent<T>>>(+ [](devtools::PropertyFnEvent<T>* event ) {
11+ devtools::PropertyFnEvent<T>(). listen ( [](typename devtools::PropertyFnEvent<T>::Fn*& fnPtr ) {
1212 constexpr bool isSigned = std::is_signed_v<T>;
1313 constexpr ImGuiDataType dataType =
1414 std::is_same_v<T, float > ? ImGuiDataType_Float :
@@ -17,14 +17,14 @@ static void handleType() {
1717 sizeof (T) == 2 ? (isSigned ? ImGuiDataType_S16 : ImGuiDataType_U16) :
1818 sizeof (T) == 4 ? (isSigned ? ImGuiDataType_S32 : ImGuiDataType_U32) :
1919 isSigned ? ImGuiDataType_S64 : ImGuiDataType_U64;
20- event-> fn = +[](const char * name, T& prop) {
20+ fnPtr = +[](const char * name, T& prop) {
2121 return ImGui::DragScalar (name, dataType, &prop);
2222 };
2323 return ListenerResult::Stop;
24- });
24+ }). leak () ;
2525
26- new EventListener<EventFilter< devtools::EnumerableFnEvent<T>>>(+ [](devtools::EnumerableFnEvent<T>* event ) {
27- event-> fn = +[](const char * label, T* value, std::span<std::pair<T, const char *> const > items) {
26+ devtools::EnumerableFnEvent<T>(). listen ( [](typename devtools::EnumerableFnEvent<T>::Fn*& fnPtr ) {
27+ fnPtr = +[](const char * label, T* value, std::span<std::pair<T, const char *> const > items) {
2828 ImGui::Text (" %s:" , label);
2929 size_t i = 0 ;
3030 bool changed = false ;
@@ -41,7 +41,7 @@ static void handleType() {
4141 return changed;
4242 };
4343 return ListenerResult::Stop;
44- });
44+ }). leak () ;
4545}
4646
4747void devtools::newLine () {
@@ -73,10 +73,10 @@ void devtools::inputMultiline(const char* label, std::string& str) {
7373}
7474
7575$execute {
76- new EventListener<EventFilter< devtools::RegisterNodeEvent>>(+ [](devtools::RegisterNodeEvent* event ) {
77- DevTools::get ()->addCustomCallback (std::move (event-> callback ));
76+ devtools::RegisterNodeEvent (). listen ( [](Function< void (CCNode*)> callback ) {
77+ DevTools::get ()->addCustomCallback (std::move (callback));
7878 return ListenerResult::Stop;
79- });
79+ }). leak () ;
8080
8181 // Scalars & Enums
8282 handleType<char >();
@@ -93,24 +93,24 @@ void devtools::inputMultiline(const char* label, std::string& str) {
9393 handleType<double >();
9494
9595 // checkbox
96- new EventListener<EventFilter< devtools::PropertyFnEvent<bool >>>(+ [](devtools::PropertyFnEvent<bool >* event ) {
97- event-> fn = +[](const char * name, bool & prop) {
96+ devtools::PropertyFnEvent<bool >(). listen ( [](devtools::PropertyFnEvent<bool >::Fn*& fnPtr ) {
97+ fnPtr = +[](const char * name, bool & prop) {
9898 return ImGui::Checkbox (name, &prop);
9999 };
100100 return ListenerResult::Stop;
101- });
101+ }). leak () ;
102102
103103 // string
104- new EventListener<EventFilter< devtools::PropertyFnEvent<std::string>>>(+ [](devtools::PropertyFnEvent<std::string>* event ) {
105- event-> fn = +[](const char * name, std::string& prop) {
104+ devtools::PropertyFnEvent<std::string>(). listen ( [](devtools::PropertyFnEvent<std::string>::Fn*& fnPtr ) {
105+ fnPtr = +[](const char * name, std::string& prop) {
106106 return ImGui::InputText (name, &prop);
107107 };
108108 return ListenerResult::Stop;
109- });
109+ }). leak () ;
110110
111111 // colors
112- new EventListener<EventFilter< devtools::PropertyFnEvent<ccColor3B>>>(+ [](devtools::PropertyFnEvent<ccColor3B>* event ) {
113- event-> fn = +[](const char * name, ccColor3B& prop) {
112+ devtools::PropertyFnEvent<ccColor3B>(). listen ( [](devtools::PropertyFnEvent<ccColor3B>::Fn*& fnPtr ) {
113+ fnPtr = +[](const char * name, ccColor3B& prop) {
114114 auto color = ImVec4 (
115115 prop.r / 255 .f ,
116116 prop.g / 255 .f ,
@@ -126,9 +126,9 @@ void devtools::inputMultiline(const char* label, std::string& str) {
126126 return false ;
127127 };
128128 return ListenerResult::Stop;
129- });
130- new EventListener<EventFilter< devtools::PropertyFnEvent<ccColor4B>>>(+ [](devtools::PropertyFnEvent<ccColor4B>* event ) {
131- event-> fn = +[](const char * name, ccColor4B& prop) {
129+ }). leak () ;
130+ devtools::PropertyFnEvent<ccColor4B>(). listen ( [](devtools::PropertyFnEvent<ccColor4B>::Fn*& fnPtr ) {
131+ fnPtr = +[](const char * name, ccColor4B& prop) {
132132 auto color = ImVec4 (
133133 prop.r / 255 .f ,
134134 prop.g / 255 .f ,
@@ -145,48 +145,48 @@ void devtools::inputMultiline(const char* label, std::string& str) {
145145 return false ;
146146 };
147147 return ListenerResult::Stop;
148- });
149- new EventListener<EventFilter< devtools::PropertyFnEvent<ccColor4F>>>(+ [](devtools::PropertyFnEvent<ccColor4F>* event ) {
150- event-> fn = +[](const char * name, ccColor4F& prop) {
148+ }). leak () ;
149+ devtools::PropertyFnEvent<ccColor4F>(). listen ( [](devtools::PropertyFnEvent<ccColor4F>::Fn*& fnPtr ) {
150+ fnPtr = +[](const char * name, ccColor4F& prop) {
151151 return ImGui::ColorEdit4 (name, reinterpret_cast <float *>(&prop));
152152 };
153153 return ListenerResult::Stop;
154- });
154+ }). leak () ;
155155
156156 // points/sizes
157- new EventListener<EventFilter< devtools::PropertyFnEvent<CCPoint>>>(+ [](devtools::PropertyFnEvent<CCPoint>* event ) {
158- event-> fn = +[](const char * name, CCPoint& prop) {
157+ devtools::PropertyFnEvent<CCPoint>(). listen ( [](devtools::PropertyFnEvent<CCPoint>::Fn*& fnPtr ) {
158+ fnPtr = +[](const char * name, CCPoint& prop) {
159159 return ImGui::DragFloat2 (name, reinterpret_cast <float *>(&prop));
160160 };
161161 return ListenerResult::Stop;
162- });
162+ }). leak () ;
163163
164- new EventListener<EventFilter< devtools::PropertyFnEvent<CCSize>>>(+ [](devtools::PropertyFnEvent<CCSize>* event ) {
165- event-> fn = +[](const char * name, CCSize& prop) {
164+ devtools::PropertyFnEvent<CCSize>(). listen ( [](devtools::PropertyFnEvent<CCSize>::Fn*& fnPtr ) {
165+ fnPtr = +[](const char * name, CCSize& prop) {
166166 return ImGui::DragFloat2 (name, reinterpret_cast <float *>(&prop));
167167 };
168168 return ListenerResult::Stop;
169- });
170- new EventListener<EventFilter< devtools::PropertyFnEvent<CCRect>>>(+ [](devtools::PropertyFnEvent<CCRect>* event ) {
171- event-> fn = +[](const char * name, CCRect& prop) {
169+ }). leak () ;
170+ devtools::PropertyFnEvent<CCRect>(). listen ( [](devtools::PropertyFnEvent<CCRect>::Fn*& fnPtr ) {
171+ fnPtr = +[](const char * name, CCRect& prop) {
172172 return ImGui::DragFloat4 (name, reinterpret_cast <float *>(&prop));
173173 };
174174 return ListenerResult::Stop;
175- });
175+ }). leak () ;
176176
177177 // label
178- new EventListener<EventFilter< devtools::DrawLabelFnEvent>>(+ [](devtools::DrawLabelFnEvent* event ) {
179- event-> fn = +[](const char * text) {
178+ devtools::DrawLabelFnEvent (). listen ( [](devtools::DrawLabelFnEvent::Fn*& fnPtr ) {
179+ fnPtr = +[](const char * text) {
180180 ImGui::Text (" %s" , text);
181181 };
182182 return ListenerResult::Stop;
183- });
183+ }). leak () ;
184184
185185 // button
186- new EventListener<EventFilter< devtools::ButtonFnEvent>>(+ [](devtools::ButtonFnEvent* event ) {
187- event-> fn = +[](const char * label) {
186+ devtools::ButtonFnEvent (). listen ( [](devtools::ButtonFnEvent::Fn*& fnPtr ) {
187+ fnPtr = +[](const char * label) {
188188 return ImGui::Button (label);
189189 };
190190 return ListenerResult::Stop;
191- });
191+ }). leak () ;
192192}
0 commit comments