Releases: DaveGreen-Games/ShapeEngine
v3.1.0 Minor Release
Summary
This release addresses various fixes and improvements that were missed in the 3.0 release. Despite introducing some breaking changes, I decided to classify this as a minor release rather than version 4.0, as all the breaking changes pertain to the same systems as the 3.0 release.
FirstContact / ContactEnded System Overhaul:
Previously, the FirstContact
was only reported for Colliders
and not for CollisionObjects
. The system has now been split into two separate systems: one for Collider
pairs and one for CollisionObject
pairs.
- CollisionObjects:
- A
FirstContact
between twoCollisionObjects
is reported once anyCollider
of one contacts anyCollider
of the otherCollisionObject
. - The
ContactEnded()
function for theCollisionObject
is called once all contacts between all of theColliders
have ended.
- A
- Colliders:
- A
FirstContact
between twoColliders
is reported the first time they contact (no contact in the previous frame). - The
ColliderContactEnded()
function is called once the contact ends (contact in the previous frame but no contact in the current frame).
- A
Other Changes:
- Namespace Changes:
CollisionObject
moved to theCollisionSystem
namespace.
- Class Removals:
ContactEndedInformation
class removed.Contact
class removed.
- Function Parameter Changes:
ContactEnded(CollisionObject other)
function parameters changed.ColliderContactEnded(Collider self, Collider other)
function parameters changed.
- CollisionInformation Improvements:
CollisionInformation
now includes aFirstContact
member, reported only for the two involved CollisionObjects, separate from any FirstContact reporting between Colliders.- General improvements and cleanup of
CollisionInformation
, including new functions. - New functions for Exists, Find, and FindAll
CollisionPoints
. - New functions for finding Closest, Furthest, and Combined
CollisionPoint
.
- Collision Improvements:
- Functions for Exists, Find, and FindAll
CollisionPoints
added.
- Functions for Exists, Find, and FindAll
- CollisionPoints:
- GetClosest/Furthest/FacingTowards functions now skip invalid collision points
- Renaming:
GetAverageCollisionPoint()
renamed toGetCombinedCollisionPoint()
in multiple classes.
- ResolveCollision Update:
CollisionObject.ResolveCollision()
is now called for each generatedCollisionInformation
instead of receiving a list ofCollisionInformation
.
Merged Pull Requests
Full Changelog: v3.0.0...v3.1.0
v3.0.0 Major Release
Summary
This release improves how collision/overlap/query information is aggregated and handled.
Before, information was collected on a per-collider basis, and events/functions were called on the active collider involved. This meant the actual collision object and collider parent would not be notified.
Now, all the information is grouped per collision object. The collision/overlap between colliders with all the collision points is still collected together in one class. So, each collision object gets notified of all the collisions/overlaps that happened with any of the child colliders at the end of each frame. A collision without collision points is an overlap!
These changes should help in making it easier to use the collision information. The actual collision detection and data have not changed just how it is grouped together and presented to the involved collision objects/ colliders.
Changelog
Overlap
&OverlapInformation
classes addedCollisionInformation
class reworkedCollision
class improvements- Collision System overhaul:
CollisionObjects
now receive relevantCollisionInformation
and can choose to pass it down to involved colliders- Collision information is now collected / sorted based on the other involved collision object. This means a collision is now detected and reported for all involved colliders in a collision between 2 collision objects at once.
- Functions/ Events involved renamed and reworked to make the system clearer
Collision
Namespace changed toCollisionSystem
Copy()
Function added toCollisionInformation
,OverlapInformation
,Collision
,Overlap
, andIntersection
classes- Filter functions added to
CollisionInformation
andOverlapInformation
Intersection
class deleted (replaced byCollisionPoints
class)CollisionPoint
IsFacing*()
functions added to check if normals are facing the correct wayQuerySpace*()
functions in CollisionHandler renamed to IntersectSpace*IntersectSpace*()
functions now returnIntersectSpaceResults
that replaced the oldQueryInfo
system.CastSpace
now usesCastSpaceResult
/CastSpaceEntry
classes- Direction
ToAlignement()
Function fixed &ToInvertedAlignement()
Function added - Deprecated classes removed:
- Effect
- Effect Object
- Particle
- PhysicsParticle
- RangeFloat
- RangeInt
- SavegameFolder
Examples
- 2 new attacks added to EndlessSpaceExample for testing the new collision system with overlaps (Q/E, LMB/RMB) for triggering the new attacks.
- GameObjectHandlerExample new overlap circle objects added that change color based on how many collision objects they overlap.
- Improvements & Fixes in various Example Scenes.
Pull Requests
Full Changelog: v2.4.0...v3.0.0
2.4.0 Minor Release
Transform2D Enhancements:
- New Functions:
UpdateTransform
: Updates the transform.GetChildTransform
: Retrieves the transform of a child object.
Collider Enhancements:
- Uses UpdateTransform Function: The Collider now leverages the
UpdateTransform
function. - Cleanup: General cleanup for better performance and maintainability.
Function Changes in Shapes:
- ApplyTransform/ApplyTransformCopy:
- Changed to
ApplyOffset/ApplyOffsetCopy
across all shapes.
- Changed to
New Shape Class:
- A new
Shape
class that inherits fromIShape
.
Collider Inheritance:
- The
Collider
now inherits from theShape
class instead ofIShape
.
ShapeContainer System:
- Hierarchy System: Parent/Child hierarchy for shapes.
- A
ShapeContainer
can have a parent and multiple children. - Children are updated based on the parent transform and the child offsets.
- A
New Shape Classes:
- CircleShape
- TriangleShape
- SegmentShape
- RectShape
- QuadShape
- PolyShape
- PolyLineShape
- All these classes inherit from
ShapeContainer
.
- All these classes inherit from
Merged Pull Requests
Full Changelog: v2.3.1...v2.4.0
v2.3.1 Patch Release
The game reference of a Scene is now set before Activate is called on the Scene.
v2.3.0 Minor Release
Main Changes
- ScreenTexture macOS scaling fix
- AudioDevice cleanup and improvements
- Collider & CollisionObject collision notification system improvements
Changelog
- ScreenTextures should now properly scale on macOS when an high dpi monitor is used. (Before ScreenTextures in StretchMode would be not as sharp as they should be)
- Audio Device Cleanup
- Audio Device more overloads for certain functions added
- AudioDevice PlaySFX() functions now return bool for success or failure
- Playlist improvements
- Game class now has a default AudioDevice initialized from the start
- ShapeID & IDCounter Reset() and AdvanveTo() functions added
- An active Scene now has a reference to the parent Game class that activated the Scene
- CollisionObject now can optionally report collision events like ColliderCollision() & ColliderCollisionEnded(). ReportColliderCollision must be set to true!
- Transform2d now has a Vector2 Scale2d field. The Scale field stays intact and reports the Scale2d.X value.
- Collider received are more advanced collision notification system
- Dimensions now have more operators
- AlphaCircle shader added to Examples
Pull Request: Audio device overhaul by @SoloByte in #47
Full Changelog: v2.2.0...v2.3.0
v2.2.0 Minor Release
This is a small but very important update. Some small mistakes made their way into the Segment Overlap functions
which made them give false results. I fixed this and by testing all shapes again I also found a typo in the Quad ContainsPoint
function which led to false results in the Quad OverlapFunctions
as well.
- Segment Overlap functions fixed.
- Quad ContainsPoint function fixed. (typo was the problem)
- Polyline improvements / clean up.
- RangeFloat and RangeInt deprecated. Both classes are still available but will be removed in a future update
- ValueRange and ValueRangeInt readonly structs implemented to replace RangeFloat and RangeInt classes. They do basically the same but they are readonly structs now.
Full Changelog: v2.1.1...v2.2.0
v2.1.1 Patch Release
Savegame system CombinePath should now work correctly.
v2.1.0 Minor Release
This is just a small update adding a few useful features.
What's Changed
- CircleSector and CircleSectorCollider added by @SoloByte in #44 (CircleSector can be useful for detection cones for instance)
- Outline Percentage drawing for all shapes. by @SoloByte in #45 (can be used to make any shape a progress bar or to have the outline of an enemy be the health bar as an example)
Full Changelog: v2.0.2...v2.1.0
v2.0.2 Patch Release
Contains a small hotfix for the minimal setup example. Thanks to @jermdavis for spotting this :)
v2.0.1 Patch Release
- Screen Texture Pixelation Mode Mouse Scaling hot fix
- Branding material updated
- New Ico file
- New Icon
- New Nuget Icon