1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
// Author: Tom Olsson <tom.olsson@embark-studios.com>
// Copyright © 2019, Embark Studios, all rights reserved.
// Created: 16 April 2019
#![warn(clippy::all)]
/*!
*/
use crate::{math::PxQuat, traits::Class};
use physx_sys::{
PxArticulationJointDriveType, PxArticulationJoint_setDriveType_mut,
PxArticulationJoint_setTargetOrientation_mut,
/* TODO implement!
PxArticulationJoint_getDamping,
PxArticulationJoint_getDriveType,
PxArticulationJoint_getExternalCompliance,
PxArticulationJoint_getInternalCompliance,
PxArticulationJoint_getStiffness,
PxArticulationJoint_getSwingLimit,
PxArticulationJoint_getSwingLimitContactDistance,
PxArticulationJoint_getSwingLimitEnabled,
PxArticulationJoint_getTangentialDamping,
PxArticulationJoint_getTangentialStiffness,
PxArticulationJoint_getTargetOrientation,
PxArticulationJoint_getTargetVelocity,
PxArticulationJoint_getTwistLimit,
PxArticulationJoint_getTwistLimitContactDistance,
PxArticulationJoint_getTwistLimitEnabled,
PxArticulationJoint_setDamping_mut,
PxArticulationJoint_setExternalCompliance_mut,
PxArticulationJoint_setInternalCompliance_mut,
PxArticulationJoint_setStiffness_mut,
PxArticulationJoint_setSwingLimit_mut,
PxArticulationJoint_setSwingLimitContactDistance_mut,
PxArticulationJoint_setSwingLimitEnabled_mut,
PxArticulationJoint_setTangentialDamping_mut,
PxArticulationJoint_setTangentialStiffness_mut,
PxArticulationJoint_setTargetVelocity_mut,
PxArticulationJoint_setTwistLimit_mut,
PxArticulationJoint_setTwistLimitContactDistance_mut,
PxArticulationJoint_setTwistLimitEnabled_mut,
*/
//PxArticulationJoint_getConcreteTypeName,
};
/*******************************************************************************
* Section ENUMS *
******************************************************************************/
#[derive(Debug, Clone, Copy)]
pub enum ArticulationJointDriveType {
Target,
Error,
}
impl From<ArticulationJointDriveType> for PxArticulationJointDriveType::Enum {
fn from(value: ArticulationJointDriveType) -> Self {
match value {
ArticulationJointDriveType::Target => PxArticulationJointDriveType::eTARGET,
ArticulationJointDriveType::Error => PxArticulationJointDriveType::eERROR,
}
}
}
/*******************************************************************************
* Section ARTICULATIONJOINT *
*******************************************************************************/
/// A new type wrapper for PxArticulationJoint.
#[repr(transparent)]
pub struct ArticulationJoint {
obj: physx_sys::PxArticulationJoint,
}
crate::DeriveClassForNewType!(
ArticulationJoint: PxArticulationJoint,
PxArticulationJointBase,
PxBase
);
unsafe impl Send for ArticulationJoint {}
unsafe impl Sync for ArticulationJoint {}
impl ArticulationJoint {
/// set drive type of the associated joints
pub fn set_drive_type(&mut self, drive_type: ArticulationJointDriveType) {
unsafe { PxArticulationJoint_setDriveType_mut(self.as_mut_ptr(), drive_type.into()) }
}
/// not implemented yet, not work for reduced coordinate
pub fn set_target_orientation(&mut self, quat: &PxQuat) {
unsafe { PxArticulationJoint_setTargetOrientation_mut(self.as_mut_ptr(), quat.as_ptr()) };
}
}