# Path: distance/classes.py
# class ProbeError(Exception):
# class RegisterError(ValueError):
# class AutoloadError(Exception):
# class TagError(LookupError):
# class ClassLookupError(LookupError):
# class ClassCollector(object):
# class _BaseProber(object):
# class ClassCollection(_BaseProber, ClassCollector):
# class CompositeProber(_BaseProber):
# class CollectorGroup(object):
# class ClassesRegistry(object):
# class _InstanceFactory(object):
#     def check(cls, tag):
#     def __init__(self, tag):
#     def __init__(self, *args, **kw):
# def fragment_property(tag, name, default=None, doc=None):
#     def fget(self):
#     def fset(self, value):
#     def __init__(self, **kw):
#     def add_fragment(self, cls, *args,
#                      any_version=False, versions=None, **kw):
#     def add_object(self, type, cls):
#     def add_info(self, *args, tag=None):
#         def decorate(cls):
#     def add_tag(self, tag, *args, **kw):
#     def _add_fragment_for_section(self, cls, sec, any_version):
#     def _add_info(self, tag, cls=None, container=None, versions=None):
#     def object(self, *args):
#         def decorate(cls):
#     def fragment(self, *args, **kw):
#         def decorate(cls):
#     def __init__(self, *, baseclass=None, probe_baseclass=None, **kw):
#     def _probe_section_key(self, key):
#     def _probe_fallback(self, sec):
#     def probe_section(self, sec):
#     def probe(self, dbytes, *, probe_section=None):
#     def read(self, dbytes, *, probe_section=None, **kw):
#     def maybe(self, dbytes, *, probe_section=None, **kw):
#     def iter_n_maybe(self, dbytes, n, **kw):
#     def lazy_n_maybe(self, dbytes, n, *, start_pos=None, **kw):
#     def __init__(self, *, key=None, get_fallback_container=None, **kw):
#     def add_func(self, func, tag):
#     def func(self, tag):
#         def decorate(func):
#     def _probe_section_key(self, key):
#     def _probe_fallback(self, sec):
#     def get_base_key(self, tag):
#     def get_tag(self, section):
#     def _get_tag_impl_info(self, tag):
#     def fragment_attrs(self, *tags):
#         def decorate(cls):
#     def __klass(self, tag, version, fallback):
#     def klass(self, tag, *, version=None):
#     def factory(self, tag, *, version=None, fallback=None):
#     def create(self, tag, *, fallback=None, **kw):
#     def is_section_interesting(self, sec):
#     def print_listing(self, file=None, *, tag=None, p=None):
#         def print_info(tag, info):
#     def _load_autoload_content(self, content):
#     def _generate_autoload_content(self):
#     def _get_current_autoload_content(self):
#     def _autoload_impl_module(self, sec_key, impl_module):
#     def _load_impl(self, coll, update_classes):
#     def __init__(self, *, probers=None, **kw):
#     def _probe_section_key(self, key):
#     def _probe_fallback(self, sec):
#     def print_listing(self, file=None, *, p=None):
#     def __init__(self):
#     def __getattr__(self, name):
#     def __init__(self):
#     def init_category(self, key, **kw):
#     def init_composite(self, key, keys, **kw):
#     def get_category(self, key):
#     def print_listing(self, file=None, *, p=None, print_classes=True):
#     def autoload_modules(self, module_name, impl_modules):
#     def write_autoload_module(self, module_name):
#     def _verify_autoload(self):
#     def copy(self, **overrides):
#     def __init__(self, cls, container):
#     def __call__(self, **kw):
# def _get_klass_def(info, version):
# def _update_class_info(target, other):
# def _merge_class_info(classes, tag, info):
# def _merged_info(tag, prev, new):
# def _load_autoload_module(colls, module_name):
# def _load_impls_to_colls(colls, impl_modules):


import numpy as np, quaternion
    import numpy as np
from distance.classes import DefaultClasses
    from numpy import sin, cos, arctan2
    from numpy import dot
    from numpy import pi
"""Utilities for level object transforms."""





quaternion # suppress warning

SIMPLE_SIZE = 64

WEDGE_DEF_ROT = np.quaternion(np.cos(np.pi/4), 0, np.sin(np.pi/4), 0)



