Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automatic navmesh generation support using recast #213

Merged
merged 17 commits into from
Jun 20, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,9 @@ node_modules/
mochawesome-report
tests_out/
generated_cubemaps/

# CMake
CMakeFiles
cmake_install.cmake
CMakeCache.txt
Makefile
3 changes: 3 additions & 0 deletions addons/io_hubs_addon/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from .io import gltf_exporter
from . import (nodes, components)
from . import preferences
from . import third_party
bl_info = {
"name": "Hubs Blender Addon",
"author": "Mozilla Hubs",
Expand All @@ -22,6 +23,7 @@ def register():
nodes.register()
components.register()
gltf_exporter.register()
third_party.register()

# Migrate components if the add-on is enabled in the middle of a session.
if bpy.context.preferences.is_dirty:
Expand All @@ -33,6 +35,7 @@ def registration_migration():


def unregister():
third_party.unregister()
gltf_exporter.unregister()
components.unregister()
nodes.unregister()
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
6 changes: 5 additions & 1 deletion addons/io_hubs_addon/components/utils.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import tempfile
import bpy
from .components_registry import get_component_by_name
from .components_registry import get_component_by_name, get_components_registry
from .gizmos import update_gizmos
from .types import PanelType
from mathutils import Vector
Expand Down Expand Up @@ -56,6 +56,10 @@ def remove_component(obj, component_name):
(dep_name, component_name))


def get_objects_with_component(component_name):
return [ob for ob in bpy.context.view_layer.objects if has_component(ob, component_name)]


def has_component(obj, component_name):
component_items = obj.hubs_component_list.items
return component_name in component_items
Expand Down
25 changes: 24 additions & 1 deletion addons/io_hubs_addon/preferences.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,30 @@
import bpy
from bpy.types import AddonPreferences
from bpy.props import IntProperty
from bpy.props import IntProperty, StringProperty
from .utils import get_addon_package
import platform
from os.path import join, dirname, realpath


def get_addon_pref(context):
addon_package = get_addon_package()
return context.preferences.addons[addon_package].preferences


def get_recast_lib_path():
recast_lib = join(dirname(realpath(__file__)), "bin", "recast")

file_name = None
if platform.system() == 'Windows':
file_name = "RecastBlenderAddon.dll"
elif platform.system() == 'Darwin':
file_name = "libRecastBlenderAddon.dylib"
else:
file_name = "libRecastBlenderAddon.so"

return join(recast_lib, file_name)


class HubsPreferences(AddonPreferences):
bl_idname = __package__

Expand All @@ -19,11 +35,18 @@ class HubsPreferences(AddonPreferences):
min=0,
)

recast_lib_path: StringProperty(
name='Recast library path',
subtype='FILE_PATH',
default=get_recast_lib_path()
)

def draw(self, context):
layout = self.layout
box = layout.box()

box.row().prop(self, "row_length")
box.row().prop(self, "recast_lib_path")


def register():
Expand Down
9 changes: 9 additions & 0 deletions addons/io_hubs_addon/third_party/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from . import (recast)


def register():
recast.register()


def unregister():
recast.unregister()
Loading