//! Sigma world โ€” Bevy money surface (balance, send, events, sense).
//!
//! Opens the same durable graph as `cy` (`~/cyb/graph.log`) and drives
//! [`MoneyWallet`]. Hotkey: Cmd+4 ยท address `cyb://sigma`.

use bevy::prelude::*;
use cyb_core::{Cell, MoneyEvent, MoneyWallet, money_to_sense};

use super::WorldState;
use crate::shell::chrome::{CHROME_BOTTOM_H, CHROME_TOP_H};

pub struct SigmaWorldPlugin;

#[derive(Component)]
struct SigmaRoot;

#[derive(Component)]
struct SigmaBalanceLabel;

#[derive(Component)]
struct SigmaEventsLabel;

#[derive(Component)]
struct SigmaStatusLabel;

#[derive(Component)]
enum SigmaBtn {
    Fund,
    Send,
    Finalize,
    Refresh,
}

/// Live money state for the sigma world.
#[derive(Resource)]
pub struct SigmaState {
    cell: Cell,
    wallet: MoneyWallet,
    token: [u8; 32],
    peer: [u8; 32],
    balance: u64,
    tip_h: u64,
    grade4: bool,
    log: Vec<String>,
    status: String,
}

impl Default for SigmaState {
    fn default() -> Self {
        let neuron = neuron_from_identity();
        let path = default_graph_path();
        let mut cell = Cell::open(&path).unwrap_or_else(|_| Cell::ephemeral());
        let mut wallet = MoneyWallet::new(neuron).with_tip_prover();
        wallet.sync_tip_local(&cell);
        let token = label_particle("CYB");
        let peer = label_particle("bob");
        let balance = wallet.balance(&cell, &neuron, &token);
        let tip_h = wallet.tip().height;
        let grade4 = wallet.grade4();
        Self {
            cell,
            wallet,
            token,
            peer,
            balance,
            tip_h,
            grade4,
            log: vec!["sigma ready ยท fund / send / finalize".into()],
            status: format!("neuron {}โ€ฆ", hex3(&neuron)),
        }
    }
}

impl Plugin for SigmaWorldPlugin {
    fn build(&self, app: &mut App) {
        app.init_resource::<SigmaState>()
            .add_systems(OnEnter(WorldState::Sigma), setup_sigma)
            .add_systems(OnExit(WorldState::Sigma), destroy_sigma)
            .add_systems(
                Update,
                (handle_sigma_buttons, refresh_sigma_labels).run_if(in_state(WorldState::Sigma)),
            );
    }
}

fn setup_sigma(mut commands: Commands, state: Res<SigmaState>) {
    let top = CHROME_TOP_H + 12.0;
    let bottom = CHROME_BOTTOM_H + 12.0;
    commands
        .spawn((
            SigmaRoot,
            Node {
                position_type: PositionType::Absolute,
                left: Val::Px(16.0),
                right: Val::Px(16.0),
                top: Val::Px(top),
                bottom: Val::Px(bottom),
                flex_direction: FlexDirection::Column,
                row_gap: Val::Px(12.0),
                padding: UiRect::all(Val::Px(16.0)),
                ..default()
            },
            BackgroundColor(Color::srgb(0.06, 0.07, 0.09)),
        ))
        .with_children(|root| {
            root.spawn((
                Text::new("sigma ยท money"),
                TextFont {
                    font_size: 22.0,
                    ..default()
                },
                TextColor(Color::srgb(0.7, 0.95, 0.8)),
            ));
            root.spawn((
                SigmaStatusLabel,
                Text::new(state.status.clone()),
                TextFont {
                    font_size: 13.0,
                    ..default()
                },
                TextColor(Color::srgb(0.55, 0.6, 0.65)),
            ));
            root.spawn((
                SigmaBalanceLabel,
                Text::new(balance_text(&state)),
                TextFont {
                    font_size: 28.0,
                    ..default()
                },
                TextColor(Color::srgb(0.95, 0.9, 0.4)),
            ));

            // buttons row
            root.spawn(Node {
                flex_direction: FlexDirection::Row,
                column_gap: Val::Px(8.0),
                ..default()
            })
            .with_children(|row| {
                for (label, btn) in [
                    ("fund +100", SigmaBtn::Fund),
                    ("send 10 โ†’ bob", SigmaBtn::Send),
                    ("finalize", SigmaBtn::Finalize),
                    ("refresh", SigmaBtn::Refresh),
                ] {
                    row.spawn((
                        btn,
                        Button,
                        Node {
                            padding: UiRect::axes(Val::Px(14.0), Val::Px(8.0)),
                            ..default()
                        },
                        BackgroundColor(Color::srgb(0.12, 0.16, 0.14)),
                    ))
                    .with_children(|b| {
                        b.spawn((
                            Text::new(label),
                            TextFont {
                                font_size: 14.0,
                                ..default()
                            },
                            TextColor(Color::srgb(0.75, 0.9, 0.8)),
                        ));
                    });
                }
            });

            root.spawn((
                Text::new("events ยท sense"),
                TextFont {
                    font_size: 14.0,
                    ..default()
                },
                TextColor(Color::srgb(0.5, 0.55, 0.6)),
            ));
            root.spawn((
                SigmaEventsLabel,
                Text::new(state.log.join("\n")),
                TextFont {
                    font_size: 13.0,
                    ..default()
                },
                TextColor(Color::srgb(0.8, 0.85, 0.9)),
            ));
        });
}

