Comments (3)
Alternatively, it can be implemented like this. (But this doesn't allow passing &mut Vec2
to a function, for example)
pub trait Vec3SwizzleSet {
fn set_xz(&mut self, thing: Vec2);
fn set_xy(&mut self, thing: Vec2);
fn set_zy(&mut self, thing: Vec2);
fn set_yz(&mut self, thing: Vec2);
}
impl Vec3SwizzleSet for Vec3 {
fn set_xz(&mut self, thing: Vec2) {
self.x = thing.x;
self.z = thing.y;
}
fn set_xy(&mut self, thing: Vec2) {
self.x = thing.x;
self.y = thing.y;
}
fn set_zy(&mut self, thing: Vec2) {
self.z = thing.x;
self.y = thing.y;
}
fn set_yz(&mut self, thing: Vec2) {
self.y = thing.x;
self.z = thing.y;
}
}
from glam-rs.
I was thinking about this when adding the with_x
etc. methods, which would be an alternative to a set that mutates,
So rather than fn set_zy(&mut self, v: Vec2)
it would be fn with_zy(self, v: Vec2) -> Self
, although both have their uses.
The swizzles are all generated code which does reduce the amount of typing required but that particular bit of codegen is reasonably complex.
One complication is it would be good to support Vec3
and Vec3A
as the thing
vector which will probably make the trait slightly more complex.
from glam-rs.
What about making it impl Into<Vec3>
?
If both have their use cases, then maybe have both?
I saw, and I was trying to understand what was going on, but failed.
I made a marco which generates Vec3SwizzleSet
. But AFAIK macros will slow down compilation compared to the current approach. (maybe with proc-marco2 the codegen can be modified to output the generated code into a file?)
from glam-rs.
Related Issues (20)
- Feature request: add `towards` for vectors HOT 1
- Implement missing `From<Quat>` for matrices (get basis from quaternion) HOT 3
- From array for boolean vectors HOT 1
- Threshold for `is_normalized` seems wrong HOT 3
- Add `with_x `, `with_y`, to vector types HOT 1
- Add matrix transpose multiplication
- Vec2::fract() with negative numbers is inconsistent with f32::fract() HOT 5
- Quat::to_euler outputs bigger than PI * 2 at certain angles HOT 13
- Possible Incompleteness HOT 1
- Quat::from_euler truncates rotations to a single rotation HOT 2
- Multiply BVecN and VecN? Implement Into/From for BVecN to VecN with 1.0:s and 0.0:s HOT 1
- Quat / Euler tests fail on Apple Silicon HOT 11
- IVec2 and similar types should be Ord. HOT 1
- Extend `.normalize()` etc. to work for more values HOT 2
- Vec2/3's `angle_between` function is unclear/misleading HOT 16
- Vec2 clamp_length alters vector when length is within specified range HOT 5
- Inconsistent/missing scalar implementation of le/ge functions for Vec3A compared to sse2 HOT 2
- Any ambitions to implement static comma vectors? HOT 1
- impl From<Vec4> for Vec3A violates conversion is lossless contract
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from glam-rs.