aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs (unfollow)
Commit message (Collapse)AuthorFilesLines
2013-01-21BulletSim: allow changing position and rotation of a child of a linksetRobert Adams1-0/+10
without rebuilding the whole compound shape. Should make vehicles move smoother.
2013-01-18BulletSim: reduce jitter in avatar velocity when walking or flying.Robert Adams1-1/+1
OpenSimulator is VERY sensitive to changes in avatar velocity and will send an avatar update message when velocity changes more than 0.001m/s. This significantly reduces the number of avatar update messages by smoothing the avatar velocity returned by Bullet.
2013-01-17BulletSim: Add one function that all actors who act on the physicalRobert Adams1-2/+8
can use to know if the object is currently active. Code cleaning including use of Util.ClampV function.
2013-01-14BulletSim: fix not moving physical objects below terrain to over terrain.Robert Adams1-10/+19
Add locking on register prestep action list preventing potential race conditions. Little comment and formatting changes.
2013-01-11BulletSim: move center of gravity of linkset to its geometric center.Robert Adams1-0/+10
Necessitated allowing simulator and physical position of a body to get out of sync since Bullet assumes that <0,0,0> is the center of mass. Update DLLs and SOs for the UpdateChildTransform so positions of individual prim in a linkset can be implemented.
2013-01-11BulletSim: Add IsSelected attribute to physical objects. Have vehicles check ↵Robert Adams1-0/+1
to see if physical before trying to step. Replace vehicle gravity application. Previously relying on Bullet to apply gravity but since vehicles over-ride the velocity calculation, gravity never had a chance to accelerate the body down. Added AddForceImpulse as well as AddForce for those who need to apply immediate velocity updates. Use the impulse to apply the linear motion.
2013-01-07BulletSim: add function to push avatar up when hitting stairs.Robert Adams1-0/+27
It looks like BulletSim and ODE rely on penetration correction to cause the avatar to move up and thus allowing walking up stairs. Object penetration was minimized for walking and flying (so one doesn't go through walls) and this stopped stairs from working. This commit introduces avatar movement code to check for collisions at the feet while walking and attempts to raise the avatar for the steps. Not yet perfect but movement is better.
2013-01-04BulletSim: fix problem where pre-step actions would not replacedRobert Adams1-0/+4
by new registrations thus causing multiple instances of an action.
2012-12-31BulletSim: another round of conversion: dynamics world and collision object ↵Robert Adams1-2/+2
functions.
2012-12-31BulletSim: change physical data structures to classes. Add defaultRobert Adams1-0/+5
instantiations for PhysBody and PhysShape when BSPhysObject is created to account for them being classes and not structures. Update TODO list.
2012-12-27BulletSim: move logic for IsColliding, CollidingGround and CollidingObj from ↵Robert Adams1-1/+36
individual sub-classes and up to parent BSPhysObject class.
2012-12-24BulletSim: Fix single physical prim reporting its mass as zero.Robert Adams1-1/+2
Properly return root mass as mass of just the root prim rather than the mass of the linkset. SOG has the logic to add the masses together to get the linkset mass. Update TODO list.
2012-12-22BulletSim: modify avatar motor code to make falling movement better. Clean ↵Robert Adams1-1/+1
up some usages. Disable motor when done.
2012-12-21BulletSim: Fix llApplyImpulse so it works after the first impulse. The ↵Robert Adams1-0/+5
problem was Bullet deactivating the object between the pushes (when, as far as the physics engine is concerned, it isn't moving).
2012-12-21BulletSim: add BSPhysObject code to manage registrations of preStep events. ↵Robert Adams1-3/+53
Use same to implement setForce and setTorque so the values are restored at the beginning of each step (since Bullet zeros forces applied last step). Simplify implementation of AddForce and AddTorque by relying on the addition of forces in Bullet.
2012-12-16BulletSim: add parameter to UpdateProperties call into the linkset so ↵Robert Adams1-3/+6
changes from the physics engine can be differentiated from changes made by the user. This eliminates a linkset rebuild loop. Also add logic to not rebuild or freak out when the object/linkset crosses a terrain boundry.
2012-12-12BulletSim: fix problem of avatar's floating off the ground after unsitting. ↵Robert Adams1-1/+1
Reworked size/scale logic so physical scale is kept in Bullet and physObject scale is the preferred size -- usually same as size but avatars are computed differently.
2012-12-12BulletSim: do not return the current velocity for targetVelocity.Robert Adams1-0/+11
2012-12-10BulletSim: Fix crash on the destruction of physical linksets.Robert Adams1-1/+4
While fixing the above, add methods to physical body and shape pointer wrapper so routines won't have to know that IntPtr.Zero means no physical instance. Fix problem with physical linksets failing after a few sits and unsits by properly restoring child prom positions for compound linksets after multiple selection and deselections.
2012-12-09BulletSim: adjust friction and restitution based on material type.Robert Adams1-0/+10
2012-11-22Rename BulletSim's PhysicsShapeType to BSPhysicsShapeType because itMelanie1-2/+2
conflicts with PhysicsShape type defined in later libOMV
2012-11-21BulletSim: uplevel PhysicsShapeType out of ShapeData structure (since it is ↵Robert Adams1-2/+2
getting simplified out of existance someday) and update all the references to that enum.
2012-11-18BulletSim: Use base class constructors for initialization of BSShape and ↵Robert Adams1-1/+4
other classes.
2012-11-15Revert "Merge master into teravuswork", it should have been avination, not ↵teravus1-248/+0
master. This reverts commit dfac269032300872c4d0dc507f4f9062d102b0f4, reversing changes made to 619c39e5144f15aca129d6d999bcc5c34133ee64.
2012-11-06BulletSim: Add ZeroAngularMotion method to physical objects. Add inTaint ↵Robert Adams1-4/+16
flag to ZeroMotion method. Update the references to those functions.
2012-11-03BulletSim: debugging of compound shape implementation of linksets.Robert Adams1-1/+3
Add compound shape creation and freeing in shape manager. Add optional taint-time execution method and update code to use it. Add API2 linkage for more compound shape methods (get num, get/remove by index, ...) Modify perferred shape return so linkset children can have differet shapes than root. Add Position and Orientation calls to linksets so children can be moved around by the linkset by its own calculation. Allows for very general linkset implementations.
2012-11-03BulletSim: Add RawPosition and RawOrientation to BSPhysObject and rename ↵Robert Adams1-1/+3
MassRaw to RawMass. Fix BSShapeCollection to use Raw* for creating the body to eliminate exception from referencing the physical body before it has been created.
2012-11-03BulletSim: Remove use of shapeData in ShapeCollection and rely on the ↵Robert Adams1-0/+4
available BSPhysObject varaiables. Fix line endings in BSLinksetCompound.
2012-11-03BulletSim: rename BSBody and BSShape to PhysBody and PhysShape. Add skeleton ↵Robert Adams1-4/+4
of BSLinksetCompound.
2012-11-03BulletSim: centralize mass/inertia computation with ↵Robert Adams1-0/+2
UpdatePhysicalMassProperties() function. Didn't add setMassRaw because assignment with side effect is dirty.
2012-10-22BulletSim: remove trailing spaces to make git happy.Robert Adams1-3/+3
2012-10-22BulletSim: Create LinkSet abstract class and sparate constraint based ↵Robert Adams1-1/+1
linksets into own subclass. Will eventually add manual movement linkset subclass.
2012-10-19BulletSim: add asset fetching so BulletSim works with new physics asset ↵Robert Adams1-0/+10
handling. Refactor some names to make them available for the asset tracking and fetching.
2012-10-19BulletSim: reorder avatar collision checking to eliminate double collision_end.Robert Adams1-1/+3
Various tweekings to avatar shape/mass/inertia/etc. Remove change from avatar radius to diameter. But still the avatar sinks. Collision_end now happens immediately rather than at the next subscription time.
2012-10-19BulletSim: change nonimal physics frame rate to 55 to give same numbers as ODE.Robert Adams1-9/+5
Change character scaling to represent size of capsule (diameter rather than radius) Modify create capsule call to pass radius and height. Eliminate errors when calculating shape inertia (should have some type checking).
2012-10-19BulletSim: Update BSCharacter to use API2 interface.Robert Adams1-0/+12
Add capsule shape to BSShapeCollection(). Remember last updated values so inter frame diffs can be computed. Parameterize avatarStandingFriction and reduce to 10 from 999. The latter high value made avatars very hard to push. Set CCD parameters for prims and characters of specified.
2012-10-11BulletSim: Add Force* operations to objects to allow direct push to engine.Robert Adams1-0/+4
Update BSDynamics to use same (don't want to delay updates til next taint-time. Suppress queuing a taint update for position and orientation calls if value does not change. Move Bullet timing statistics call from C# back to C++ code. Throttle taints per simulation step and add parameter to set. By default, don't create hulls for physical objects. Add a parameter to turn on and off.
2012-10-11BulletSim: Fix crash when linking large physical linksets.Robert Adams1-1/+2
Properly remove and restore linkage constraints when upgrading a prim's mesh to a hull. Lots more debug logging. Definitions and use of Bullet structure dumping. Centralize detail logging so a Flush() can be added for debugging.
2012-10-02BulletSim: Add ForcePosition and ForceOrientation to BSPhysObject and to its ↵Robert Adams1-0/+4
children of BSPrim and BSCharacter.
2012-09-27BulletSim: remove the trailing spaces from lines to make git happierRobert Adams1-1/+1
2012-09-27BulletSim: Fix linkset crash. Caused by the different body and shapeRobert Adams1-2/+6
pointers at runtime and at taint-time. Now passes the body into the taint. Vehicles zero inertia when active to eliminate Bullet's contribution to vehicle motion.
2012-09-27BulletSim: Terrain sets proper collision flags on creation.Robert Adams1-5/+5
Static objects are set to ISLAND_SLEEPING rather than DISABLE_SIMULATION. Might reconsider this and, alternatively, have dynamic objects force activation. Clean up use of DetailLog().
2012-09-27BulletSim: btGhostObjects working to make 'volume detect' work.Robert Adams1-2/+6
Rearrangement and cleanup of shape collection code. Much more readable. Enabling and use of collision filters and masks. Addition of ID to body creation BulletSimAPI calls so always set in shape for collision reporting. Change default of ShouldSplitSimulationIslands and ShouldRandomizeSolverOrder from 'false' to 'true'. When 'false', this suppresses NO_CONTACT_RESPONSE which makes volume detect fail.
2012-09-27BulletSim: renamed members of BulletShape, BulletSim and BulletBodyRobert Adams1-7/+9
so the members case is consistant. Caused modifications everywhere. New logic in BSShapeCollection to track use and sharing of shapes. I just reslized, though, that shapes cannot be shared because the shape's UserPointer is the localID of the prim and is required for tracking collisions. More changes coming. Added DuplicateCollisionShape2() to API and changed BuildNativeShape2 to take a ShapeData structure so don't have to pass so many parameters. This matches the latest version of BulletSim.dll. Additions and removal of DetailLog() statements for debugging.
2012-09-27BulletSim: complete code for managed code shape and body tracking. Not debugged.Robert Adams1-12/+10
Eliminate some null exceptions created adding the above code. Add and remove some detailed logging statements.
2012-09-27BulletSim: Convert BSCharacter to use common BSPhysObject code and variables.Robert Adams1-8/+21
Fix avatar height calculation to properly account for the capsule ends. Rearrange some locking in TerrainManager to eliminate possible race conditions. Move DetailLog() definition into common BSPhysObject class. Some variable renaming to make usage clearer (refactor.rename makes this so easy).
2012-09-27BulletSim: move a bunch of common logic out of BSPrim and BSCharacterRobert Adams1-7/+131
and into the parent class BSPhysObject. Rework collision logic to enable extra collision after done colliding. Rename 'Scene' to 'PhysicsScene' to differentiate it from the simulator 'Scene'.
2012-09-15BulletSim: Remove calculation and passing of unused collied object type.Robert Adams1-1/+1
Fix collision code to properly sense mega-region children regions as terrain. When setting an object physical, reset all the physical properties (friction, ...).
2012-09-15BulletSim: Way too many changes in one commit.Robert Adams1-1/+1
Many changes to BSDynamic for readability and commentary. Linkset hacking for vehicles: don't over mass the root prim. Add parameter for link constraint solver iterations. Correct uses of timestep in timescale calculations for vehicles. Reorganize code/logic for making objects static and dynamic for readability and use of API2. Changed most calls in BSPrim to use API2 calls (the new way). Avatars do not generate default Bullet collision events but do call up to the simulator for every avatar. Reduces overhead. Objects added to collision list only if they are processing collisions. Reduces overhead especially for large numbers of avatars. Generalize call for water height to GetWaterHeightAtXYZ(). Catch and correct exception getting terrain height when out of bounds. Correct race condition in Terrain Manager where creation wasn't at taint-time. Add API calls for constructing compound shapes. Move NeedsMeshing() logic into object class. Reorganize logic for object meshing to reduce rebuilding of meshs/hulls.
2012-09-07BulletSim: Add Bullet body and shape to BSPhysObject and renameRobert Adams1-1/+5
'Body' to 'BSBody' for disambiguation when reading code. Complete the API2 interface so nearly all methods on bullet classes are available to the managed code. The efficient single call simulation step is kept in place while all other creation/destruction/parameterization can be done in the managed code.