summaryrefslogtreecommitdiffstats
path: root/editor/debugger/editor_debugger_inspector.h
diff options
context:
space:
mode:
authorFabio Alessandrelli <fabio.alessandrelli@gmail.com>2020-02-07 02:52:05 +0100
committerFabio Alessandrelli <fabio.alessandrelli@gmail.com>2020-02-21 11:12:03 +0100
commitcbc450c0e53dbfc31a30f5ebf37c51cee77cde5c (patch)
treefa1e7a1e80ec7cbe0546a752732bf34b66299100 /editor/debugger/editor_debugger_inspector.h
parent8b058d4b9a63799e29d3e9ef551bbdf8144f8f8b (diff)
downloadredot-engine-cbc450c0e53dbfc31a30f5ebf37c51cee77cde5c.tar.gz
Huge Debugger/EditorDebugger refactor.
Diffstat (limited to 'editor/debugger/editor_debugger_inspector.h')
-rw-r--r--editor/debugger/editor_debugger_inspector.h98
1 files changed, 98 insertions, 0 deletions
diff --git a/editor/debugger/editor_debugger_inspector.h b/editor/debugger/editor_debugger_inspector.h
new file mode 100644
index 0000000000..e1dfbefcf3
--- /dev/null
+++ b/editor/debugger/editor_debugger_inspector.h
@@ -0,0 +1,98 @@
+/*************************************************************************/
+/* editor_debugger_inspector.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef EDITOR_DEBUGGER_INSPECTOR_H
+#define EDITOR_DEBUGGER_INSPECTOR_H
+#include "editor/editor_inspector.h"
+
+class EditorDebuggerRemoteObject : public Object {
+
+ GDCLASS(EditorDebuggerRemoteObject, Object);
+
+protected:
+ bool _set(const StringName &p_name, const Variant &p_value);
+ bool _get(const StringName &p_name, Variant &r_ret) const;
+ void _get_property_list(List<PropertyInfo> *p_list) const;
+ static void _bind_methods();
+
+public:
+ bool editable = false;
+ ObjectID remote_object_id;
+ String type_name;
+ List<PropertyInfo> prop_list;
+ Map<StringName, Variant> prop_values;
+
+ ObjectID get_remote_object_id() { return remote_object_id; };
+ String get_title();
+
+ Variant get_variant(const StringName &p_name);
+
+ void clear() {
+ prop_list.clear();
+ prop_values.clear();
+ }
+
+ void update() { _change_notify(); }
+
+ EditorDebuggerRemoteObject(){};
+};
+
+class EditorDebuggerInspector : public EditorInspector {
+
+ GDCLASS(EditorDebuggerInspector, EditorInspector);
+
+private:
+ ObjectID inspected_object_id;
+ Map<ObjectID, EditorDebuggerRemoteObject *> remote_objects;
+ EditorDebuggerRemoteObject *variables;
+
+ void _object_selected(ObjectID p_object);
+ void _object_edited(ObjectID p_id, const String &p_prop, const Variant &p_value);
+
+protected:
+ void _notification(int p_what);
+ static void _bind_methods();
+
+public:
+ EditorDebuggerInspector();
+ ~EditorDebuggerInspector();
+
+ // Remote Object cache
+ ObjectID add_object(const Array &p_arr);
+ Object *get_object(ObjectID p_id);
+ void clear_cache();
+
+ // Stack Dump variables
+ String get_stack_variable(const String &p_var);
+ void add_stack_variable(const Array &p_arr);
+ void clear_stack_variables();
+};
+
+#endif // EDITOR_DEBUGGER_INSPECTOR_H