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
use std::error::Error;
use std::path::PathBuf;

use gfx;
use notify;

use super::*;

pub struct ShaderDirectoryWatcher {}
impl ShaderDirectoryWatcher {
    pub fn new<P>(_: P) -> Result<Self, notify::Error>
    where
        PathBuf: From<P>,
    {
        Ok(Self {})
    }
}

pub struct Shader<R: gfx::Resources> {
    shader_set: gfx::ShaderSet<R>,
}
impl<R: gfx::Resources> Shader<R> {
    pub fn simple<F: gfx::Factory<R>>(
        factory: &mut F,
        _: &mut ShaderDirectoryWatcher,
        vertex_source: ShaderSource,
        pixel_source: ShaderSource,
    ) -> Result<Self, Box<Error>> {
        let v = create_vertex_shader(factory, &vertex_source.source.unwrap()).unwrap();
        let f = create_pixel_shader(factory, &pixel_source.source.unwrap()).unwrap();
        Ok(Self { shader_set: gfx::ShaderSet::Simple(v, f) })
    }

    pub fn as_shader_set(&self) -> &gfx::ShaderSet<R> {
        &self.shader_set
    }
    pub fn refresh<F: gfx::Factory<R>>(
        &mut self,
        _: &mut F,
        _: &mut ShaderDirectoryWatcher,
    ) -> bool {
        false
    }
}