|
10 | 10 | <Title>Shape Engine</Title> |
11 | 11 | <Authors>Dave Green</Authors> |
12 | 12 | <RepositoryUrl>https://github.com/DaveGreen-Games/ShapeEngine</RepositoryUrl> |
13 | | - <Version>3.1.0</Version> |
| 13 | + <Version>4.0.0</Version> |
14 | 14 | <Description>My custom made 2d game engine based on the great Raylib Framework. Main focus is being performant and only using draw functions instead of textures. Custom input, audio, savegame, collision, shape, pathfinding, ui, camera, color palette, polygon fracturing, and text system are available with a few other nice things!</Description> |
15 | 15 | <PackageProjectUrl>https://davegreengames.itch.io/shape-engine</PackageProjectUrl> |
16 | 16 | <PackageIcon>shapeengine-nuget-icon-128px.png</PackageIcon> |
17 | 17 | <RepositoryType>git</RepositoryType> |
18 | 18 | <PackageTags>GameEngine Framework 2D raylib gamedev graphics shapes polygon rect line clipper2 polygonclipping</PackageTags> |
19 | 19 | <Company>Dave Green Games</Company> |
20 | 20 | <Product>Shape Engine</Product> |
21 | | - <AssemblyVersion>3.1.0</AssemblyVersion> |
22 | | - <FileVersion>3.1.0</FileVersion> |
| 21 | + <AssemblyVersion>4.0.0</AssemblyVersion> |
| 22 | + <FileVersion>4.0.0</FileVersion> |
23 | 23 | <PackageReadmeFile>readme-nuget.md</PackageReadmeFile> |
24 | 24 | <NeutralLanguage>en-US</NeutralLanguage> |
25 | | - <Copyright>Copyright (c) David Grueneis 2024</Copyright> |
| 25 | + <Copyright>Copyright (c) David Grueneis 2025</Copyright> |
26 | 26 | <PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance> |
27 | 27 | <PackageReleaseNotes> |
28 | | - # 3.1 Release |
29 | | - This release addresses various fixes and improvements that were missed in the 3.0 release. |
30 | | - 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. |
31 | 28 |
|
32 | | - ## FirstContact / ContactEnded System Overhaul: |
33 | | - - 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. |
34 | | - - CollisionObjects: |
35 | | - + A FirstContact between two CollisionObjects is reported once any Collider of one contacts any Collider of the other CollisionObject. |
36 | | - + The ContactEnded() function for the CollisionObject is called once all contacts between all of the Colliders have ended. |
37 | | - - Colliders: |
38 | | - + A FirstContact between two Colliders is reported the first time they contact (no contact in the previous frame). |
39 | | - + The ColliderContactEnded() function is called once the contact ends (contact in the previous frame but no contact in the current frame). |
40 | | - |
41 | | - ## Other Changes: |
42 | | - - Namespace Changes: |
43 | | - + CollisionObject moved to the CollisionSystem namespace. |
44 | | - - Class Removals: |
45 | | - + ContactEndedInformation class removed. |
46 | | - + Contact class removed. |
47 | | - - Function Parameter Changes: |
48 | | - + ContactEnded(CollisionObject other) function parameters changed. |
49 | | - + ColliderContactEnded(Collider self, Collider other) function parameters changed. |
50 | | - - CollisionInformation Improvements: |
51 | | - + CollisionInformation now includes a FirstContact member, reported only for the two involved CollisionObjects, separate from any FirstContact reporting between Colliders. |
52 | | - + General improvements and cleanup of CollisionInformation, including new functions. |
53 | | - + New functions for Exists, Find, and FindAll CollisionPoints. |
54 | | - + New functions for finding Closest, Furthest, and Combined CollisionPoint. |
55 | | - - Collision Improvements: |
56 | | - + Functions for Exists, Find, and FindAll CollisionPoints added. |
57 | | - - CollisionPoints: |
58 | | - + GetClosest/Furthest/FacingTowards functions now skip invalid collision points |
59 | | - - Renaming: |
60 | | - + GetAverageCollisionPoint() renamed to GetCombinedCollisionPoint() in multiple classes. |
61 | | - - ResolveCollision Update: |
62 | | - + CollisionObject.ResolveCollision() is now called for each generated CollisionInformation instead of receiving a list of CollisionInformation. |
63 | | - |
64 | | - # 3.0 Release |
65 | | - This release improves the way collision/overlap/query information is aggregated and handled. |
66 | | - Before information was collected on a per collider basis and events/functions would be called on the active involved collider. This meant the actual collision object and parent of the colliders would not get notified. |
| 29 | + This release took 4 months to complete. |
| 30 | + Originally, I just wanted to add the new Ray and Line shapes for drawing and collision detection, but it ended up being much more. |
| 31 | + I took a look at physics, added some new functions, and cleaned up the PhysicsObject class. DrawCheckered was renamed to DrawStriped, and I added a lot of new variations as well. |
| 32 | + There were many small changes, bug fixes, and improvements all over ShapeEngine. There are still things I wanted to add, but I decided to release 4.0 right now. |
67 | 33 |
|
68 | | - Now all the information is grouped together 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 happend with any of the child colliders at the end of each frame. A collision without collision points is an overlap! |
69 | | - |
70 | | - These changes should help in making it easier to use the collision information. The actual collision detection and data has not changed just how it is grouped together and presented to the involved collision objects/ colliders. |
71 | | - |
72 | | - - Overlap and OverlapInformation classes added |
73 | | - - CollisionInformation class reworked |
74 | | - - Collision class improvements |
75 | | - - CollisionSystem overhaul: |
76 | | - - CollisionObjects now receive relevant CollisionInformation and can choose to pass it down to involved colliders |
77 | | - - 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. |
78 | | - - Functions/ Events involved renamed and reworked to make the system clearer |
79 | | - - Collision Namespace changed to CollisionSystem |
80 | | - - RangeInt/ RangeFloat classes removed |
81 | | - - EffectObject, Effect, Particle classes removed |
82 | | - - Copy() Function added to CollisionInformation, OverlapInformation, Collision, Overlap, and Intersection classes |
83 | | - - Filter functions added to CollisionInformation and OverlapInformation |
84 | | - - Intersection class deleted (replaced by CollisionPoints class) |
85 | | - - CollisionPoint IsFacing*() functions added to check if normals are facing the correct way |
86 | | - - QuerySpace* functions in CollisionHandler renamed to IntersectSpace* |
87 | | - - IntersectSpace* functions now return IntersectSpaceResults that replaced the old QueryInfo system. |
88 | | - - CastSpace now uses CastSpaceResult/CastSpaceEntry classes |
89 | | - - Direction ToAlignement() Function fixed and ToInvertedAlignement() Function added |
90 | | - - Deprecated classes removed: |
91 | | - - Particle |
92 | | - - PhysicsParticle |
93 | | - - RangeFloat |
94 | | - - RangeInt |
95 | | - - SavegameFolder |
| 34 | + Changelog: |
| 35 | + - Line and Ray shapes added. Both are defined by a Point and a Direction. |
| 36 | + - The Line is infinitely long in both directions from the point, and a Ray is infinitely long in one direction from the point. |
| 37 | + - Intersect / Overlap / ClosestPoint functions added to Line and Ray. |
| 38 | + - Intersect / Overlap / ClosestPoint functions overhauled and cleaned up for all remaining shapes (Segments, Points, Triangulation and Collider as well) to make everything consistent. |
| 39 | + - Line and Ray added to Cast/Query Space functions in CollisionHandler. |
| 40 | + - ShapesExample improved. Automated Testing and Projection added. |
| 41 | + - ShapesExample renamed to ShapeIntersectionExample |
| 42 | + - ShapeProjectionExample removed. |
| 43 | + - DrawCheckered renamed to DrawStriped |
| 44 | + - DrawStriped implemented for all closed shapes (Circle, Triangle, Rect, Quad, Polygon) |
| 45 | + - DrawStriped code improved with new line intersection functions |
| 46 | + - DrawStriped function with an outside and an inside shape. The striped lines will fill the outside shape and not the inside shape. |
| 47 | + - DrawShapeOutline example added |
| 48 | + - DrawShapeStriped example added |
| 49 | + - Physics! Example added |
| 50 | + - CurveDataExample added |
| 51 | + - Curve generic class implemented. Allows adding key-value pairs. Each key is time between 0 - 1. Allow sampling for a value at a certain time point. The value will be an interpolation between the values at the key before and after the time point. |
| 52 | + - CurveFloat, CurveInt, CurveVector2, CurveColor are implemented |
| 53 | + - ContainsShape functions overhauled for all closed shapes (Circle, Triangle, Rect, Quad, Polygon) |
| 54 | + - Polygon ContainsShape functions now properly check if the shape is contained. Previously, it would only check if all points are contained within the polygon, but would not check if the edges intersect the polygon. |
| 55 | + - Circle and Polygon have special ContainsShape code that uses intersection tests as well (other shapes just check if all points from the other shape are inside) |
| 56 | + - Raylib Cs bindings updated to 7.0.1 |
| 57 | + - Clipper2 updated to 1.5.3 |
| 58 | + - Static functions from PhysicsObject moved to the new static ShapePhysics class |
| 59 | + - Friction, Drag, Elastic Collision, Attraction, and Repulsion functions added to the ShapePhysics class |
| 60 | + - DrawArrow functions added to the ShapeDrawing class |
| 61 | + - ShapeDrawing was split into multiple files for each shape type: ShapePointDrawing, ShapeSegmentDrawing, ShapeLineDrawing, ShapeRayDrawing, ShapeTriangleDrawing, ShapeCircleDrawing, ShapeRectDrawing, ShapeQuadDrawing, ShapePolygonDrawing, ShapePolylineDrawing, ShapeDrawing, ShapeCustomDrawing, ShapeRingDrawing, ShapeGappedDrawing, ShapeStripedDrawing, ShapeUIDrawing |
| 62 | + - ShapeEngine.Lib namespace was renamed to ShapeEngine.StaticLib |
| 63 | + - Deferred Drawing System added to the Game class |
96 | 64 |
|
97 | 65 | </PackageReleaseNotes> |
98 | 66 | <PackageId>DaveGreen.ShapeEngine</PackageId> |
|
0 commit comments