1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#![allow(dead_code)]

mod blob;
mod brain;
mod componet;
mod consts;
mod contorl;
mod graphics;
mod io;
mod mutate;
mod physics;

#[macro_use]
mod logger;

use bevy::prelude::*;

use brain::resource::BevyBlockNeurons;
use contorl::contorl::BlobContorlPlugin;
use graphics::*;
use io::evoio::EvoIOPlugin;
use mutate::mutate::MutatePlugin;
use physics::physical_world::PhysiWorldPlugin;

// TODO: Headless mode causing panic
// TODO: Not all cores are fully tuilized
/// Main function to start the simulation (which is a bevy app)
fn main() {
    App::new()
        .add_plugins((
            // defualt
            DefaultPlugins,
            // // set thread count
            // DefaultPlugins.set(
            //     TaskPoolPlugin{
            //         task_pool_options: TaskPoolOptions::with_num_threads(THREAD_COUNT)
            //     }
            // ),
            // // no renderer
            // DefaultPlugins.set(RenderPlugin {
            //     wgpu_settings: WgpuSettings {
            //         backends: None,
            //         ..default()
            //     }
            // }),

            // custom
            PhysiWorldPlugin,  // init physical world
            EvoGraphicsPlugin, // vsync and camera
            EvoIOPlugin,       // import and export
            MutatePlugin,      // mutation contorl
            BlobContorlPlugin, // update blob each frame
        ))
        .init_resource::<BevyBlockNeurons>()
        .run();
}