My favorites | Sign in
Logo
                
Search
for
Updated Jun 15, 2008 by Jono.Porter
ChangeLog  
What has changed in the project each version.

Introduction

This is the ChangeLog for Physics2D.NET

Details

Physics2D.Net

2.0.0.0

Fixed: bug with PhysicsTimer that would let it run faster then it should.

Changed: Made Pivot and Hinge Joint Breakable by adding the DistanceTolerance Property.

Changed: Made it so the PhysicsEngine.Update commands Removes Expired Bodies First instead of last.

Changed: Renamed PivotJoint to FixedHingeJoint.

Added: FixedAngleJoint

Changed: Redid the Lifespan class to get rid of Master and to make it possible to have multiple items have the same lifespan.

Added: TimeStep and used it to replace all internal dt parameters.

Fixed: UseDouble to work.

Fixed: RaySegments.TryGetCustomIntersection against a MultipartPolygon

Added: GlobalFluidLogic and changes to make it work.

Added: a bunch of methods and properties to Shape.

Added: PhysicsLogic.Order to allow for Logics to run in a certain order declaratively.

Added: LinearDamping and AngularDamping Properties to Body.

Added: MassInfo.Infinite

Fixed: The bug where objects can get trapped inside each other and are next to impossible to separate.

Added: Shape.Normals as a part to the above bug fix.

BREAKING Change: Made all shapes stateless. a shape no longe knows or cares what body it is attached too.

Breaking Change: Renamed all shapes to end in “Shape” this for naming conflicts with other libraries.

Added: the Matrices class and property to the body. This used to me the matrix properties on the Shape.

Added: Rectangle property to the Body (this use to be on the shape).

Changed: Shapes that object that can collide with a RaySegmentsShape to implement a new IRaySegmentsCollidable interface.

Added: the IRaySegmentsCollidable interface.

Changed: Replaced all usage of Matrix3x3 with Matrix3x2.

Changed: Got rid of the Matrix2D struct

Added: Matrices class.

Added: LineFluidLogic and associated classes

Fixed: The RaySegments to work properly with Body.Transform

Changed: put all PhysicsLogics into a PhysicsLogics namespace

Changed: put all Joints into a Joints namespace

Changed: put all Ignorers into a Ignorers namespace

Changed: put all Shapes into a Shapes namespace

Added: RaySegmentsCollisionLogic to manage a RaySegmentsShape

Added: ExplosionLogic

Changed: Removed ApplyMatrix from Body

Changed: Renamed ApplyMatrix to ApplyPosition

Added: SpatialHashDetector

Added: Body.IgnoresPhysicsLogics

Added: OneWayPlatformIgnorer

Changed: Ignorer.CanCollide to take bodies as well as the other Ignorer

Added: Body.IsEventable

Changed: Reorder parameters in PolygonShape.CreateRectangle.

Removed: RectangleShape

Removed: Shape.IsBroadPhaseDetectionOnly

Added: Body.IsBroadPhaseOnly

Added: MousePickingLogic

Added: Body.JointAdded

Added: Body.JointRemoved

Changed: Moved: Shape.IgnoreVertexes To Body

Changed: Moved all static methods in the Shape classes into the new VertexHelper class.

Removed: the shape object now all shape directly impliment IShape.

Added: GroupedOneWayPlatformIgnorer

Added: PhysicsTimer.IsRunningChanged

Changed: Body.Collided Event to only be raised on initial contact. Contact in the event args can get rest.

Changed: Moved where ApplyPosition is called from.

1.5.0.0

added: "#if CompactFramework ... #endif" statements for all non Compact framework compatible code.

changed: PhysicsTimer to be compatible with the Compact framework

removed: most of the classes in Collections.

Added: CFReaderWriterLock which a class to replace the .Net frameworks ReaderWriterLock class since the Compact Framework does not have it.

Added: ReadOnlyThreadSafeList to replace all those classes in collections.

