1use bevy_math::{Affine3A, Isometry3d, Mat4, Vec3};
2
3use crate::prelude::{GlobalTransform, Transform};
4
5pub trait TransformPoint {
7 fn transform_point(&self, point: impl Into<Vec3>) -> Vec3;
9}
10
11impl TransformPoint for Transform {
12 #[inline]
13 fn transform_point(&self, point: impl Into<Vec3>) -> Vec3 {
14 self.transform_point(point.into())
15 }
16}
17
18impl TransformPoint for GlobalTransform {
19 #[inline]
20 fn transform_point(&self, point: impl Into<Vec3>) -> Vec3 {
21 self.transform_point(point.into())
22 }
23}
24
25impl TransformPoint for Mat4 {
26 #[inline]
27 fn transform_point(&self, point: impl Into<Vec3>) -> Vec3 {
28 self.transform_point3(point.into())
29 }
30}
31
32impl TransformPoint for Affine3A {
33 #[inline]
34 fn transform_point(&self, point: impl Into<Vec3>) -> Vec3 {
35 self.transform_point3(point.into())
36 }
37}
38
39impl TransformPoint for Isometry3d {
40 #[inline]
41 fn transform_point(&self, point: impl Into<Vec3>) -> Vec3 {
42 self.transform_point(point.into()).into()
43 }
44}