# Path: distance/classes.py
# class ProbeError(Exception):
# class RegisterError(ValueError):
# class AutoloadError(Exception):
# class TagError(LookupError):
# class ClassLookupError(LookupError):
# class ClassCollector(object):
# class _BaseProber(object):
# class ClassCollection(_BaseProber, ClassCollector):
# class CompositeProber(_BaseProber):
# class CollectorGroup(object):
# class ClassesRegistry(object):
# class _InstanceFactory(object):
#     def check(cls, tag):
#     def __init__(self, tag):
#     def __init__(self, *args, **kw):
# def fragment_property(tag, name, default=None, doc=None):
#     def fget(self):
#     def fset(self, value):
#     def __init__(self, **kw):
#     def add_fragment(self, cls, *args,
#                      any_version=False, versions=None, **kw):
#     def add_object(self, type, cls):
#     def add_info(self, *args, tag=None):
#         def decorate(cls):
#     def add_tag(self, tag, *args, **kw):
#     def _add_fragment_for_section(self, cls, sec, any_version):
#     def _add_info(self, tag, cls=None, container=None, versions=None):
#     def object(self, *args):
#         def decorate(cls):
#     def fragment(self, *args, **kw):
#         def decorate(cls):
#     def __init__(self, *, baseclass=None, probe_baseclass=None, **kw):
#     def _probe_section_key(self, key):
#     def _probe_fallback(self, sec):
#     def probe_section(self, sec):
#     def probe(self, dbytes, *, probe_section=None):
#     def read(self, dbytes, *, probe_section=None, **kw):
#     def maybe(self, dbytes, *, probe_section=None, **kw):
#     def iter_n_maybe(self, dbytes, n, **kw):
#     def lazy_n_maybe(self, dbytes, n, *, start_pos=None, **kw):
#     def __init__(self, *, key=None, get_fallback_container=None, **kw):
#     def add_func(self, func, tag):
#     def func(self, tag):
#         def decorate(func):
#     def _probe_section_key(self, key):
#     def _probe_fallback(self, sec):
#     def get_base_key(self, tag):
#     def get_tag(self, section):
#     def _get_tag_impl_info(self, tag):
#     def fragment_attrs(self, *tags):
#         def decorate(cls):
#     def __klass(self, tag, version, fallback):
#     def klass(self, tag, *, version=None):
#     def factory(self, tag, *, version=None, fallback=None):
#     def create(self, tag, *, fallback=None, **kw):
#     def is_section_interesting(self, sec):
#     def print_listing(self, file=None, *, tag=None, p=None):
#         def print_info(tag, info):
#     def _load_autoload_content(self, content):
#     def _generate_autoload_content(self):
#     def _get_current_autoload_content(self):
#     def _autoload_impl_module(self, sec_key, impl_module):
#     def _load_impl(self, coll, update_classes):
#     def __init__(self, *, probers=None, **kw):
#     def _probe_section_key(self, key):
#     def _probe_fallback(self, sec):
#     def print_listing(self, file=None, *, p=None):
#     def __init__(self):
#     def __getattr__(self, name):
#     def __init__(self):
#     def init_category(self, key, **kw):
#     def init_composite(self, key, keys, **kw):
#     def get_category(self, key):
#     def print_listing(self, file=None, *, p=None, print_classes=True):
#     def autoload_modules(self, module_name, impl_modules):
#     def write_autoload_module(self, module_name):
#     def _verify_autoload(self):
#     def copy(self, **overrides):
#     def __init__(self, cls, container):
#     def __call__(self, **kw):
# def _get_klass_def(info, version):
# def _update_class_info(target, other):
# def _merge_class_info(classes, tag, info):
# def _merged_info(tag, prev, new):
# def _load_autoload_module(colls, module_name):
# def _load_impls_to_colls(colls, impl_modules):


# Path: distance/transform.py
import numpy as np, quaternion
    import numpy as np
from distance.classes import DefaultClasses
    from numpy import sin, cos, arctan2
    from numpy import dot
    from numpy import pi

"""Utilities for level object transforms."""





quaternion # suppress warning

SIMPLE_SIZE = 64

WEDGE_DEF_ROT = np.quaternion(np.cos(np.pi/4), 0, np.sin(np.pi/4), 0)



_mkwedge = DefaultClasses.level_objects.factory('WedgeGS')