Godot_bridge/__init__.py

116 lines
3.2 KiB
Python

# BEGIN GPL LICENSE BLOCK #####
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# END GPL LICENSE BLOCK #####
bl_info = {
"name": "Khanat Tools",
"author": "Yann Kervran",
"version": (1, 0, 0),
"blender": (3, 4, 0),
"location": "View3D > UI > Tools",
"description": "Toolset for Khanat project",
"doc_url": "https://git.numenaute.org/yannk/khanat-tools",
"category": "Generic"
}
import os
import bpy
# global variable to store icons in
custom_icons = {}
# UI__init__.py
class MY_PT_khanat_tools(bpy.types.Panel):
bl_label = 'Khanat tools'
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_context = ''
bl_category = 'Khanat'
def draw_header(self, context):
global custom_icons
print(custom_icons)
layout = self.layout
layout.label(icon_value=custom_icons["khanat"].icon_id)
def draw(self, context):
layout = self.layout
row = layout.row()
row.operator(MY_OT_khanat_export_gltf.bl_idname)
layout.separator()
row = layout.row()
row.operator(MY_OT_khanat_get_online_doc.bl_idname, icon_value=72)
layout.separator()
# Operators
class MY_OT_khanat_export_gltf(bpy.types.Operator):
"""Export collections to gltf"""
bl_idname = "object.export2gltf"
bl_label = "Export to gltf"
bl_options = {'REGISTER', 'UNDO'}
def execute(self, context):
return {"FINISHED"}
def invoke(self, context, event):
return self.execute(context)
class MY_OT_khanat_get_online_doc(bpy.types.Operator):
"""Check online documentation"""
bl_idname = "object.readthedocs"
bl_label = "Online documentation"
bl_description = "Go to Khanat Development Guide"
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
bpy.ops.wm.url_open('INVOKE_DEFAULT', url='https://git.numenaute.org/khaganat/mmorpg_khanat/khanat_gamedev_guide')
return {"FINISHED"}
def invoke(self, context, event):
return self.execute(context)
# Register / Unregister
def register():
global custom_icons
custom_icons = bpy.utils.previews.new()
addon_path = os.path.dirname(__file__)
icons_dir = os.path.join(addon_path, "icons")
custom_icons.load("khanat", os.path.join(icons_dir, "khanat.png"), 'IMAGE')
bpy.utils.register_class(MY_OT_khanat_export_gltf)
bpy.utils.register_class(MY_OT_khanat_get_online_doc)
bpy.utils.register_class(MY_PT_khanat_tools)
def unregister():
global custom_icons
bpy.utils.previews.remove(custom_icons)
bpy.utils.register_class(MY_OT_khanat_export_gltf)
bpy.utils.register_class(MY_OT_khanat_get_online_doc)
bpy.utils.register_class(MY_PT_khanat_tools)
if __name__ == "__main__":
__file__ = bpy.data.filepath
register()