Skip to content

Commit

Permalink
only get needed repeater inputs
Browse files Browse the repository at this point in the history
  • Loading branch information
BramOtte committed Oct 17, 2023
1 parent 0ab7add commit b8b82c2
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions crates/core/src/redpiler/backend/direct.rs
Original file line number Diff line number Diff line change
Expand Up @@ -605,6 +605,10 @@ fn get_bool_input(node: &Node) -> bool {
u128::from_ne_bytes(node.default_inputs) & INPUT_MASK != 0
}

fn get_bool_side(node: &Node) -> bool {
u128::from_ne_bytes(node.side_inputs) & INPUT_MASK != 0
}

fn last_index_positive(array: &[u8; 16]) -> u32 {
// Note: this might be slower on big-endian systems
let value = u128::from_le_bytes(*array);
Expand All @@ -625,17 +629,16 @@ fn update_node(scheduler: &mut TickScheduler, nodes: &mut Nodes, node_id: NodeId

match node.ty {
NodeType::Repeater(delay) => {
let (input_power, side_input_power) = get_all_input(node);
let node = &mut nodes[node_id];
let should_be_locked = side_input_power > 0;
let should_be_locked = get_bool_side(node);
if !node.locked && should_be_locked {
set_node_locked(node, true);
} else if node.locked && !should_be_locked {
set_node_locked(node, false);
}

if !node.locked && !node.pending_tick {
let should_be_powered = input_power > 0;
let should_be_powered = get_bool_input(node);
if should_be_powered != node.powered {
let priority = if node.facing_diode {
TickPriority::Highest
Expand Down

0 comments on commit b8b82c2

Please sign in to comment.