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 Into<PxArticulationJointDriveType::Enum> for ArticulationJointDriveType { fn into(self) -> PxArticulationJointDriveType::Enum { match self { 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()) }; } }