fn destroy_sigma(mut commands: Commands, q: Query<Entity, With<SigmaRoot>>) {
    for e in &q {
        commands.entity(e).despawn();
    }
}

fn handle_sigma_buttons(
    mut interactions: Query<(&Interaction, &SigmaBtn), Changed<Interaction>>,
    mut state: ResMut<SigmaState>,
) {
    for (interaction, btn) in &mut interactions {
        if *interaction != Interaction::Pressed {
            continue;
        }
        let peer = state.peer;
        let token = state.token;
        // Split-borrow wallet + cell (two distinct fields).
        let SigmaState {
            cell, wallet, log, ..
        } = &mut *state;
        match btn {
            SigmaBtn::Fund => {
                wallet.fund_for_test(cell, token, 100);
                log.push("funded +100 CYB".into());
                drain_sense_parts(wallet, log);
            }
            SigmaBtn::Send => {
                if !wallet.grade4() {
                    wallet.sync_tip_local(cell);
                }
                match wallet.send(cell, peer, token, 10) {
                    Ok((sig, ev)) => {
                        let ok = ev.verify(wallet.tip());
                        log.push(format!("sent 10 โ†’ bob  sig {}โ€ฆ final={ok}", hex3(&sig)));
                        drain_sense_parts(wallet, log);
                    }
                    Err(e) => log.push(format!("send failed: {e:?}")),
                }
            }
            SigmaBtn::Finalize => {
                wallet.finalize_block(cell);
                let ready = wallet.mature_settles();
                let h = wallet.tip().height;
                let g4 = wallet.grade4();
                log.push(format!(
                    "finalize h={h} grade4={g4} matured={}",
                    ready.len()
                ));
            }
            SigmaBtn::Refresh => {
                wallet.sync_tip_local(cell);
                log.push("refreshed tip".into());
            }
        }
        trim_log(&mut state.log);
        refresh_numbers(&mut state);
    }
}

fn drain_sense_parts(wallet: &mut MoneyWallet, log: &mut Vec<String>) {
    let neuron = wallet.neuron;
    let ev = wallet.drain_events();
    for e in &ev {
        log.push(format_event(e));
    }
    for n in money_to_sense(neuron, &ev) {
        log.push(format!(
            "NOTIFY {} amt={} {}",
            n.kind,
            n.amount,
            hex3(&n.reason)
        ));
    }
}

fn trim_log(log: &mut Vec<String>) {
    if log.len() > 40 {
        let drop = log.len() - 40;
        log.drain(0..drop);
    }
}

