Compare commits
5 Commits
388236a291
...
a3838e0a4c
Author | SHA1 | Date |
---|---|---|
|
a3838e0a4c | |
|
576df4092a | |
|
b8f266588a | |
|
eac7e56f42 | |
|
2dfe775f7b |
|
@ -14,6 +14,10 @@ You can change your decision at any time - both versions are fully compatible.
|
||||||
Get GDExtension version
|
Get GDExtension version
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
|
Precompiled builds are available on the official
|
||||||
|
`LimboAI GitHub <https://github.com/limbonaut/limboai#getting-limboai>`_ page,
|
||||||
|
and in the Asset Library.
|
||||||
|
|
||||||
GDExtension is the most convenient way of using the LimboAI plugin, but it comes
|
GDExtension is the most convenient way of using the LimboAI plugin, but it comes
|
||||||
with certain limitations:
|
with certain limitations:
|
||||||
|
|
||||||
|
@ -34,8 +38,7 @@ Get module version
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
Precompiled builds are available on the official
|
Precompiled builds are available on the official
|
||||||
`LimboAI GitHub <https://github.com/limbonaut/limboai#getting-limboai>`_ page,
|
`LimboAI GitHub <https://github.com/limbonaut/limboai#getting-limboai>`_ page.
|
||||||
and in the Asset Library (coming soon!).
|
|
||||||
|
|
||||||
Installation instructions:
|
Installation instructions:
|
||||||
|
|
||||||
|
@ -44,3 +47,5 @@ Installation instructions:
|
||||||
3. Extract the pre-compiled editor and the demo project files.
|
3. Extract the pre-compiled editor and the demo project files.
|
||||||
4. Launch the pre-compiled editor binary, import and open the demo project.
|
4. Launch the pre-compiled editor binary, import and open the demo project.
|
||||||
5. Run the project.
|
5. Run the project.
|
||||||
|
|
||||||
|
**Important**: To export your game using the module version of LimboAI, make sure to use the pre-compiled export templates included in the same GitHub release build.
|
||||||
|
|
|
@ -287,14 +287,14 @@ void EditorPropertyBBParam::update_property() {
|
||||||
variable_editor->update_property();
|
variable_editor->update_property();
|
||||||
variable_editor->show();
|
variable_editor->show();
|
||||||
bottom_container->hide();
|
bottom_container->hide();
|
||||||
type_choice->set_icon(get_editor_theme_icon(SNAME("LimboExtraVariable")));
|
type_choice->set_button_icon(get_editor_theme_icon(SNAME("LimboExtraVariable")));
|
||||||
} else {
|
} else {
|
||||||
_create_value_editor(param->get_type());
|
_create_value_editor(param->get_type());
|
||||||
variable_editor->hide();
|
variable_editor->hide();
|
||||||
value_editor->show();
|
value_editor->show();
|
||||||
value_editor->set_object_and_property(param.ptr(), SNAME("saved_value"));
|
value_editor->set_object_and_property(param.ptr(), SNAME("saved_value"));
|
||||||
value_editor->update_property();
|
value_editor->update_property();
|
||||||
type_choice->set_icon(get_editor_theme_icon(Variant::get_type_name(param->get_type())));
|
type_choice->set_button_icon(get_editor_theme_icon(Variant::get_type_name(param->get_type())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -316,7 +316,7 @@ void EditorPropertyBBParam::_notification(int p_what) {
|
||||||
|
|
||||||
{
|
{
|
||||||
String type = Variant::get_type_name(_get_edited_param()->get_type());
|
String type = Variant::get_type_name(_get_edited_param()->get_type());
|
||||||
type_choice->set_icon(get_editor_theme_icon(type));
|
type_choice->set_button_icon(get_editor_theme_icon(type));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize type choice.
|
// Initialize type choice.
|
||||||
|
|
|
@ -917,6 +917,7 @@ void LimboAIEditor::_on_visibility_changed() {
|
||||||
}
|
}
|
||||||
|
|
||||||
task_palette->refresh();
|
task_palette->refresh();
|
||||||
|
_update_banners();
|
||||||
}
|
}
|
||||||
_update_favorite_tasks();
|
_update_favorite_tasks();
|
||||||
|
|
||||||
|
@ -1419,9 +1420,11 @@ void LimboAIEditor::_update_misc_menu() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void LimboAIEditor::_update_banners() {
|
void LimboAIEditor::_update_banners() {
|
||||||
for (int i = 0; i < banners->get_child_count(); i++) {
|
for (int i = banners->get_child_count() - 1; i >= 0; i--) {
|
||||||
if (banners->get_child(i)->has_meta(LW_NAME(managed))) {
|
if (banners->get_child(i)->has_meta(LW_NAME(managed))) {
|
||||||
banners->get_child(i)->queue_free();
|
Node *banner = banners->get_child(i);
|
||||||
|
banners->remove_child(banner);
|
||||||
|
memfree(banner);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1435,7 +1438,7 @@ void LimboAIEditor::_update_banners() {
|
||||||
banner->add_spacer();
|
banner->add_spacer();
|
||||||
banner->add_action(TTR("Help..."), callable_mp(LimboUtility::get_singleton(), &LimboUtility::open_doc_custom_tasks));
|
banner->add_action(TTR("Help..."), callable_mp(LimboUtility::get_singleton(), &LimboUtility::open_doc_custom_tasks));
|
||||||
banner->set_meta(LW_NAME(managed), Variant(true));
|
banner->set_meta(LW_NAME(managed), Variant(true));
|
||||||
banners->call_deferred(LW_NAME(add_child), banner);
|
banners->add_child(banner);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1449,7 +1452,7 @@ void LimboAIEditor::_update_banners() {
|
||||||
banner->add_action(TTR("Remove"), callable_mp(this, &LimboAIEditor::_remove_task_from_favorite).bind(task_meta), true);
|
banner->add_action(TTR("Remove"), callable_mp(this, &LimboAIEditor::_remove_task_from_favorite).bind(task_meta), true);
|
||||||
banner->add_action(TTR("Edit Favorite Tasks..."), callable_mp(this, &LimboAIEditor::_edit_project_settings));
|
banner->add_action(TTR("Edit Favorite Tasks..."), callable_mp(this, &LimboAIEditor::_edit_project_settings));
|
||||||
banner->set_meta(LW_NAME(managed), Variant(true));
|
banner->set_meta(LW_NAME(managed), Variant(true));
|
||||||
banners->call_deferred(LW_NAME(add_child), banner);
|
banners->add_child(banner);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1459,7 +1462,7 @@ void LimboAIEditor::_update_banners() {
|
||||||
banner->set_text(TTR("Restart required to apply changes to editor layout"));
|
banner->set_text(TTR("Restart required to apply changes to editor layout"));
|
||||||
banner->add_action(TTR("Save & Restart"), callable_mp(this, &LimboAIEditor::_save_and_restart), true);
|
banner->add_action(TTR("Save & Restart"), callable_mp(this, &LimboAIEditor::_save_and_restart), true);
|
||||||
banner->set_meta(LW_NAME(managed), Variant(true));
|
banner->set_meta(LW_NAME(managed), Variant(true));
|
||||||
banners->call_deferred(LW_NAME(add_child), banner);
|
banners->add_child(banner);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1508,7 +1511,6 @@ void LimboAIEditor::_notification(int p_what) {
|
||||||
task_tree->connect("task_activated", callable_mp(this, &LimboAIEditor::_on_tree_task_activated));
|
task_tree->connect("task_activated", callable_mp(this, &LimboAIEditor::_on_tree_task_activated));
|
||||||
task_tree->connect("probability_clicked", callable_mp(this, &LimboAIEditor::_action_selected).bind(ACTION_EDIT_PROBABILITY));
|
task_tree->connect("probability_clicked", callable_mp(this, &LimboAIEditor::_action_selected).bind(ACTION_EDIT_PROBABILITY));
|
||||||
task_tree->connect("visibility_changed", callable_mp(this, &LimboAIEditor::_on_visibility_changed));
|
task_tree->connect("visibility_changed", callable_mp(this, &LimboAIEditor::_on_visibility_changed));
|
||||||
task_tree->connect("visibility_changed", callable_mp(this, &LimboAIEditor::_update_banners));
|
|
||||||
save_btn->connect(LW_NAME(pressed), callable_mp(this, &LimboAIEditor::_on_save_pressed));
|
save_btn->connect(LW_NAME(pressed), callable_mp(this, &LimboAIEditor::_on_save_pressed));
|
||||||
misc_btn->connect(LW_NAME(pressed), callable_mp(this, &LimboAIEditor::_update_misc_menu));
|
misc_btn->connect(LW_NAME(pressed), callable_mp(this, &LimboAIEditor::_update_misc_menu));
|
||||||
misc_btn->get_popup()->connect("id_pressed", callable_mp(this, &LimboAIEditor::_misc_option_selected));
|
misc_btn->get_popup()->connect("id_pressed", callable_mp(this, &LimboAIEditor::_misc_option_selected));
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include "core/object/object.h"
|
#include "core/object/object.h"
|
||||||
#include "core/templates/hash_set.h"
|
#include "core/templates/hash_set.h"
|
||||||
#include "editor/editor_node.h"
|
#include "editor/editor_node.h"
|
||||||
|
#include "editor/editor_main_screen.h"
|
||||||
#include "editor/editor_undo_redo_manager.h"
|
#include "editor/editor_undo_redo_manager.h"
|
||||||
#include "editor/gui/editor_spin_slider.h"
|
#include "editor/gui/editor_spin_slider.h"
|
||||||
#include "editor/plugins/editor_plugin.h"
|
#include "editor/plugins/editor_plugin.h"
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
# Edit the following variables to change version info
|
# Edit the following variables to change version info
|
||||||
|
|
||||||
major = 1
|
major = 1
|
||||||
minor = 4
|
minor = 3
|
||||||
patch = 0
|
patch = 1
|
||||||
status = "dev"
|
status = ""
|
||||||
doc_branch = "latest"
|
doc_branch = "v1.3.1"
|
||||||
godot_cpp_ref = "godot-4.3-stable"
|
godot_cpp_ref = "godot-4.3-stable"
|
||||||
|
|
||||||
# Code that generates version header
|
# Code that generates version header
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include "core/io/resource.h"
|
#include "core/io/resource.h"
|
||||||
#include "core/variant/variant.h"
|
#include "core/variant/variant.h"
|
||||||
#include "editor/editor_node.h"
|
#include "editor/editor_node.h"
|
||||||
|
#include "editor/editor_main_screen.h"
|
||||||
#include "editor/plugins/script_editor_plugin.h"
|
#include "editor/plugins/script_editor_plugin.h"
|
||||||
#endif // TOOLS_ENABLED
|
#endif // TOOLS_ENABLED
|
||||||
|
|
||||||
|
@ -213,7 +214,7 @@ Variant VARIANT_DEFAULT(Variant::Type p_type) {
|
||||||
void SHOW_BUILTIN_DOC(const String &p_topic) {
|
void SHOW_BUILTIN_DOC(const String &p_topic) {
|
||||||
#ifdef LIMBOAI_MODULE
|
#ifdef LIMBOAI_MODULE
|
||||||
ScriptEditor::get_singleton()->goto_help(p_topic);
|
ScriptEditor::get_singleton()->goto_help(p_topic);
|
||||||
EditorNode::get_singleton()->set_visible_editor(EditorNode::EDITOR_SCRIPT);
|
EditorNode::get_singleton()->get_editor_main_screen()->select(EditorMainScreen::EDITOR_SCRIPT);
|
||||||
#elif LIMBOAI_GDEXTENSION
|
#elif LIMBOAI_GDEXTENSION
|
||||||
TypedArray<ScriptEditorBase> open_editors = EditorInterface::get_singleton()->get_script_editor()->get_open_script_editors();
|
TypedArray<ScriptEditorBase> open_editors = EditorInterface::get_singleton()->get_script_editor()->get_open_script_editors();
|
||||||
ERR_FAIL_COND_MSG(open_editors.size() == 0, "Can't open help page. Need at least one script open in the script editor.");
|
ERR_FAIL_COND_MSG(open_editors.size() == 0, "Can't open help page. Need at least one script open in the script editor.");
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#define EDITOR_FILE_SYSTEM() (EditorFileSystem::get_singleton())
|
#define EDITOR_FILE_SYSTEM() (EditorFileSystem::get_singleton())
|
||||||
#define EDITOR_SETTINGS() (EditorSettings::get_singleton())
|
#define EDITOR_SETTINGS() (EditorSettings::get_singleton())
|
||||||
#define BASE_CONTROL() (EditorNode::get_singleton()->get_gui_base())
|
#define BASE_CONTROL() (EditorNode::get_singleton()->get_gui_base())
|
||||||
#define MAIN_SCREEN_CONTROL() (EditorNode::get_singleton()->get_main_screen_control())
|
#define MAIN_SCREEN_CONTROL() (EditorNode::get_singleton()->get_editor_main_screen()->get_control())
|
||||||
#define SCENE_TREE() (SceneTree::get_singleton())
|
#define SCENE_TREE() (SceneTree::get_singleton())
|
||||||
#define IS_DEBUGGER_ACTIVE() (EngineDebugger::is_active())
|
#define IS_DEBUGGER_ACTIVE() (EngineDebugger::is_active())
|
||||||
#define FS_DOCK_SELECT_FILE(m_path) FileSystemDock::get_singleton()->select_file(m_path)
|
#define FS_DOCK_SELECT_FILE(m_path) FileSystemDock::get_singleton()->select_file(m_path)
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
#define IS_CLASS(m_obj, m_class) (m_obj->is_class_ptr(m_class::get_class_ptr_static()))
|
#define IS_CLASS(m_obj, m_class) (m_obj->is_class_ptr(m_class::get_class_ptr_static()))
|
||||||
#define RAND_RANGE(m_from, m_to) (Math::random(m_from, m_to))
|
#define RAND_RANGE(m_from, m_to) (Math::random(m_from, m_to))
|
||||||
#define RANDF() (Math::randf())
|
#define RANDF() (Math::randf())
|
||||||
#define BUTTON_SET_ICON(m_btn, m_icon) m_btn->set_icon(m_icon)
|
#define BUTTON_SET_ICON(m_btn, m_icon) m_btn->set_button_icon(m_icon)
|
||||||
#define RESOURCE_LOAD(m_path, m_hint) ResourceLoader::load(m_path, m_hint)
|
#define RESOURCE_LOAD(m_path, m_hint) ResourceLoader::load(m_path, m_hint)
|
||||||
#define RESOURCE_LOAD_NO_CACHE(m_path, m_hint) ResourceLoader::load(m_path, m_hint, ResourceFormatLoader::CACHE_MODE_IGNORE)
|
#define RESOURCE_LOAD_NO_CACHE(m_path, m_hint) ResourceLoader::load(m_path, m_hint, ResourceFormatLoader::CACHE_MODE_IGNORE)
|
||||||
#define RESOURCE_SAVE(m_res, m_path, m_flags) ResourceSaver::save(m_res, m_path, m_flags)
|
#define RESOURCE_SAVE(m_res, m_path, m_flags) ResourceSaver::save(m_res, m_path, m_flags)
|
||||||
|
@ -47,7 +47,7 @@
|
||||||
#define GET_PROJECT_SETTINGS_DIR() EditorPaths::get_singleton()->get_project_settings_dir()
|
#define GET_PROJECT_SETTINGS_DIR() EditorPaths::get_singleton()->get_project_settings_dir()
|
||||||
#define EDIT_RESOURCE(m_res) EditorNode::get_singleton()->edit_resource(m_res)
|
#define EDIT_RESOURCE(m_res) EditorNode::get_singleton()->edit_resource(m_res)
|
||||||
#define INSPECTOR_GET_EDITED_OBJECT() (InspectorDock::get_inspector_singleton()->get_edited_object())
|
#define INSPECTOR_GET_EDITED_OBJECT() (InspectorDock::get_inspector_singleton()->get_edited_object())
|
||||||
#define SET_MAIN_SCREEN_EDITOR(m_name) (EditorNode::get_singleton()->select_editor_by_name(m_name))
|
#define SET_MAIN_SCREEN_EDITOR(m_name) (EditorNode::get_singleton()->get_editor_main_screen()->select_by_name(m_name))
|
||||||
#define FILE_EXISTS(m_path) FileAccess::exists(m_path)
|
#define FILE_EXISTS(m_path) FileAccess::exists(m_path)
|
||||||
#define DIR_ACCESS_CREATE() DirAccess::create(DirAccess::ACCESS_RESOURCES)
|
#define DIR_ACCESS_CREATE() DirAccess::create(DirAccess::ACCESS_RESOURCES)
|
||||||
#define PERFORMANCE_ADD_CUSTOM_MONITOR(m_id, m_callable) (Performance::get_singleton()->add_custom_monitor(m_id, m_callable, Variant()))
|
#define PERFORMANCE_ADD_CUSTOM_MONITOR(m_id, m_callable) (Performance::get_singleton()->add_custom_monitor(m_id, m_callable, Variant()))
|
||||||
|
|
Loading…
Reference in New Issue