diff options
author | Robert Adams | 2013-02-03 16:08:09 -0800 |
---|---|---|
committer | Robert Adams | 2013-02-05 16:56:23 -0800 |
commit | ad438ee59fce1b262135ef0f7cd1213f3a79df50 (patch) | |
tree | 96871ce99daa85e8142c8ab3d6ec7e8ebeaa24ea /OpenSim/Region/Physics/BulletSPlugin/BSParam.cs | |
parent | BulletSim: correct angular vertical attraction to properly correct an upside ... (diff) | |
download | opensim-SC_OLD-ad438ee59fce1b262135ef0f7cd1213f3a79df50.zip opensim-SC_OLD-ad438ee59fce1b262135ef0f7cd1213f3a79df50.tar.gz opensim-SC_OLD-ad438ee59fce1b262135ef0f7cd1213f3a79df50.tar.bz2 opensim-SC_OLD-ad438ee59fce1b262135ef0f7cd1213f3a79df50.tar.xz |
BulletSim: rework some parameter setting implementation moving functionality that was in BSScene to BSParam. Remove unused parameters that were passed to the unmanaged code. Update DLLs and SOs for the new param block.
Diffstat (limited to 'OpenSim/Region/Physics/BulletSPlugin/BSParam.cs')
-rwxr-xr-x | OpenSim/Region/Physics/BulletSPlugin/BSParam.cs | 131 |
1 files changed, 77 insertions, 54 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs b/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs index 8c098b2..fbef7e7 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs | |||
@@ -68,6 +68,24 @@ public static class BSParam | |||
68 | public static float TerrainRestitution { get; private set; } | 68 | public static float TerrainRestitution { get; private set; } |
69 | public static float TerrainCollisionMargin { get; private set; } | 69 | public static float TerrainCollisionMargin { get; private set; } |
70 | 70 | ||
71 | public static float DefaultFriction; | ||
72 | public static float DefaultDensity; | ||
73 | public static float DefaultRestitution; | ||
74 | public static float CollisionMargin; | ||
75 | public static float Gravity; | ||
76 | |||
77 | // Physics Engine operation | ||
78 | public static float MaxPersistantManifoldPoolSize; | ||
79 | public static float MaxCollisionAlgorithmPoolSize; | ||
80 | public static float ShouldDisableContactPoolDynamicAllocation; | ||
81 | public static float ShouldForceUpdateAllAabbs; | ||
82 | public static float ShouldRandomizeSolverOrder; | ||
83 | public static float ShouldSplitSimulationIslands; | ||
84 | public static float ShouldEnableFrictionCaching; | ||
85 | public static float NumberOfSolverIterations; | ||
86 | public static bool UseSingleSidedMeshes { get { return UseSingleSidedMeshesF != ConfigurationParameters.numericFalse; } } | ||
87 | public static float UseSingleSidedMeshesF; | ||
88 | |||
71 | // Avatar parameters | 89 | // Avatar parameters |
72 | public static float AvatarFriction { get; private set; } | 90 | public static float AvatarFriction { get; private set; } |
73 | public static float AvatarStandingFriction { get; private set; } | 91 | public static float AvatarStandingFriction { get; private set; } |
@@ -287,29 +305,29 @@ public static class BSParam | |||
287 | 305 | ||
288 | new ParameterDefn("DefaultFriction", "Friction factor used on new objects", | 306 | new ParameterDefn("DefaultFriction", "Friction factor used on new objects", |
289 | 0.2f, | 307 | 0.2f, |
290 | (s,cf,p,v) => { s.UnmanagedParams[0].defaultFriction = cf.GetFloat(p, v); }, | 308 | (s,cf,p,v) => { DefaultFriction = cf.GetFloat(p, v); }, |
291 | (s) => { return s.UnmanagedParams[0].defaultFriction; }, | 309 | (s) => { return DefaultFriction; }, |
292 | (s,p,l,v) => { s.UnmanagedParams[0].defaultFriction = v; } ), | 310 | (s,p,l,v) => { DefaultFriction = v; s.UnmanagedParams[0].defaultFriction = v; } ), |
293 | new ParameterDefn("DefaultDensity", "Density for new objects" , | 311 | new ParameterDefn("DefaultDensity", "Density for new objects" , |
294 | 10.000006836f, // Aluminum g/cm3 | 312 | 10.000006836f, // Aluminum g/cm3 |
295 | (s,cf,p,v) => { s.UnmanagedParams[0].defaultDensity = cf.GetFloat(p, v); }, | 313 | (s,cf,p,v) => { DefaultDensity = cf.GetFloat(p, v); }, |
296 | (s) => { return s.UnmanagedParams[0].defaultDensity; }, | 314 | (s) => { return DefaultDensity; }, |
297 | (s,p,l,v) => { s.UnmanagedParams[0].defaultDensity = v; } ), | 315 | (s,p,l,v) => { DefaultDensity = v; s.UnmanagedParams[0].defaultDensity = v; } ), |
298 | new ParameterDefn("DefaultRestitution", "Bouncyness of an object" , | 316 | new ParameterDefn("DefaultRestitution", "Bouncyness of an object" , |
299 | 0f, | 317 | 0f, |
300 | (s,cf,p,v) => { s.UnmanagedParams[0].defaultRestitution = cf.GetFloat(p, v); }, | 318 | (s,cf,p,v) => { DefaultRestitution = cf.GetFloat(p, v); }, |
301 | (s) => { return s.UnmanagedParams[0].defaultRestitution; }, | 319 | (s) => { return DefaultRestitution; }, |
302 | (s,p,l,v) => { s.UnmanagedParams[0].defaultRestitution = v; } ), | 320 | (s,p,l,v) => { DefaultRestitution = v; s.UnmanagedParams[0].defaultRestitution = v; } ), |
303 | new ParameterDefn("CollisionMargin", "Margin around objects before collisions are calculated (must be zero!)", | 321 | new ParameterDefn("CollisionMargin", "Margin around objects before collisions are calculated (must be zero!)", |
304 | 0.04f, | 322 | 0.04f, |
305 | (s,cf,p,v) => { s.UnmanagedParams[0].collisionMargin = cf.GetFloat(p, v); }, | 323 | (s,cf,p,v) => { CollisionMargin = cf.GetFloat(p, v); }, |
306 | (s) => { return s.UnmanagedParams[0].collisionMargin; }, | 324 | (s) => { return CollisionMargin; }, |
307 | (s,p,l,v) => { s.UnmanagedParams[0].collisionMargin = v; } ), | 325 | (s,p,l,v) => { CollisionMargin = v; s.UnmanagedParams[0].collisionMargin = v; } ), |
308 | new ParameterDefn("Gravity", "Vertical force of gravity (negative means down)", | 326 | new ParameterDefn("Gravity", "Vertical force of gravity (negative means down)", |
309 | -9.80665f, | 327 | -9.80665f, |
310 | (s,cf,p,v) => { s.UnmanagedParams[0].gravity = cf.GetFloat(p, v); }, | 328 | (s,cf,p,v) => { Gravity = cf.GetFloat(p, v); }, |
311 | (s) => { return s.UnmanagedParams[0].gravity; }, | 329 | (s) => { return Gravity; }, |
312 | (s,p,l,v) => { s.UpdateParameterObject((x)=>{s.UnmanagedParams[0].gravity=x;}, p, PhysParameterEntry.APPLY_TO_NONE, v); }, | 330 | (s,p,l,v) => { Gravity = v; s.UnmanagedParams[0].gravity = v; }, |
313 | (s,o,v) => { s.PE.SetGravity(o.PhysBody, new Vector3(0f,0f,v)); } ), | 331 | (s,o,v) => { s.PE.SetGravity(o.PhysBody, new Vector3(0f,0f,v)); } ), |
314 | 332 | ||
315 | 333 | ||
@@ -317,49 +335,49 @@ public static class BSParam | |||
317 | 0f, | 335 | 0f, |
318 | (s,cf,p,v) => { LinearDamping = cf.GetFloat(p, v); }, | 336 | (s,cf,p,v) => { LinearDamping = cf.GetFloat(p, v); }, |
319 | (s) => { return LinearDamping; }, | 337 | (s) => { return LinearDamping; }, |
320 | (s,p,l,v) => { s.UpdateParameterObject((x)=>{LinearDamping=x;}, p, l, v); }, | 338 | (s,p,l,v) => { LinearDamping = v; }, |
321 | (s,o,v) => { s.PE.SetDamping(o.PhysBody, v, AngularDamping); } ), | 339 | (s,o,v) => { s.PE.SetDamping(o.PhysBody, v, AngularDamping); } ), |
322 | new ParameterDefn("AngularDamping", "Factor to damp angular movement per second (0.0 - 1.0)", | 340 | new ParameterDefn("AngularDamping", "Factor to damp angular movement per second (0.0 - 1.0)", |
323 | 0f, | 341 | 0f, |
324 | (s,cf,p,v) => { AngularDamping = cf.GetFloat(p, v); }, | 342 | (s,cf,p,v) => { AngularDamping = cf.GetFloat(p, v); }, |
325 | (s) => { return AngularDamping; }, | 343 | (s) => { return AngularDamping; }, |
326 | (s,p,l,v) => { s.UpdateParameterObject((x)=>{AngularDamping=x;}, p, l, v); }, | 344 | (s,p,l,v) => { AngularDamping = v; }, |
327 | (s,o,v) => { s.PE.SetDamping(o.PhysBody, LinearDamping, v); } ), | 345 | (s,o,v) => { s.PE.SetDamping(o.PhysBody, LinearDamping, v); } ), |
328 | new ParameterDefn("DeactivationTime", "Seconds before considering an object potentially static", | 346 | new ParameterDefn("DeactivationTime", "Seconds before considering an object potentially static", |
329 | 0.2f, | 347 | 0.2f, |
330 | (s,cf,p,v) => { DeactivationTime = cf.GetFloat(p, v); }, | 348 | (s,cf,p,v) => { DeactivationTime = cf.GetFloat(p, v); }, |
331 | (s) => { return DeactivationTime; }, | 349 | (s) => { return DeactivationTime; }, |
332 | (s,p,l,v) => { s.UpdateParameterObject((x)=>{DeactivationTime=x;}, p, l, v); }, | 350 | (s,p,l,v) => { DeactivationTime = v; }, |
333 | (s,o,v) => { s.PE.SetDeactivationTime(o.PhysBody, v); } ), | 351 | (s,o,v) => { s.PE.SetDeactivationTime(o.PhysBody, v); } ), |
334 | new ParameterDefn("LinearSleepingThreshold", "Seconds to measure linear movement before considering static", | 352 | new ParameterDefn("LinearSleepingThreshold", "Seconds to measure linear movement before considering static", |
335 | 0.8f, | 353 | 0.8f, |
336 | (s,cf,p,v) => { LinearSleepingThreshold = cf.GetFloat(p, v); }, | 354 | (s,cf,p,v) => { LinearSleepingThreshold = cf.GetFloat(p, v); }, |
337 | (s) => { return LinearSleepingThreshold; }, | 355 | (s) => { return LinearSleepingThreshold; }, |
338 | (s,p,l,v) => { s.UpdateParameterObject((x)=>{LinearSleepingThreshold=x;}, p, l, v); }, | 356 | (s,p,l,v) => { LinearSleepingThreshold = v;}, |
339 | (s,o,v) => { s.PE.SetSleepingThresholds(o.PhysBody, v, v); } ), | 357 | (s,o,v) => { s.PE.SetSleepingThresholds(o.PhysBody, v, v); } ), |
340 | new ParameterDefn("AngularSleepingThreshold", "Seconds to measure angular movement before considering static", | 358 | new ParameterDefn("AngularSleepingThreshold", "Seconds to measure angular movement before considering static", |
341 | 1.0f, | 359 | 1.0f, |
342 | (s,cf,p,v) => { AngularSleepingThreshold = cf.GetFloat(p, v); }, | 360 | (s,cf,p,v) => { AngularSleepingThreshold = cf.GetFloat(p, v); }, |
343 | (s) => { return AngularSleepingThreshold; }, | 361 | (s) => { return AngularSleepingThreshold; }, |
344 | (s,p,l,v) => { s.UpdateParameterObject((x)=>{AngularSleepingThreshold=x;}, p, l, v); }, | 362 | (s,p,l,v) => { AngularSleepingThreshold = v;}, |
345 | (s,o,v) => { s.PE.SetSleepingThresholds(o.PhysBody, v, v); } ), | 363 | (s,o,v) => { s.PE.SetSleepingThresholds(o.PhysBody, v, v); } ), |
346 | new ParameterDefn("CcdMotionThreshold", "Continuious collision detection threshold (0 means no CCD)" , | 364 | new ParameterDefn("CcdMotionThreshold", "Continuious collision detection threshold (0 means no CCD)" , |
347 | 0.0f, // set to zero to disable | 365 | 0.0f, // set to zero to disable |
348 | (s,cf,p,v) => { CcdMotionThreshold = cf.GetFloat(p, v); }, | 366 | (s,cf,p,v) => { CcdMotionThreshold = cf.GetFloat(p, v); }, |
349 | (s) => { return CcdMotionThreshold; }, | 367 | (s) => { return CcdMotionThreshold; }, |
350 | (s,p,l,v) => { s.UpdateParameterObject((x)=>{CcdMotionThreshold=x;}, p, l, v); }, | 368 | (s,p,l,v) => { CcdMotionThreshold = v;}, |
351 | (s,o,v) => { s.PE.SetCcdMotionThreshold(o.PhysBody, v); } ), | 369 | (s,o,v) => { s.PE.SetCcdMotionThreshold(o.PhysBody, v); } ), |
352 | new ParameterDefn("CcdSweptSphereRadius", "Continuious collision detection test radius" , | 370 | new ParameterDefn("CcdSweptSphereRadius", "Continuious collision detection test radius" , |
353 | 0.2f, | 371 | 0.2f, |
354 | (s,cf,p,v) => { CcdSweptSphereRadius = cf.GetFloat(p, v); }, | 372 | (s,cf,p,v) => { CcdSweptSphereRadius = cf.GetFloat(p, v); }, |
355 | (s) => { return CcdSweptSphereRadius; }, | 373 | (s) => { return CcdSweptSphereRadius; }, |
356 | (s,p,l,v) => { s.UpdateParameterObject((x)=>{CcdSweptSphereRadius=x;}, p, l, v); }, | 374 | (s,p,l,v) => { CcdSweptSphereRadius = v;}, |
357 | (s,o,v) => { s.PE.SetCcdSweptSphereRadius(o.PhysBody, v); } ), | 375 | (s,o,v) => { s.PE.SetCcdSweptSphereRadius(o.PhysBody, v); } ), |
358 | new ParameterDefn("ContactProcessingThreshold", "Distance above which contacts can be discarded (0 means no discard)" , | 376 | new ParameterDefn("ContactProcessingThreshold", "Distance above which contacts can be discarded (0 means no discard)" , |
359 | 0.0f, | 377 | 0.0f, |
360 | (s,cf,p,v) => { ContactProcessingThreshold = cf.GetFloat(p, v); }, | 378 | (s,cf,p,v) => { ContactProcessingThreshold = cf.GetFloat(p, v); }, |
361 | (s) => { return ContactProcessingThreshold; }, | 379 | (s) => { return ContactProcessingThreshold; }, |
362 | (s,p,l,v) => { s.UpdateParameterObject((x)=>{ContactProcessingThreshold=x;}, p, l, v); }, | 380 | (s,p,l,v) => { ContactProcessingThreshold = v;}, |
363 | (s,o,v) => { s.PE.SetContactProcessingThreshold(o.PhysBody, v); } ), | 381 | (s,o,v) => { s.PE.SetContactProcessingThreshold(o.PhysBody, v); } ), |
364 | 382 | ||
365 | new ParameterDefn("TerrainImplementation", "Type of shape to use for terrain (0=heightmap, 1=mesh)", | 383 | new ParameterDefn("TerrainImplementation", "Type of shape to use for terrain (0=heightmap, 1=mesh)", |
@@ -392,7 +410,7 @@ public static class BSParam | |||
392 | 0.2f, | 410 | 0.2f, |
393 | (s,cf,p,v) => { AvatarFriction = cf.GetFloat(p, v); }, | 411 | (s,cf,p,v) => { AvatarFriction = cf.GetFloat(p, v); }, |
394 | (s) => { return AvatarFriction; }, | 412 | (s) => { return AvatarFriction; }, |
395 | (s,p,l,v) => { s.UpdateParameterObject((x)=>{AvatarFriction=x;}, p, l, v); } ), | 413 | (s,p,l,v) => { AvatarFriction = v; } ), |
396 | new ParameterDefn("AvatarStandingFriction", "Avatar friction when standing. Changed on avatar recreation.", | 414 | new ParameterDefn("AvatarStandingFriction", "Avatar friction when standing. Changed on avatar recreation.", |
397 | 10.0f, | 415 | 10.0f, |
398 | (s,cf,p,v) => { AvatarStandingFriction = cf.GetFloat(p, v); }, | 416 | (s,cf,p,v) => { AvatarStandingFriction = cf.GetFloat(p, v); }, |
@@ -407,32 +425,32 @@ public static class BSParam | |||
407 | 3.5f, | 425 | 3.5f, |
408 | (s,cf,p,v) => { AvatarDensity = cf.GetFloat(p, v); }, | 426 | (s,cf,p,v) => { AvatarDensity = cf.GetFloat(p, v); }, |
409 | (s) => { return AvatarDensity; }, | 427 | (s) => { return AvatarDensity; }, |
410 | (s,p,l,v) => { s.UpdateParameterObject((x)=>{AvatarDensity=x;}, p, l, v); } ), | 428 | (s,p,l,v) => { AvatarDensity = v; } ), |
411 | new ParameterDefn("AvatarRestitution", "Bouncyness. Changed on avatar recreation.", | 429 | new ParameterDefn("AvatarRestitution", "Bouncyness. Changed on avatar recreation.", |
412 | 0f, | 430 | 0f, |
413 | (s,cf,p,v) => { AvatarRestitution = cf.GetFloat(p, v); }, | 431 | (s,cf,p,v) => { AvatarRestitution = cf.GetFloat(p, v); }, |
414 | (s) => { return AvatarRestitution; }, | 432 | (s) => { return AvatarRestitution; }, |
415 | (s,p,l,v) => { s.UpdateParameterObject((x)=>{AvatarRestitution=x;}, p, l, v); } ), | 433 | (s,p,l,v) => { AvatarRestitution = v; } ), |
416 | new ParameterDefn("AvatarCapsuleWidth", "The distance between the sides of the avatar capsule", | 434 | new ParameterDefn("AvatarCapsuleWidth", "The distance between the sides of the avatar capsule", |
417 | 0.6f, | 435 | 0.6f, |
418 | (s,cf,p,v) => { AvatarCapsuleWidth = cf.GetFloat(p, v); }, | 436 | (s,cf,p,v) => { AvatarCapsuleWidth = cf.GetFloat(p, v); }, |
419 | (s) => { return AvatarCapsuleWidth; }, | 437 | (s) => { return AvatarCapsuleWidth; }, |
420 | (s,p,l,v) => { s.UpdateParameterObject((x)=>{AvatarCapsuleWidth=x;}, p, l, v); } ), | 438 | (s,p,l,v) => { AvatarCapsuleWidth = v; } ), |
421 | new ParameterDefn("AvatarCapsuleDepth", "The distance between the front and back of the avatar capsule", | 439 | new ParameterDefn("AvatarCapsuleDepth", "The distance between the front and back of the avatar capsule", |
422 | 0.45f, | 440 | 0.45f, |
423 | (s,cf,p,v) => { AvatarCapsuleDepth = cf.GetFloat(p, v); }, | 441 | (s,cf,p,v) => { AvatarCapsuleDepth = cf.GetFloat(p, v); }, |
424 | (s) => { return AvatarCapsuleDepth; }, | 442 | (s) => { return AvatarCapsuleDepth; }, |
425 | (s,p,l,v) => { s.UpdateParameterObject((x)=>{AvatarCapsuleDepth=x;}, p, l, v); } ), | 443 | (s,p,l,v) => { AvatarCapsuleDepth = v; } ), |
426 | new ParameterDefn("AvatarCapsuleHeight", "Default height of space around avatar", | 444 | new ParameterDefn("AvatarCapsuleHeight", "Default height of space around avatar", |
427 | 1.5f, | 445 | 1.5f, |
428 | (s,cf,p,v) => { AvatarCapsuleHeight = cf.GetFloat(p, v); }, | 446 | (s,cf,p,v) => { AvatarCapsuleHeight = cf.GetFloat(p, v); }, |
429 | (s) => { return AvatarCapsuleHeight; }, | 447 | (s) => { return AvatarCapsuleHeight; }, |
430 | (s,p,l,v) => { s.UpdateParameterObject((x)=>{AvatarCapsuleHeight=x;}, p, l, v); } ), | 448 | (s,p,l,v) => { AvatarCapsuleHeight = v; } ), |
431 | new ParameterDefn("AvatarContactProcessingThreshold", "Distance from capsule to check for collisions", | 449 | new ParameterDefn("AvatarContactProcessingThreshold", "Distance from capsule to check for collisions", |
432 | 0.1f, | 450 | 0.1f, |
433 | (s,cf,p,v) => { AvatarContactProcessingThreshold = cf.GetFloat(p, v); }, | 451 | (s,cf,p,v) => { AvatarContactProcessingThreshold = cf.GetFloat(p, v); }, |
434 | (s) => { return AvatarContactProcessingThreshold; }, | 452 | (s) => { return AvatarContactProcessingThreshold; }, |
435 | (s,p,l,v) => { s.UpdateParameterObject((x)=>{AvatarContactProcessingThreshold=x;}, p, l, v); } ), | 453 | (s,p,l,v) => { AvatarContactProcessingThreshold = v; } ), |
436 | new ParameterDefn("AvatarStepHeight", "Height of a step obstacle to consider step correction", | 454 | new ParameterDefn("AvatarStepHeight", "Height of a step obstacle to consider step correction", |
437 | 0.3f, | 455 | 0.3f, |
438 | (s,cf,p,v) => { AvatarStepHeight = cf.GetFloat(p, v); }, | 456 | (s,cf,p,v) => { AvatarStepHeight = cf.GetFloat(p, v); }, |
@@ -497,44 +515,49 @@ public static class BSParam | |||
497 | 515 | ||
498 | new ParameterDefn("MaxPersistantManifoldPoolSize", "Number of manifolds pooled (0 means default of 4096)", | 516 | new ParameterDefn("MaxPersistantManifoldPoolSize", "Number of manifolds pooled (0 means default of 4096)", |
499 | 0f, | 517 | 0f, |
500 | (s,cf,p,v) => { s.UnmanagedParams[0].maxPersistantManifoldPoolSize = cf.GetFloat(p, v); }, | 518 | (s,cf,p,v) => { MaxPersistantManifoldPoolSize = cf.GetFloat(p, v); }, |
501 | (s) => { return s.UnmanagedParams[0].maxPersistantManifoldPoolSize; }, | 519 | (s) => { return MaxPersistantManifoldPoolSize; }, |
502 | (s,p,l,v) => { s.UnmanagedParams[0].maxPersistantManifoldPoolSize = v; } ), | 520 | (s,p,l,v) => { MaxPersistantManifoldPoolSize = v; s.UnmanagedParams[0].maxPersistantManifoldPoolSize = v; } ), |
503 | new ParameterDefn("MaxCollisionAlgorithmPoolSize", "Number of collisions pooled (0 means default of 4096)", | 521 | new ParameterDefn("MaxCollisionAlgorithmPoolSize", "Number of collisions pooled (0 means default of 4096)", |
504 | 0f, | 522 | 0f, |
505 | (s,cf,p,v) => { s.UnmanagedParams[0].maxCollisionAlgorithmPoolSize = cf.GetFloat(p, v); }, | 523 | (s,cf,p,v) => { MaxCollisionAlgorithmPoolSize = cf.GetFloat(p, v); }, |
506 | (s) => { return s.UnmanagedParams[0].maxCollisionAlgorithmPoolSize; }, | 524 | (s) => { return MaxCollisionAlgorithmPoolSize; }, |
507 | (s,p,l,v) => { s.UnmanagedParams[0].maxCollisionAlgorithmPoolSize = v; } ), | 525 | (s,p,l,v) => { MaxCollisionAlgorithmPoolSize = v; s.UnmanagedParams[0].maxCollisionAlgorithmPoolSize = v; } ), |
508 | new ParameterDefn("ShouldDisableContactPoolDynamicAllocation", "Enable to allow large changes in object count", | 526 | new ParameterDefn("ShouldDisableContactPoolDynamicAllocation", "Enable to allow large changes in object count", |
509 | ConfigurationParameters.numericFalse, | 527 | ConfigurationParameters.numericFalse, |
510 | (s,cf,p,v) => { s.UnmanagedParams[0].shouldDisableContactPoolDynamicAllocation = BSParam.NumericBool(cf.GetBoolean(p, BSParam.BoolNumeric(v))); }, | 528 | (s,cf,p,v) => { ShouldDisableContactPoolDynamicAllocation = BSParam.NumericBool(cf.GetBoolean(p, BSParam.BoolNumeric(v))); }, |
511 | (s) => { return s.UnmanagedParams[0].shouldDisableContactPoolDynamicAllocation; }, | 529 | (s) => { return ShouldDisableContactPoolDynamicAllocation; }, |
512 | (s,p,l,v) => { s.UnmanagedParams[0].shouldDisableContactPoolDynamicAllocation = v; } ), | 530 | (s,p,l,v) => { ShouldDisableContactPoolDynamicAllocation = v; s.UnmanagedParams[0].shouldDisableContactPoolDynamicAllocation = v; } ), |
513 | new ParameterDefn("ShouldForceUpdateAllAabbs", "Enable to recomputer AABBs every simulator step", | 531 | new ParameterDefn("ShouldForceUpdateAllAabbs", "Enable to recomputer AABBs every simulator step", |
514 | ConfigurationParameters.numericFalse, | 532 | ConfigurationParameters.numericFalse, |
515 | (s,cf,p,v) => { s.UnmanagedParams[0].shouldForceUpdateAllAabbs = BSParam.NumericBool(cf.GetBoolean(p, BSParam.BoolNumeric(v))); }, | 533 | (s,cf,p,v) => { ShouldForceUpdateAllAabbs = BSParam.NumericBool(cf.GetBoolean(p, BSParam.BoolNumeric(v))); }, |
516 | (s) => { return s.UnmanagedParams[0].shouldForceUpdateAllAabbs; }, | 534 | (s) => { return ShouldForceUpdateAllAabbs; }, |
517 | (s,p,l,v) => { s.UnmanagedParams[0].shouldForceUpdateAllAabbs = v; } ), | 535 | (s,p,l,v) => { ShouldForceUpdateAllAabbs = v; s.UnmanagedParams[0].shouldForceUpdateAllAabbs = v; } ), |
518 | new ParameterDefn("ShouldRandomizeSolverOrder", "Enable for slightly better stacking interaction", | 536 | new ParameterDefn("ShouldRandomizeSolverOrder", "Enable for slightly better stacking interaction", |
519 | ConfigurationParameters.numericTrue, | 537 | ConfigurationParameters.numericTrue, |
520 | (s,cf,p,v) => { s.UnmanagedParams[0].shouldRandomizeSolverOrder = BSParam.NumericBool(cf.GetBoolean(p, BSParam.BoolNumeric(v))); }, | 538 | (s,cf,p,v) => { ShouldRandomizeSolverOrder = BSParam.NumericBool(cf.GetBoolean(p, BSParam.BoolNumeric(v))); }, |
521 | (s) => { return s.UnmanagedParams[0].shouldRandomizeSolverOrder; }, | 539 | (s) => { return ShouldRandomizeSolverOrder; }, |
522 | (s,p,l,v) => { s.UnmanagedParams[0].shouldRandomizeSolverOrder = v; } ), | 540 | (s,p,l,v) => { ShouldRandomizeSolverOrder = v; s.UnmanagedParams[0].shouldRandomizeSolverOrder = v; } ), |
523 | new ParameterDefn("ShouldSplitSimulationIslands", "Enable splitting active object scanning islands", | 541 | new ParameterDefn("ShouldSplitSimulationIslands", "Enable splitting active object scanning islands", |
524 | ConfigurationParameters.numericTrue, | 542 | ConfigurationParameters.numericTrue, |
525 | (s,cf,p,v) => { s.UnmanagedParams[0].shouldSplitSimulationIslands = BSParam.NumericBool(cf.GetBoolean(p, BSParam.BoolNumeric(v))); }, | 543 | (s,cf,p,v) => { ShouldSplitSimulationIslands = BSParam.NumericBool(cf.GetBoolean(p, BSParam.BoolNumeric(v))); }, |
526 | (s) => { return s.UnmanagedParams[0].shouldSplitSimulationIslands; }, | 544 | (s) => { return ShouldSplitSimulationIslands; }, |
527 | (s,p,l,v) => { s.UnmanagedParams[0].shouldSplitSimulationIslands = v; } ), | 545 | (s,p,l,v) => { ShouldSplitSimulationIslands = v; s.UnmanagedParams[0].shouldSplitSimulationIslands = v; } ), |
528 | new ParameterDefn("ShouldEnableFrictionCaching", "Enable friction computation caching", | 546 | new ParameterDefn("ShouldEnableFrictionCaching", "Enable friction computation caching", |
529 | ConfigurationParameters.numericTrue, | 547 | ConfigurationParameters.numericTrue, |
530 | (s,cf,p,v) => { s.UnmanagedParams[0].shouldEnableFrictionCaching = BSParam.NumericBool(cf.GetBoolean(p, BSParam.BoolNumeric(v))); }, | 548 | (s,cf,p,v) => { ShouldEnableFrictionCaching = BSParam.NumericBool(cf.GetBoolean(p, BSParam.BoolNumeric(v))); }, |
531 | (s) => { return s.UnmanagedParams[0].shouldEnableFrictionCaching; }, | 549 | (s) => { return ShouldEnableFrictionCaching; }, |
532 | (s,p,l,v) => { s.UnmanagedParams[0].shouldEnableFrictionCaching = v; } ), | 550 | (s,p,l,v) => { ShouldEnableFrictionCaching = v; s.UnmanagedParams[0].shouldEnableFrictionCaching = v; } ), |
533 | new ParameterDefn("NumberOfSolverIterations", "Number of internal iterations (0 means default)", | 551 | new ParameterDefn("NumberOfSolverIterations", "Number of internal iterations (0 means default)", |
534 | 0f, // zero says use Bullet default | 552 | 0f, // zero says use Bullet default |
535 | (s,cf,p,v) => { s.UnmanagedParams[0].numberOfSolverIterations = cf.GetFloat(p, v); }, | 553 | (s,cf,p,v) => { NumberOfSolverIterations = cf.GetFloat(p, v); }, |
536 | (s) => { return s.UnmanagedParams[0].numberOfSolverIterations; }, | 554 | (s) => { return NumberOfSolverIterations; }, |
537 | (s,p,l,v) => { s.UnmanagedParams[0].numberOfSolverIterations = v; } ), | 555 | (s,p,l,v) => { NumberOfSolverIterations = v; s.UnmanagedParams[0].numberOfSolverIterations = v; } ), |
556 | new ParameterDefn("UseSingleSidedMeshes", "Whether to compute collisions based on single sided meshes.", | ||
557 | ConfigurationParameters.numericTrue, | ||
558 | (s,cf,p,v) => { UseSingleSidedMeshesF = BSParam.NumericBool(cf.GetBoolean(p, BSParam.BoolNumeric(v))); }, | ||
559 | (s) => { return UseSingleSidedMeshesF; }, | ||
560 | (s,p,l,v) => { UseSingleSidedMeshesF = v; s.UnmanagedParams[0].useSingleSidedMeshes = v; } ), | ||
538 | 561 | ||
539 | new ParameterDefn("LinksetImplementation", "Type of linkset implementation (0=Constraint, 1=Compound, 2=Manual)", | 562 | new ParameterDefn("LinksetImplementation", "Type of linkset implementation (0=Constraint, 1=Compound, 2=Manual)", |
540 | (float)BSLinkset.LinksetImplementation.Compound, | 563 | (float)BSLinkset.LinksetImplementation.Compound, |