Skip to content
__init__.py 3.19 KiB
Newer Older
Dalai Felinto's avatar
Dalai Felinto committed

TODO = True

from mathutils import (
        Matrix,
        Vector,
        )


# ############################################################
# Data structs
# ############################################################

def HMD(display_backend):
    """
    return the head mounted display device class
    (defined in another file)

    :param display_backend: asdasd
    :type display_backend: str
    """
    from .oculus import Oculus
    from .debug import Debug

    displays = {
            'OCULUS':Oculus,
            'DEBUG':Debug,
            }

    if display_backend not in displays:
        assert False, "Display Backend \"{0}\" not implemented".format(display_backend)

    return displays[display_backend]()


# ############################################################
# Data structs
# ############################################################

Dalai Felinto's avatar
Dalai Felinto committed
class HMD_Data:
    status = None
    projection_matrix = Matrix()
    modelview_matrix = Matrix()
    interpupillary_distance = Vector((0.0, 0.0))
    width = 0
    height = 0
    fbo = 0
    texture = 0


# ############################################################
# Base class inherited by HMD devices
# ############################################################

class HMD_Base:
Dalai Felinto's avatar
Dalai Felinto committed
    __slots__ = {
        "_fbo",
        "_height",
        "_interpupillary_distance",
        "_modelview_matrix",
        "_name",
        "_projection_matrix",
Dalai Felinto's avatar
Dalai Felinto committed
        "_texture",
        "_width",
    def __init__(self, name):
        self._name = name
Dalai Felinto's avatar
Dalai Felinto committed
        self._projection_matrix = Matrix()
        self._modelview_matrix = Matrix()
        self._interpupillary_distance = Vector((0.0, 0.0))
        self._width = 0
        self._height = 0
        self._fbo = 0
        self._texture = 0

    @property
    def fbo(self):
        return self._fbo

    @property
    def texture(self):
        return self._texture

    @property
    def width(self):
        return self._width

    @property
    def height(self):
        return self._height

    @property
    def projection_matrix(self):
        return self._projection_matrix

    @property
    def modelview_matrix(self):
        TODO # calculate
        return self._modelview_matrix
Dalai Felinto's avatar
Dalai Felinto committed

    def isConnected(self):
        """
        Check if device is connected

        :return: return True if the device is connected
        :rtype: bool
        """
        assert False, "isConnected() not implemented for the \"{0}\" device".format(self._name)
Dalai Felinto's avatar
Dalai Felinto committed

    def init(self):
        """
        Initialize device

        :return: return True if the device was properly initialized
        :rtype: bool
        """
        assert False, "init() not implemented for the \"{0}\" device".format(self._name)
Dalai Felinto's avatar
Dalai Felinto committed

    def loop(self):
        """
        Get fresh tracking data
        """
        assert False, "loop() not implemented for the \"{0}\" device".format(self._name)
Dalai Felinto's avatar
Dalai Felinto committed

    def frameReady(self):
        """
        The frame is ready to be send to the device
        """
        assert False, "frameReady() not implemented for the \"{0}\" device".format(self._name)
Dalai Felinto's avatar
Dalai Felinto committed

    def quit(self):
        """
        Garbage collection
        """
        assert False, "quit() not implemented for the \"{0}\" device".format(self._name)
Dalai Felinto's avatar
Dalai Felinto committed