From ddaa6f8df860f1739a050d7d0e0a62777781aabd Mon Sep 17 00:00:00 2001 From: Mounir Tohami Date: Fri, 20 Dec 2024 23:50:28 +0200 Subject: [PATCH] update --- pixel/main_tree.cpp | 25 ++++++++++++++++++-- pixel/main_tree.h | 4 ++-- pixel/pixel_engine.cpp | 46 ++++++++++++++++++++++++++++++++++++ pixel/pixel_engine.h | 51 ++++++++++++++++++++++++++++++++++++++++ pixel/user_interface.cpp | 45 +++++++++++++++++++++++++++++++++++ pixel/user_interface.h | 51 ++++++++++++++++++++++++++++++++++++++++ 6 files changed, 218 insertions(+), 4 deletions(-) create mode 100644 pixel/pixel_engine.cpp create mode 100644 pixel/pixel_engine.h create mode 100644 pixel/user_interface.cpp create mode 100644 pixel/user_interface.h diff --git a/pixel/main_tree.cpp b/pixel/main_tree.cpp index aef6a88418e5..ec9c9ee9e0ea 100644 --- a/pixel/main_tree.cpp +++ b/pixel/main_tree.cpp @@ -27,12 +27,32 @@ #include "main_tree.h" +#include "core/config/project_settings.h" +#include "pixel/pixel_engine.h" #include "scene/main/window.h" -MainTree *MainTree::singleton = nullptr; - void MainTree::initialize() { SceneTree::initialize(); + + // DisplayServer::get_singleton()->window_set_vsync_mode(DisplayServer::VSyncMode::VSYNC_DISABLED); + // ProjectSettings::get_singleton()->set("debug/settings/stdout/print_fps", true); + + // List plist; + // ProjectSettings::get_singleton()->get_property_list(&plist); + + // for (const PropertyInfo &E : plist) { + // print_line(E.name); + // } + + // print_line(PixelEngine::get_singleton()->get_name()); + // print_line(Engine::get_singleton()->get_version_info()); + // print_line(OS::get_singleton()->get_current_rendering_driver_name()); + // print_line(OS::get_singleton()->get_current_rendering_method()); + // OS::get_singleton()->shell_show_in_file_manager(OS::get_singleton()->get_user_data_dir(), true); + + if (!FileAccess::exists(OS::get_singleton()->get_user_data_dir().path_join("settings.pixel"))) { + ProjectSettings::get_singleton()->save(); + } } MainTree::MainTree() { @@ -46,4 +66,5 @@ MainTree::MainTree() { root->set_title("Pixel Engine"); root->set_name("Root"); root->set_auto_translate_mode(Node::AUTO_TRANSLATE_MODE_DISABLED); + root->add_child(memnew(PixelEngine)); } diff --git a/pixel/main_tree.h b/pixel/main_tree.h index e35a8c9123c6..c9e9bd962038 100644 --- a/pixel/main_tree.h +++ b/pixel/main_tree.h @@ -31,10 +31,10 @@ #include "scene/main/scene_tree.h" class MainTree : public SceneTree { - GDCLASS(MainTree, SceneTree); + GDCLASS(MainTree, SceneTree) + static inline MainTree *singleton; Window *root = nullptr; - static MainTree *singleton; public: static MainTree *get_singleton() { return singleton; } diff --git a/pixel/pixel_engine.cpp b/pixel/pixel_engine.cpp new file mode 100644 index 000000000000..4adf386b2ed7 --- /dev/null +++ b/pixel/pixel_engine.cpp @@ -0,0 +1,46 @@ +/**************************************************************************/ +/* pixel_engine.cpp */ +/**************************************************************************/ +/* PIXEL ENGINE */ +/**************************************************************************/ +/* Copyright (c) 2024-present Pixel Engine contributors (see 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. */ +/**************************************************************************/ + +#include "pixel_engine.h" + +// #include "core/input/input_event.h" +#include "pixel/user_interface.h" + +void PixelEngine::_notification(int p_what) { +} + +void PixelEngine::shortcut_input(const Ref &p_event) { + // Shortcuts. +} + +PixelEngine::PixelEngine() { + set_name("PixelEngine"); + singleton = this; + set_process_shortcut_input(true); + + add_child(memnew(UserInterface)); +} diff --git a/pixel/pixel_engine.h b/pixel/pixel_engine.h new file mode 100644 index 000000000000..0d356df0eb01 --- /dev/null +++ b/pixel/pixel_engine.h @@ -0,0 +1,51 @@ +/**************************************************************************/ +/* pixel_engine.h */ +/**************************************************************************/ +/* PIXEL ENGINE */ +/**************************************************************************/ +/* Copyright (c) 2024-present Pixel Engine contributors (see 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 PIXEL_ENGINE_H +#define PIXEL_ENGINE_H + +#include "scene/main/node.h" + +class UserInterface; + +class PixelEngine : public Node { + GDCLASS(PixelEngine, Node) + + static inline PixelEngine *singleton; + +protected: + void _notification(int p_what); + void shortcut_input(const Ref &p_event) override; + +public: + static PixelEngine *get_singleton() { return singleton; } + + PixelEngine(); + ~PixelEngine() {} +}; + +#endif // PIXEL_ENGINE_H diff --git a/pixel/user_interface.cpp b/pixel/user_interface.cpp new file mode 100644 index 000000000000..606d6de4cab9 --- /dev/null +++ b/pixel/user_interface.cpp @@ -0,0 +1,45 @@ +/**************************************************************************/ +/* user_interface.cpp */ +/**************************************************************************/ +/* PIXEL ENGINE */ +/**************************************************************************/ +/* Copyright (c) 2024-present Pixel Engine contributors (see 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. */ +/**************************************************************************/ + +#include "user_interface.h" +#include "scene/gui/box_container.h" + +void UserInterface::_notification(int p_what) { +} + +UserInterface::UserInterface() { + singleton = this; + set_name("UserInterface"); + set_anchors_and_offsets_preset(PRESET_FULL_RECT); + set_theme_type_variation("FlatPanel"); + + main_vbox = memnew(VBoxContainer); + add_child(main_vbox); + + top_hbox = memnew(HBoxContainer); + main_vbox->add_child(top_hbox); +} diff --git a/pixel/user_interface.h b/pixel/user_interface.h new file mode 100644 index 000000000000..9546a07221b0 --- /dev/null +++ b/pixel/user_interface.h @@ -0,0 +1,51 @@ +/**************************************************************************/ +/* user_interface.h */ +/**************************************************************************/ +/* PIXEL ENGINE */ +/**************************************************************************/ +/* Copyright (c) 2024-present Pixel Engine contributors (see 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 USER_INTERFACE_H +#define USER_INTERFACE_H + +#include "scene/gui/panel_container.h" + +class HBoxContainer; +class VBoxContainer; + +class UserInterface : public PanelContainer { + GDCLASS(UserInterface, PanelContainer) + + static inline UserInterface *singleton; + VBoxContainer *main_vbox; + HBoxContainer *top_hbox; + +public: + static UserInterface *get_singleton() { return singleton; } + + void _notification(int p_what); + + UserInterface(); +}; + +#endif // USER_INTERFACE_H