Skip to content

Releases: DaveGreen-Games/ShapeEngine

v3.1.0 Minor Release

15 Dec 06:59
1d7d377
Compare
Choose a tag to compare

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:
    • FirstContact between two CollisionObjects is reported once any Collider of one contacts any Collider of the other CollisionObject.
    • The ContactEnded() function for the CollisionObject is called once all contacts between all of the Colliders have ended.
  • Colliders:
    • FirstContact between two Colliders 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).

Other Changes:

  • Namespace Changes:
    • CollisionObject moved to the CollisionSystem 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 a FirstContact 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.
  • CollisionPoints:
    • GetClosest/Furthest/FacingTowards functions now skip invalid collision points
  • Renaming:
    • GetAverageCollisionPoint() renamed to GetCombinedCollisionPoint() in multiple classes.
  • ResolveCollision Update:
    • CollisionObject.ResolveCollision() is now called for each generated CollisionInformation instead of receiving a list of CollisionInformation.

Merged Pull Requests


Full Changelog: v3.0.0...v3.1.0

v3.0.0 Major Release

09 Dec 13:33
Compare
Choose a tag to compare

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.

YouTube Video

Changelog

  • Overlap & OverlapInformation classes added
  • CollisionInformation class reworked
  • Collision class improvements
  • Collision System overhaul:
    • CollisionObjects now receive relevant CollisionInformation 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 to CollisionSystem
  • Copy() Function added to CollisionInformationOverlapInformationCollisionOverlap, and Intersection classes
  • Filter functions added to CollisionInformation and OverlapInformation
  • Intersection class deleted (replaced by CollisionPoints class)
  • CollisionPoint IsFacing*() functions added to check if normals are facing the correct way
  • QuerySpace*() functions in CollisionHandler renamed to IntersectSpace*
  • IntersectSpace*() functions now return IntersectSpaceResults that replaced the old QueryInfo system.
  • CastSpace now uses CastSpaceResult/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

06 Nov 11:54
Compare
Choose a tag to compare

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.

New Shape Class:

  • A new Shape class that inherits from IShape.

Collider Inheritance:

  • The Collider now inherits from the Shape class instead of IShape.

ShapeContainer System:

  • Hierarchy System: Parent/Child hierarchy for shapes.
    • ShapeContainer can have a parent and multiple children.
    • Children are updated based on the parent transform and the child offsets.

New Shape Classes:

  • CircleShape
  • TriangleShape
  • SegmentShape
  • RectShape
  • QuadShape
  • PolyShape
  • PolyLineShape
    • All these classes inherit from ShapeContainer.

Merged Pull Requests


Full Changelog: v2.3.1...v2.4.0

v2.3.1 Patch Release

23 Oct 05:53
Compare
Choose a tag to compare

The game reference of a Scene is now set before Activate is called on the Scene.

v2.3.0 Minor Release

21 Oct 06:24
Compare
Choose a tag to compare

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

04 Oct 07:02
Compare
Choose a tag to compare

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

11 Sep 06:57
Compare
Choose a tag to compare

Savegame system CombinePath should now work correctly.

v2.1.0 Minor Release

08 Sep 08:10
Compare
Choose a tag to compare

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

30 Aug 16:39
Compare
Choose a tag to compare

Contains a small hotfix for the minimal setup example. Thanks to @jermdavis for spotting this :)

v2.0.1 Patch Release

29 Aug 16:54
Compare
Choose a tag to compare
  • Screen Texture Pixelation Mode Mouse Scaling hot fix
  • Branding material updated
  • New Ico file
  • New Icon
  • New Nuget Icon