unrust_inbuilt/
transform.rs1use bevy::prelude::*;
2use genco::prelude::*;
3use unrust_proc_macro::unity_authoring;
4
5#[unity_authoring]
6pub struct UnityTransform {
7 pub mat: [f32; 16],
8}
9
10#[allow(non_snake_case)]
11pub fn UnityTransform_ingest_component(
12 entity: &mut bevy::ecs::world::EntityMut,
13 val: &UnityTransform,
14) {
15 let bundle =
16 TransformBundle::from_transform(Transform::from_matrix(Mat4::from_cols_array(&val.mat)));
17 entity.insert(bundle);
18}
19
20impl From<UnityTransform> for Transform {
21 fn from(value: UnityTransform) -> Self {
22 Transform::from_matrix(Mat4::from_cols_array(&value.mat))
23 }
24}
25
26impl From<Transform> for UnityTransform {
27 fn from(value: Transform) -> Self {
28 UnityTransform {
29 mat: value.compute_matrix().to_cols_array(),
30 }
31 }
32}
33
34impl From<&Transform> for UnityTransform {
35 fn from(value: &Transform) -> Self {
36 UnityTransform {
37 mat: value.compute_matrix().to_cols_array(),
38 }
39 }
40}
41
42impl From<&GlobalTransform> for UnityTransform {
43 fn from(value: &GlobalTransform) -> Self {
44 UnityTransform {
45 mat: value.compute_matrix().to_cols_array(),
46 }
47 }
48}
49
50#[allow(non_snake_case)]
51pub fn UnityTransform_CSHARP_TOKEN() -> csharp::Tokens {
52 quote! {
53 [StructLayout(LayoutKind.Sequential)]
54 public unsafe struct UnityTransform
55 {
56 public fixed float matrix[16];
57
58 public static implicit operator Unity.Transforms.LocalTransform(UnityTransform val) => Unity.Transforms.LocalTransform.FromMatrix(new Unity.Mathematics.float4x4(
59 val.matrix[0], val.matrix[4], val.matrix[8], val.matrix[12],
60 val.matrix[1], val.matrix[5], val.matrix[9], val.matrix[13],
61 val.matrix[2], val.matrix[6], val.matrix[10], val.matrix[14],
62 val.matrix[3], val.matrix[7], val.matrix[11], val.matrix[15]
63 ));
64
65 public static implicit operator Unity.Transforms.LocalToWorld(UnityTransform val) => new Unity.Transforms.LocalToWorld
66 {
67 Value = new Unity.Mathematics.float4x4(
68 val.matrix[0], val.matrix[4], val.matrix[8], val.matrix[12],
69 val.matrix[1], val.matrix[5], val.matrix[9], val.matrix[13],
70 val.matrix[2], val.matrix[6], val.matrix[10], val.matrix[14],
71 val.matrix[3], val.matrix[7], val.matrix[11], val.matrix[15]
72 )
73 };
74
75
76 public static implicit operator UnityTransform(Unity.Transforms.LocalTransform output)
77 {
78 var transform = new UnityTransform();
79 var val = output.ToMatrix();
80 transform.matrix[0] = val.c0[0];
81 transform.matrix[1] = val.c0[1];
82 transform.matrix[2] = val.c0[2];
83 transform.matrix[3] = val.c0[3];
84 transform.matrix[4] = val.c1[0];
85 transform.matrix[5] = val.c1[1];
86 transform.matrix[6] = val.c1[2];
87 transform.matrix[7] = val.c1[3];
88 transform.matrix[8] = val.c2[0];
89 transform.matrix[9] = val.c2[1];
90 transform.matrix[10] = val.c2[2];
91 transform.matrix[11] = val.c2[3];
92 transform.matrix[12] = val.c3[0];
93 transform.matrix[13] = val.c3[1];
94 transform.matrix[14] = val.c3[2];
95 transform.matrix[15] = val.c3[3];
96
97 return transform;
98 }
99 }
100 }
101}