[-] bi_tux@lemmy.world 3 points 3 hours ago

I get it, but what is the rope for?

[-] bi_tux@lemmy.world 1 points 8 hours ago

I mean c'mon, every pc that can compile rust in a reasonable time has at least 20gb of storage

[-] bi_tux@lemmy.world 1 points 1 day ago

I 3d printed one for a few cents

[-] bi_tux@lemmy.world 1 points 1 day ago

that's because Rust is more modern and in modern days we don't rly have hard disk limitation, also it's probably because the compiler tells you the solution to most problems

[-] bi_tux@lemmy.world 1 points 3 days ago

My all time favourite is god bless america, it's kind of relatable

[-] bi_tux@lemmy.world 5 points 4 days ago

if I can afford it, yeah

[-] bi_tux@lemmy.world 2 points 4 days ago

I use dvds on my T60 (;

[-] bi_tux@lemmy.world 14 points 4 days ago* (last edited 4 days ago)

nope, I heard about it before in:

  • school

  • steins:gate

  • and from richard stallman himself

+ I kinda knew what they were from idk where

but regarding gen alpha, you're probably right

[-] bi_tux@lemmy.world 10 points 4 days ago

I also don't pay for books, arrrr

[-] bi_tux@lemmy.world 7 points 4 days ago

Why can't a turtle swimm?

[-] bi_tux@lemmy.world 13 points 6 days ago

it didn't crash the kernel, it just killed every process that isn't run by the root user, which kind of feels like a crash

[-] bi_tux@lemmy.world 48 points 6 days ago

Do you know the definition of insanity?

do you know software developers?

281
submitted 1 week ago* (last edited 6 days ago) by bi_tux@lemmy.world to c/programmerhumor@lemmy.ml

This happend to me right noww as I tried to write a gui task manager for the GNU/Linux OS

33
522
submitted 1 month ago by bi_tux@lemmy.world to c/linux@lemmy.ml

ofc I imediatly upgraded it from winxp to gnu/linux

205

I hope memes are okay here

79
got a new Laptop (lemmy.world)

also ik, I still use neofetch instead of hyfetch

237

So I thought about this in the shower amd it makes sense to me, like praying and stuff never worked for most people I know, so a direkt link to god gotta be unlikely. That made me conclude that religion is probably fake, no matter if there's a god or not. Also people speaking to the same god being given a different set of rules sounds stupid, so at least most religions must be fake.

45
submitted 3 months ago by bi_tux@lemmy.world to c/asklemmy@lemmy.ml

Why do some cars have their engines in the front and some in the back, what are the advantages and disadvantages of the two builds. And why doesn't every car have full wheel drive?

218
doggo (lemmy.world)
submitted 3 months ago by bi_tux@lemmy.world to c/aww@lemmy.world
7
submitted 5 months ago* (last edited 5 months ago) by bi_tux@lemmy.world to c/rust@lemmy.ml

So I want to update the sprite so my character looks in a different direction each time the player presses left/right, how could I do this? I can't do it in the setup fn, since it's a startup system, appreciate any help

EDIT: changed formating

here is my code:

use bevy::prelude::*;

`fn main() {
    App::new()
        .add_plugins(DefaultPlugins.set(ImagePlugin::default_nearest())) // prevents blurry sprites
        .add_systems(Startup, setup)
        .add_systems(Update, animate_sprite)
        .add_systems(Update, player_movement_system)
        .run();
}

const BOUNDS: Vec2 = Vec2::new(1200.0, 640.0);
static mut FLIP_BOOLEAN: bool = false;

fn set_flip_boolean(boolean: bool) {
    unsafe {
        FLIP_BOOLEAN = boolean;
    }
}

fn get_flip_boolean() -> bool{
    unsafe {
        FLIP_BOOLEAN
    }
}

#[derive(Component)]
struct Player {
    movement_speed: f32,
}

#[derive(Component)]
struct AnimationIndices {
    first: usize,
    last: usize,
}

#[derive(Component, Deref, DerefMut)]
struct AnimationTimer(Timer);

fn animate_sprite(
    time: Res<Time>,
    mut query: Query<(&AnimationIndices, &mut AnimationTimer, &mut TextureAtlas)>,
) {
    for (indices, mut timer, mut atlas) in &mut query {
        timer.tick(time.delta());
        if timer.just_finished() {
            atlas.index = if atlas.index == indices.last {
                indices.first
            } else {
                atlas.index + 1
            };
        }
    }
}


fn setup(
    mut commands: Commands,
    asset_server: Res<AssetServer>,
    mut texture_atlas_layouts: ResMut<Assets<TextureAtlasLayout>>,
) {
    let texture = asset_server.load("sprites/Idle01.png");
    let layout = TextureAtlasLayout::from_grid(Vec2::new(64.0, 40.0), 5, 1, None, None);
    let texture_atlas_layout = texture_atlas_layouts.add(layout);
    let animation_indices = AnimationIndices { first: 0, last: 4 };
    let boolean = get_flip_boolean();
    commands.spawn(Camera2dBundle::default());
    commands.spawn((
        SpriteSheetBundle {
            texture,
            atlas: TextureAtlas {
                layout: texture_atlas_layout,
                index: animation_indices.first,
            },
            
            ..default()
        },
        Player {
            movement_speed: 500.0,
        },
        animation_indices,
        AnimationTimer(Timer::from_seconds(0.1, TimerMode::Repeating)),
    ));
}

fn player_movement_system(
    time: Res<Time>,
    keyboard_input: Res<ButtonInput<KeyCode>>,
    mut query: Query<(&Player, &mut Transform)>,
) {
    let (guy, mut transform) = query.single_mut();

    let mut movement_factor = 0.0;

    let mut movement_direction = Vec3::X;

    if keyboard_input.pressed(KeyCode::ArrowLeft) {
        movement_factor -= 1.0;
        movement_direction = Vec3::X;
        set_flip_boolean(true);
    }

    if keyboard_input.pressed(KeyCode::ArrowRight) {
        movement_factor += 1.0;
        movement_direction = Vec3::X;
        set_flip_boolean(false);
    }

    if keyboard_input.pressed(KeyCode::ArrowUp) {
        movement_factor += 1.0;
        movement_direction = Vec3::Y;
    }

    if keyboard_input.pressed(KeyCode::ArrowDown) {
        movement_factor -= 1.0;
        movement_direction = Vec3::Y;
    }


    let movement_distance = movement_factor * guy.movement_speed * time.delta_seconds();
    let translation_delta = movement_direction * movement_distance;
    transform.translation += translation_delta;

    let extents = Vec3::from((BOUNDS / 2.0, 0.0));
    transform.translation = transform.translation.min(extents).max(-extents);
}
106
submitted 6 months ago* (last edited 6 months ago) by bi_tux@lemmy.world to c/startrek@startrek.website

tbh I did a horrible paint job, but she still liked it

EDIT: the parts are 3d printed (not my model tho)

124
53
view more: next ›

bi_tux

joined 1 year ago