def duplicate_node_object(original_node: hg.Node, name): node = hg.Node(name) trans = hg.Transform() node.AddComponent(trans) obj = hg.Object() obj.SetGeometry(original_node.GetObject().GetGeometry()) node.AddComponent(obj) return node
def create_box(pos = hg.Vector3(), rot = hg.Vector3(), width = 1.0, height = 1.0): node = hg.Node() object = hg.Object() transform = hg.Transform() transform.SetPosition(pos + hg.Vector3(0, height * 0.5, 0)) transform.SetRotation(rot) node.AddComponent(transform) object.SetGeometry(render_system.CreateGeometry(hg.CreateCube(width, height, width))) node.AddComponent(object) return node
def create_wall(pos = hg.Vector3.Zero, rot = hg.Vector3.Zero, width = 1.0, length = 1.0, material_path = "material_diffuse_color.mat", name="dummy"): """ generic function to create a wall """ node = hg.Node() transform = hg.Transform() transform.SetPosition(pos) transform.SetRotation(rot) node.AddComponent(transform) object = hg.Object() object.SetGeometry(render_system.CreateGeometry(hg.CreatePlane(width, length, 1, material_path, name))) node.AddComponent(object) return node
def load_object(plus, geometry_file_name, name, duplicate_material=False): renderSystem = plus.GetRenderSystem() node = hg.Node(name) trans = hg.Transform() node.AddComponent(trans) obj = hg.Object() geo = hg.Geometry() hg.LoadGeometry(geo, geometry_file_name) if geo is not None: geo = renderSystem.CreateGeometry(geo, False) if duplicate_material: material = geo.GetMaterial(0) material = material.Clone() geo.SetMaterial(0, material) obj.SetGeometry(geo) node.AddComponent(obj) return node, geo