SiebenCorgie / ori-engine

A small engine written in rust + vulkan.
Other
7 stars 1 forks source link

Make the front end more "pretty" #14

Open SiebenCorgie opened 7 years ago

SiebenCorgie commented 7 years ago

Make the frontend more "pretty".

Currently loading and adding models as well as loading and adding textures is a bit ugly but could be made nice quiet easily with some lines of code in the asset manager.

SiebenCorgie commented 7 years ago

For reference, this was the old way in the front end to import a new texture and create a new mateiral from it:

    ///Creating a new material, currently a bit ugly
    {
        let render_inst = render.clone();
        let mut render_lck = render_inst.lock().expect("failed to hold renderer");
        //Create a second material
        //create new texture
        let new_texture = core::resources::texture::TextureBuilder::from_image(
            "/share/3DFiles/TextureLibary/Comix/Mariuhana.jpg",
            (*render_lck).get_device(),
            (*render_lck).get_queue(),
            settings.clone()
        ).build_with_name("new_texture");
        asset_manager.get_texture_manager().add_texture(new_texture);

        let (_ , normal, physical) = asset_manager.get_texture_manager().get_fallback_textures();

        let texture_in_manager = asset_manager.get_texture_manager().get_texture("new_texture");

        let mut new_material = core::resources::material::MaterialBuilder::new(
            Some(texture_in_manager),
            Some(normal),
            Some(physical),
            None,
            asset_manager.get_texture_manager().get_none()
        ).build(
            "new_material",
            "DefaultPipeline",
            (*render_lck).get_pipeline_manager(),
            (*render_lck).get_uniform_manager(),
            (*render_lck).get_device(),
            (*render_lck).get_queue(),
            settings.clone()
        );

        //add to the manager
        asset_manager.get_material_manager().add_material(new_material);
    }

now its like this:

    //Importing the texture
    let mut tex_builder = asset_manager.create_texture("/home/siebencorgie/Pictures/MyPictures/ben_mauro_01.jpg");
    tex_builder = tex_builder.with_flipped_v();
    asset_manager.add_texture_to_manager(tex_builder, "new_texture").expect("failed to add new_texture");
    //Creating a material and adding it to the manager internally 
           let (_ , normal, physical) = asset_manager.get_texture_manager().get_fallback_textures();
        let texture_in_manager = asset_manager.get_texture_manager().get_texture("new_texture");

        let new_material = core::resources::material::MaterialBuilder::new(
            Some(texture_in_manager),
            Some(normal),
            Some(physical),
            None,
            asset_manager.get_texture_manager().get_none()
        );

        asset_manager.add_material_to_manager(new_material, "new_material").expect("failed to add new_material");

Note that the example also involves to get some additional textures to create a full-blown material.