Esempio n. 1
0
from .import celestial_components as cel_comp
from .import render_components as render_comps
from .import surface_mesh
from .import universals
from .utils import blackbody

from .renderpipeline.rpcore import PointLight as DirectionalLight
#TODO: Switch to the sun direction manager or as tobias for info
#TODO: Reenable scattering
#from .renderpipeline import Scattering

from direct.directnotify.DirectNotify import DirectNotify

log = DirectNotify().newCategory("SpaceDrive-OrbitSystem")
log.setSeverity(3)

is2d = False


class OrbitSystem(sandbox.EntitySystem):
    """Positions and moves celestial bodies in orbit."""
    def add_parent_pos(self, displacement, child_component):
        parent_node_path = child_component.node_path.get_parent()
        parent_entity = parent_node_path.get_python_tag('entity')
        if parent_entity:
            parent_component = parent_entity.get_component(cel_comp.CelestialComponent)
            if parent_component:
                displacement += self.add_parent_pos(displacement, parent_component)
                displacement += parent_component.true_pos
        return displacement