From dda5fdc8a56bab40edafd0a7a01acedd794456d1 Mon Sep 17 00:00:00 2001 From: Yann Kervran Date: Sat, 18 May 2024 13:09:47 +0200 Subject: [PATCH] Making the addon project independent --- .gitlab-ci.yml | 24 ---------- README.md | 6 +-- __init__.py | 10 ++-- addon/common/icons.py | 2 +- addon/icons/godot.png | Bin 0 -> 3654 bytes addon/icons/godot_bridge.png | Bin 0 -> 3461 bytes addon/icons/khanat.png | Bin 5399 -> 0 bytes addon/menus/__init__.py | 6 ++- addon/menus/panel_main.py | 76 ++++++++++++++++++++++++++++--- addon/operators/__init__.py | 9 ++-- addon/operators/export2godot.py | 28 +++++++----- addon/operators/readthedocs.py | 10 ++-- addon/parameters/__init__.py | 32 +++++++++++++ addon/parameters/sidecar.py | 21 +++++++++ addon/preferences/__init__.py | 4 +- addon/preferences/preferences.py | 22 ++++----- addon/register/__init__.py | 6 +++ 17 files changed, 181 insertions(+), 75 deletions(-) delete mode 100644 .gitlab-ci.yml create mode 100644 addon/icons/godot.png create mode 100644 addon/icons/godot_bridge.png delete mode 100644 addon/icons/khanat.png create mode 100644 addon/parameters/__init__.py create mode 100644 addon/parameters/sidecar.py diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index 4f5f55e..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,24 +0,0 @@ -# This CI is for zipping the plugin when ready for distribution -variables: - ADDON_VERSION: "1.0.0" - -stages: - - build - - deploy - -build-job: - stage: build - tags: - - Docker - image: alpine - before_script: - - apk add --update zip - script: - - echo "Zipping the plugin in its v$ADDON_VERSION…" - - rm .gitlab-ci.yml - - rm .gitignore - - cd .. && zip -9 -r -q khanat_tools_v1.0.0.zip khanat-tools/* - - mv khanat_tools_v$ADDON_VERSION.zip khanat-tools - artifacts: - paths: - - khanat_tools_v$ADDON_VERSION.zip diff --git a/README.md b/README.md index 1c8b4b8..cdb6166 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -# Khanat tools +# Godot bridge ## Description -This Blender addon aims to ease the contribution from Blender for the [Khanat MMORPG project](https://khaganat.net/wikhan/fr:mmorpg). +This Blender addon aims to ease the contribution to Godot project for Blender artists. ## Installation -Get the zip file and install it in Blender. +Get the zip file and install it in Blender as any addon. ## Contributing If you want to discuss about the plugin, you can join in on XMPP : - you can use the web client kindly hosted by Jabberfr : diff --git a/__init__.py b/__init__.py index 4818757..a07dbd7 100644 --- a/__init__.py +++ b/__init__.py @@ -17,14 +17,14 @@ # END GPL LICENSE BLOCK ##### bl_info = { - "name": "Khanat tools", + "name": "Godot bridge", "author": "Yann Kervran", "version": (1, 0, 0), - "blender": (3, 4, 0), + "blender": (4, 1, 0), "location": "View3D > UI > N Panel", - "description": "Toolset for Khanat project", - "doc_url": "https://git.numenaute.org/yannk/khanat-tools", - "tracker_url": "https://git.numenaute.org/yannk/khanat-tools/-/issues", + "description": "Toolset for Godot projects", + "doc_url": "", + "tracker_url": "https://git.numenaute.org/YannK/Godot_bridge/issues", "category": "Generic" } diff --git a/addon/common/icons.py b/addon/common/icons.py index 67a9154..d277fca 100644 --- a/addon/common/icons.py +++ b/addon/common/icons.py @@ -3,7 +3,7 @@ import os icons_collection = None -icons_directory = os.path.dirname(__file__) +icons_directory = os.path.split(os.path.dirname(__file__))[0] + '/icons' def get_icon_id(identifier): diff --git a/addon/icons/godot.png b/addon/icons/godot.png new file mode 100644 index 0000000000000000000000000000000000000000..e7b8df91d09e754af50393c200d6c33a873fbc1a GIT binary patch literal 3654 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 Y|Mk(^b07*qoM6N<$f?g2Gy#N3J literal 0 HcmV?d00001 diff --git a/addon/icons/godot_bridge.png b/addon/icons/godot_bridge.png new file mode 100644 index 0000000000000000000000000000000000000000..8dcc24840d1fa695629530c0c2884ae8f20c4201 GIT binary patch literal 3461 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 literal 0 HcmV?d00001 diff --git a/addon/icons/khanat.png b/addon/icons/khanat.png deleted file mode 100644 index a2ce0c079cfd8ddafd4d3fb812dadd44154760d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5399 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