Skip to content

Commit 505b495

Browse files
committed
add 2d variant of TransformPoint
1 parent c0f3746 commit 505b495

File tree

1 file changed

+44
-9
lines changed

1 file changed

+44
-9
lines changed

crates/bevy_transform/src/traits.rs

Lines changed: 44 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,79 @@
1-
use bevy_math::{Affine3A, Isometry3d, Mat4, Vec3};
1+
use bevy_math::{Affine2, Affine3A, Isometry2d, Isometry3d, Mat3, Mat3A, Mat4, Vec2, Vec3};
22

3-
use crate::prelude::{GlobalTransform, Transform3d};
3+
use crate::prelude::{GlobalTransform, Transform2d, Transform3d};
44

55
/// A trait for point transformation methods.
6-
pub trait TransformPoint {
6+
pub trait TransformPoint<T = Vec3> {
77
/// Transform a point.
8-
fn transform_point(&self, point: impl Into<Vec3>) -> Vec3;
8+
fn transform_point(&self, point: impl Into<T>) -> T;
99
}
1010

11-
impl TransformPoint for Transform3d {
11+
impl TransformPoint<Vec3> for Transform3d {
1212
#[inline]
1313
fn transform_point(&self, point: impl Into<Vec3>) -> Vec3 {
1414
self.transform_point(point.into())
1515
}
1616
}
1717

18-
impl TransformPoint for GlobalTransform {
18+
impl TransformPoint<Vec3> for GlobalTransform {
1919
#[inline]
2020
fn transform_point(&self, point: impl Into<Vec3>) -> Vec3 {
2121
self.transform_point(point.into())
2222
}
2323
}
2424

25-
impl TransformPoint for Mat4 {
25+
impl TransformPoint<Vec3> for Mat4 {
2626
#[inline]
2727
fn transform_point(&self, point: impl Into<Vec3>) -> Vec3 {
2828
self.transform_point3(point.into())
2929
}
3030
}
3131

32-
impl TransformPoint for Affine3A {
32+
impl TransformPoint<Vec3> for Affine3A {
3333
#[inline]
3434
fn transform_point(&self, point: impl Into<Vec3>) -> Vec3 {
3535
self.transform_point3(point.into())
3636
}
3737
}
3838

39-
impl TransformPoint for Isometry3d {
39+
impl TransformPoint<Vec3> for Isometry3d {
4040
#[inline]
4141
fn transform_point(&self, point: impl Into<Vec3>) -> Vec3 {
4242
self.transform_point(point.into()).into()
4343
}
4444
}
45+
46+
impl TransformPoint<Vec2> for Transform2d {
47+
#[inline]
48+
fn transform_point(&self, point: impl Into<Vec2>) -> Vec2 {
49+
self.transform_point(point.into())
50+
}
51+
}
52+
53+
impl TransformPoint<Vec2> for Mat3 {
54+
#[inline]
55+
fn transform_point(&self, point: impl Into<Vec2>) -> Vec2 {
56+
self.transform_point2(point.into())
57+
}
58+
}
59+
60+
impl TransformPoint<Vec2> for Mat3A {
61+
#[inline]
62+
fn transform_point(&self, point: impl Into<Vec2>) -> Vec2 {
63+
self.transform_point2(point.into())
64+
}
65+
}
66+
67+
impl TransformPoint<Vec2> for Affine2 {
68+
#[inline]
69+
fn transform_point(&self, point: impl Into<Vec2>) -> Vec2 {
70+
self.transform_point2(point.into())
71+
}
72+
}
73+
74+
impl TransformPoint<Vec2> for Isometry2d {
75+
#[inline]
76+
fn transform_point(&self, point: impl Into<Vec2>) -> Vec2 {
77+
self.transform_point(point.into())
78+
}
79+
}

0 commit comments

Comments
 (0)