fn refresh_sigma_labels(
    state: Res<SigmaState>,
    mut bal: Query<
        &mut Text,
        (
            With<SigmaBalanceLabel>,
            Without<SigmaEventsLabel>,
            Without<SigmaStatusLabel>,
        ),
    >,
    mut events: Query<
        &mut Text,
        (
            With<SigmaEventsLabel>,
            Without<SigmaBalanceLabel>,
            Without<SigmaStatusLabel>,
        ),
    >,
    mut status: Query<
        &mut Text,
        (
            With<SigmaStatusLabel>,
            Without<SigmaBalanceLabel>,
            Without<SigmaEventsLabel>,
        ),
    >,
) {
    if !state.is_changed() {
        return;
    }
    if let Ok(mut t) = bal.single_mut() {
        *t = Text::new(balance_text(&state));
    }
    if let Ok(mut t) = events.single_mut() {
        let tail: Vec<_> = state.log.iter().rev().take(12).cloned().collect();
        let mut lines: Vec<_> = tail.into_iter().rev().collect();
        if lines.is_empty() {
            lines.push("(no events)".into());
        }
        *t = Text::new(lines.join("\n"));
    }
    if let Ok(mut t) = status.single_mut() {
        *t = Text::new(format!(
            "{} ยท tip h={} grade4={}",
            state.status,
            state.tip_h,
            if state.grade4 { "yes" } else { "no" }
        ));
    }
}

fn refresh_numbers(state: &mut SigmaState) {
    let n = state.wallet.neuron;
    state.balance = state.wallet.balance(&state.cell, &n, &state.token);
    state.tip_h = state.wallet.tip().height;
    state.grade4 = state.wallet.grade4();
}

fn format_event(e: &MoneyEvent) -> String {
    match e {
        MoneyEvent::TransferOut { amount, to, .. } => {
            format!("out {amount} โ†’ {}", hex3(to))
        }
        MoneyEvent::TransferIn { amount, from, .. } => {
            format!("in {amount} โ† {}", hex3(from))
        }
        MoneyEvent::RewardCredited { amount, clock, .. } => format!("reward {:?} {amount}", clock),
        MoneyEvent::Finalized { signal, .. } => format!("final {}", hex3(signal)),
        MoneyEvent::TipAdvanced { height, grade4, .. } => {
            format!("tip h={height} g4={grade4}")
        }
        MoneyEvent::BalanceUpdated { amount, .. } => format!("bal={amount}"),
        MoneyEvent::FinalityFailed { reason, .. } => format!("fail {reason}"),
    }
}

fn balance_text(state: &SigmaState) -> String {
    format!("{} CYB", state.balance)
}

fn label_particle(label: &str) -> [u8; 32] {
    let mut p = [0u8; 32];
    let b = label.as_bytes();
    let n = b.len().min(32);
    p[..n].copy_from_slice(&b[..n]);
    p
}

fn hex3(b: &[u8]) -> String {
    b[..3.min(b.len())]
        .iter()
        .map(|x| format!("{x:02x}"))
        .collect()
}

fn default_graph_path() -> std::path::PathBuf {
    let home = std::env::var("HOME").unwrap_or_else(|_| ".".into());
    std::path::Path::new(&home).join("cyb").join("graph.log")
}

/// Best-effort neuron from same mnemonic path as `cy` identity.
fn neuron_from_identity() -> [u8; 32] {
    // Stable per-device demo neuron when mnemonic stack is heavy in GUI path.
    // CLI identity remains authoritative; sigma opens shared graph by path.
    let host = std::env::var("USER").unwrap_or_else(|_| "cyb".into());
    let mut p = [0u8; 32];
    let bytes = host.as_bytes();
    let n = bytes.len().min(32);
    p[..n].copy_from_slice(&bytes[..n]);
    p[31] = 0x53; // 'S' tag sigma demo
    p
}

Homonyms