changed: some code to be do things in a more compact framework friendly manner.

changed: now compiles on compact framework.

Added: The Serializable Attribute to RaySegment and RaySegmentIntersectionInfo.

Changed: The physicsTimer so it no longer tries to abort the Physics thread when it is disposed. (people had security problems with this)

Changed: The physicsTimer to no longer use the Stopwatch class.

fixed: a bug with PhysicsTimer.IsRunning that would cause it not to unpause.

added: some more parameter checking.

added: some minor speed improvements to sweep and prune.

changed: made it so the first ID for a Body is 1.

changed: PhysicsEngine to initialize all its fields in its constructor.

ADDED: SingleSweepDetector this broad phase kicks Sweep and Prunes butt! (inspired by the idea "the fastest code is code that is never executed")

Added: BruteForceDetector this is the slowest possible broad phase for comparison purposes.

added: The Serializable Attribute to more classes.

Added: SelectiveSweepDetector, its more consistent and potentially faster then SingleSweepDetector

Changed: Redid how I did the compatibility with the Compact Framework to drastically reduce the number of #if statements.

BREAKING: Changed: renamed all the ignorers to not hav eth word Collision in front of them.

Added: GroupCollection. which holds most of the logic GroupIgnorer did.

BREAKING: Changed: GroupIgnorer so that it uses the new GroupsCollection.

BREAKING: Changed: renamed Body.Ignorer to Body.CollisionIgnorer

Added: AdvGroupIgnorer which has 2 GroupCollections one of the group its part of one of the groups it ignores.

Added: Body.EventIgnorer. this is to allow ignoring of collision events

Added: a bunch of static Methods to MultiPartPolygon.

Added: CreateFromBitmap to MultiPartPolygon. This will return multiple polygons :)

Added: IBitmap and ArrayBitmap that are parameters to the CreateFromBitmap method Changed: made it so the CreateFromBitmap method can take a interface to allow for custom Bitmap conversions to not require a large boolean array. Changed: Made Major Speed improvment to the MultiPartPolygon.CreateFromBitmap method.

Added: Proxying. Body.Proxy, A system to make 2 object appear to be the same. can be used for asteroids style game or a 2D version of portal.

Added: FrameCoherentSAPDetector. SAP = sweep and prune. Its good for very static enviroments. Contributed by Andrew D.Jones

Removed: SingleSweepDetector since SelectiveSweepDetector is better.

Changed: made a few changes suggested by FXcop. Including a few bug fixes.

Renamed: MultiPartPolygon to MultipartPolygon because of FXcop.

Changed: did a global Search and replace for float to Scalar.

changed: some things to fix serialization

Fixed: the false negative bugs in FrameCoherentSAPDetector.

fixed: A bug where a body's ID would not be assigned before it was added to the solver or the detector

Added: AddBodyRange, RemoveExpired, and Clear to PhysicsLogic

1.4.0.0

changed: moved the BroadPhaseDetectionOnly to Shape and made it abstract and read only.

Added: CanGetDistance property to Shape.

changed: renamed Body.StateChanged to PositionChanged and will be only raised when it is changed.

Added: a Transformation property to Body to transform the shape.

changed: refactored some collsion handling.

Added: CanGetcustomIntersection and TryGetCustomIntersection to Shape.

changed: CollsionEventArgs to have extra members to handle custom intersection methods in Shape.

changed: Distance grid to not accept Shapes you cannot GetDistance from.

removed: ICollisionInfo

added: MultiPartPolygon class.

added: PhysicsTimer class.

added: RaySegments class and support classes.

changed: replaced all instances of float with Scalar.

fixed: restitution to Work a whole lot better.

removed: Line shape since it would not work with certain features like the new raySegments Shape. And it can be represented better with a polygon.

changed: made the Body constructor to set last position so the position changed event will fire correctly the first time.

Added: the Shape.IgnoreVertexes property.

