diff options
Diffstat (limited to 'src/transformable.rs')
| -rw-r--r-- | src/transformable.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/transformable.rs b/src/transformable.rs new file mode 100644 index 0000000..b8212f9 --- /dev/null +++ b/src/transformable.rs @@ -0,0 +1,17 @@ +//! Traits for items that can be modified using a variety of matrix transformations. +//! +//! Items in the world may be resizable or rotateable etc. in a variety of different ways. This +//! module contains the traits that are used to interact with such objects in a way, that ensures the +//! item is not transformed illegaly. For example, an item may be scaleable by a factor, but that does +//! not necessarily mean that it can be scaled by different factors in x and y direction (stretched). +//! If need be, this module contains the different types of transformations and transformation +//! restrictions to make these features available and restricting them reliably. + +use nalgebra::Matrix3; + +/// Trait for things that can be stretched and rotated etc. as one pleases without +/// becoming invalid. A room for instance would fall into this category, while an icon might not. +pub trait NonRigidTransformable { + /// Applies the provided matrix to all vertices of this transformable element. + fn apply_matrix(&mut self, matrix: &Matrix3<f64>); +} |
