Mercurial > games > semicongine
comparison tests/test_vulkan_wrapper.nim @ 302:da0bd61abe91
did: change API for ECS
author | Sam <sam@basx.dev> |
---|---|
date | Tue, 27 Jun 2023 00:17:40 +0700 |
parents | bfcb41211c5b |
children | 4921ec86dcb4 |
comparison
equal
deleted
inserted
replaced
301:bf5982802e2c | 302:da0bd61abe91 |
---|---|
1 import std/tables | 1 import std/tables |
2 | 2 |
3 import semicongine | 3 import semicongine |
4 | 4 |
5 proc scene_different_mesh_types(): Entity = | 5 proc scene_different_mesh_types(): Entity = |
6 result = newEntity("root", | 6 result = newEntity("root", [], |
7 newEntity("triangle1", newMesh( | 7 newEntity("triangle1", {"mesh": Component(newMesh( |
8 positions=[newVec3f(0.0, -0.5), newVec3f(0.5, 0.5), newVec3f(-0.5, 0.5)], | 8 positions=[newVec3f(0.0, -0.5), newVec3f(0.5, 0.5), newVec3f(-0.5, 0.5)], |
9 colors=[newVec4f(1.0, 0.0, 0.0, 1), newVec4f(0.0, 1.0, 0.0, 1), newVec4f(0.0, 0.0, 1.0, 1)], | 9 colors=[newVec4f(1.0, 0.0, 0.0, 1), newVec4f(0.0, 1.0, 0.0, 1), newVec4f(0.0, 0.0, 1.0, 1)], |
10 )), | 10 ))}), |
11 newEntity("triangle1b", newMesh( | 11 newEntity("triangle1b", {"mesh": Component(newMesh( |
12 positions=[newVec3f(0.0, -0.4), newVec3f(0.4, 0.4), newVec3f(-0.4, 0.5)], | 12 positions=[newVec3f(0.0, -0.4), newVec3f(0.4, 0.4), newVec3f(-0.4, 0.5)], |
13 colors=[newVec4f(1.0, 0.0, 0.0, 1), newVec4f(0.0, 1.0, 0.0, 1), newVec4f(0.0, 0.0, 1.0, 1)], | 13 colors=[newVec4f(1.0, 0.0, 0.0, 1), newVec4f(0.0, 1.0, 0.0, 1), newVec4f(0.0, 0.0, 1.0, 1)], |
14 )), | 14 ))}), |
15 newEntity("triangle2a", newMesh( | 15 newEntity("triangle2a", {"mesh": Component(newMesh( |
16 positions=[newVec3f(0.0, 0.5), newVec3f(0.5, -0.5), newVec3f(-0.5, -0.5)], | 16 positions=[newVec3f(0.0, 0.5), newVec3f(0.5, -0.5), newVec3f(-0.5, -0.5)], |
17 colors=[newVec4f(1.0, 0.0, 0.0, 1), newVec4f(0.0, 1.0, 0.0, 1), newVec4f(0.0, 0.0, 1.0, 1)], | 17 colors=[newVec4f(1.0, 0.0, 0.0, 1), newVec4f(0.0, 1.0, 0.0, 1), newVec4f(0.0, 0.0, 1.0, 1)], |
18 indices=[[0'u16, 2'u16, 1'u16]] | 18 indices=[[0'u16, 2'u16, 1'u16]] |
19 )), | 19 ))}), |
20 newEntity("triangle2b", newMesh( | 20 newEntity("triangle2b", {"mesh": Component(newMesh( |
21 positions=[newVec3f(0.0, 0.4), newVec3f(0.4, -0.4), newVec3f(-0.4, -0.4)], | 21 positions=[newVec3f(0.0, 0.4), newVec3f(0.4, -0.4), newVec3f(-0.4, -0.4)], |
22 colors=[newVec4f(1.0, 0.0, 0.0, 1), newVec4f(0.0, 1.0, 0.0, 1), newVec4f(0.0, 0.0, 1.0, 1)], | 22 colors=[newVec4f(1.0, 0.0, 0.0, 1), newVec4f(0.0, 1.0, 0.0, 1), newVec4f(0.0, 0.0, 1.0, 1)], |
23 indices=[[0'u16, 2'u16, 1'u16]] | 23 indices=[[0'u16, 2'u16, 1'u16]] |
24 )), | 24 ))}), |
25 newEntity("triangle3a", newMesh( | 25 newEntity("triangle3a", {"mesh": Component(newMesh( |
26 positions=[newVec3f(0.4, 0.5), newVec3f(0.9, -0.3), newVec3f(0.0, -0.3)], | 26 positions=[newVec3f(0.4, 0.5), newVec3f(0.9, -0.3), newVec3f(0.0, -0.3)], |
27 colors=[newVec4f(1.0, 1.0, 0.0, 1), newVec4f(1.0, 1.0, 0.0, 1), newVec4f(1.0, 1.0, 0.0, 1)], | 27 colors=[newVec4f(1.0, 1.0, 0.0, 1), newVec4f(1.0, 1.0, 0.0, 1), newVec4f(1.0, 1.0, 0.0, 1)], |
28 indices=[[0'u32, 2'u32, 1'u32]], | 28 indices=[[0'u32, 2'u32, 1'u32]], |
29 autoResize=false | 29 autoResize=false |
30 )), | 30 ))}), |
31 newEntity("triangle3b", newMesh( | 31 newEntity("triangle3b", {"mesh": Component(newMesh( |
32 positions=[newVec3f(0.4, 0.5), newVec3f(0.9, -0.3), newVec3f(0.0, -0.3)], | 32 positions=[newVec3f(0.4, 0.5), newVec3f(0.9, -0.3), newVec3f(0.0, -0.3)], |
33 colors=[newVec4f(1.0, 1.0, 0.0, 1), newVec4f(1.0, 1.0, 0.0, 1), newVec4f(1.0, 1.0, 0.0, 1)], | 33 colors=[newVec4f(1.0, 1.0, 0.0, 1), newVec4f(1.0, 1.0, 0.0, 1), newVec4f(1.0, 1.0, 0.0, 1)], |
34 indices=[[0'u32, 2'u32, 1'u32]], | 34 indices=[[0'u32, 2'u32, 1'u32]], |
35 autoResize=false | 35 autoResize=false |
36 )), | 36 ))}), |
37 ) | 37 ) |
38 for mesh in allComponentsOfType[Mesh](result): | 38 for mesh in allComponentsOfType[Mesh](result): |
39 mesh.setInstanceData("translate", @[newVec3f()]) | 39 mesh.setInstanceData("translate", @[newVec3f()]) |
40 | 40 |
41 proc scene_simple(): Entity = | 41 proc scene_simple(): Entity = |
61 ) | 61 ) |
62 mymesh1.setInstanceData("translate", @[newVec3f(0.3, 0.0)]) | 62 mymesh1.setInstanceData("translate", @[newVec3f(0.3, 0.0)]) |
63 mymesh2.setInstanceData("translate", @[newVec3f(0.0, 0.3)]) | 63 mymesh2.setInstanceData("translate", @[newVec3f(0.0, 0.3)]) |
64 mymesh3.setInstanceData("translate", @[newVec3f(-0.3, 0.0)]) | 64 mymesh3.setInstanceData("translate", @[newVec3f(-0.3, 0.0)]) |
65 mymesh4.setInstanceData("translate", @[newVec3f(0.0, -0.3), newVec3f(0.0, 0.5)]) | 65 mymesh4.setInstanceData("translate", @[newVec3f(0.0, -0.3), newVec3f(0.0, 0.5)]) |
66 result = newEntity("root", newEntity("triangle", mymesh4, mymesh3, mymesh2, mymesh1)) | 66 result = newEntity("root", [], newEntity("triangle", {"mesh1": Component(mymesh4), "mesh2": Component(mymesh3), "mesh3": Component(mymesh2), "mesh4": Component(mymesh1)})) |
67 | 67 |
68 proc scene_primitives(): Entity = | 68 proc scene_primitives(): Entity = |
69 var r = rect(color="ff0000") | 69 var r = rect(color="ff0000") |
70 var t = tri(color="0000ff") | 70 var t = tri(color="0000ff") |
71 var c = circle(color="00ff00") | 71 var c = circle(color="00ff00") |
72 | 72 |
73 r.setInstanceData("translate", @[newVec3f(0.5, -0.3)]) | 73 r.setInstanceData("translate", @[newVec3f(0.5, -0.3)]) |
74 t.setInstanceData("translate", @[newVec3f(0.3, 0.3)]) | 74 t.setInstanceData("translate", @[newVec3f(0.3, 0.3)]) |
75 c.setInstanceData("translate", @[newVec3f(-0.3, 0.1)]) | 75 c.setInstanceData("translate", @[newVec3f(-0.3, 0.1)]) |
76 result = newEntity("root", t, r, c) | 76 result = newEntity("root", {"mesh1": Component(t), "mesh1": Component(r), "mesh1": Component(c)}) |
77 | 77 |
78 proc scene_flag(): Entity = | 78 proc scene_flag(): Entity = |
79 var r = rect(color="ff0000") | 79 var r = rect(color="ff0000") |
80 r.updateMeshData("color", @[newVec4f(0, 0), newVec4f(1, 0), newVec4f(1, 1), newVec4f(0, 1)]) | 80 r.updateMeshData("color", @[newVec4f(0, 0), newVec4f(1, 0), newVec4f(1, 1), newVec4f(0, 1)]) |
81 result = newEntity("root", r) | 81 result = newEntity("root", {"mesh": Component(r)}) |
82 | 82 |
83 proc main() = | 83 proc main() = |
84 var engine = initEngine("Test") | 84 var engine = initEngine("Test") |
85 | 85 |
86 # INIT RENDERER: | 86 # INIT RENDERER: |