Compare commits

..

No commits in common. "8cc4c0ee9420de175c0425f7b90ed288736a3ebe" and "9cb1d1d4473e3c146b17638ac53e3558b17e44cc" have entirely different histories.

4 changed files with 25 additions and 86 deletions

View File

@ -1,44 +0,0 @@
kind: pipeline
type: docker
name: default
steps:
- name: test
image: rust
pull: always
commands:
- rustup component add clippy rustfmt
- apt-get update -qq
- apt-get install -qqy llvm-dev libclang-dev clang cmake pkg-config libx11-dev libasound2-dev libudev-dev libxcb-xfixes0-dev libwayland-dev libxkbcommon-dev libvulkan-dev libpulse-dev
- cargo fmt --check
- cargo test
- cargo clippy
- name: release
image: rust
pull: always
commands:
- apt-get update -qq
- apt-get install -qqy llvm-dev libclang-dev clang cmake pkg-config libx11-dev libasound2-dev libudev-dev libxcb-xfixes0-dev libwayland-dev libxkbcommon-dev libvulkan-dev libpulse-dev
- cargo publish --no-verify
when:
ref:
- refs/tags/v*
environment:
CARGO_REGISTRY_TOKEN:
from_secret: cargo_registry_token
- name: discord notification
image: appleboy/drone-discord
when:
status: [success, failure]
settings:
webhook_id:
from_secret: discord_webhook_id
webhook_token:
from_secret: discord_webhook_token
tts: true
message: >
{{#success build.status}}
{{repo.name}} build {{build.number}} succeeded: <{{build.link}}>
{{else}}
{{repo.name}} build {{build.number}} failed: <{{build.link}}>
{{/success}}

View File

@ -4,14 +4,13 @@ version = "0.1.0"
authors = ["Nolan Darilek <nolan@thewordnerd.info>"] authors = ["Nolan Darilek <nolan@thewordnerd.info>"]
license = "MIT OR Apache-2.0" license = "MIT OR Apache-2.0"
edition = "2021" edition = "2021"
repository = "https://labs.lightsout.games/projects/bevy_synthizer"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
anyhow = "1" anyhow = "1"
bevy = { version = "0.9", default-features = false, features = ["bevy_asset"] } bevy = { version = "0.8", default-features = false, features = ["bevy_asset"] }
synthizer = "0.5" synthizer = "0.5"
[dev-dependencies] [dev-dependencies]
bevy = { version = "0.9", default-features = true } bevy = { version = "0.8", default-features = true }

View File

@ -8,11 +8,11 @@ struct RotationTimer(Timer);
impl Default for RotationTimer { impl Default for RotationTimer {
fn default() -> Self { fn default() -> Self {
Self(Timer::from_seconds(30., TimerMode::Repeating)) Self(Timer::from_seconds(30., true))
} }
} }
#[derive(Resource, Default)] #[derive(Default)]
struct AssetHandles { struct AssetHandles {
sounds: Vec<HandleUntyped>, sounds: Vec<HandleUntyped>,
loaded: bool, loaded: bool,
@ -34,22 +34,22 @@ fn load_and_create(
.get_group_load_state(handles.sounds.iter().map(|handle| handle.id)) .get_group_load_state(handles.sounds.iter().map(|handle| handle.id))
== LoadState::Loaded; == LoadState::Loaded;
if handles.loaded { if handles.loaded {
commands.spawn(( commands
TransformBundle::default(), .spawn_bundle(TransformBundle::default())
Listener, .insert(Listener)
RotationTimer::default(), .insert(RotationTimer::default());
));
let handle = handles.sounds[0].clone(); let handle = handles.sounds[0].clone();
let buffer = asset_server.get_handle(handle); let buffer = asset_server.get_handle(handle);
commands.spawn(( commands
TransformBundle::from(Transform::from_translation(Vec3::new(10., 0., 0.))), .spawn_bundle(TransformBundle::from(Transform::from_translation(
Source::default(), Vec3::new(10., 0., 0.),
Sound { )))
.insert(Source::default())
.insert(Sound {
buffer, buffer,
looping: true, looping: true,
..default() ..default()
}, });
));
} }
} }

View File

@ -10,7 +10,7 @@ use bevy::{
}; };
pub use synthizer as syz; pub use synthizer as syz;
#[derive(Clone, Debug, Deref, DerefMut, PartialEq, Eq, TypeUuid)] #[derive(Clone, Debug, Deref, DerefMut, PartialEq, TypeUuid)]
#[uuid = "6b6b533a-bb1f-11ec-bda2-00155d8fdde9"] #[uuid = "6b6b533a-bb1f-11ec-bda2-00155d8fdde9"]
pub struct Buffer(syz::Buffer); pub struct Buffer(syz::Buffer);
@ -43,9 +43,6 @@ impl AssetLoader for BufferAssetLoader {
} }
} }
#[derive(Resource, Clone, Debug, Deref, DerefMut)]
pub struct Context(syz::Context);
#[derive(Component, Clone, Debug, Reflect)] #[derive(Component, Clone, Debug, Reflect)]
#[reflect(Component)] #[reflect(Component)]
pub struct Source { pub struct Source {
@ -160,7 +157,7 @@ pub enum SynthizerEvent {
pub struct Listener; pub struct Listener;
fn update_listener( fn update_listener(
context: ResMut<Context>, context: ResMut<syz::Context>,
listener: Query<Option<&GlobalTransform>, With<Listener>>, listener: Query<Option<&GlobalTransform>, With<Listener>>,
) { ) {
if let Ok(transform) = listener.get_single() { if let Ok(transform) = listener.get_single() {
@ -195,7 +192,7 @@ fn update_listener(
} }
fn add_source_handle( fn add_source_handle(
context: Res<Context>, context: Res<syz::Context>,
mut query: Query<( mut query: Query<(
&mut Source, &mut Source,
Option<&PannerStrategy>, Option<&PannerStrategy>,
@ -244,7 +241,7 @@ fn add_source_handle(
} }
fn add_generator( fn add_generator(
context: Res<Context>, context: Res<syz::Context>,
buffers: Res<Assets<Buffer>>, buffers: Res<Assets<Buffer>>,
mut query: Query<(Entity, Option<&Parent>, &mut Sound)>, mut query: Query<(Entity, Option<&Parent>, &mut Sound)>,
mut sources: Query<&mut Source>, mut sources: Query<&mut Source>,
@ -316,7 +313,7 @@ fn add_sound_without_source(
} }
} }
#[derive(Resource, Default, Deref, DerefMut)] #[derive(Default, Deref, DerefMut)]
struct LastBuffer(HashMap<Entity, Handle<Buffer>>); struct LastBuffer(HashMap<Entity, Handle<Buffer>>);
fn swap_buffers( fn swap_buffers(
@ -357,7 +354,7 @@ fn change_panner_strategy(
} }
fn update_source_properties( fn update_source_properties(
context: Res<Context>, context: Res<syz::Context>,
mut query: Query<( mut query: Query<(
&mut Source, &mut Source,
Option<&DistanceModel>, Option<&DistanceModel>,
@ -564,7 +561,7 @@ fn remove_sound(mut last_buffer: ResMut<LastBuffer>, removed: RemovedComponents<
} }
} }
#[derive(Resource, Clone, Default, Debug)] #[derive(Clone, Default, Debug)]
pub struct SynthizerConfig { pub struct SynthizerConfig {
pub default_panner_strategy: Option<syz::PannerStrategy>, pub default_panner_strategy: Option<syz::PannerStrategy>,
pub default_distance_model: Option<syz::DistanceModel>, pub default_distance_model: Option<syz::DistanceModel>,
@ -577,7 +574,7 @@ pub struct SynthizerConfig {
pub log_to_stderr: bool, pub log_to_stderr: bool,
} }
#[derive(Resource, Debug)] #[derive(Debug)]
pub struct SynthizerDefaults { pub struct SynthizerDefaults {
pub panner_strategy: syz::PannerStrategy, pub panner_strategy: syz::PannerStrategy,
pub distance_model: syz::DistanceModel, pub distance_model: syz::DistanceModel,
@ -589,7 +586,7 @@ pub struct SynthizerDefaults {
} }
fn sync_config( fn sync_config(
context: Res<Context>, context: Res<syz::Context>,
config: Res<SynthizerConfig>, config: Res<SynthizerConfig>,
defaults: Res<SynthizerDefaults>, defaults: Res<SynthizerDefaults>,
) { ) {
@ -642,7 +639,7 @@ fn sync_config(
} }
fn events( fn events(
context: Res<Context>, context: Res<syz::Context>,
sounds: Query<(Entity, &Sound)>, sounds: Query<(Entity, &Sound)>,
mut output: EventWriter<SynthizerEvent>, mut output: EventWriter<SynthizerEvent>,
) { ) {
@ -680,9 +677,6 @@ pub enum SynthizerSystems {
UpdateState, UpdateState,
} }
#[derive(Resource)]
struct InitializationGuard(syz::InitializationGuard);
pub struct SynthizerPlugin; pub struct SynthizerPlugin;
impl Plugin for SynthizerPlugin { impl Plugin for SynthizerPlugin {
@ -699,7 +693,6 @@ impl Plugin for SynthizerPlugin {
let guard = syz_config let guard = syz_config
.initialize() .initialize()
.expect("Failed to initialize Synthizer"); .expect("Failed to initialize Synthizer");
let guard = InitializationGuard(guard);
let context = syz::Context::new().expect("Failed to create Synthizer context"); let context = syz::Context::new().expect("Failed to create Synthizer context");
let defaults = SynthizerDefaults { let defaults = SynthizerDefaults {
panner_strategy: context.default_panner_strategy().get().unwrap(), panner_strategy: context.default_panner_strategy().get().unwrap(),
@ -711,17 +704,8 @@ impl Plugin for SynthizerPlugin {
closeness_boost_distance: context.default_closeness_boost_distance().get().unwrap(), closeness_boost_distance: context.default_closeness_boost_distance().get().unwrap(),
}; };
context.enable_events().expect("Failed to enable events"); context.enable_events().expect("Failed to enable events");
let context = Context(context);
app.add_asset::<Buffer>() app.add_asset::<Buffer>()
.init_asset_loader::<BufferAssetLoader>() .init_asset_loader::<BufferAssetLoader>()
.register_type::<Source>()
.register_type::<DistanceRef>()
.register_type::<DistanceMax>()
.register_type::<Rolloff>()
.register_type::<ClosenessBoostDistance>()
.register_type::<AngularPan>()
.register_type::<ScalarPan>()
.register_type::<Sound>()
.register_type::<Listener>() .register_type::<Listener>()
.insert_resource(guard) .insert_resource(guard)
.insert_resource(context) .insert_resource(context)