def common3D(ciao): dt = monkey.engine.data.globals e = Entity() e.layer = 1 e.tag = ciao.get('tag', None) scale = ciao.get('scale', 1) e.scale = (scale, scale, 1) e.model = ciao.get('model', None) energy = ciao.get('energy', 1) if isinstance(e.model, dict): ciao = copy.deepcopy(mopy.monkey.engine.get_asset(e.model['template'])) f = getattr(mopy.monkey.engine.data.scripts, ciao['builder']) if not f: print("hey I need a function: " + f + " to create the model") e.model = f(ciao, e.model['args']) size = ciao.get('size', dt.default_size) show_boxes = getattr(monkey.engine.data.globals, 'show_boxes', False) e.components.append({ 'type': 'components.controller3D', 'maxClimbAngle': 80, 'maxDescendAngle': 80, 'size': size, 'offset': [0, size[1] * 0.5, 0], 'mask_up': 2, 'mask_down': 2 | 32, 'debug': show_boxes }) e.add_component({'type': 'components.dynamics3D'}) e.add_component({ 'type': 'components.info', 'stuff': { 'energy': energy, 'attacks': ciao.get('attacks', None) } }) # scaling should be applied only if current room has a scaling associated if dt.room_scaling: e.add_component({ 'type': 'components.scaler', 'p0': dt.room_scaling[0], 'p1': dt.room_scaling[1] }) # shadow apply_shadow = getattr(dt, 'apply_shadow', False) if apply_shadow: shadow = Entity() shadow.add_component(ShadowRenderer(**dt.shadow)) e.add(shadow) return e
def bg(data): e = Entity() if 'image' in data: e.model = { 'type': 'model.rect', 'tex': data['image'], 'scale': data.get('scale', (1, 1)), 'repeat': data.get('repeat', (1, 1)), } else: e.model = data['model'] e.layer = data.get('layer', 0) return e