Skip to content

Commit f521a45

Browse files
committed
readme-nuget.md updated. csproj file updated for 4.0 release.
1 parent e58ced6 commit f521a45

File tree

2 files changed

+41
-70
lines changed

2 files changed

+41
-70
lines changed

ShapeEngine/ShapeEngine.csproj

Lines changed: 38 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -10,89 +10,57 @@
1010
<Title>Shape Engine</Title>
1111
<Authors>Dave Green</Authors>
1212
<RepositoryUrl>https://github.com/DaveGreen-Games/ShapeEngine</RepositoryUrl>
13-
<Version>3.1.0</Version>
13+
<Version>4.0.0</Version>
1414
<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>
1515
<PackageProjectUrl>https://davegreengames.itch.io/shape-engine</PackageProjectUrl>
1616
<PackageIcon>shapeengine-nuget-icon-128px.png</PackageIcon>
1717
<RepositoryType>git</RepositoryType>
1818
<PackageTags>GameEngine Framework 2D raylib gamedev graphics shapes polygon rect line clipper2 polygonclipping</PackageTags>
1919
<Company>Dave Green Games</Company>
2020
<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>
2323
<PackageReadmeFile>readme-nuget.md</PackageReadmeFile>
2424
<NeutralLanguage>en-US</NeutralLanguage>
25-
<Copyright>Copyright (c) David Grueneis 2024</Copyright>
25+
<Copyright>Copyright (c) David Grueneis 2025</Copyright>
2626
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
2727
<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.
3128

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.
6733

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
9664

9765
</PackageReleaseNotes>
9866
<PackageId>DaveGreen.ShapeEngine</PackageId>

ShapeEngine/readme-nuget.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ public class MyGameClass : Game
8383
- [Polygon Fracturing](https://youtu.be/RaKz4q_zYrg)
8484
- [Delaunay Triangulation](https://youtu.be/eJqZB-e6m54)
8585
- [Text & Font System](https://youtu.be/D3xLx7f1YqQ)
86+
- [Word Emphasis System](https://youtu.be/wEz60lx8ef4)
8687
- [Pathfinding](https://youtu.be/giVIGSfIO4k?si=KWRiGJvG8Roj0Qh2)
8788
- UI System
8889
- [Collision System](https://youtu.be/mJJZcDa2pRE)
@@ -93,6 +94,8 @@ public class MyGameClass : Game
9394
- [Camera System](https://youtu.be/BascnrqZn6Q)
9495
- Screen Texture System
9596
- [Gapped Drawing](https://youtu.be/_xBz9cArtBE)
97+
- [Striped Drawing](https://youtu.be/lYkotZkr1fQ)
98+
- [Shape Collision System 2.0](https://youtu.be/Ag8rDXmvHwk) with Segment, Line, Ray, Circle, Triangle, Quad, Rect, Polygon, Polyline
9699

97100
## Documentation & Getting Started
98101

0 commit comments

Comments
 (0)