from ursina import *
import base64


app = Ursina()

# m = load_model('car.obj', use_deepcopy=True)
with open('models_compressed/car.ursinamesh', 'r') as f:
    import zlib
    result = zlib.compress(f.read().encode())
    print(result)
with open('models_compressed/car.ursinameshcompressed', 'wb') as f:
    f.write(result)

e = Entity()
e.model = eval(zlib.decompress(b'x\x9c\xb5\x9b\xc1n\xe46\x0c\x86\xef}\x8a\x1c\xb3@f K\xb2l\x1f\xfa\x08}\x82\xc5\x9e\x8a\x00\xed\xb5[\xf4\xf9kOf0\xf6\x88\xd2GJ\xde[6\xa2~R$E3\xe2\xbf\x7f|\xfe\xfc\xeb\xfd\xbf\xcf\x7f\xfe\xfd\xfb\xcf\xcf\x9f\xbf\x7f\x7f\xbf\xb8\xeb\xf8\xf1\xe6\xaeit\xe3<}\xbcm\xff^\xd2\x10\xe2\xb7\x8f\xb7ww\x8da\x8a\xcb\xb2\t\x8ci\xf1\xeb\xf2pu\xc9\xb9a\xfaZn\xdez\xd9\xaf\xfb\xc9G?e\xe0 \xf0\xb0\xdc;?/q\xfb)\x868\xc5a\xbf\x96B\x98\xdcmm\x1eC\x88I\xde\xf7\\{Y:\x9c\x88M~E~qHm\r\xfclv\xc5\xe1\xb81\xa6\x98\xc2\r|\x18\xc7e\xfdi\xb8\xa68\xa44e\x02\xde\xc74\xbf\x08T|Y\t\x81\xde\xcb\xf5\xe0\xe4A\xd5\xec\xdb\x0e5\x8e\xce\x8d\xc7l\x98\xc7\x990uI\xe4\xae!\xae\xce\xbcyj\x8bBJ\xe2\xe9\x0b\xf9GW\xa3\'\t\x1f\x9a\xe3\xba9\xbc8\xc2\x96\x9f\xb5}\xb9sK\xe6Vw\xe6N\x94\xf4\x16\n\x0cl\x16\xe1\x8f1B\xf5\xaa kr\xb5\xea21q\xb2T5\x04\x08,\xc9\xe3#fK\xf5\x0c\x1b\xca0\xf8[\x1e\x0e\xcbZ>\xfcM\xc0/\xcb\x18\xfc\xbdh\xc5aM\xffM\xc0M~\xd5x\x13\x08k\xadq\xcb\xab@+\xc2\xd3\x06\xe7\xd24\x8cw#\xe7\xf5\x86d\x08\x8d\x02;\x15~In\xf8\xf2\xe0<\x8f1f\x08\xb2\x80\x01a\x08nL_\xaeNS\xf0)\xf7\x03\xa9@\x84\xf5W!\r\x15\x81\x02\xc2S\x05"\x84\xb5\xec\xf9X9f\x01\xe1\xa9\x02\x11\xc2\x9c\xfcP\tf\x01`\xa7A\x04\xc0Cb,I\xc3\xceD\xef\xc2\xe0+\x97\xa2\x11\xc0p/\xf9\xdaQ\xc2r.\x08\x87\xc0\x96\x84:\x12lY\xea=\x9e\xaa\xdd\xa94.\xa5\xaf:\xb5Y\xfa6J\xb6VvU\x055\x8f\xf4\xfa![\xa6\xa7\xd6g6\xdf\xeb\xeb\xba>z\x9f\xf2\xe2\xd8\xb4\x9e\x97gw]\xc2\xbc\xfe\xaeT|m\xeb\xf9m\\\xcf\xef\xe6\x10\x8a\xa5\xf9\xb8\xae\xdf\xff(\x8a\xee:m\t\x9f\xf9\x97\xf0i\xff\xe3\x1e\x95\xd6\xe5\xfdy\xb9*\xed\x7f\xd4\xc3\xbb}A\xa7?/\xc8%\xff\xdc\xafy)|\xb2\xfa\xbcR\x95\xd2S\x84\xa7\xd3\xc3\xf6\xbc\x90\x96\x92\xbbi;\x1d\x8e\xee&\xe5\x96>w\x04\xf3\xb7j5,\xb5\xcf\xc4V\xae\xd2\xbc|m\x14\xbb\xaf\x83D;\xc6\xd3\x0e\xb1\x01;b4K\xec\xb4H\x9f\xb4#FA\xc2\x82!6QF-\x8c!~}Uv<\xb50\x86\xd8K\xa9\xecxja\x8cB\xa3\xc0f\xec\x94\x14z\r<+G\x16\x95\xec\xec\x94\xda2\xe3Q\x0b\x10\x96;{\xc6\xadV\xe4\x06\x1dE*nG\x8f\x0b\x9d\x83h\xe6\x8b\x80\x05Ah\x1e4*\x10!\xcf\x9b}\x8d\x16\xaf\xfb\x8b\x80\x01Aj\x01l*\x10A\xfa\x92hl\xc8oX\x11A\xea\x0446\xe4\xa5\xa4\xe8(\xf9{\x87&dW\xbc\x18l4\x11#\x81&\n-\x85\xe2\x8c;\x05\x04P\xb8\x97\x06\x130a9\x17\xc4\xaen\xfbE\xe1\xc5\xaf\xf6\xb2\xa9|J\xd4n6>\x14\xc2\xa3]\xcb\x13\xf2\xa5f\xf2\xa5\xe6\xa8\x8b\xe6m\xb4\x8a\xad\xb4\xac\xfc\x9e^\x1b\xbc\xc8\xdb\x94*\x0b\xe7U\xcfO\xec\xcb\x84~X\xef\x98T\x99|Y{\xd4\xd5\xd8\xa3\x1b"\xd4\x06\x05\x8dS?\x9c\xe04=\xae\xb0\xa7\xf8A\xbd\xba\xa4\x1ayi\xe2\\\x1fPU\xaf\xba\xf9\xb6\xd9\xab\xda\x0b\xb8*\x98\xa5+\xc9\x19T\x19Q\xd5>\x00\'\x8c\xaf\x94\x86\x1a\ni\xed\x83\xa5\xae\xd1X\x12\x9b\xbey\x8a\x04\x17\xcfT\xf3e\xe5S\xa7\x1b<\x1a\x07\x88\xd5$+\xa9\xa4\x87\xf0\xfc\xf9\xf3\xf0\xa7\x90\xf4\xbei\x15@\x15\xfd\x13,D0\xcc,\xfa\xc7K8=\xea\x1f/\xe1h\xe6\x84\xf1\x12\x8e\x8f\xda\xe6K4\xdc\xb1\xc4\x12\xf3\t\x83M\x08|m0]\x08\x01gX\xe4\'\\\xa7@\xf5g\x13f\xf4\tn\xa2li\x1bFb\x1c,\xd3J\x8cd\xf7\xb8\x12m\xe8\'"\xb0\x00V\xe9F\x96\x80\x81\x04\xd0Z!\r\x13\xfa\xb6\xf2e\x08\xd5\t\x91 ?v\x8f\x9e\x1bG\xd3:*\x9e<z\xee`\xe2\x19X~\x95?\xa1\xda&\xe6\xec3\xed \xfa\xd7\x0c\xaai\x7f\xef\xa0\x9a\xf6\xd3\xa0Y\xbfN\x83d\x1a\x14\xf7\x0e\x92i\xd4\xda=H\x86I\xb1\xbc_?\xea\xad\x0f\x921z\x94=\x14]\xd8\x8f\xd9O\xd9Ast\x18U\x83{h\x19b\xd3\x9b;\x98\xdbT[`\x7f\xb7w\xc1=D3hZ\xd7\x07\x97x\x06\xa4\x1f\xf7\xd7\xaf\x1e\xd2\x1c\xa0\xb2\x03<~\x18\xa8\xb071\x88\xf4\x0c\xa1\xb6\xc2\xaag\xf0\xf4\xba\x07\x8e\xd7J"\xc9\xc7\xb4\x87\x86nk\x97\x0c\x03i\x05\x89\xe4\x17\xd2L\x18\xc3B$8\x83\x00\xc2\xf4\x8e3\x08 L\x9b8\x85\x00\xc2\xfc\x8eV\x06\x08\xf2\x15L\x91\xc5\x0c\xe3\xbb\xc0\x12L\x01\xc1\xa3\xb0\x00\xfa\xf3\x8c\xc8s\x06\x9eqW8n\xa7D\x05\xd3\xa7\x95?\xc4\x9171\x8c8{N\xa0\x18\xb1\x1dg\x90\x90\x14\x12\\\xd1\x9bI\x7f\x16J_{%\xb5\x90\xedZk\x9c%n\xa7D\x05=\xaa\xa0/\x12{\xac\x95^f\x11@\xf6X\xa3\x00\xaa0\x10\x8a\xfa\xb9_H\xed\xea\xe7~!o\xea\x04\xee\x17r\xbbd\x04\x035\x0b\x1aa\x8e%&\x1c\x06\x9b\x10\xf8V`\xba\x10B\x81\x1e\xa6\'\xd1\xe1:\x05\xaa?\x9b0\xa3Op\x13eK\x1bS\xd0@\xf4\xe3@\x91\x00R\x05\xfb\xb9\x84\x8c\x00\xb7\x12\x01\x90\xe2K\x1aN`\x197r\x84\r\x14\xe0\xd6\x12l\xe0\xe7\xf6\xfb\x89NY\xa1\x85\xd6\x18C\x12#\xa5\x8fa\xd9\xf5\x1f\xcc\x7f||\xfb\xed\x7fD\x07\x8e2'
    ).decode())
# print(len(m.vertices))
# from math import sqrt
# print(sqrt(720))
#
# from PIL import Image
# from PIL.PngImagePlugin import PngInfo
#
#
# # img = Image.new(mode="RGBA", size=(32,32)))
#
# # print(list(zip(m.vertices)))
# xs = [v[0] for v in m.vertices]
# ys = [v[1] for v in m.vertices]
# zs = [v[2] for v in m.vertices]
#
# w = max(xs) - min(xs)
# h = max(ys) - min(ys)
# d = max(zs) - min(zs)
#
# metadata = PngInfo()
# metadata.add_text("sx", str(min(xs)))
# metadata.add_text("sy", str(min(ys)))
# metadata.add_text("sz", str(min(zs)))
# metadata.add_text("w", str(1234))
#
# w_res =  w/255
#
# for i, v in enumerate(m.vertices):
#     print(int((v[0]-min(xs)) / w * 255))
#
#
# img.save("car.png", pnginfo=metadata)

EditorCamera()
app.run()
