d3d10/collada/main.py
Zack Buhman 683115e0c1 collada: implement animated rotate and scale
This also improves the correctness of channel source interpretation.
2026-01-27 22:02:25 -06:00

50 lines
1.5 KiB
Python

import sys
from os import path
from collada import parse
from collada import header
def usage():
name = sys.argv[0]
print("usage:")
print(f" {name} [input_collada.dae] [output_source.cpp] [output_header.hpp] [output_vertex.vtx] [output_vertex.idx]")
sys.exit(1)
def main():
try:
input_collada = sys.argv[1]
output_source = sys.argv[2]
output_header = sys.argv[3]
output_vertex = sys.argv[4]
output_index = sys.argv[5]
assert input_collada.lower().endswith(".dae")
assert output_header.lower().endswith(".hpp")
assert output_vertex.lower().endswith(".vtx")
assert output_index.lower().endswith(".idx")
except Exception as e:
usage()
collada = parse.parse_collada_file(input_collada)
namespace = path.splitext(path.split(input_collada)[1])[0]
state, out_source = header.render_all(collada, namespace)
out_header = header.render_all_hpp(namespace)
with open(output_source, 'wb') as f:
source_buf = out_source.getvalue()
assert "\r\n" in source_buf
f.write(source_buf.encode('utf-8'))
with open(output_header, 'wb') as f:
header_buf = out_header.getvalue()
assert "\r\n" in header_buf
f.write(header_buf.encode('utf-8'))
with open(output_vertex, 'wb') as f:
f.write(state.vertex_buffer.getvalue())
with open(output_index, 'wb') as f:
f.write(state.index_buffer.getvalue())
if __name__ == "__main__":
main()