1.3.0.0

changed: inlined code in the Body.UpdateVelocity method.

changed: ApplyMatrix to use MathHelper.ClampAngle instead of its own logic.

Removed: The BiasMultiplier from the PreApply method in Arbiter.

changed: The SequentialImpulsesSolver.Arbiter to have a reference to the SequentialImpulsesSolver containing it.

changed: The SequentialImpulsesSolver.Arbiter to use the values in the SequentialImpulsesSolver instead of having the values passed to it.

Added: Reduce Method to Polygon.

renamed: BoundingBox2D to BoundingRectangle and moved it to the AdvanceMath.Geometry2D namespace.

added: TypeConverter attribuites to PhysicsState and MassInfo

removed: System.Data from reference list.

replaced: most of the foreach loops in SequentialImpulsesSolver.Solve with normal for loops

Changed: IDuplicateable to also impliment IClone

Changed: Implimented all the math from the Box2D GCD 2007.

Added: math to handle Restitution.

changed: the sweep and prunes use of nodes so that it will reuse linked list nodes.

added: a Pivot Joint class.

removed: code in the Arbiter class that was not supposed to be there.

changed: a few shape objects to utilize methods and classes in the AdvanceMath.Geometry2D namespace.

moved: some logic in Polygon into advanceMaths BoundingPolygon

renamed: Polygon.CalcArea and CalcCentroid to GetArea and GetCentroid

changed: The Solver and Detecter with a few speed improvements.

added: CreateFromBitmap to the Polygon class a BitmapHelper class that assists it.

fixed: Body.duplicate to copy the boolean values.

changed: the collisionIgnorer to not have the IsCollidable value and moved it to Body.

Added: CollisionGroupIgnorer that impliments CollisionIgnorer

removed: CanCollide(1) from Body. You should use CanCollide(2)

moved: CollisionIgnorer into Ignorers directory.

Added: another version of the PhysicsHelper.GetRelativeVelocity to be used by PivotJoint.

changed: the Sweep and Prune to be a little more optimized for particles.

changed: The shape object to make the inertia multiplier one of its constructors parameters.

Added: AngleJoint.

Added: CollisionObjectIgnorer.

changed: Sequential impulse solver to clear forces after velocity is updated instead of after update position.

changed: Sweep and Prune to be faster (by alot), by replacing the wrappers dictionary with a List and using BinarySearch for the second sweep.

changed: IntersectionInfo into a struct.

changed: TryGetIntersection to reflect the change of IntersectionInfo.

changed: the Arbiter to minimize the number of contact creations. this was to massivly reduce the number of creation and deletion of objects. IE less memory allocation.

added: new method for throwing errors to classes that are added to the engine.

changed: Joints.bodies to be the ReadOnlycollection.

Fixed: A bug in the Reduce methods that would evaluate the last edge incorrectly.

Changed: the Polygon.Reduce method to evaluate vertex removal based on the how it would change the area instead of on the difference in angle.

Changed: Sweep and Prune to sort with a IComparer instead of a delegate. (Speed boost)

Changed: Sweep and Prune to be faster by adding a custom IntList class to store colliders.

Added: a IsInverted Property to the CollisionIgnorer class.

changed: made the code more aware of divide by zero errors.

Added: Body1 and Body2 properties to IContact.

1.2.0.0

Changed: made the Joints Implement an interface specific to the solver.

Changed: Implemented the Solver from Super Split Box2D. This changed the joints quite a bit but basically left everything else alone.

Changed: Made it so a joint will be removed when one of the bodies it is attached to is removed.

Added: JointCount property to Body.

Changed: Cleaned up some code in the Sequential Impulse Solver.

Added: IContact and ICollisionInfo for use with CollisionEventArgs

Changed: the solvers and all classes involved to added contact info to the collided event.

Moved: BroadPhasedCollisionDetector into the Detectors namespace.

Moved: CollsionSolver into the Solvers namespace.

