gmflib: add wheel constraint (for car steering)
parent
3af511b650
commit
85d8bc5ea8
|
@ -71,7 +71,6 @@ dependencies = [
|
|||
"env_logger",
|
||||
"gmflib",
|
||||
"log",
|
||||
"serde_json",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
|
@ -762,6 +762,7 @@ pub struct ConstraintList {
|
|||
|
||||
#[derive(Debug,Serialize)]
|
||||
pub enum Constraint {
|
||||
Wheel(WheelConstraint),
|
||||
Hinge(HingeConstraint),
|
||||
PointToPoint(PointToPointConstraint),
|
||||
}
|
||||
|
@ -770,6 +771,7 @@ impl gmi::Serializable for Constraint {
|
|||
fn read<R: io::Read>(r: &mut gmi::ReadStream<R>) -> gmi::ReadResult<Self> {
|
||||
let tlv = r.tlv()?;
|
||||
let res = match (tlv.tag, tlv.flags) {
|
||||
(46, 2) => Constraint::Wheel(r.read("pivot")?),
|
||||
(47, 2) => Constraint::Hinge(r.read("hinge")?),
|
||||
(53, 2) => Constraint::PointToPoint(r.read("pointtopoint")?),
|
||||
_ => return Err(r.error(format!("unknown constraint type ({}, {})", tlv.tag, tlv.flags))),
|
||||
|
@ -782,12 +784,39 @@ impl gmi::Serializable for Constraint {
|
|||
impl gma::Serializable for Constraint {
|
||||
fn write<W: io::Write, S: string::ToString>(&self, _name: S, w: &mut gma::WriteStream<W>) -> gma::WriteResult<()> {
|
||||
match self {
|
||||
Constraint::Wheel(o) => o.write("", w),
|
||||
Constraint::Hinge(o) => o.write("", w),
|
||||
Constraint::PointToPoint(o) => o.write("", w),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug,GMISerializable,GMASerializable,Serialize)]
|
||||
#[gma_name("GMID_HAVOK_WHEEL_CONSTRAINT")]
|
||||
pub struct WheelConstraint {
|
||||
#[gma_name("NODE_NAME")]
|
||||
pub name: String,
|
||||
pub tm: TransformMatrix,
|
||||
#[gma_name("BODY1")]
|
||||
pub body1: String,
|
||||
#[gma_name("BODY2")]
|
||||
pub body2: String,
|
||||
#[gma_name("POINT")]
|
||||
pub point: [f32; 3],
|
||||
#[gma_name("SPIN_AXIS")]
|
||||
pub spin_axis: [f32; 3],
|
||||
#[gma_name("SUSPENSION_AXIS")]
|
||||
pub suspensions_axis: [f32; 3],
|
||||
#[gma_name("SUSPENSION_LIMITS")]
|
||||
pub suspensions_limits: [f32; 2],
|
||||
#[gma_name("SUSPENSION_FRICTION")]
|
||||
pub suspension_fiction: f32,
|
||||
#[gma_name("ANGULAR_SPEED")]
|
||||
pub angular_speed: f32,
|
||||
#[gma_name("GAIN")]
|
||||
pub gain: f32,
|
||||
}
|
||||
|
||||
#[derive(Debug,GMISerializable,GMASerializable,Serialize)]
|
||||
#[gma_name("GMID_HAVOK_HINGE_CONSTRAINT")]
|
||||
pub struct HingeConstraint {
|
||||
|
|
Loading…
Reference in New Issue