content: [package]
  name = "bevy_new_3d_rpg"
  edition = "2024"
  version = "0.1.5"
  authors = ["Oleks Pickle <22867443+olekspickle@users.noreply.github.com>"]
  license = "MIT OR Apache-2.0 OR CC0"
  exclude = ["assets"]
  repository = "https://github.com/olekspickle/bevy_new_3d_rpg"
  description = "Simple but comprehensive 3D RPG game template with gamepad support"
  keywords = ["bevy", "game", "template", "devkit", "third person", "topdown", "gamedev"]
  
  [features]
  default = [ "dev_native", "third_person" ]
  web = []
  custom_cursor  = []
  top_down = ["bevy_top_down_camera"]
  third_person = ["bevy_third_person_camera"]
  dev = [
      "bevy/bevy_dev_tools",
      "bevy/bevy_ui_debug",
      "bevy/dynamic_linking",         # Improve compile times for dev builds by linking Bevy as a dynamic library.
      "bevy/track_location",          # Improve error messages coming from Bevy
  ]
  dev_native = [
      "dev",
      "enhanced",
      "custom_cursor",
      "bevy-inspector-egui",
      "bevy/embedded_watcher",        # Enable embedded asset hot reloading for native dev builds.
      "bevy/file_watcher",            # Enable asset hot reloading for native dev builds.
  ]
  enhanced = [
      "bevy/meshlet",                 # new nanite-like rendering system
      "bevy/bevy_pbr",                # PBR
      "bevy/pbr_specular_textures",   # PBR specular maps
  ]
  
  [dependencies.bevy]
  version = "^0.17"
  default-features = false
  # opinionated list without bevy_audio
  features = [
      "std",
      "zstd_rust",
      "sysinfo_plugin",
      "multi_threaded",
      "smaa_luts",
      "bevy_core_pipeline",
      "bevy_anti_alias",
      "bevy_render",
      "bevy_color",
      "reflect_auto_register",
      "tonemapping_luts",
      "bevy_post_process",
      "bevy_winit",
      "bevy_state",
      "hotpatching",
      "bevy_asset",
      "bevy_gltf",
      "bevy_scene",
      "bevy_picking",
      "bevy_mesh_picking_backend",
      "bevy_text",
      "bevy_ui",
      "bevy_ui_render",
      "bevy_ui_picking_backend",
      "experimental_bevy_ui_widgets",
      "bevy_input_focus",
      "custom_cursor",
      "default_font",
      "animation",
      "bevy_log",
      "bevy_gilrs",
      "bevy_gizmos",
      "hdr",
      "ktx2",
      "png",
      "jpeg",
      "webgl2",
      "x11",
      "wayland",
      "serialize",
      # TODO: play with these features
      # "pbr_light_textures"
  ]
  
  [dependencies]
  # plugins
  bevy_fix_cursor_unlock_web = "^0.2.0-rc"
  bevy-inspector-egui = { version = "^0.34.0", optional = true }
  bevy_skein = "^0.3.0-rc.1"                                                                  # blender integration
  # iyes_perf_ui = "0.5"                                                                      # diagnostics overlay
  
  avian3d = { version = "^0.4.0-dev", features = ["debug-plugin", "3d", "parallel", "collider-from-mesh"] }   # physics
  bevy_seedling = { version = "^0.6.0-rc", features = ["hrtf", "ogg"] }                       # audio plugin using firewheel
  bevy_shuffle_bag = "^0.3"                                                                   # random container for audio
  firewheel = "^0.7"
  fundsp = "^0.20"
  
  
  bevy_third_person_camera = { version = "^0.3", optional = true }                            # 3rd person camera
  bevy_top_down_camera = { version = "^0.2", optional = true }                                # top down camera
  
  # characrter control
  bevy-tnua = "^0.25.0-rc"                                                                    # floating character control
  bevy-tnua-avian3d = "^0.6.0-rc"                                                             # tnua-avian interaction
  bevy_enhanced_input = { version = "^0.19.0-rc", features = ["serialize"] }                  # keyboard/gamepad input
  
  # dialogue
  bevy_yarnspinner = "^0.6.0-rc"
  bevy_yarnspinner_example_dialogue_view = "^0.6.0-rc"
  
  # misc
  # itertools = "0.14.0"
  image = "^0.25.6"
  ron = "^0.10"
  rand = "^0.9"
  serde = "1"
  thiserror = "2"
  smol_str = { version = "0.3", default-features = false }
  # keep the following in sync with Bevy's dependencies
  winit = { version = "^0.30", default-features = false }
  # Compile low-severity logs out of builds for performance.
  # Remove these features if you want to profile your game with tracy.
  # (see <https://github.com/bevyengine/bevy/blob/main/docs/profiling.md#tracy-profiler>)
  tracing = { version = "^0.1", features = ["max_level_debug", "release_max_level_warn"] }
  
  [target.wasm32-unknown-unknown.dependencies]
  firewheel-web-audio = { git = "https://github.com/CorvusPrudens/firewheel-web-audio", rev = "65888f3" }
  getrandom = { version = "0.3", features = ["wasm_js"] }
  
  [patch.crates-io]
  bevy-inspector-egui = { git = "https://github.com/dsgallups/bevy-inspector-egui", branch = "dsgallups/0.17" }
  avian3d = { git = "https://github.com/Jondolf/avian", branch = "main" }
  bevy-tnua = { git = "https://github.com/janhohenheim/bevy-tnua", branch = "bevy-0.17.0-dev" }
  bevy-tnua-avian3d = { git = "https://github.com/janhohenheim/bevy-tnua", branch = "bevy-0.17.0-dev" }
  # Fix [crash on Chromium](https://github.com/CorvusPrudens/bevy_seedling/issues/60)
  firewheel-web-audio = { git = "https://github.com/CorvusPrudens/firewheel-web-audio", rev = "65888f3" }
  bevy_third_person_camera = { git = "https://github.com/olekspickle/bevy_third_person_camera", branch = "0.17.0" }
  
  # LINT
  [lints.clippy]
  # Bevy supplies arguments to systems via dependency injection, so it's natural for systems to
  # request more than 7 arguments, which would undesirably trigger this lint.
  too_many_arguments = "allow"
  type_complexity = "allow"           # Queries may access many components, which would undesirably trigger this lint.
  collapsible_if = "allow"           # Queries may access many components, which would undesirably trigger this lint.
  nonstandard_macro_braces = "warn"   # Make sure macros use their standard braces, such as `[]` for `bevy_ecs::children!`.
  
  [package.metadata.bevy_cli.release] # Disable dev features for release builds.
  default-features = false
  [package.metadata.bevy_cli.web]     # Disable native features for web builds.
  default-features = false
  [package.metadata.bevy_cli.web.dev]
  features = ["dev"]
  
  # BUILD
  
  [profile.dev]                       # Less optimization in the dev profile.
  opt-level = 1
  [profile.dev.package."*"]           # More optimization in the dev profile for dependencies.
  opt-level = 3
  [profile.dev.package.wgpu-types]    # Remove expensive debug assertions due to <https://github.com/bevyengine/bevy/issues/14291>
  debug-assertions = false
  
  [profile.ci]                        # Optimize for build time in CI.
  inherits = "dev"
  opt-level = 0
  debug = "line-tables-only"
  codegen-units = 4
  [profile.ci.package."*"]
  opt-level = 0
  
  [profile.release]
  # Do a second optimization pass over the entire program, including dependencies.
  # Slows compile times, marginal improvements.
  lto = "thin"
  # Optimize with size in mind (also try "z", sometimes it is better).
  # Slightly slows compile times, great improvements to file size and runtime performance.
  opt-level = "s"
  # Compile the entire crate as one unit. Slows compile times to less size.
  # Default is 16 or 256(incremental builds). This template f.e. 18Mb -> 24Mb
  codegen-units = 1
  strip = true
  
  [profile.wasm-release]              # Optimize for size in the wasm-release profile to reduce load times and bandwidth usage on web.
  inherits = "release"
  strip = "debuginfo"                 # Strip all debugging information from the binary to slightly reduce file size.
  