- Fixed the DenseArray2 constructor so that it takes a default value. (issue #46)
- Made ShortVector2's components unsettable. (issue #45)
- Added in-place set() functions to all math structures (except ShortVector2 which is not settable in-place). (issue #43)
- Added toString for Frame defaults. (issue #36)
- Added ordered iteration for SparseArray2. (issue #42)
- [breaking change] Changed DenseArray2.resize to always take a default value (issue #41).
- Fixed DenseArray2.resize (issue #40).
- orient2d allocates on some platforms due to use of enum. (issue #38)
- IntVector2 should not implicitly convert to Vector2. (issue #39)
- When wrapping angles, avoid relying on the target platform using a spcific sign convention for modulo. In the case of C++, for example, the convention isn't even specified in the standard.
- Added all appropriate Vector2 functions to IntVector2 and ShortVector2.
- Lookup by packed key, iteration by key for DenseArray2.
- Completed conversion/clone functions for DenseArray2 and SparseArray2.
- fill for DenseArray2.
- intMin/Max now in MathUtil.
- Haxe 3.2.0 support
- Added in-place operators wherever possible to Vector classes to reduce new allocations (issue #23)
- [breaking change] Fixed the abstract signatures to use *Type instead of *Default, removed some random includes added by FlashDevelop, and finally added the option to use OpenFL types as inner types (issue #17). To use this feature use HXMATH_USE_OPENFL_STRUCTURES. Note that this change (6cd6c97) means that auto-casting will no longer "just work" even if HXMATH_USE_DYNAMIC_STRUCTURES is specified (no longer supported). This decision was made due to the massive performance gain on native platforms when using static types.
- [breaking change] Changed the inner type in Quaternion to be a flat structure (no more inner Vector3) (issue #33). The product isn't as clean, but it should be faster (especially when it comes to the GC).
- Vector functions from Unity3D. See tbrosman#30 (comment) for a table mapping Unity functions to hxmath equivalents. Additions include orthoNormalize, slerp, projectOntoPlane, and more.
- Array2 with two implementations (Sparse and Dense) (issue #3). Not really math, but extremely useful for things like tilemaps and grid collision.
- ShortVector2, an int vector with 16-bit fields implemented as an abstract over Int. It requires no allocation to "construct."
- Added toString defaults for all structures (issue #21).
- Partially implemented new conventions to reduce new allocations/increase performance (issue #23):
- Operators will allocate new objects for clarity
- Properties will normally allocate new objects (e.g. Vector2.normal)
- All other functions will favor in-place versions where possible/practical
- Renamed scalarMultiply on vectors to just multiply for clarity.
- Added to Vector2: normalizeTo, clamp, divide, rotate (issue #29)
- Changed Frame3 to use a fully normalized quaternion inverse to avoid issues when inverting denormalized (e.g. interpolated) frames (issue #24).
- In-place quaternion inverse with normalization (issue #25).
- Fix for Quaternion clone doesn't clone its vector portion (issue #27).
- Fast inversion for frame matrices (frameMatrixInvert)
- Added Rect, the first of the geom structures.
- Bugfix: Changed the cross product operator to '%' to avoid non-obvious precedence issues (Quaternion product was broken as a result).
- Added Frame3 for 3D transformations.
- For core math structures: changed all underlying types to be static and removed default constructors. This is a huge performance gain for static targets like C++.
- Refactored coordinate frames to allow for implicit frames (adapters over existing sprites/entities with minimal overhead).
- Bugfix: isDirty bit never set to false in Frame2 (matrix not being cached).
- 2D coordinate frames have been added. They can be concatenated, inverted, used either to transform points/vectors directly or used as a way to generate OpenFL-compatible matrices. They provide a higher (and more useful) layer of abstraction than matrices along with an intuitive 'to/from' syntax describing whether the point/vector is being transformed into the frame from the outer frame, etc. A bug in the equality operators (throwing on null) has been fixed. Documentation has been added for all public members.
- To/from conversion functions for FlxPoint/FlxVector (by shape; no dependency on Flixel).
- copyTo functions to preserve the other properties of target types/avoid allocating when undesired.
- Signed and unsigned angle functions for 2D vectors.
- Array operator overloads for all structures.
- Minor bugfixes, more test coverage.
- Initial version. Basic functionality for vectors, matrices, and quaternions working.