collada/lua_header: avoid lua's local variable limit
This commit is contained in:
parent
e41f8667f0
commit
69f6ebbef3
@ -8,6 +8,8 @@ from collada import parse
|
|||||||
from collada import types
|
from collada import types
|
||||||
from collada.util import find_semantics
|
from collada.util import find_semantics
|
||||||
|
|
||||||
|
STD430 = True
|
||||||
|
|
||||||
def linearize_offset_table(by_offset, p_stride):
|
def linearize_offset_table(by_offset, p_stride):
|
||||||
for offset in range(p_stride):
|
for offset in range(p_stride):
|
||||||
for input, source in by_offset[offset]:
|
for input, source in by_offset[offset]:
|
||||||
@ -105,6 +107,9 @@ def mesh_vertex_index_buffer(collada, mesh):
|
|||||||
assert type(source.array_element) is types.FloatArray
|
assert type(source.array_element) is types.FloatArray
|
||||||
array_slice = source.array_element.floats[source_index:source_index+source_stride]
|
array_slice = source.array_element.floats[source_index:source_index+source_stride]
|
||||||
state.vertex_buffer.extend(array_slice)
|
state.vertex_buffer.extend(array_slice)
|
||||||
|
if STD430:
|
||||||
|
assert source_stride == 3, source_stride
|
||||||
|
state.vertex_buffer.append(1.0)
|
||||||
|
|
||||||
return state
|
return state
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ from itertools import islice
|
|||||||
from collada import types
|
from collada import types
|
||||||
|
|
||||||
def render_input_elements(key_name, semantic__semantic_index__stride):
|
def render_input_elements(key_name, semantic__semantic_index__stride):
|
||||||
yield f"local input_elements_{key_name} = {{"
|
yield f"ns.input_elements_{key_name} = {{"
|
||||||
for semantic, semantic_index, stride in semantic__semantic_index__stride:
|
for semantic, semantic_index, stride in semantic__semantic_index__stride:
|
||||||
yield "{"
|
yield "{"
|
||||||
yield f'semantic = "{semantic}",'
|
yield f'semantic = "{semantic}",'
|
||||||
@ -13,7 +13,7 @@ def render_input_elements(key_name, semantic__semantic_index__stride):
|
|||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_triangles(geometry_name, items):
|
def render_triangles(geometry_name, items):
|
||||||
yield f"local triangles_{geometry_name} = {{"
|
yield f"ns.triangles_{geometry_name} = {{"
|
||||||
for count, index_offset, inputs_index in items:
|
for count, index_offset, inputs_index in items:
|
||||||
yield "{"
|
yield "{"
|
||||||
yield f"count = {count}, -- triangles"
|
yield f"count = {count}, -- triangles"
|
||||||
@ -26,9 +26,9 @@ def render_geometry(geometry_name,
|
|||||||
triangles_count,
|
triangles_count,
|
||||||
vertex_buffer_offset, vertex_buffer_size,
|
vertex_buffer_offset, vertex_buffer_size,
|
||||||
index_buffer_offset, index_buffer_size):
|
index_buffer_offset, index_buffer_size):
|
||||||
yield f"local geometry_{geometry_name} = {{"
|
yield f"ns.geometry_{geometry_name} = {{"
|
||||||
yield "mesh = {"
|
yield "mesh = {"
|
||||||
yield f"triangles = triangles_{geometry_name},"
|
yield f"triangles = ns.triangles_{geometry_name},"
|
||||||
yield f"triangles_count = {triangles_count},"
|
yield f"triangles_count = {triangles_count},"
|
||||||
yield ""
|
yield ""
|
||||||
yield f"vertex_buffer_offset = {vertex_buffer_offset},"
|
yield f"vertex_buffer_offset = {vertex_buffer_offset},"
|
||||||
@ -40,9 +40,9 @@ def render_geometry(geometry_name,
|
|||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_library_geometries(geometry_names):
|
def render_library_geometries(geometry_names):
|
||||||
yield "local geometries = {"
|
yield "ns.geometries = {"
|
||||||
for geometry_name in geometry_names:
|
for geometry_name in geometry_names:
|
||||||
yield f"geometry_{geometry_name},"
|
yield f"ns.geometry_{geometry_name},"
|
||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_float_tuple(t):
|
def render_float_tuple(t):
|
||||||
@ -84,7 +84,7 @@ def render_transform_translate(translate):
|
|||||||
yield f"translate = {render_float_tuple(translate)},"
|
yield f"translate = {render_float_tuple(translate)},"
|
||||||
|
|
||||||
def render_node_transforms(node_name, transformation_elements, render_transform):
|
def render_node_transforms(node_name, transformation_elements, render_transform):
|
||||||
yield f"local transforms_{node_name} = {{"
|
yield f"ns.transforms_{node_name} = {{"
|
||||||
for transform in transformation_elements:
|
for transform in transformation_elements:
|
||||||
yield "{"
|
yield "{"
|
||||||
yield from render_transform(transform)
|
yield from render_transform(transform)
|
||||||
@ -93,11 +93,11 @@ def render_node_transforms(node_name, transformation_elements, render_transform)
|
|||||||
|
|
||||||
def render_node_geometry_instance_materials(prefix, node_name, i,
|
def render_node_geometry_instance_materials(prefix, node_name, i,
|
||||||
items):
|
items):
|
||||||
yield f"local {prefix}_instance_materials_{node_name}_{i} = {{"
|
yield f"ns.{prefix}_instance_materials_{node_name}_{i} = {{"
|
||||||
for element_index, material_name, emission_input_set, ambient_input_set, diffuse_input_set, specular_input_set in items:
|
for element_index, material_name, emission_input_set, ambient_input_set, diffuse_input_set, specular_input_set in items:
|
||||||
yield "{"
|
yield "{"
|
||||||
yield f"element_index = {element_index}, -- an index into mesh.triangles"
|
yield f"element_index = {element_index}, -- an index into mesh.triangles"
|
||||||
yield f"material = material_{material_name},"
|
yield f"material = ns.material_{material_name},"
|
||||||
yield ""
|
yield ""
|
||||||
yield f"emission = {{ input_set = {emission_input_set} }},"
|
yield f"emission = {{ input_set = {emission_input_set} }},"
|
||||||
yield f"ambient = {{ input_set = {ambient_input_set} }},"
|
yield f"ambient = {{ input_set = {ambient_input_set} }},"
|
||||||
@ -107,46 +107,46 @@ def render_node_geometry_instance_materials(prefix, node_name, i,
|
|||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_node_instance_geometries(node_name, items):
|
def render_node_instance_geometries(node_name, items):
|
||||||
yield f"local instance_geometries_{node_name} = {{"
|
yield f"ns.instance_geometries_{node_name} = {{"
|
||||||
for geometry_name, i, instance_materials_count in items:
|
for geometry_name, i, instance_materials_count in items:
|
||||||
yield "{"
|
yield "{"
|
||||||
yield f"geometry = geometry_{geometry_name},"
|
yield f"geometry = ns.geometry_{geometry_name},"
|
||||||
yield ""
|
yield ""
|
||||||
yield f"instance_materials = instance_geometry_instance_materials_{node_name}_{i},"
|
yield f"instance_materials = ns.instance_geometry_instance_materials_{node_name}_{i},"
|
||||||
yield f"instance_materials_count = {instance_materials_count},"
|
yield f"instance_materials_count = {instance_materials_count},"
|
||||||
yield "},"
|
yield "},"
|
||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_node_channels(node_name, target_names):
|
def render_node_channels(node_name, target_names):
|
||||||
yield f"local node_channels_{node_name} = {{"
|
yield f"ns.node_channels_{node_name} = {{"
|
||||||
for target_name in target_names:
|
for target_name in target_names:
|
||||||
yield f"node_channel_{target_name},"
|
yield f"ns.node_channel_{target_name},"
|
||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_node_instance_lights(node_name, light_names):
|
def render_node_instance_lights(node_name, light_names):
|
||||||
yield f"local instance_lights_{node_name} = {{"
|
yield f"ns.instance_lights_{node_name} = {{"
|
||||||
for light_name in light_names:
|
for light_name in light_names:
|
||||||
yield "{"
|
yield "{"
|
||||||
yield f"light = light_{light_name},"
|
yield f"light = ns.light_{light_name},"
|
||||||
yield "}"
|
yield "}"
|
||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_joint_node_indices(node_name, controller_name, items):
|
def render_joint_node_indices(node_name, controller_name, items):
|
||||||
yield f"local joint_node_indices_{node_name}_{controller_name} = {{"
|
yield f"ns.joint_node_indices_{node_name}_{controller_name} = {{"
|
||||||
for joint_node_index, node_sid, joint_node_name in items:
|
for joint_node_index, node_sid, joint_node_name in items:
|
||||||
yield f"{joint_node_index}, -- {node_sid} {joint_node_name}"
|
yield f"{joint_node_index}, -- {node_sid} {joint_node_name}"
|
||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_node_instance_controllers(node_name, items):
|
def render_node_instance_controllers(node_name, items):
|
||||||
yield f"local instance_controllers_{node_name} = {{"
|
yield f"ns.instance_controllers_{node_name} = {{"
|
||||||
for controller_name, i, instance_materials_count in items:
|
for controller_name, i, instance_materials_count in items:
|
||||||
yield "{"
|
yield "{"
|
||||||
yield f"controller = controller_{controller_name},"
|
yield f"controller = ns.controller_{controller_name},"
|
||||||
yield ""
|
yield ""
|
||||||
yield f"joint_node_indices = joint_node_indices_{node_name}_{controller_name},"
|
yield f"joint_node_indices = ns.joint_node_indices_{node_name}_{controller_name},"
|
||||||
yield f"joint_count = #joint_node_indices_{node_name}_{controller_name},"
|
yield f"joint_count = #ns.joint_node_indices_{node_name}_{controller_name},"
|
||||||
yield ""
|
yield ""
|
||||||
yield f"instance_materials = instance_controller_instance_materials_{node_name}_{i},"
|
yield f"instance_materials = ns.instance_controller_instance_materials_{node_name}_{i},"
|
||||||
yield f"instance_materials_count = {instance_materials_count},"
|
yield f"instance_materials_count = {instance_materials_count},"
|
||||||
yield "},"
|
yield "},"
|
||||||
yield "}"
|
yield "}"
|
||||||
@ -157,24 +157,24 @@ def render_node(node_name, parent_index, type,
|
|||||||
instance_controllers_count,
|
instance_controllers_count,
|
||||||
instance_lights_count,
|
instance_lights_count,
|
||||||
channels_count):
|
channels_count):
|
||||||
yield f"local node_{node_name} = {{"
|
yield f"ns.node_{node_name} = {{"
|
||||||
yield f"parent_index = {parent_index},"
|
yield f"parent_index = {parent_index},"
|
||||||
yield ""
|
yield ""
|
||||||
yield f"type = collada_types.node_type.{type},"
|
yield f"type = collada_types.node_type.{type},"
|
||||||
yield ""
|
yield ""
|
||||||
yield f"transforms = transforms_{node_name},"
|
yield f"transforms = ns.transforms_{node_name},"
|
||||||
yield f"transforms_count = {transforms_count},"
|
yield f"transforms_count = {transforms_count},"
|
||||||
yield ""
|
yield ""
|
||||||
yield f"instance_geometries = instance_geometries_{node_name},"
|
yield f"instance_geometries = ns.instance_geometries_{node_name},"
|
||||||
yield f"instance_geometries_count = {instance_geometries_count},"
|
yield f"instance_geometries_count = {instance_geometries_count},"
|
||||||
yield ""
|
yield ""
|
||||||
yield f"instance_controllers = instance_controllers_{node_name},"
|
yield f"instance_controllers = ns.instance_controllers_{node_name},"
|
||||||
yield f"instance_controllers_count = {instance_controllers_count},"
|
yield f"instance_controllers_count = {instance_controllers_count},"
|
||||||
yield ""
|
yield ""
|
||||||
yield f"instance_lights = instance_lights_{node_name},"
|
yield f"instance_lights = ns.instance_lights_{node_name},"
|
||||||
yield f"instance_lights_count = {instance_lights_count},"
|
yield f"instance_lights_count = {instance_lights_count},"
|
||||||
yield ""
|
yield ""
|
||||||
yield f"channels = node_channels_{node_name},"
|
yield f"channels = ns.node_channels_{node_name},"
|
||||||
yield f"channels_count = {channels_count},"
|
yield f"channels_count = {channels_count},"
|
||||||
#yield ""
|
#yield ""
|
||||||
#yield f"nodes = node_children_{node_name},"
|
#yield f"nodes = node_children_{node_name},"
|
||||||
@ -182,9 +182,9 @@ def render_node(node_name, parent_index, type,
|
|||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_library_visual_scenes(items):
|
def render_library_visual_scenes(items):
|
||||||
yield "local nodes = {"
|
yield "ns.nodes = {"
|
||||||
for node_name, node_index in items:
|
for node_name, node_index in items:
|
||||||
yield f"node_{node_name}, -- {node_index}"
|
yield f"ns.node_{node_name}, -- {node_index}"
|
||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_opt_color(field_name, color):
|
def render_opt_color(field_name, color):
|
||||||
@ -203,7 +203,7 @@ def render_opt_float(field_name, value):
|
|||||||
yield f"{field_name} = {value},"
|
yield f"{field_name} = {value},"
|
||||||
|
|
||||||
def render_effect(effect_name, type_name, field_name, render_body):
|
def render_effect(effect_name, type_name, field_name, render_body):
|
||||||
yield f"local effect_{effect_name} = {{"
|
yield f"ns.effect_{effect_name} = {{"
|
||||||
|
|
||||||
yield f"type = collada_types.effect_type.{type_name},"
|
yield f"type = collada_types.effect_type.{type_name},"
|
||||||
yield f"{field_name} = {{"
|
yield f"{field_name} = {{"
|
||||||
@ -213,32 +213,32 @@ def render_effect(effect_name, type_name, field_name, render_body):
|
|||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_library_material(material_name, effect_name):
|
def render_library_material(material_name, effect_name):
|
||||||
yield f"local material_{material_name} = {{"
|
yield f"ns.material_{material_name} = {{"
|
||||||
yield f"effect = effect_{effect_name},"
|
yield f"effect = ns.effect_{effect_name},"
|
||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_input_elements_list(items):
|
def render_input_elements_list(items):
|
||||||
yield "local inputs_list = {"
|
yield "ns.inputs_list = {"
|
||||||
for key_name, elements_count in items:
|
for key_name, elements_count in items:
|
||||||
yield "{"
|
yield "{"
|
||||||
yield f"elements = input_elements_{key_name},"
|
yield f"elements = ns.input_elements_{key_name},"
|
||||||
yield f"elements_count = {elements_count},"
|
yield f"elements_count = {elements_count},"
|
||||||
yield "},"
|
yield "},"
|
||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_descriptor(namespace):
|
def render_descriptor(namespace):
|
||||||
yield "local descriptor = {"
|
yield "ns.descriptor = {"
|
||||||
yield "nodes = nodes,"
|
yield "nodes = ns.nodes,"
|
||||||
yield "nodes_count = #nodes,"
|
yield "nodes_count = #ns.nodes,"
|
||||||
yield ""
|
yield ""
|
||||||
yield "geometries = geometries,"
|
yield "geometries = ns.geometries,"
|
||||||
yield "nodes_count = #geometries,"
|
yield "nodes_count = #ns.geometries,"
|
||||||
yield ""
|
yield ""
|
||||||
yield "inputs_list = inputs_list,"
|
yield "inputs_list = ns.inputs_list,"
|
||||||
yield "inputs_list_count = #inputs_list,"
|
yield "inputs_list_count = #ns.inputs_list,"
|
||||||
yield ""
|
yield ""
|
||||||
yield "images = images,"
|
yield "images = ns.images,"
|
||||||
yield "images_count = #images,"
|
yield "images_count = #ns.images,"
|
||||||
yield ""
|
yield ""
|
||||||
#yield f'position_normal_texture_buffer = L"RES_SCENES_{namespace.upper()}_VTX",'
|
#yield f'position_normal_texture_buffer = L"RES_SCENES_{namespace.upper()}_VTX",'
|
||||||
#yield f'joint_weight_buffer = L"RES_SCENES_{namespace.upper()}_VJW",'
|
#yield f'joint_weight_buffer = L"RES_SCENES_{namespace.upper()}_VJW",'
|
||||||
@ -248,71 +248,73 @@ def render_descriptor(namespace):
|
|||||||
def render_prelude(namespace):
|
def render_prelude(namespace):
|
||||||
yield "local collada_types = require 'collada_types'"
|
yield "local collada_types = require 'collada_types'"
|
||||||
yield ''
|
yield ''
|
||||||
|
yield 'local ns = {}'
|
||||||
|
|
||||||
def render_prologue():
|
def render_prologue():
|
||||||
yield ""
|
yield ""
|
||||||
yield "return {"
|
yield "return {"
|
||||||
yield "descriptor = descriptor"
|
yield "descriptor = ns.descriptor"
|
||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_animation_children(anomation_name, items):
|
def render_animation_children(anomation_name, items):
|
||||||
yield f"local animation_children_{animation_name} = {{"
|
yield f"ns.animation_children_{animation_name} = {{"
|
||||||
for animation_name in items:
|
for animation_name in items:
|
||||||
yield "animation_{animation_name},"
|
yield "ns.animation_{animation_name},"
|
||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_interpolation_array(array_name, names):
|
def render_interpolation_array(array_name, names):
|
||||||
yield f"local array_{array_name} = {{"
|
yield f"ns.array_{array_name} = {{"
|
||||||
for name in names:
|
for name in names:
|
||||||
yield f"collada_types.interpolation.{name},"
|
yield f"collada_types.interpolation.{name},"
|
||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_float_array(array_name, vectors):
|
def render_float_array(array_name, vectors):
|
||||||
yield f"local array_{array_name} = {{"
|
yield f"ns.array_{array_name} = {{"
|
||||||
for vector in vectors:
|
for vector in vectors:
|
||||||
yield f"{render_float_tuple(vector)},"
|
s = ", ".join((f"{float(f)}" for f in vector))
|
||||||
|
yield f"{s},"
|
||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_source(source_name, field_name, c_type, array_name, count, stride):
|
def render_source(source_name, field_name, c_type, array_name, count, stride):
|
||||||
yield f"-- {source_name}"
|
yield f"-- {source_name}"
|
||||||
yield f"{field_name} = {{"
|
yield f"{field_name} = {{"
|
||||||
yield f"{c_type}_array = array_{array_name},"
|
yield f"{c_type}_array = ns.array_{array_name},"
|
||||||
yield f"count = {count},"
|
yield f"count = {count},"
|
||||||
yield f"stride = {stride},"
|
yield f"stride = {stride},"
|
||||||
yield "},"
|
yield "},"
|
||||||
|
|
||||||
def render_sampler(sampler_name, render_body):
|
def render_sampler(sampler_name, render_body):
|
||||||
yield f"local sampler_{sampler_name} = {{"
|
yield f"ns.sampler_{sampler_name} = {{"
|
||||||
yield from render_body()
|
yield from render_body()
|
||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_channel(target_name, sampler_name, transform_index, target_attribute):
|
def render_channel(target_name, sampler_name, transform_index, target_attribute):
|
||||||
yield f"local node_channel_{target_name} = {{"
|
yield f"ns.node_channel_{target_name} = {{"
|
||||||
yield f"source_sampler = sampler_{sampler_name},"
|
yield f"source_sampler = ns.sampler_{sampler_name},"
|
||||||
yield f"target_transform_index = {transform_index},"
|
yield f"target_transform_index = {transform_index},"
|
||||||
yield f"target_attribute = collada_types.target_attribute.{target_attribute},"
|
yield f"target_attribute = collada_types.target_attribute.{target_attribute},"
|
||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_light(light_name, light_type, color):
|
def render_light(light_name, light_type, color):
|
||||||
yield f"local light_{light_name} = {{"
|
yield f"ns.light_{light_name} = {{"
|
||||||
yield f"type = collada_types.light_type.{light_type},"
|
yield f"type = collada_types.light_type.{light_type},"
|
||||||
yield f"color = {render_float_tuple(color)},"
|
yield f"color = {render_float_tuple(color)},"
|
||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_image(image_id, image_name, resource_name, uri):
|
def render_image(image_id, image_name, resource_name, uri):
|
||||||
yield f"-- {image_id}"
|
yield f"-- {image_id}"
|
||||||
yield f"local image_{image_name} = {{"
|
yield f"ns.image_{image_name} = {{"
|
||||||
yield f'uri = "{uri}",'
|
yield f'uri = "{uri}",'
|
||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_library_images(image_names):
|
def render_library_images(image_names):
|
||||||
yield "local images = {"
|
yield "ns.images = {"
|
||||||
for image_name in image_names:
|
for image_name in image_names:
|
||||||
yield f"image_{image_name},"
|
yield f"ns.image_{image_name},"
|
||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_inverse_bind_matrices(controller_name, matrices):
|
def render_inverse_bind_matrices(controller_name, matrices):
|
||||||
yield f"local inverse_bind_matrices_{controller_name} = {{"
|
yield f"ns.inverse_bind_matrices_{controller_name} = {{"
|
||||||
for matrix in matrices:
|
for matrix in matrices:
|
||||||
yield "{"
|
yield "{"
|
||||||
yield from render_matrix(matrix)
|
yield from render_matrix(matrix)
|
||||||
@ -320,11 +322,11 @@ def render_inverse_bind_matrices(controller_name, matrices):
|
|||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_controller(controller_name, geometry_name, vertex_buffer_offset, vertex_buffer_size):
|
def render_controller(controller_name, geometry_name, vertex_buffer_offset, vertex_buffer_size):
|
||||||
yield f"local controller_{controller_name} = {{"
|
yield f"ns.controller_{controller_name} = {{"
|
||||||
yield "skin = {"
|
yield "skin = {"
|
||||||
yield f"geometry = geometry_{geometry_name},"
|
yield f"geometry = ns.geometry_{geometry_name},"
|
||||||
yield ""
|
yield ""
|
||||||
yield f"inverse_bind_matrices = inverse_bind_matrices_{controller_name},"
|
yield f"inverse_bind_matrices = ns.inverse_bind_matrices_{controller_name},"
|
||||||
yield ""
|
yield ""
|
||||||
yield f"vertex_buffer_offset = {vertex_buffer_offset},"
|
yield f"vertex_buffer_offset = {vertex_buffer_offset},"
|
||||||
yield f"vertex_buffer_size = {vertex_buffer_size},"
|
yield f"vertex_buffer_size = {vertex_buffer_size},"
|
||||||
@ -332,7 +334,7 @@ def render_controller(controller_name, geometry_name, vertex_buffer_offset, vert
|
|||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
def render_camera(camera_name, xfov, yfov, znear, zfar, aspect_ratio):
|
def render_camera(camera_name, xfov, yfov, znear, zfar, aspect_ratio):
|
||||||
yield f"local camera_{camera_name} = {{"
|
yield f"ns.camera_{camera_name} = {{"
|
||||||
yield f"xfov = {xfov},"
|
yield f"xfov = {xfov},"
|
||||||
yield f"yfov = {yfov},"
|
yield f"yfov = {yfov},"
|
||||||
yield f"znear = {znear},"
|
yield f"znear = {znear},"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user