Changed: Made the Lifespan class impliment IDuplicateable

Added: ImplicitCastCollection to be used by the Solver to convert Contacts to IContact without making a copy of the contacts. Changed: CollisionEventArgs and ICollisionInfo to return a ReadOnlyCollection of Contacts not an array.

Added: CollectionEventArgs class.

Added: events to PhysicsEngine for when objects are added to or removed from it. Changed: the logic of removing and adding so they will “short circuit” so to not add empty lists.

Removed: the PhysicsConstants class and moved its contents to PhysicsHelper.

Added: a IsPending property to IPhysicsEntity, changed: Made it so it will throw an error in the add method if a object is added more then once.

Added: A Transform Method to ALVector2D. Changed: Made the Body.ApplyMatrix transform the Position ALVector2D,then recreate the matrix to apply to the shape.

Fixed: MakeCentroidOrigin.

Added: BoundingBox2DShape.

Changed: Made the distance grid use Jagged arrays.

Renamed: SITag to SequentialImpulsesTag

Moved: the SequentialImpulsesTag outside of the SequentialImpulsesSolver

Removed: SolverVelocity from PhysicsState.

Added: biasImpulse to SequentialImpulsesTag.

Added: tag1 and tag2 to HidgeJoint.

Added: Pending Event to IPhysicsEntity

Fixed: a bug that trying to add an item to the engine in a AddRange method that has already been added would corrupt the state.

Fixed: a few problems that made the PhysicsEngine class not threadsafe.

Added: IsAdded property to IPhysicsEntity. changed: made it so the bodies effected by a joint must be added to the engine before the joint.

Changed: made it so it throws ArgumentNullExceptions when you pass a null object to the Add or AddRange methods in PhysicsEngine.

Added: IJoint interface.

Added: RemovedEventArgs.

1.1.0.0

changed: made it so the line's thickness is actaully its thickness so the lines are no longer twice as thick as the parameter passed.

removed: the add methods to collision detector and solver since they will only use addRange now.

changed: how objects are added now they are always added to a pending queue first then truly added to the engine on a call to update.

Changed: made it so 2 bodies with infinite mass cannot collide.

changed: made the StateChanged event get generated on calls to apply matrix or in PhysicsEngine.Update. added: The event Body.ShapedChanged.

renamed: the event Body.Collision to Collided.

renamed: the event Body.NewState to StateChanged

changed: the Matrix2D struct to have the three versions of each operator.

changed: the Sequential Impulese Solver to be in the Solvers Namespace and all classes used by it to be in it.

changed: it so the angular position will be bounded between -2PI and 2PI with every parameterless call to apply matrix.

fixed: a bug that really slowed the UpdatePosition if the angular position's absolute value was very large.

added: BroadPhaseDetectionOnly property to Body

fixed: a bug with the wrapped collection that could allow access to a non locked Enumerator.

Changed: all the collection wrappers names from wrapper to Wrapped becuase of fxCop.

changed: a few properties and names FxCop complained about.

added: allot of the parameter checking FxCop complained about.

fixed: In theory a bug when a Body is set to Expired in the middle of a call to RemoveExpired and when a object is re-added in its removed event. causing multiple nodes and wrappers for the Body in Sweep and prune.(this bug was/is hard to generate)

Added: the newer versions of The Sequential Impuleses Solver that impliments the newest Algorithms from Box2D

changed: the math in the joints and arbiters to look better using the PhysicsHelper.

Added: a static PhysicsHelper class and methods for impulse, relative velocity calcualtions and other physics related math.

Added: SolversTag and DetectorsTag properties to Body

Added: A SolversVelocity value to PhysicsState.(this is the bias velocity for the newer solver)

fixed: the distance grid so that it will no longer throw a index out of bounds exception. Changed: The Sweep and prune to store LinkList nodes in the wrapper instead of searching for them when its time to remove them.

