Panda3D
physxForceFieldDesc.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 physxForceFieldDesc.cxx
10  * @author enn0x
11  * @date 2009-11-06
12  */
13 
14 #include "physxForceFieldDesc.h"
17 #include "physxManager.h"
18 #include "physxActor.h"
19 
20 /**
21  *
22  */
23 void PhysxForceFieldDesc::
24 set_name(const char *name) {
25 
26  _name = name ? name : "";
27  _desc.name = _name.c_str();
28 }
29 
30 /**
31  *
32  */
33 void PhysxForceFieldDesc::
34 set_pos(const LPoint3f &pos) {
35 
36  _desc.pose.t = PhysxManager::point3_to_nxVec3(pos);
37 }
38 
39 /**
40  *
41  */
42 void PhysxForceFieldDesc::
43 set_mat(const LMatrix4f &mat) {
44 
45  _desc.pose = PhysxManager::mat4_to_nxMat34(mat);
46 }
47 
48 /**
49  *
50  */
51 void PhysxForceFieldDesc::
52 set_hpr(float h, float p, float r) {
53 
54  LQuaternionf q;
55  LMatrix3f rot;
56  NxMat34 m;
57 
58  q.set_hpr(LVector3f(h, p, r));
59  q.extract_to_matrix(rot);
60 
61  _desc.pose.M = PhysxManager::mat3_to_nxMat33(rot);
62 }
63 
64 /**
65  *
66  */
67 void PhysxForceFieldDesc::
68 set_kernel_constant(const LVector3f &constant) {
69 
70  _kernel.constant = PhysxManager::vec3_to_nxVec3(constant);
71 }
72 
73 /**
74  *
75  */
76 void PhysxForceFieldDesc::
77 set_kernel_position_target(const LPoint3f &target) {
78 
79  _kernel.positionTarget = PhysxManager::point3_to_nxVec3(target);
80 }
81 
82 /**
83  *
84  */
85 void PhysxForceFieldDesc::
86 set_kernel_velocity_target(const LVector3f &target) {
87 
88  _kernel.velocityTarget = PhysxManager::vec3_to_nxVec3(target);
89 }
90 
91 /**
92  *
93  */
94 void PhysxForceFieldDesc::
95 set_kernel_torus_radius(float radius) {
96 
97  _kernel.torusRadius = radius;
98 }
99 
100 /**
101  *
102  */
103 void PhysxForceFieldDesc::
104 set_kernel_falloff_linear(const LVector3f &falloff) {
105 
106  _kernel.falloffLinear = PhysxManager::vec3_to_nxVec3(falloff);
107 }
108 
109 /**
110  *
111  */
112 void PhysxForceFieldDesc::
113 set_kernel_falloff_quadratic(const LVector3f &falloff) {
114 
115  _kernel.falloffQuadratic = PhysxManager::vec3_to_nxVec3(falloff);
116 }
117 
118 /**
119  *
120  */
121 void PhysxForceFieldDesc::
122 set_kernel_noise(const LVector3f &noise) {
123 
124  _kernel.noise = PhysxManager::vec3_to_nxVec3(noise);
125 }
126 
127 /**
128  *
129  */
130 void PhysxForceFieldDesc::
131 set_kernel_position_multiplier(const LMatrix3f &multiplier) {
132 
133  _kernel.positionMultiplier = PhysxManager::mat3_to_nxMat33(multiplier);
134 }
135 
136 /**
137  *
138  */
139 void PhysxForceFieldDesc::
140 set_kernel_velocity_multiplier(const LMatrix3f &multiplier) {
141 
142  _kernel.velocityMultiplier = PhysxManager::mat3_to_nxMat33(multiplier);
143 }
144 
145 /**
146  *
147  */
148 void PhysxForceFieldDesc::
149 create_kernel(NxScene *scenePtr) {
150 
151  _desc.kernel = scenePtr->createForceFieldLinearKernel(_kernel);
152 }
153 
154 /**
155  *
156  */
157 void PhysxForceFieldDesc::
158 set_coordinates(PhysxForceFieldCoordinates coordinates) {
159 
160  _desc.coordinates = (NxForceFieldCoordinates) coordinates;
161 }
162 
163 /**
164  *
165  */
166 void PhysxForceFieldDesc::
167 add_include_group_shape(PhysxForceFieldShapeDesc &desc) {
168 
169  _desc.includeGroupShapes.push_back(desc.ptr());
170 }
171 
172 /**
173  *
174  */
175 void PhysxForceFieldDesc::
176 add_shape_group(PhysxForceFieldShapeGroup *group) {
177 
178  _desc.shapeGroups.push_back(group->ptr());
179 }
180 
181 /**
182  *
183  */
184 void PhysxForceFieldDesc::
185 set_actor(PhysxActor *actor) {
186 
187  _desc.actor = actor->ptr();
188 }
Actors are the main simulation objects.
Definition: physxActor.h:44
Abstract base class for descriptors for force field shapes descriptors.
static NxVec3 vec3_to_nxVec3(const LVector3f &v)
Converts from LVector3f to NxVec3.
Definition: physxManager.I:27
static NxVec3 point3_to_nxVec3(const LPoint3f &p)
Converts from LPoint3f to NxVec3.
Definition: physxManager.I:63
static NxMat34 mat4_to_nxMat34(const LMatrix4f &m)
Converts from LMatrix4f to NxMat34.
Definition: physxManager.I:119
static NxMat33 mat3_to_nxMat33(const LMatrix3f &m)
Converts from LMatrix3f to NxMat33.
Definition: physxManager.I:139
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.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.