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
57
//! Parameters setup file.

use crate::{AttributeLinker, Engine, Settings, ShaderLinker};
use arctk::{
    geom::{Camera, SurfaceLinker, TreeSettings},
    img::Gradient,
    ord::Set,
};

/// Parameter linker structure.
/// Holds setup links to data loaded in memory.
pub struct ParametersLinker {
    /// Colour gradients.
    pub grads: Set<Gradient>,
    /// Attributes.
    pub attrs: Set<AttributeLinker>,
    /// Surfaces.
    pub surfs: Set<SurfaceLinker>,
    /// Main camera.
    pub cam: Camera,
    /// Tree settings.
    pub tree: TreeSettings,
    /// Rendering specific settings.
    pub sett: Settings,
    /// Shader settings.
    pub shader: ShaderLinker,
    /// Engine function.
    pub engine: Engine,
}

impl ParametersLinker {
    /// Construct a new instance.
    #[allow(clippy::too_many_arguments)]
    #[inline]
    #[must_use]
    pub fn new(
        grads: Set<Gradient>,
        attrs: Set<AttributeLinker>,
        surfs: Set<SurfaceLinker>,
        cam: Camera,
        tree: TreeSettings,
        sett: Settings,
        shader: ShaderLinker,
        engine: Engine,
    ) -> Self {
        Self {
            grads,
            attrs,
            surfs,
            cam,
            tree,
            sett,
            shader,
            engine,
        }
    }
}