Panda3D
Loading...
Searching...
No Matches
bulletSoftBodyConfig.h
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.h
10 * @author enn0x
11 * @date 2010-04-12
12 */
13
14#ifndef __BULLET_SOFT_BODY_CONFIG_H__
15#define __BULLET_SOFT_BODY_CONFIG_H__
16
17#include "pandabase.h"
18
19#include "bullet_includes.h"
20
21#include "numeric_types.h"
22
23/**
24 *
25 */
26class EXPCL_PANDABULLET BulletSoftBodyConfig {
27
28PUBLISHED:
29 INLINE ~BulletSoftBodyConfig();
30
31 enum CollisionFlag {
32 CF_rigid_vs_soft_mask = 0x000f, // RVSmask: Rigid versus soft mask
33 CF_sdf_rigid_soft = 0x0001, // SDF_RS: SDF based rigid vs soft
34 CF_cluster_rigid_soft = 0x0002, // CL_RS: Cluster vs convex rigid vs soft
35 CF_soft_vs_soft_mask = 0x0030, // SVSmask: Soft versus soft mask
36 CF_vertex_face_soft_soft = 0x0010, // VF_SS: Vertex vs face soft vs soft handling
37 CF_cluster_soft_soft = 0x0020, // CL_SS: Cluster vs cluster soft vs soft handling
38 CF_cluster_self = 0x0040, // CL_SELF: Cluster soft body self collision
39 };
40
41 enum AeroModel {
42 AM_vertex_point, // V_Point: Vertex normals are oriented toward velocity
43 AM_vertex_two_sided, // V_TwoSided: Vertex normals are fliped to match velocity
44 AM_vertex_one_sided, // V_OneSided: Vertex normals are taken as it is
45 AM_face_two_sided, // F_TwoSided: Face normals are fliped to match velocity
46 AM_face_one_sided, // F_OneSided: Face normals are taken as it is
47 };
48
49 void clear_all_collision_flags();
50 void set_collision_flag(CollisionFlag flag, bool value);
51 bool get_collision_flag(CollisionFlag flag) const;
52
53 void set_aero_model(AeroModel value);
54 AeroModel get_aero_model() const;
55
56 void set_velocities_correction_factor(PN_stdfloat value);
57 void set_damping_coefficient(PN_stdfloat value);
58 void set_drag_coefficient(PN_stdfloat value);
59 void set_lift_coefficient(PN_stdfloat value);
60 void set_pressure_coefficient(PN_stdfloat value);
61 void set_volume_conservation_coefficient(PN_stdfloat value);
62 void set_dynamic_friction_coefficient(PN_stdfloat value);
63 void set_pose_matching_coefficient(PN_stdfloat value);
64 void set_rigid_contacts_hardness(PN_stdfloat value);
65 void set_kinetic_contacts_hardness(PN_stdfloat value);
66 void set_soft_contacts_hardness(PN_stdfloat value);
67 void set_anchors_hardness(PN_stdfloat value);
68 void set_soft_vs_rigid_hardness(PN_stdfloat value);
69 void set_soft_vs_kinetic_hardness(PN_stdfloat value);
70 void set_soft_vs_soft_hardness(PN_stdfloat value);
71 void set_soft_vs_rigid_impulse_split(PN_stdfloat value);
72 void set_soft_vs_kinetic_impulse_split(PN_stdfloat value);
73 void set_soft_vs_soft_impulse_split(PN_stdfloat value);
74 void set_maxvolume(PN_stdfloat value);
75 void set_timescale(PN_stdfloat value);
76 void set_positions_solver_iterations(int value);
77 void set_velocities_solver_iterations(int value);
78 void set_drift_solver_iterations( int value);
79 void set_cluster_solver_iterations(int value);
80
81 PN_stdfloat get_velocities_correction_factor() const;
82 PN_stdfloat get_damping_coefficient() const;
83 PN_stdfloat get_drag_coefficient() const;
84 PN_stdfloat get_lift_coefficient() const;
85 PN_stdfloat get_pressure_coefficient() const;
86 PN_stdfloat get_volume_conservation_coefficient() const;
87 PN_stdfloat get_dynamic_friction_coefficient() const;
88 PN_stdfloat get_pose_matching_coefficient() const;
89 PN_stdfloat get_rigid_contacts_hardness() const;
90 PN_stdfloat get_kinetic_contacts_hardness() const;
91 PN_stdfloat get_soft_contacts_hardness() const;
92 PN_stdfloat get_anchors_hardness() const;
93 PN_stdfloat get_soft_vs_rigid_hardness() const;
94 PN_stdfloat get_soft_vs_kinetic_hardness() const;
95 PN_stdfloat get_soft_vs_soft_hardness() const;
96 PN_stdfloat get_soft_vs_rigid_impulse_split() const;
97 PN_stdfloat get_soft_vs_kinetic_impulse_split() const;
98 PN_stdfloat get_soft_vs_soft_impulse_split() const;
99 PN_stdfloat get_maxvolume() const;
100 PN_stdfloat get_timescale() const;
101 int get_positions_solver_iterations() const;
102 int get_velocities_solver_iterations() const;
103 int get_drift_solver_iterations() const;
104 int get_cluster_solver_iterations() const;
105
106 MAKE_PROPERTY(aero_model, get_aero_model, set_aero_model);
107 MAKE_PROPERTY(velocities_correction_factor, get_velocities_correction_factor, set_velocities_correction_factor);
108 MAKE_PROPERTY(damping_coefficient, get_damping_coefficient, set_damping_coefficient);
109 MAKE_PROPERTY(drag_coefficient, get_drag_coefficient, set_drag_coefficient);
110 MAKE_PROPERTY(lift_coefficient, get_lift_coefficient, set_lift_coefficient);
111 MAKE_PROPERTY(pressure_coefficient, get_pressure_coefficient, set_pressure_coefficient);
112 MAKE_PROPERTY(volume_conservation_coefficient, get_volume_conservation_coefficient, set_volume_conservation_coefficient);
113 MAKE_PROPERTY(dynamic_friction_coefficient, get_dynamic_friction_coefficient, set_dynamic_friction_coefficient);
114 MAKE_PROPERTY(pose_matching_coefficient, get_pose_matching_coefficient, set_pose_matching_coefficient);
115 MAKE_PROPERTY(rigid_contacts_hardness, get_rigid_contacts_hardness, set_rigid_contacts_hardness);
116 MAKE_PROPERTY(kinetic_contacts_hardness, get_kinetic_contacts_hardness, set_kinetic_contacts_hardness);
117 MAKE_PROPERTY(soft_contacts_hardness, get_soft_contacts_hardness, set_soft_contacts_hardness);
118 MAKE_PROPERTY(anchors_hardness, get_anchors_hardness, set_anchors_hardness);
119 MAKE_PROPERTY(soft_vs_rigid_hardness, get_soft_vs_rigid_hardness, set_soft_vs_rigid_hardness);
120 MAKE_PROPERTY(soft_vs_kinetic_hardness, get_soft_vs_kinetic_hardness, set_soft_vs_kinetic_hardness);
121 MAKE_PROPERTY(soft_vs_soft_hardness, get_soft_vs_soft_hardness, set_soft_vs_soft_hardness);
122 MAKE_PROPERTY(soft_vs_rigid_impulse_split, get_soft_vs_rigid_impulse_split, set_soft_vs_rigid_impulse_split);
123 MAKE_PROPERTY(soft_vs_kinetic_impulse_split, get_soft_vs_kinetic_impulse_split, set_soft_vs_kinetic_impulse_split);
124 MAKE_PROPERTY(soft_vs_soft_impulse_split, get_soft_vs_soft_impulse_split, set_soft_vs_soft_impulse_split);
125 MAKE_PROPERTY(maxvolume, get_maxvolume, set_maxvolume);
126 MAKE_PROPERTY(timescale, get_timescale, set_timescale);
127 MAKE_PROPERTY(positions_solver_iterations, get_positions_solver_iterations, set_positions_solver_iterations);
128 MAKE_PROPERTY(velocities_solver_iterations, get_velocities_solver_iterations, set_velocities_solver_iterations);
129 MAKE_PROPERTY(drift_solver_iterations, get_drift_solver_iterations, set_drift_solver_iterations);
130 MAKE_PROPERTY(cluster_solver_iterations, get_cluster_solver_iterations, set_cluster_solver_iterations);
131
132public:
133 BulletSoftBodyConfig(btSoftBody::Config &cfg);
134
135private:
136 btSoftBody::Config &_cfg;
137};
138
139#include "bulletSoftBodyConfig.I"
140
141#endif // __BULLET_SOFT_BODY_CONFIG_H__
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.