changed: The Linked list in Sweep and prune to store Bodies instead of Nodes.

Removed: junk code from the Polygon.CreateRectangle method.

Changed: the SequentialImpulsesSolver.Solve method to copy the Arbiters into an array before running apply and preApply

1.0.0.0

Completely new, See release notes for explanation.

AdvanceMath

2.0.0.0

Added: the struct Matrix3x2 and changes to other classes to make it work.

Fixed: Line's GetDistance method

Added: Line.Transform

Fixed: BoundingPolygon.Intersects (thanks DW)

1.7.0.0

added: "#if CompactFramework ... #endif" statements for all non Compact framework compatible code.

removed: some unneeded code that was not supported by compact framework.

changed: now compiles on compact framework.

Fixed: a bug in BoundingPolygon.GetDistance. It may be slower as a result.

Changed: LineSegment.GetDistance to be a little more optimized.

Fixed: a bug with AdvanceMath.Design.AdvPropertyDescriptor.IsReadOnly.

Fixed: a few problems pointed out by AeHNC in AdvanceMath.Design

Removed: useless using statements

Added: a few Faux Attributes for Compact Framework

Changed: Redid how I did the compatibility with the Compact Framework to drastically reduce the number of #if statements.

changed: Vector2D.GetAngle to use a more accepted approuch.

Changed: BoundingPolygon.GetDistance to potentially be faster

Changed: renamed MathHelper constants to be closer to XNA

1.6.1.0

fixed: A really retarded bug by me in the MathHelper.TrySolveQuadratic.

1.6.0.0

Added: a new define: UNSAFE

Changed: made it so all code that has or uses unsafe code blocks is inside "#if UNSAFE #endif" statements.

Renamed: RadianMin to ClampAngle

Changed: ClampAngle's logic to not use loops.

renamed: GetAngleDifference to AngleSubtract.

Changed: AngleSubtract's logic to be better.

renamed: RadainsToDegrees to ToDegrees

renamed: DegreesToRadains to ToRadains

changed: Vector2D angle methods/properties to use pass by reference versions.

added: Hermite and catmullRom to all the vector classes using the code in Vector2D.

added: Max and Min to all vector classes.

Removed: FromArray methods from all the Vector Classes since they were redundent.

removed: some unneeded wrapper methods from MathHelper.

Added: Geometry2D namespace and contained classes.(BIG CHANGE)

removed: System.Data from reference list.

added: WrapClamp to MathHelper.

changed: optimized a few methods.

changed: all constants to not be float by default. allow sthe compiler to figure out if they are double or float.

changed: Matri3x3.FromRotationX to be public.

changed: the normalize methods on the vetor classes to be inlined.

fixed: MathHelper.HALF_THREE_PI to be the correct value.

fixed: ClampAngle and WrapClamp in MathHelper

added: distance and distanceSq to all Vector classes.

changed: the contains methods to be closer to XNAs model.

fixed: an elusive bug with the BoundingPolygon.GetDistance method and it should be faster (in theory).

changed: LineSegment.Getdistance so it will no longer return a negative value.

changed: the order of parameters to the BoundingRectagle's constructors.

removed: origin from Vector2D use Zero instead.

added: Point2D

added: IntersectionType

changed: made the code more aware of divide by zero errors.

Added: the Clamped class.

1.5.0.0

Added: Lerp to the matrix structs.

changed: only a few things fxCop pointed out.

added: a few of the parameter checking FxCop complained about.

fixed: a potetial bug with the pass by reference version of Vector2D.ZCross, GetRightHandNormal and GetLeftHandNormal methods

change: some method names to be closer to XNAs math classes.

added: methods for adding and subtracting matrices and vectors of different size.

1.4.0.0

Added pass by reference versions of most methods.

Removed all copyrighted code for re-licensing as MIT except for the Quaternion.

Re-licensed as MIT.


Sign in to add a comment
Hosted by Google Code