render_model: add const, always render float as decimal

This commit is contained in:
Zack Buhman 2025-04-25 22:56:46 -05:00
parent 9b07ba183c
commit 54df210cf9

View File

@ -42,9 +42,9 @@ def unit_vector(vec):
z = vec.z.to_float()
norm = math.sqrt(x ** 2 + y ** 2 + z ** 2)
return type(vec)(
fixed_point.parse(str(x / norm)),
fixed_point.parse(str(y / norm)),
fixed_point.parse(str(z / norm))
fixed_point.parse(f"{x / norm:f}"),
fixed_point.parse(f"{y / norm:f}"),
fixed_point.parse(f"{z / norm:f}")
)
def xyz(vec):
@ -70,7 +70,7 @@ def render_vertex(profile_item, vertex_tuple):
def render_vertices(profile_item, prefix, name, vertices):
yield f"// {profile_item.to_str()}"
yield f"vertex_{name} {prefix}_{name}[] = {{"
yield f"const vertex_{name} {prefix}_{name}[] = {{"
for i, vertex in enumerate(vertices):
yield from render_vertex(profile_item, vertex)
yield "};"
@ -94,7 +94,7 @@ def render_vertex_texture(profile, prefix, vertex_textures):
map(uv, vertex_textures))
def render_object(prefix, object_name, d, material):
yield f"struct object {prefix}_{object_name} = {{"
yield f"const struct object {prefix}_{object_name} = {{"
triangle_count = len(d[Triangle]) if Triangle in d else 0
quadrilateral_count = len(d[Quadrilateral]) if Quadrilateral in d else 0
@ -115,18 +115,18 @@ def render_object(prefix, object_name, d, material):
if material is None:
yield f".material = -1,",
else:
yield f".material = {material.name},"
yield f".material = {prefix}_{material.name},"
yield "};"
def render_object_list(prefix, object_names):
yield f"struct object * {prefix}_object_list[] = {{"
yield f"const struct object * {prefix}_object_list[] = {{"
for object_name in object_names:
yield f"&{prefix}_{object_name},"
yield "};"
def render_model(prefix, object_count):
yield f"struct model {prefix}_model = {{"
yield f"const struct model {prefix}_model = {{"
yield f".position = &{prefix}_position[0],"
yield f".texture = &{prefix}_texture[0],"
yield f".normal = &{prefix}_normal[0],"