00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include "physxBoxController.h"
00016 #include "physxManager.h"
00017
00018 TypeHandle PhysxBoxController::_type_handle;
00019
00020
00021
00022
00023
00024
00025 void PhysxBoxController::
00026 link(NxController *controllerPtr) {
00027
00028 nassertv(controllerPtr->getType() == NX_CONTROLLER_BOX);
00029
00030
00031 _ptr = (NxBoxController *)controllerPtr;
00032 _error_type = ET_ok;
00033
00034 PhysxScene *scene = (PhysxScene *)_ptr->getActor()->getScene().userData;
00035 scene->_controllers.add(this);
00036
00037
00038 PT(PhysxActor) actor = new PhysxActor();
00039 actor->link(_ptr->getActor());
00040 actor->link_controller(this);
00041 }
00042
00043
00044
00045
00046
00047
00048 void PhysxBoxController::
00049 unlink() {
00050
00051
00052 PT(PhysxActor) actor = (PhysxActor *)ptr()->getActor()->userData;
00053 actor->unlink();
00054
00055
00056 _error_type = ET_released;
00057
00058 PhysxScene *scene = (PhysxScene *)_ptr->getActor()->getScene().userData;
00059 scene->_controllers.remove(this);
00060 }
00061
00062
00063
00064
00065
00066
00067 void PhysxBoxController::
00068 set_extents(const LVector3f &extents) {
00069
00070 nassertv(_error_type == ET_ok);
00071 _ptr->setExtents(PhysxManager::vec3_to_nxVec3(extents));
00072 }
00073
00074
00075
00076
00077
00078
00079 LVector3f PhysxBoxController::
00080 get_extents() const {
00081
00082 nassertr(_error_type == ET_ok, LVector3f::zero());
00083 return PhysxManager::nxVec3_to_vec3(_ptr->getExtents());
00084 }
00085