本文整理汇总了C++中JointSW类的典型用法代码示例。如果您正苦于以下问题:C++ JointSW类的具体用法?C++ JointSW怎么用?C++ JointSW使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了JointSW类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: joint_get_solver_priority
int PhysicsServerSW::joint_get_solver_priority(RID p_joint) const{
JointSW *joint = joint_owner.get(p_joint);
ERR_FAIL_COND_V(!joint,0);
return joint->get_priority();
}
示例2: joint_get_type
PhysicsServer::JointType PhysicsServerSW::joint_get_type(RID p_joint) const {
JointSW *joint = joint_owner.get(p_joint);
ERR_FAIL_COND_V(!joint,JOINT_PIN);
return joint->get_type();
}
示例3: ERR_FAIL_COND_V
bool PhysicsServerSW::hinge_joint_get_flag(RID p_joint,HingeJointFlag p_flag) const{
JointSW *joint = joint_owner.get(p_joint);
ERR_FAIL_COND_V(!joint,false);
ERR_FAIL_COND_V(joint->get_type()!=JOINT_HINGE,false);
HingeJointSW *hinge_joint = static_cast<HingeJointSW*>(joint);
return hinge_joint->get_flag(p_flag);
}
示例4: ERR_FAIL_COND_V
Vector3 PhysicsServerSW::pin_joint_get_local_b(RID p_joint) const {
JointSW *joint = joint_owner.get(p_joint);
ERR_FAIL_COND_V(!joint, Vector3());
ERR_FAIL_COND_V(joint->get_type() != JOINT_PIN, Vector3());
PinJointSW *pin_joint = static_cast<PinJointSW *>(joint);
return pin_joint->get_position_b();
}
示例5: ERR_FAIL_COND
void PhysicsServerSW::pin_joint_set_local_b(RID p_joint, const Vector3 &p_B) {
JointSW *joint = joint_owner.get(p_joint);
ERR_FAIL_COND(!joint);
ERR_FAIL_COND(joint->get_type() != JOINT_PIN);
PinJointSW *pin_joint = static_cast<PinJointSW *>(joint);
pin_joint->set_pos_b(p_B);
}
示例6: ERR_FAIL_COND
void PhysicsServerSW::slider_joint_set_param(RID p_joint,SliderJointParam p_param, float p_value){
JointSW *joint = joint_owner.get(p_joint);
ERR_FAIL_COND(!joint);
ERR_FAIL_COND(joint->get_type()!=JOINT_SLIDER);
SliderJointSW *slider_joint = static_cast<SliderJointSW*>(joint);
slider_joint->set_param(p_param,p_value);
}
示例7: joint_set_param
void PhysicsServerSW::joint_set_param(RID p_joint, JointParam p_param, real_t p_value) {
JointSW *joint = joint_owner.get(p_joint);
ERR_FAIL_COND(!joint);
switch(p_param) {
case JOINT_PARAM_BIAS: joint->set_bias(p_value); break;
case JOINT_PARAM_MAX_BIAS: joint->set_max_bias(p_value); break;
case JOINT_PARAM_MAX_FORCE: joint->set_max_force(p_value); break;
}
}
示例8: joint_disable_collisions_between_bodies
void PhysicsServerSW::joint_disable_collisions_between_bodies(RID p_joint, const bool p_disable) {
JointSW *joint = joint_owner.get(p_joint);
ERR_FAIL_COND(!joint);
joint->disable_collisions_between_bodies(p_disable);
if (2 == joint->get_body_count()) {
BodySW *body_a = *joint->get_body_ptr();
BodySW *body_b = *(joint->get_body_ptr() + 1);
if (p_disable) {
body_add_collision_exception(body_a->get_self(), body_b->get_self());
body_add_collision_exception(body_b->get_self(), body_a->get_self());
} else {
body_remove_collision_exception(body_a->get_self(), body_b->get_self());
body_remove_collision_exception(body_b->get_self(), body_a->get_self());
}
}
}
示例9: while
void PhysicsServerSW::free(RID p_rid) {
if (shape_owner.owns(p_rid)) {
ShapeSW *shape = shape_owner.get(p_rid);
while(shape->get_owners().size()) {
ShapeOwnerSW *so=shape->get_owners().front()->key();
so->remove_shape(shape);
}
shape_owner.free(p_rid);
memdelete(shape);
} else if (body_owner.owns(p_rid)) {
BodySW *body = body_owner.get(p_rid);
// if (body->get_state_query())
// _clear_query(body->get_state_query());
// if (body->get_direct_state_query())
// _clear_query(body->get_direct_state_query());
body->set_space(NULL);
while( body->get_shape_count() ) {
body->remove_shape(0);
}
while (body->get_constraint_map().size()) {
RID self = body->get_constraint_map().front()->key()->get_self();
ERR_FAIL_COND(!self.is_valid());
free(self);
}
body_owner.free(p_rid);
memdelete(body);
} else if (area_owner.owns(p_rid)) {
AreaSW *area = area_owner.get(p_rid);
// if (area->get_monitor_query())
// _clear_query(area->get_monitor_query());
area->set_space(NULL);
while( area->get_shape_count() ) {
area->remove_shape(0);
}
area_owner.free(p_rid);
memdelete(area);
} else if (space_owner.owns(p_rid)) {
SpaceSW *space = space_owner.get(p_rid);
while(space->get_objects().size()) {
CollisionObjectSW *co = (CollisionObjectSW *)space->get_objects().front()->get();
co->set_space(NULL);
}
active_spaces.erase(space);
free(space->get_default_area()->get_self());
free(space->get_static_global_body());
space_owner.free(p_rid);
memdelete(space);
} else if (joint_owner.owns(p_rid)) {
JointSW *joint = joint_owner.get(p_rid);
for(int i=0;i<joint->get_body_count();i++) {
joint->get_body_ptr()[i]->remove_constraint(joint);
}
joint_owner.free(p_rid);
memdelete(joint);
} else {
ERR_EXPLAIN("Invalid ID");
ERR_FAIL();
}
};
示例10: joint_set_solver_priority
void PhysicsServerSW::joint_set_solver_priority(RID p_joint,int p_priority) {
JointSW *joint = joint_owner.get(p_joint);
ERR_FAIL_COND(!joint);
joint->set_priority(p_priority);
}
示例11: joint_is_disabled_collisions_between_bodies
bool PhysicsServerSW::joint_is_disabled_collisions_between_bodies(RID p_joint) const {
JointSW *joint = joint_owner.get(p_joint);
ERR_FAIL_COND_V(!joint, true);
return joint->is_disabled_collisions_between_bodies();
}