Panda3D
physxActorDesc.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 physxActorDesc.cxx
10  * @author enn0x
11  * @date 2009-09-05
12  */
13 
14 #include "physxActorDesc.h"
15 #include "physxBodyDesc.h"
16 #include "physxManager.h"
17 
18 /**
19  * Adds a shape to the list of collision shapes composing this actor.
20  */
23 
24  _desc.shapes.push_back(desc.ptr());
25 }
26 
27 /**
28  * Sets the optional debug name for the actor.
29  */
31 set_name(const char *name) {
32 
33  _name = name ? name : "";
34  _desc.name = _name.c_str();
35 }
36 
37 /**
38  * Set the density used during mass/intertia computation. This value is used
39  * if the actor's shapes do not have a mass asigned.
40  */
42 set_density(float density) {
43 
44  _desc.density = density;
45 }
46 
47 /**
48  * Set the position of the actor in global space.
49  */
51 set_global_pos(const LPoint3f &pos) {
52 
53  _desc.globalPose.t = PhysxManager::point3_to_nxVec3(pos);
54 }
55 
56 /**
57  * Set the position and orientation of the actor in global space. Scaling and
58  * shear arenot supported, even if the matrix contains a scale or shear.
59  */
61 set_global_mat(const LMatrix4f &mat) {
62 
63  _desc.globalPose = PhysxManager::mat4_to_nxMat34(mat);
64 }
65 
66 /**
67  * Sets the orientation of the actor in global space by providing angles for
68  * heading, pitch and roll.
69  */
71 set_global_hpr(float h, float p, float r) {
72 
73  LQuaternionf q;
74  LMatrix3f rot;
75  NxMat34 m;
76 
77  q.set_hpr(LVector3f(h, p, r));
78  q.extract_to_matrix(rot);
79 
80  _desc.globalPose.M = PhysxManager::mat3_to_nxMat33(rot);
81 }
82 
83 /**
84  * Sets the body descriptor for this actor. The actor will be dynmaic if a
85  * body descriptor is set, and static if no body descriptor is set.
86  */
89 
90  _desc.body = &(desc._desc);
91 }
92 
93 /**
94  * Gets the body descriptor for this actor.
95  */
97 get_body() const {
98  assert(false /* Not implemented */);
99 
100  // PhysxBodyDesc value; value._desc = *(_desc.body); return value;
101  return PhysxBodyDesc();
102 }
103 
104 /**
105  * Returns the optional debug name for this actor.
106  */
107 const char *PhysxActorDesc::
108 get_name() const {
109 
110  return _desc.name;
111 }
112 
113 /**
114  * Returns the actor's density.
115  */
116 float PhysxActorDesc::
117 get_density() const {
118 
119  return _desc.density;
120 }
121 
122 /**
123  * Returns the actor's position in global space.
124  */
125 LPoint3f PhysxActorDesc::
126 get_global_pos() const {
127 
128  return PhysxManager::nxVec3_to_point3(_desc.globalPose.t);
129 }
130 
131 /**
132  * Returns the actor's transform in global space.
133  */
134 LMatrix4f PhysxActorDesc::
135 get_global_mat() const {
136 
137  return PhysxManager::nxMat34_to_mat4(_desc.globalPose);
138 }
static NxVec3 point3_to_nxVec3(const LPoint3f &p)
Converts from LPoint3f to NxVec3.
Definition: physxManager.I:63
void set_global_pos(const LPoint3f &pos)
Set the position of the actor in global space.
const char * get_name() const
Returns the optional debug name for this actor.
void set_global_hpr(float h, float p, float r)
Sets the orientation of the actor in global space by providing angles for heading,...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
void add_shape(PhysxShapeDesc &desc)
Adds a shape to the list of collision shapes composing this actor.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
static NxMat34 mat4_to_nxMat34(const LMatrix4f &m)
Converts from LMatrix4f to NxMat34.
Definition: physxManager.I:119
float get_density() const
Returns the actor's density.
void set_density(float density)
Set the density used during mass/intertia computation.
void set_body(PhysxBodyDesc &desc)
Sets the body descriptor for this actor.
LMatrix4f get_global_mat() const
Returns the actor's transform in global space.
PhysxBodyDesc get_body() const
Gets the body descriptor for this actor.
static NxMat33 mat3_to_nxMat33(const LMatrix3f &m)
Converts from LMatrix3f to NxMat33.
Definition: physxManager.I:139
LPoint3f get_global_pos() const
Returns the actor's position in global space.
Abstract base class for shape descriptors.
static LPoint3f nxVec3_to_point3(const NxVec3 &p)
Converts from NxVec3 to LPoint3f.
Definition: physxManager.I:72
Descriptor for the optional rigid body dynamic state of PhysxActor.
Definition: physxBodyDesc.h:26
static LMatrix4f nxMat34_to_mat4(const NxMat34 &m)
Converts from NxMat34 to LMatrix4f.
Definition: physxManager.I:130
void set_name(const char *name)
Sets the optional debug name for the actor.
void set_global_mat(const LMatrix4f &mat)
Set the position and orientation of the actor in global space.