-
Notifications
You must be signed in to change notification settings - Fork 0
/
buildings.py
26 lines (20 loc) · 982 Bytes
/
buildings.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from panda3d.core import NodePath
from typing import Tuple
from scene_definition import BuildingDefinition
from scene_colliders import add_node_path_as_collider
class Building:
def __init__(self, scene: "scene.Scene", definition: BuildingDefinition):
self.scene = scene
self.node_path = scene.app.loader.loadModel(definition.model)
self.node_path.reparentTo(scene.root)
self.node_path.setPos(*tuple(definition.pos))
self.node_path.setHpr(*tuple(definition.hpr))
self.node_path.setShaderAuto()
add_node_path_as_collider(self.node_path, self.scene.space, self.scene.collisionDebugNP)
class Helipad(Building):
def __init__(self, scene: "scene.Scene", definition: BuildingDefinition):
super().__init__(scene, definition)
def make_building(scene, definition: BuildingDefinition) -> Building:
if definition.type == 'helipad':
return Helipad(scene, definition)
return Building(scene, definition)