neural/trident/src/runtime/mod.rs
neural/trident/src/ast/mod.rs
soft3/tru/rs/model/mod.rs
neural/trident/src/diagnostic/mod.rs
neural/trident/src/compile/mod.rs
cyb/optica/src/render/mod.rs
soft3/nox/rs/patterns/mod.rs
cyb/optica/src/scanner/mod.rs
neural/trident/src/neural/mod.rs
soft3/tru/rs/focusing/mod.rs
cyb/shell/src/android/mod.rs
cyb/shell/src/agent/mod.rs
neural/trident/src/gpu/mod.rs
cyb/prysm/molecules/rs/mod.rs
soft3/mir/src/bevy/mod.rs
cyb/optica/src/parser/mod.rs
soft3/cybergraph/tests/common/mod.rs
neural/trident/src/syntax/mod.rs
soft3/glia/run/ir/mod.rs
soft3/glia/run/bench/mod.rs
neural/trident/src/typecheck/mod.rs
neural/trident/src/import/mod.rs
soft3/glia/import/loader/mod.rs
soft3/tru/rs/graph/mod.rs
neural/trident/src/ir/mod.rs
cyb/shell/src/shell/mod.rs
soft3/mir/src/graph/mod.rs
soft3/glia/run/backend/mod.rs
soft3/nox/rs/jets/mod.rs
soft3/mir/src/frame/mod.rs
soft3/tru/rs/pass/mod.rs
soft3/glia/run/tokenizer/mod.rs
soft3/mudra/src/proof/mod.rs
cyb/optica/src/output/mod.rs
soft3/nox/rs/data/mod.rs
neural/trident/src/field/mod.rs
cyb/optica/src/query/mod.rs
neural/trident/src/deploy/mod.rs
neural/trident/src/config/mod.rs
cyb/optica/src/graph/mod.rs
cyb/prysm/system/rs/mod.rs
soft3/glia/run/arch/mod.rs
neural/trident/src/cost/mod.rs
soft3/mir/src/epoch/mod.rs
soft3/glia/run/core/mod.rs
cyb/prysm/atoms/rs/mod.rs
neural/trident/src/package/mod.rs
neural/trident/src/verify/mod.rs
neural/trident/src/cli/mod.rs
neural/trident/src/api/mod.rs
neural/trident/src/lsp/mod.rs
cyb/shell/src/worlds/mod.rs
cyb/optica/src/server/mod.rs
neural/trident/src/package/store/mod.rs
neural/trident/src/verify/solve/mod.rs
soft3/zheng/rs/src/phi/mod.rs
neural/trident/src/syntax/format/mod.rs
soft3/glia/run/backend/honeycrisp/mod.rs
cyb/honeycrisp/acpu/src/sparse/mod.rs
neural/rs/macros/src/cell/mod.rs
soft3/zheng/rs/src/spartan/mod.rs
neural/eidos/rs/src/elab/mod.rs
soft3/nox/rs/jets/backends/mod.rs
neural/trident/src/syntax/lexer/mod.rs
soft3/glia/run/arch/decoder/mod.rs
neural/trident/src/neural/model/mod.rs
soft3/radio/iroh-blobs/examples/common/mod.rs
cyb/honeycrisp/acpu/src/crypto/mod.rs
neural/trident/src/ir/tir/mod.rs
cyb/honeycrisp/acpu/src/probe/mod.rs
soft3/radio/iroh-blobs/src/store/mod.rs
cyb/honeycrisp/acpu/src/numeric/mod.rs
cyb/wysm/crates/wast/tests/mod.rs
soft3/glia/run/cli/cmd/mod.rs
soft3/bbg/rs/src/storage/mod.rs
neural/eidos/rs/src/stdlib/mod.rs
neural/trident/src/verify/synthesize/mod.rs
cyb/honeycrisp/acpu/src/sync/mod.rs
neural/rs/darwin-sys/src/ffi/mod.rs
neural/trident/src/package/hash/mod.rs
neural/trident/src/neural/data/mod.rs
soft3/mir/src/frame/tiers/mod.rs
neural/trident/src/typecheck/tests/mod.rs
neural/trident/src/syntax/parser/mod.rs
neural/trident/src/ir/tree/mod.rs
neural/trident/src/config/resolve/mod.rs
neural/trident/src/config/scaffold/mod.rs
neural/eidos/rs/src/tactic_ext/mod.rs
neural/trident/src/ir/kir/mod.rs
neural/trident/src/neural/inference/mod.rs
soft3/zheng/rs/src/folding/mod.rs
neural/rs/macros/src/registers/mod.rs
neural/trident/src/verify/sym/mod.rs
cyb/wysm/crates/wasmi/tests/mod.rs
neural/trident/src/neural/training/mod.rs
soft3/zheng/rs/src/sumcheck/mod.rs
cyb/honeycrisp/acpu/src/pulse/mod.rs
neural/trident/src/api/tests/mod.rs
cyb/honeycrisp/rane/src/mil/mod.rs
neural/rs/macros/src/addressed/mod.rs
cyb/honeycrisp/aruminium/src/ffi/mod.rs
neural/trident/src/verify/smt/mod.rs
cyb/honeycrisp/aruminium/src/render/mod.rs
neural/trident/src/syntax/grammar/mod.rs
soft3/glia/run/backend/wgpu/mod.rs
cyb/honeycrisp/acpu/src/vector/mod.rs
soft3/radio/cyber-bao/src/io/mod.rs
neural/trident/src/ir/lir/mod.rs
neural/trident/src/package/manifest/mod.rs
cyb/honeycrisp/acpu/src/matrix/mod.rs
soft3/strata/nebu/rs/extension/mod.rs
neural/trident/src/verify/report/mod.rs
neural/trident/src/cost/stack_verifier/mod.rs
cyb/honeycrisp/acpu/src/field/mod.rs
cyb/wysm/crates/wasi/tests/mod.rs
neural/rs/core/src/fixed_point/mod.rs
soft3/glia/run/backend/cpu/mod.rs
neural/trident/src/cost/model/mod.rs
neural/trident/src/package/registry/mod.rs
neural/trident/src/lsp/semantic/mod.rs
neural/rs/rsc/src/lints/mod.rs
cyb/honeycrisp/acpu/src/gemm/mod.rs
neural/rs/core/src/bounded/mod.rs
neural/trident/src/verify/equiv/mod.rs
neural/eidos/rs/src/surface/mod.rs
cyb/shell/src/worlds/terminal/mod.rs
cyb/shell/src/worlds/cell/mod.rs
soft3/zheng/rs/src/ccs/mod.rs
neural/trident/src/lsp/util/mod.rs
neural/trident/src/ir/tir/builder/mod.rs
cyb/evy/forks/naga/src/arena/mod.rs
neural/trident/src/ir/tree/lower/mod.rs
cyb/evy/forks/bevy_pbr/src/deferred/mod.rs
cyb/evy/forks/bevy_transform/src/components/mod.rs
cyb/evy/forks/bevy_pbr/src/render/mod.rs
cyb/evy/crates/evy_prysm_core/src/layout/mod.rs
cyb/evy/forks/bevy_anti_alias/src/smaa/mod.rs
cyb/evy/forks/bevy_pbr/src/light_probe/mod.rs
cyb/evy/forks/bevy_post_process/src/auto_exposure/mod.rs
cyb/evy/forks/bevy_anti_alias/src/contrast_adaptive_sharpening/mod.rs
cyb/evy/forks/bevy_ecs/src/component/mod.rs
cyb/evy/forks/naga/src/common/mod.rs
cyb/evy/forks/bevy_ecs/src/event/mod.rs
soft3/glia/run/backend/honeycrisp/kernels/mod.rs
cyb/wysm/crates/wasmi/src/store/mod.rs
cyb/evy/forks/bevy_ecs/src/world/mod.rs
cyb/evy/forks/bevy_sprite_render/src/mesh2d/mod.rs
cyb/evy/forks/bevy_render/src/render_graph/mod.rs
cyb/evy/forks/bevy_pbr/src/decal/mod.rs
cyb/evy/forks/naga/src/front/mod.rs
soft3/glia/run/arch/decoder/families/mod.rs
cyb/evy/forks/bevy_ecs/src/query/mod.rs
soft3/strata/kuro/wgsl/src/shaders/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/deferred/mod.rs
neural/trident/src/ir/lir/lower/mod.rs
cyb/evy/forks/bevy_render/src/render_resource/mod.rs
cyb/wysm/crates/wasmi/benches/bench/mod.rs
cyb/evy/forks/bevy_ecs/src/system/mod.rs
cyb/evy/forks/bevy_pbr/src/prepass/mod.rs
neural/trident/src/ir/kir/lower/mod.rs
cyb/evy/forks/naga/src/keywords/mod.rs
cyb/evy/forks/bevy_ecs/src/relationship/mod.rs
cyb/evy/forks/bevy_gizmos/src/primitives/mod.rs
cyb/wysm/crates/wasmi/src/memory/mod.rs
cyb/evy/forks/bevy_sprite_render/src/texture_slice/mod.rs
cyb/evy/forks/bevy_ecs/src/bundle/mod.rs
neural/trident/src/ir/tir/stack/mod.rs
cyb/wysm/crates/ir/src/decode/mod.rs
cyb/wysm/crates/core/src/table/mod.rs
cyb/wysm/crates/c_api/src/types/mod.rs
cyb/evy/forks/naga/src/compact/mod.rs
neural/trident/src/neural/data/tir_graph/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/prepass/mod.rs
cyb/wysm/crates/fuzz/src/oracle/mod.rs
cyb/evy/forks/bevy_ecs/src/storage/mod.rs
cyb/evy/forks/naga/src/proc/mod.rs
cyb/evy/forks/bevy_post_process/src/motion_blur/mod.rs
cyb/wysm/crates/wasmi/src/instance/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/core_3d/mod.rs
cyb/evy/forks/bevy_anti_alias/src/dlss/mod.rs
cyb/evy/forks/bevy_pbr/src/atmosphere/mod.rs
cyb/evy/forks/bevy_ecs/src/message/mod.rs
cyb/wysm/crates/wasmi/src/func/mod.rs
cyb/wysm/crates/wasmi/src/engine/mod.rs
cyb/evy/forks/bevy_ecs/src/reflect/mod.rs
cyb/evy/forks/bevy_sprite_render/src/render/mod.rs
soft3/strata/genies/wgsl/src/shaders/mod.rs
cyb/evy/forks/bevy_render/src/view/mod.rs
cyb/evy/forks/bevy_post_process/src/dof/mod.rs
cyb/evy/forks/bevy_sprite_render/src/text2d/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/fullscreen_vertex_shader/mod.rs
cyb/wysm/crates/wasmi/src/module/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/core_2d/mod.rs
soft3/glia/run/backend/wgpu/kernels/mod.rs
cyb/evy/forks/bevy_pbr/src/meshlet/mod.rs
cyb/evy/forks/bevy_ecs/src/entity/mod.rs
cyb/evy/forks/bevy_pbr/src/volumetric_fog/mod.rs
cyb/evy/forks/bevy_ecs/src/schedule/mod.rs
cyb/evy/forks/bevy_anti_alias/src/fxaa/mod.rs
neural/trident/src/ir/tir/neural/mod.rs
soft3/strata/jali/wgsl/src/shaders/mod.rs
cyb/wysm/crates/wasmi/src/table/mod.rs
neural/trident/src/ir/tir/lower/mod.rs
cyb/evy/forks/bevy_sprite_render/src/tilemap_chunk/mod.rs
cyb/evy/forks/bevy_pbr/src/ssr/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/upscaling/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/tonemapping/mod.rs
cyb/evy/forks/naga/src/valid/mod.rs
cyb/evy/forks/bevy_post_process/src/bloom/mod.rs
bootloader/go-cyber/mcp/rust/src/proto/mod.rs
cyb/wysm/crates/core/src/memory/mod.rs
cyb/evy/forks/bevy_ecs/src/error/mod.rs
cyb/evy/forks/bevy_anti_alias/src/taa/mod.rs
cyb/evy/forks/bevy_render/src/mesh/mod.rs
cyb/wysm/crates/collections/src/arena/mod.rs
cyb/evy/forks/bevy_sprite/src/texture_slice/mod.rs
cyb/evy/forks/bevy_render/src/texture/mod.rs
bootloader/go-cyber/mcp/rust/src/clients/mod.rs
cyb/wysm/crates/wasi/src/sync/mod.rs
cyb/evy/forks/bevy_render/src/renderer/mod.rs
cyb/evy/forks/bevy_pbr/src/lightmap/mod.rs
cyb/evy/forks/bevy_mesh/src/primitives/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/oit/mod.rs
cyb/evy/forks/bevy_tasks/src/iter/mod.rs
neural/trident/src/ir/tir/optimize/mod.rs
cyb/evy/forks/bevy_ecs/src/change_detection/mod.rs
cyb/evy/forks/bevy_ecs/src/observer/mod.rs
cyb/evy/forks/bevy_pbr/src/ssao/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/experimental/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/skybox/mod.rs
cyb/evy/forks/bevy_post_process/src/effect_stack/mod.rs
cyb/evy/forks/bevy_render/src/diagnostic/mod.rs
soft3/glia/run/backend/cpu/quant/mod.rs
cyb/wysm/crates/cli/src/commands/mod.rs
cyb/evy/forks/naga/src/back/mod.rs
cyb/wysm/crates/wasmi/tests/integration/mod.rs
cyb/evy/forks/bevy_render/src/batching/mod.rs
cyb/evy/forks/bevy_render/src/experimental/mod.rs
soft3/strata/trop/wgsl/src/shaders/mod.rs
neural/trident/src/syntax/parser/tests/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/blit/mod.rs
cyb/evy/forks/bevy_render/src/render_phase/mod.rs
bootloader/go-cyber/mcp/rust/src/tools/mod.rs
cyb/evy/forks/naga/src/back/wgsl/mod.rs
cyb/evy/forks/naga/src/front/glsl/mod.rs
cyb/evy/forks/bevy_mesh/src/primitives/dim3/mod.rs
cyb/wysm/crates/wasmi/src/module/instantiate/mod.rs
cyb/evy/forks/bevy_render/src/experimental/occlusion_culling/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/oit/resolve/mod.rs
cyb/evy/forks/naga/src/back/msl/mod.rs
cyb/evy/forks/bevy_ecs/src/schedule/graph/mod.rs
cyb/wysm/crates/wasmi/src/engine/executor/mod.rs
cyb/evy/forks/bevy_render/src/view/visibility/mod.rs
cyb/evy/forks/naga/src/front/spv/mod.rs
cyb/evy/forks/naga/src/back/spv/mod.rs
cyb/evy/forks/naga/src/back/dot/mod.rs
cyb/evy/forks/bevy_render/src/view/window/mod.rs
cyb/wysm/crates/wasmi/src/engine/limits/mod.rs
cyb/evy/forks/naga/src/back/glsl/mod.rs
cyb/evy/forks/bevy_ecs/src/world/entity_access/mod.rs
cyb/wysm/crates/wasmi/src/module/parser/mod.rs
cyb/evy/forks/bevy_ecs/src/system/commands/mod.rs
cyb/wysm/crates/wasmi/src/engine/translator/mod.rs
cyb/evy/forks/bevy_core_pipeline/src/experimental/mip_generation/mod.rs
bootloader/go-cyber/cw/packages/cyber-std/src/tokenfactory/mod.rs
cyb/evy/forks/naga/src/back/hlsl/mod.rs
struct Baz { m: mat3x2, } struct Baz { float2 m_0; float2 m_1; float2 m_2; }; float3x2 GetMatmOnBaz(Baz obj) { return float3x2(obj.m_0, obj.m_1, obj.m_2); }
cyb/evy/forks/bevy_ecs/src/schedule/executor/mod.rs
cyb/evy/forks/bevy_ecs/src/storage/table/mod.rs
cyb/wysm/crates/wasi/src/sync/snapshots/mod.rs
cyb/evy/forks/naga/src/front/wgsl/mod.rs
cyb/evy/forks/naga/src/front/wgsl/parse/mod.rs
cyb/wysm/crates/wasmi/src/engine/executor/handler/mod.rs
cyb/evy/forks/naga/src/back/wgsl/polyfill/mod.rs
cyb/evy/forks/naga/src/front/wgsl/lower/mod.rs
cyb/wysm/crates/wasmi/src/engine/translator/func/mod.rs
cyb/wysm/crates/wasmi/src/engine/executor/handler/dispatch/mod.rs
cyb/wysm/crates/wasmi/src/engine/translator/func/stack/mod.rs
cyb/wysm/crates/wasmi/src/engine/translator/func/simd/mod.rs

Graph