Integrate engine into application prototype #15

Merged
glen merged 24 commits from engine-integration into main 2024-11-12 00:46:16 +00:00
2 changed files with 16 additions and 6 deletions
Showing only changes of commit e5f4d523f9 - Show all commits

View File

@ -214,10 +214,11 @@ pub fn AddRemove() -> View {
(arg_vec[0].clone(), arg_vec[1].clone()) (arg_vec[0].clone(), arg_vec[1].clone())
} }
); );
let active = create_signal(true);
state.assembly.insert_constraint(Constraint { state.assembly.insert_constraint(Constraint {
args: args, args: args,
rep: 0.0, rep: 0.0,
active: create_signal(true) active: active
}); });
state.assembly.realize(); state.assembly.realize();
state.selection.update(|sel| sel.clear()); state.selection.update(|sel| sel.clear());
@ -236,6 +237,13 @@ pub fn AddRemove() -> View {
); );
} }
}); });
// make constraint activation trigger a realization update
create_effect(move || {
if active.get() {
state.assembly.realize();
}
});
} }
) { "🔗" } ) { "🔗" }
select(bind:value=assembly_name) { /* DEBUG */ select(bind:value=assembly_name) { /* DEBUG */

View File

@ -97,7 +97,7 @@ impl Assembly {
self.elements.update(|elts| { self.elements.update(|elts| {
elts[args.0].constraints.insert(key); elts[args.0].constraints.insert(key);
elts[args.1].constraints.insert(key); elts[args.1].constraints.insert(key);
}) });
} }
// --- realization --- // --- realization ---
@ -116,11 +116,13 @@ impl Assembly {
let mut gram_to_be = PartialMatrix::new(); let mut gram_to_be = PartialMatrix::new();
self.constraints.with_untracked(|csts| { self.constraints.with_untracked(|csts| {
for (_, cst) in csts { for (_, cst) in csts {
if cst.active.get_untracked() {
let args = cst.args; let args = cst.args;
let row = elts[args.0].index; let row = elts[args.0].index;
let col = elts[args.1].index; let col = elts[args.1].index;
gram_to_be.push_sym(row, col, cst.rep); gram_to_be.push_sym(row, col, cst.rep);
} }
}
}); });
// set up the initial configuration matrix and the diagonal of the // set up the initial configuration matrix and the diagonal of the