Panda3D
bulletSoftBodyConfig.cxx
Go to the documentation of this file.
1 /**
2  * PANDA 3D SOFTWARE
3  * Copyright (c) Carnegie Mellon University. All rights reserved.
4  *
5  * All use of this software is subject to the terms of the revised BSD
6  * license. You should have received a copy of this license along
7  * with this source code in a file named "LICENSE."
8  *
9  * @file bulletSoftBodyConfig.cxx
10  * @author enn0x
11  * @date 2010-04-12
12  */
13 
14 #include "bulletSoftBodyConfig.h"
15 
16 #include "bulletWorld.h"
17 
18 #include "lightMutexHolder.h"
19 
20 /**
21  *
22  */
23 BulletSoftBodyConfig::
24 BulletSoftBodyConfig(btSoftBody::Config &cfg) : _cfg(cfg) {
25 
26 }
27 
28 /**
29  *
30  */
31 void BulletSoftBodyConfig::
32 clear_all_collision_flags() {
33  LightMutexHolder holder(BulletWorld::get_global_lock());
34 
35  _cfg.collisions = 0;
36 }
37 
38 /**
39  *
40  */
41 void BulletSoftBodyConfig::
42 set_collision_flag(CollisionFlag flag, bool value) {
43  LightMutexHolder holder(BulletWorld::get_global_lock());
44 
45  if (value == true) {
46  _cfg.collisions |= flag;
47  }
48  else {
49  _cfg.collisions &= ~(flag);
50  }
51 }
52 
53 /**
54  *
55  */
56 bool BulletSoftBodyConfig::
57 get_collision_flag(CollisionFlag flag) const {
58  LightMutexHolder holder(BulletWorld::get_global_lock());
59 
60  return (_cfg.collisions & flag) ? true : false;
61 }
62 
63 /**
64  *
65  */
66 void BulletSoftBodyConfig::
67 set_aero_model(AeroModel value) {
68  LightMutexHolder holder(BulletWorld::get_global_lock());
69 
70  _cfg.aeromodel = (btSoftBody::eAeroModel::_)value;
71 }
72 
73 /**
74  *
75  */
76 BulletSoftBodyConfig::AeroModel BulletSoftBodyConfig::
77 get_aero_model() const {
78  LightMutexHolder holder(BulletWorld::get_global_lock());
79 
80  return (AeroModel)_cfg.aeromodel;
81 }
82 
83 /**
84  * Getter for property kVCF.
85  */
86 PN_stdfloat BulletSoftBodyConfig::
87 get_velocities_correction_factor() const {
88  LightMutexHolder holder(BulletWorld::get_global_lock());
89 
90  return (PN_stdfloat)_cfg.kVCF;
91 }
92 
93 /**
94  * Setter for property kVCF.
95  */
97 set_velocities_correction_factor(PN_stdfloat value) {
98  LightMutexHolder holder(BulletWorld::get_global_lock());
99 
100  _cfg.kVCF = (btScalar)value;
101 }
102 
103 /**
104  * Getter for property kDP.
105  */
106 PN_stdfloat BulletSoftBodyConfig::
107 get_damping_coefficient() const {
108  LightMutexHolder holder(BulletWorld::get_global_lock());
109 
110  return (PN_stdfloat)_cfg.kDP;
111 }
112 
113 /**
114  * Setter for property kDP.
115  */
117 set_damping_coefficient(PN_stdfloat value) {
118  LightMutexHolder holder(BulletWorld::get_global_lock());
119 
120  _cfg.kDP = (btScalar)value;
121 }
122 
123 /**
124  * Getter for property kDG.
125  */
126 PN_stdfloat BulletSoftBodyConfig::
127 get_drag_coefficient() const {
128  LightMutexHolder holder(BulletWorld::get_global_lock());
129 
130  return (PN_stdfloat)_cfg.kDG;
131 }
132 
133 /**
134  * Setter for property kDG.
135  */
137 set_drag_coefficient(PN_stdfloat value) {
138  LightMutexHolder holder(BulletWorld::get_global_lock());
139 
140  _cfg.kDG = (btScalar)value;
141 }
142 
143 /**
144  * Getter for property kLF.
145  */
146 PN_stdfloat BulletSoftBodyConfig::
147 get_lift_coefficient() const {
148  LightMutexHolder holder(BulletWorld::get_global_lock());
149 
150  return (PN_stdfloat)_cfg.kLF;
151 }
152 
153 /**
154  * Setter for property kLF.
155  */
157 set_lift_coefficient(PN_stdfloat value) {
158  LightMutexHolder holder(BulletWorld::get_global_lock());
159 
160  _cfg.kLF = (btScalar)value;
161 }
162 
163 /**
164  * Getter for property kPR.
165  */
166 PN_stdfloat BulletSoftBodyConfig::
167 get_pressure_coefficient() const {
168  LightMutexHolder holder(BulletWorld::get_global_lock());
169 
170  return (PN_stdfloat)_cfg.kPR;
171 }
172 
173 /**
174  * Setter for property kPR.
175  */
177 set_pressure_coefficient(PN_stdfloat value) {
178  LightMutexHolder holder(BulletWorld::get_global_lock());
179 
180  _cfg.kPR = (btScalar)value;
181 }
182 
183 /**
184  * Getter for property kVC.
185  */
186 PN_stdfloat BulletSoftBodyConfig::
187 get_volume_conservation_coefficient() const {
188  LightMutexHolder holder(BulletWorld::get_global_lock());
189 
190  return (PN_stdfloat)_cfg.kVC;
191 }
192 
193 /**
194  * Setter for property kVC.
195  */
197 set_volume_conservation_coefficient(PN_stdfloat value) {
198  LightMutexHolder holder(BulletWorld::get_global_lock());
199 
200  _cfg.kVC = (btScalar)value;
201 }
202 
203 /**
204  * Getter for property kDF.
205  */
206 PN_stdfloat BulletSoftBodyConfig::
207 get_dynamic_friction_coefficient() const {
208  LightMutexHolder holder(BulletWorld::get_global_lock());
209 
210  return (PN_stdfloat)_cfg.kDF;
211 }
212 
213 /**
214  * Setter for property kDF.
215  */
217 set_dynamic_friction_coefficient(PN_stdfloat value) {
218  LightMutexHolder holder(BulletWorld::get_global_lock());
219 
220  _cfg.kDF = (btScalar)value;
221 }
222 
223 /**
224  * Getter for property kMT.
225  */
226 PN_stdfloat BulletSoftBodyConfig::
227 get_pose_matching_coefficient() const {
228  LightMutexHolder holder(BulletWorld::get_global_lock());
229 
230  return (PN_stdfloat)_cfg.kMT;
231 }
232 
233 /**
234  * Setter for property kMT.
235  */
237 set_pose_matching_coefficient(PN_stdfloat value) {
238  LightMutexHolder holder(BulletWorld::get_global_lock());
239 
240  _cfg.kMT = (btScalar)value;
241 }
242 
243 /**
244  * Getter for property kCHR.
245  */
246 PN_stdfloat BulletSoftBodyConfig::
247 get_rigid_contacts_hardness() const {
248  LightMutexHolder holder(BulletWorld::get_global_lock());
249 
250  return (PN_stdfloat)_cfg.kCHR;
251 }
252 
253 /**
254  * Setter for property kCHR.
255  */
257 set_rigid_contacts_hardness(PN_stdfloat value) {
258  LightMutexHolder holder(BulletWorld::get_global_lock());
259 
260  _cfg.kCHR = (btScalar)value;
261 }
262 
263 /**
264  * Getter for property kKHR.
265  */
266 PN_stdfloat BulletSoftBodyConfig::
267 get_kinetic_contacts_hardness() const {
268  LightMutexHolder holder(BulletWorld::get_global_lock());
269 
270  return (PN_stdfloat)_cfg.kKHR;
271 }
272 
273 /**
274  * Setter for property kKHR.
275  */
277 set_kinetic_contacts_hardness(PN_stdfloat value) {
278  LightMutexHolder holder(BulletWorld::get_global_lock());
279 
280  _cfg.kKHR = (btScalar)value;
281 }
282 
283 /**
284  * Getter for property kSHR.
285  */
286 PN_stdfloat BulletSoftBodyConfig::
287 get_soft_contacts_hardness() const {
288  LightMutexHolder holder(BulletWorld::get_global_lock());
289 
290  return (PN_stdfloat)_cfg.kSHR;
291 }
292 
293 /**
294  * Setter for property kSHR.
295  */
297 set_soft_contacts_hardness(PN_stdfloat value) {
298  LightMutexHolder holder(BulletWorld::get_global_lock());
299 
300  _cfg.kSHR = (btScalar)value;
301 }
302 
303 /**
304  * Getter for property kAHR.
305  */
306 PN_stdfloat BulletSoftBodyConfig::
307 get_anchors_hardness() const {
308  LightMutexHolder holder(BulletWorld::get_global_lock());
309 
310  return (PN_stdfloat)_cfg.kAHR;
311 }
312 
313 /**
314  * Setter for property kAHR.
315  */
317 set_anchors_hardness(PN_stdfloat value) {
318  LightMutexHolder holder(BulletWorld::get_global_lock());
319 
320  _cfg.kAHR = (btScalar)value;
321 }
322 
323 /**
324  * Getter for property kSRHR_CL.
325  */
326 PN_stdfloat BulletSoftBodyConfig::
327 get_soft_vs_rigid_hardness() const {
328  LightMutexHolder holder(BulletWorld::get_global_lock());
329 
330  return (PN_stdfloat)_cfg.kSRHR_CL;
331 }
332 
333 /**
334  * Setter for property kSRHR_CL.
335  */
337 set_soft_vs_rigid_hardness(PN_stdfloat value) {
338  LightMutexHolder holder(BulletWorld::get_global_lock());
339 
340  _cfg.kSRHR_CL = (btScalar)value;
341 }
342 
343 /**
344  * Getter for property kSKHR_CL.
345  */
346 PN_stdfloat BulletSoftBodyConfig::
347 get_soft_vs_kinetic_hardness() const {
348  LightMutexHolder holder(BulletWorld::get_global_lock());
349 
350  return (PN_stdfloat)_cfg.kSKHR_CL;
351 }
352 
353 /**
354  * Setter for property kSKHR_CL.
355  */
357 set_soft_vs_kinetic_hardness(PN_stdfloat value) {
358  LightMutexHolder holder(BulletWorld::get_global_lock());
359 
360  _cfg.kSKHR_CL = (btScalar)value;
361 }
362 
363 /**
364  * Getter for property kSSHR_CL.
365  */
366 PN_stdfloat BulletSoftBodyConfig::
367 get_soft_vs_soft_hardness() const {
368  LightMutexHolder holder(BulletWorld::get_global_lock());
369 
370  return (PN_stdfloat)_cfg.kSSHR_CL;
371 }
372 
373 /**
374  * Setter for property kSSHR_CL.
375  */
377 set_soft_vs_soft_hardness(PN_stdfloat value) {
378  LightMutexHolder holder(BulletWorld::get_global_lock());
379 
380  _cfg.kSSHR_CL = (btScalar)value;
381 }
382 
383 /**
384  * Getter for property kSR_SPLT_CL.
385  */
386 PN_stdfloat BulletSoftBodyConfig::
387 get_soft_vs_rigid_impulse_split() const {
388  LightMutexHolder holder(BulletWorld::get_global_lock());
389 
390  return (PN_stdfloat)_cfg.kSR_SPLT_CL;
391 }
392 
393 /**
394  * Setter for property kSR_SPLT_CL.
395  */
397 set_soft_vs_rigid_impulse_split(PN_stdfloat value) {
398  LightMutexHolder holder(BulletWorld::get_global_lock());
399 
400  _cfg.kSR_SPLT_CL = (btScalar)value;
401 }
402 
403 /**
404  * Getter for property kSK_SPLT_CL.
405  */
406 PN_stdfloat BulletSoftBodyConfig::
407 get_soft_vs_kinetic_impulse_split() const {
408  LightMutexHolder holder(BulletWorld::get_global_lock());
409 
410  return (PN_stdfloat)_cfg.kSK_SPLT_CL;
411 }
412 
413 /**
414  * Setter for property kSK_SPLT_CL.
415  */
417 set_soft_vs_kinetic_impulse_split(PN_stdfloat value) {
418  LightMutexHolder holder(BulletWorld::get_global_lock());
419 
420  _cfg.kSK_SPLT_CL = (btScalar)value;
421 }
422 
423 /**
424  * Getter for property kSS_SPLT_CL.
425  */
426 PN_stdfloat BulletSoftBodyConfig::
427 get_soft_vs_soft_impulse_split() const {
428  LightMutexHolder holder(BulletWorld::get_global_lock());
429 
430  return (PN_stdfloat)_cfg.kSS_SPLT_CL;
431 }
432 
433 /**
434  * Setter for property kSS_SPLT_CL.
435  */
437 set_soft_vs_soft_impulse_split(PN_stdfloat value) {
438  LightMutexHolder holder(BulletWorld::get_global_lock());
439 
440  _cfg.kSS_SPLT_CL = (btScalar)value;
441 }
442 
443 /**
444  * Getter for property maxvolume.
445  */
446 PN_stdfloat BulletSoftBodyConfig::
447 get_maxvolume() const {
448  LightMutexHolder holder(BulletWorld::get_global_lock());
449 
450  return (PN_stdfloat)_cfg.maxvolume;
451 }
452 
453 /**
454  * Setter for property maxvolume.
455  */
457 set_maxvolume(PN_stdfloat value) {
458  LightMutexHolder holder(BulletWorld::get_global_lock());
459 
460  _cfg.maxvolume = (btScalar)value;
461 }
462 
463 /**
464  * Getter for property timescale.
465  */
466 PN_stdfloat BulletSoftBodyConfig::
467 get_timescale() const {
468  LightMutexHolder holder(BulletWorld::get_global_lock());
469 
470  return (PN_stdfloat)_cfg.timescale;
471 }
472 
473 /**
474  * Setter for property timescale.
475  */
477 set_timescale(PN_stdfloat value) {
478  LightMutexHolder holder(BulletWorld::get_global_lock());
479 
480  _cfg.timescale = (btScalar)value;
481 }
482 
483 /**
484  * Getter for property piterations.
485  */
486 int BulletSoftBodyConfig::
487 get_positions_solver_iterations() const {
488  LightMutexHolder holder(BulletWorld::get_global_lock());
489 
490  return _cfg.piterations;
491 }
492 
493 /**
494  * Setter for property piterations.
495  */
498  LightMutexHolder holder(BulletWorld::get_global_lock());
499 
500  nassertv(value > 0);
501  _cfg.piterations = value;
502 }
503 
504 /**
505  * Getter for property viterations.
506  */
507 int BulletSoftBodyConfig::
508 get_velocities_solver_iterations() const {
509  LightMutexHolder holder(BulletWorld::get_global_lock());
510 
511  return _cfg.viterations;
512 }
513 
514 /**
515  * Setter for property viterations.
516  */
519  LightMutexHolder holder(BulletWorld::get_global_lock());
520 
521  nassertv(value > 0);
522  _cfg.viterations = value;
523 }
524 
525 /**
526  * Getter for property diterations.
527  */
528 int BulletSoftBodyConfig::
529 get_drift_solver_iterations() const {
530  LightMutexHolder holder(BulletWorld::get_global_lock());
531 
532  return _cfg.diterations;
533 }
534 
535 /**
536  * Setter for property diterations.
537  */
539 set_drift_solver_iterations(int value) {
540  LightMutexHolder holder(BulletWorld::get_global_lock());
541 
542  nassertv(value > 0);
543  _cfg.diterations = value;
544 }
545 
546 /**
547  * Getter for property citerations.
548  */
549 int BulletSoftBodyConfig::
550 get_cluster_solver_iterations() const {
551  LightMutexHolder holder(BulletWorld::get_global_lock());
552 
553  return _cfg.citerations;
554 }
555 
556 /**
557  * Setter for property citerations.
558  */
561  LightMutexHolder holder(BulletWorld::get_global_lock());
562 
563  nassertv(value > 0);
564  _cfg.citerations = value;
565 }
set_kinetic_contacts_hardness
Setter for property kKHR.
set_soft_vs_kinetic_impulse_split
Setter for property kSK_SPLT_CL.
set_velocities_correction_factor
Setter for property kVCF.
set_velocities_solver_iterations
Setter for property viterations.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
set_pressure_coefficient
Setter for property kPR.
set_drift_solver_iterations
Setter for property diterations.
set_timescale
Setter for property timescale.
set_damping_coefficient
Setter for property kDP.
set_lift_coefficient
Setter for property kLF.
set_soft_contacts_hardness
Setter for property kSHR.
set_soft_vs_rigid_hardness
Setter for property kSRHR_CL.
set_anchors_hardness
Setter for property kAHR.
set_pose_matching_coefficient
Setter for property kMT.
set_rigid_contacts_hardness
Setter for property kCHR.
Similar to MutexHolder, but for a light mutex.
set_drag_coefficient
Setter for property kDG.
set_soft_vs_rigid_impulse_split
Setter for property kSR_SPLT_CL.
set_volume_conservation_coefficient
Setter for property kVC.
set_dynamic_friction_coefficient
Setter for property kDF.
set_cluster_solver_iterations
Setter for property citerations.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
set_soft_vs_soft_impulse_split
Setter for property kSS_SPLT_CL.
set_maxvolume
Setter for property maxvolume.
set_soft_vs_kinetic_hardness
Setter for property kSKHR_CL.
set_positions_solver_iterations
Setter for property piterations.
set_soft_vs_soft_hardness
Setter for property kSSHR_CL.