add velocity command
This commit is contained in:
parent
e29a8abebf
commit
93cc607613
|
@ -40,6 +40,7 @@ struct ParserState {
|
||||||
model: String,
|
model: String,
|
||||||
model_scale: f32,
|
model_scale: f32,
|
||||||
rotation: Quat,
|
rotation: Quat,
|
||||||
|
velocity: DVec3,
|
||||||
angular_momentum: DVec3,
|
angular_momentum: DVec3,
|
||||||
pronoun: String,
|
pronoun: String,
|
||||||
is_sphere: bool,
|
is_sphere: bool,
|
||||||
|
@ -92,6 +93,7 @@ impl Default for ParserState {
|
||||||
model: "".to_string(),
|
model: "".to_string(),
|
||||||
model_scale: 1.0,
|
model_scale: 1.0,
|
||||||
rotation: Quat::IDENTITY,
|
rotation: Quat::IDENTITY,
|
||||||
|
velocity: DVec3::splat(0.0),
|
||||||
angular_momentum: DVec3::new(0.03, 0.3, 0.09),
|
angular_momentum: DVec3::new(0.03, 0.3, 0.09),
|
||||||
pronoun: "they/them".to_string(),
|
pronoun: "they/them".to_string(),
|
||||||
is_sphere: false,
|
is_sphere: false,
|
||||||
|
@ -327,6 +329,16 @@ pub fn load_defs(
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
["velocity", x, y, z] => {
|
||||||
|
if let (Ok(x_float), Ok(y_float), Ok(z_float)) =
|
||||||
|
(x.parse::<f64>(), y.parse::<f64>(), z.parse::<f64>()) {
|
||||||
|
state.velocity = DVec3::new(x_float, y_float, z_float);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
error!("Can't parse float: {line}");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
["angularmomentum", x, y, z] => {
|
["angularmomentum", x, y, z] => {
|
||||||
if let (Ok(x_float), Ok(y_float), Ok(z_float)) =
|
if let (Ok(x_float), Ok(y_float), Ok(z_float)) =
|
||||||
(x.parse::<f64>(), y.parse::<f64>(), z.parse::<f64>()) {
|
(x.parse::<f64>(), y.parse::<f64>(), z.parse::<f64>()) {
|
||||||
|
@ -604,6 +616,7 @@ fn spawn_entities(
|
||||||
if state.has_physics {
|
if state.has_physics {
|
||||||
let fix_scale: f64 = 1.0 / (state.model_scale as f64).powf(3.0);
|
let fix_scale: f64 = 1.0 / (state.model_scale as f64).powf(3.0);
|
||||||
actor.insert(RigidBody::Dynamic);
|
actor.insert(RigidBody::Dynamic);
|
||||||
|
actor.insert(LinearVelocity(state.velocity));
|
||||||
actor.insert(AngularVelocity(state.angular_momentum));
|
actor.insert(AngularVelocity(state.angular_momentum));
|
||||||
actor.insert(ColliderDensity((state.mass * fix_scale) as f64));
|
actor.insert(ColliderDensity((state.mass * fix_scale) as f64));
|
||||||
if state.collider_is_mesh {
|
if state.collider_is_mesh {
|
||||||
|
|
Loading…
Reference in a new issue