Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- GeomPoly:
- forward_iterator renamed forwardIterator
- backwards_iterator renamed backwardsIterator
- skip_forward renamed skipForward
- skip_backwards renamed skipBackwards
- simple_decomposition renamed simpleDecomposition
- convex_decomposition renamed convexDecomposition
- triangular_decomposition renamed triangularDecomposition
- monotone_decomposition renamed monotoneDecomposition
- constructor, copy methods changed so that the current head of GeomPoly
- will point to the first vertex given.
- AngleJoint:
- slack property removed, replaced with isSlack method
- Fix for incorrect clamping of impulses in certain scenarios.
- DistanceJoint
- slack property removed, replaced with isSlack method
- Fix for incorrect clamping of impulses in certain scenarios.
- LineJoint
- Fix for incorrect clamping of impulses in certain scenarios.
- CbType:
- Fixed bug so that constraints list correctly only tracks Constraints
- that have been added to a Space.
- Vec2:
- fromPoint now included for nme target, not just flash
- Added Vec2::normalise and Vec2::unit methods
- AABB:
- fromRect now included for nme target, not just flash
- Mat23:
- set, setAs, reset methods now returns reference to 'this' instead of nothing.
- NapeList's:
- removed debug errors when modifying a list whilst iterating. Not because doing
- so is safe (or ever has been), but because I realised that if iteration over a
- list is terminated early then the iterator will not be removed from the tracker
- and spurious errors were possible as well as potential GC issues.
- foreach and filter method now returns reference to 'this' instead of nothing
- UserConstraint:
- __destroy method to be overriden, renamed as __broken. (And fixed bug where it wouldn't
- have ever even been called :P)
- methods invalidate, bindVec2 and registerBody prefixed with similar __ prefixes to denote
- their private nature to sub-type of user constraint.
- Arbiter:
- remove arbiter id, remove active property.
- rename restitution to elasticity to better match Material names.
- Make physics properties mutable, once set they will persist until the arbiter is destroyed
- (The shapes seperate).
- Remove mutability of contacts. This does not play well with continuous collisions (and
- to be fair, has very little use that I can think of). The most important parts are
- still persent, changing friction/elasticity values specifically and ignoring interactions.
- Contact:
- remove active property.
- remove restitution, and rolling friction property (duplicated information available from
- arbiter).
- InteractionGroup:
- remove id property.
- Space:
- remove id property.
- Modified the clear() method so that things like gravity, and globalLinearDrag are left
- untouched instead of being set to default.
- Shape:
- Modify transformation methods to return reference to 'this' Shape.
- Removed static method copy in favour of member method.
- This method also has a bug fix for the recent changes in userData,
- instead of copying the userData object, a new userData object is created
- and has all it's fields instantiated to the same fields as that of the present
- userData.
- Circle:
- Removed static method copy in favour of member method on Shape.
- Polygon:
- Removed static method copy in favour of member method on Shape.
- ValidationResult:
- Moved this class into its own file.
- FluidProperties:
- Fix bug in copy for changes in userData so that field is copied
- properly alla Shape.
- Fix bug in copy so that gravity property is also copied.
- Debug:
- Removed drawConstraintSprings/drawConstraintErrors properties as
- they are no longer used.
- Renamed bgColor bgColour to be consistent with british spelling used
- everywhere else.
- Body:
- Removed clear method, can use body.shapes.clear() to remove all shapes.
- Removed graphic and related properties.
- Methods like normalImpulse now return a Vec3 instead of a Vec2 so angular
- information is no longer discarded. Necessarigly can no longer create a weak
- Vec2 as Vec3 cannot presently be defined weak.
- Changed behaviour of force/torque so that they are persistant values (not reset
- to 0 after step()). Removed apply#Force methods.
- Change transform method names (and reduced number of such methods). Methods are now
- localPointToWorld, localVectorToWorld, worldPointToLocal, worldVectorToLocal.
- I feel these names are more representative of what the method does.
- Get rid of applyLocalImpulse and applyRelativeImpulse, renaming applyWorldImpulse
- into just applyImpulse. Consistency is important, and these methods were anything but
- applyImpulse takes both impulse, and position in world coordinates.
- Permit Bodys containing NO shapes whatsoever to be simulated in a space. (Restriction that dynamic body must have non-zero mass/inertia). This can be used to add new bodies (like space.world) for use in constraints, but that are not only at (0,0) with no velocity etc. A body with no shapes will simply be integrated through time.
- Add setVelocityFromTarget to aid in animation of kinematic bodies:
- body.setVelocityFromTarget(targetPosition, targetRotation, deltaTime);
- Add integrate() to integrate body position/rotation by it's velocities, may be
- useful in conjunction with new convexCast method on Space.
- Material:
- Material density is now permitted to be 0. Restriction is that a dynamic body must have non-zero mass/inertia at the end of it all.
- Compound:
- Modified COM to get Vec2 from object pool, and permit weakly allocated return.
- nape-hacks::ForcedSleep
- Added inline docs, and sleepCompound method.
- nape-symbolic::SymbolicConstraint
- Added inline docs, and effected changes required for naming changes on UserConstraint API.
- Moved private data to a typical Nape inner object, with non-public API's moved to
- the typical nape zpp_inner package.
- Geom:
- Modified distance method to return useful result in case that Shapes are
- interseting, returning the penetration distance and witness points whose difference
- forms the minimal translational vector to seperate the objects.
- Added distanceBody method which performs an optimised search between two Bodies
- returning closest points (/minimal translation vector points if intersecting).
- Added intersectsBody to generalise over intersects method.
- Elastic contacts:
- Method of elastic contacts reconfigured. You will likely need to play around with
- Mateiral elasticities as behaviour will change as a result.
- Continuous collision detection:
- A form of continuous collision detection has been added. This is continuous detection
- and not continuous physics. Objects are frozen at their time of impact and will have
- no further time simulated for them until the following step.
- In practice this is perfectly acceptible, where it breaks down and what you should not
- do is have groups of bullet enabled dynamic bodies interacting together as you will
- get visual stalling.
- Continuous collisions always occur with static and kinematic objects.
- Tunnelling should be rare, less so with kinematic objects as no continuos collisions
- occur during positional error resolvement which means that if an object is forced to
- move a large distance due to overlapping of objects it may tunnel (This is more often
- the case with a fast moving kinematic as the continuos collision is resolved in this
- case primarily with positional error resolvement, but kinematics normally cause
- tunneling though 'forcing' objects into one another anyways).
- Continous 'colisions' also work for sensor interactions, so you can receive a pre event
- or begin event due to a body flying all the way through a sensor in a single update.
- END events will be delayed until the following step however in such a case.
- To the Space object, added methods convexCast and convexMultiCast as 'extensions'
- of rayCast/rayMultiCast using a Shape and body integration for the cast instead of
- a linear ray.
- TODO:
- Have Shape angDrag mutable?
- Consider once more moving geometric utilities to a module? (unlikely)
- Fix FluidArbiter impulse queries. I fixed them not being reversed based on input body, but with a body supplied it does not compute 'effective' impulse.
- Add isSensor property to Shape's and modify order of interaction types so that Sensor comes first before Fluid then
- Collision. This is a big breaking change but definately should be made.
- Add sweeps to Geom.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement