Enforce constraints in the editor

This commit is contained in:
Aaron Fenyes 2024-10-26 23:51:27 -07:00
parent ce33bbf418
commit a37c71153d
3 changed files with 151 additions and 36 deletions

View file

@ -12,7 +12,8 @@ fn load_gen_assemb(assembly: &Assembly) {
label: String::from("Castor"),
color: [1.00_f32, 0.25_f32, 0.00_f32],
rep: engine::sphere(0.5, 0.5, 0.0, 1.0),
constraints: BTreeSet::default()
constraints: BTreeSet::default(),
index: 0
}
);
let _ = assembly.try_insert_element(
@ -21,7 +22,8 @@ fn load_gen_assemb(assembly: &Assembly) {
label: String::from("Pollux"),
color: [0.00_f32, 0.25_f32, 1.00_f32],
rep: engine::sphere(-0.5, -0.5, 0.0, 1.0),
constraints: BTreeSet::default()
constraints: BTreeSet::default(),
index: 0
}
);
let _ = assembly.try_insert_element(
@ -30,7 +32,8 @@ fn load_gen_assemb(assembly: &Assembly) {
label: String::from("Ursa major"),
color: [0.25_f32, 0.00_f32, 1.00_f32],
rep: engine::sphere(-0.5, 0.5, 0.0, 0.75),
constraints: BTreeSet::default()
constraints: BTreeSet::default(),
index: 0
}
);
let _ = assembly.try_insert_element(
@ -39,7 +42,8 @@ fn load_gen_assemb(assembly: &Assembly) {
label: String::from("Ursa minor"),
color: [0.25_f32, 1.00_f32, 0.00_f32],
rep: engine::sphere(0.5, -0.5, 0.0, 0.5),
constraints: BTreeSet::default()
constraints: BTreeSet::default(),
index: 0
}
);
let _ = assembly.try_insert_element(
@ -48,7 +52,8 @@ fn load_gen_assemb(assembly: &Assembly) {
label: String::from("Deimos"),
color: [0.75_f32, 0.75_f32, 0.00_f32],
rep: engine::sphere(0.0, 0.15, 1.0, 0.25),
constraints: BTreeSet::default()
constraints: BTreeSet::default(),
index: 0
}
);
let _ = assembly.try_insert_element(
@ -57,17 +62,8 @@ fn load_gen_assemb(assembly: &Assembly) {
label: String::from("Phobos"),
color: [0.00_f32, 0.75_f32, 0.50_f32],
rep: engine::sphere(0.0, -0.15, -1.0, 0.25),
constraints: BTreeSet::default()
}
);
assembly.insert_constraint(
Constraint {
args: (
assembly.elements_by_id.with_untracked(|elts_by_id| elts_by_id["gemini_a"]),
assembly.elements_by_id.with_untracked(|elts_by_id| elts_by_id["gemini_b"])
),
rep: 0.5,
active: create_signal(true)
constraints: BTreeSet::default(),
index: 0
}
);
}
@ -81,7 +77,8 @@ fn load_low_curv_assemb(assembly: &Assembly) {
label: "Central".to_string(),
color: [0.75_f32, 0.75_f32, 0.75_f32],
rep: engine::sphere(0.0, 0.0, 0.0, 1.0),
constraints: BTreeSet::default()
constraints: BTreeSet::default(),
index: 0
}
);
let _ = assembly.try_insert_element(
@ -90,7 +87,8 @@ fn load_low_curv_assemb(assembly: &Assembly) {
label: "Assembly plane".to_string(),
color: [0.75_f32, 0.75_f32, 0.75_f32],
rep: engine::sphere_with_offset(0.0, 0.0, 1.0, 0.0, 0.0),
constraints: BTreeSet::default()
constraints: BTreeSet::default(),
index: 0
}
);
let _ = assembly.try_insert_element(
@ -99,7 +97,8 @@ fn load_low_curv_assemb(assembly: &Assembly) {
label: "Side 1".to_string(),
color: [1.00_f32, 0.00_f32, 0.25_f32],
rep: engine::sphere_with_offset(1.0, 0.0, 0.0, 1.0, 0.0),
constraints: BTreeSet::default()
constraints: BTreeSet::default(),
index: 0
}
);
let _ = assembly.try_insert_element(
@ -108,7 +107,8 @@ fn load_low_curv_assemb(assembly: &Assembly) {
label: "Side 2".to_string(),
color: [0.25_f32, 1.00_f32, 0.00_f32],
rep: engine::sphere_with_offset(-0.5, a, 0.0, 1.0, 0.0),
constraints: BTreeSet::default()
constraints: BTreeSet::default(),
index: 0
}
);
let _ = assembly.try_insert_element(
@ -117,7 +117,8 @@ fn load_low_curv_assemb(assembly: &Assembly) {
label: "Side 3".to_string(),
color: [0.00_f32, 0.25_f32, 1.00_f32],
rep: engine::sphere_with_offset(-0.5, -a, 0.0, 1.0, 0.0),
constraints: BTreeSet::default()
constraints: BTreeSet::default(),
index: 0
}
);
let _ = assembly.try_insert_element(
@ -126,7 +127,8 @@ fn load_low_curv_assemb(assembly: &Assembly) {
label: "Corner 1".to_string(),
color: [0.75_f32, 0.75_f32, 0.75_f32],
rep: engine::sphere(-4.0/3.0, 0.0, 0.0, 1.0/3.0),
constraints: BTreeSet::default()
constraints: BTreeSet::default(),
index: 0
}
);
let _ = assembly.try_insert_element(
@ -135,7 +137,8 @@ fn load_low_curv_assemb(assembly: &Assembly) {
label: "Corner 2".to_string(),
color: [0.75_f32, 0.75_f32, 0.75_f32],
rep: engine::sphere(2.0/3.0, -4.0/3.0 * a, 0.0, 1.0/3.0),
constraints: BTreeSet::default()
constraints: BTreeSet::default(),
index: 0
}
);
let _ = assembly.try_insert_element(
@ -144,7 +147,8 @@ fn load_low_curv_assemb(assembly: &Assembly) {
label: String::from("Corner 3"),
color: [0.75_f32, 0.75_f32, 0.75_f32],
rep: engine::sphere(2.0/3.0, 4.0/3.0 * a, 0.0, 1.0/3.0),
constraints: BTreeSet::default()
constraints: BTreeSet::default(),
index: 0
}
);
}
@ -215,6 +219,7 @@ pub fn AddRemove() -> View {
rep: 0.0,
active: create_signal(true)
});
state.assembly.realize();
state.selection.update(|sel| sel.clear());
/* DEBUG */