oxygengine_composite_renderer/
lib.rs

1extern crate oxygengine_animation as anims;
2extern crate oxygengine_core as core;
3extern crate oxygengine_utils as utils;
4
5pub mod component;
6pub mod composite_renderer;
7pub mod font_asset_protocol;
8pub mod font_face_asset_protocol;
9pub mod jpg_image_asset_protocol;
10pub mod map_asset_protocol;
11pub mod math;
12pub mod mesh_animation_asset_protocol;
13pub mod mesh_asset_protocol;
14pub mod png_image_asset_protocol;
15pub mod resource;
16pub mod sprite_sheet_asset_protocol;
17pub mod svg_image_asset_protocol;
18pub mod system;
19pub mod tileset_asset_protocol;
20
21pub mod prelude {
22    pub use crate::{
23        component::*,
24        composite_renderer::*,
25        font_asset_protocol::*,
26        font_face_asset_protocol::*,
27        jpg_image_asset_protocol::*,
28        map_asset_protocol::*,
29        math::*,
30        mesh_animation_asset_protocol::*,
31        mesh_asset_protocol::*,
32        png_image_asset_protocol::*,
33        resource::*,
34        sprite_sheet_asset_protocol::*,
35        svg_image_asset_protocol::*,
36        system::{
37            camera_cache::*, map::*, mesh::*, mesh_animation::*, renderer::*, sprite_animation::*,
38            sprite_sheet::*, surface_cache::*, tilemap::*, tilemap_animation::*, transform::*, *,
39        },
40        tileset_asset_protocol::*,
41    };
42}
43
44use crate::{
45    component::*,
46    composite_renderer::CompositeRenderer,
47    resource::*,
48    system::{
49        camera_cache::*, map::*, mesh::*, mesh_animation::*, renderer::*, sprite_animation::*,
50        sprite_sheet::*, surface_cache::*, tilemap::*, tilemap_animation::*, transform::*,
51    },
52};
53use core::{
54    app::AppBuilder,
55    assets::database::AssetsDatabase,
56    ecs::pipeline::{PipelineBuilder, PipelineBuilderError},
57    ignite_proxy,
58    prefab::PrefabManager,
59};
60
61ignite_proxy! {
62    struct Grid2d<T> {}
63}
64
65pub fn bundle_installer<PB, CR>(
66    builder: &mut AppBuilder<PB>,
67    data: CR,
68) -> Result<(), PipelineBuilderError>
69where
70    PB: PipelineBuilder,
71    CR: CompositeRenderer + 'static,
72{
73    builder.install_resource(data);
74    builder.install_resource(CompositeTransformCache::default());
75    builder.install_resource(CompositeCameraCache::default());
76    builder.install_resource(CompositeMeshAnimationSystemCache::default());
77    builder.install_resource(CompositeSpriteSheetSystemCache::default());
78    builder.install_resource(CompositeTilemapSystemCache::default());
79    builder.install_resource(CompositeMeshSystemCache::default());
80    builder.install_resource(CompositeMapSystemCache::default());
81    builder.install_resource(CompositeSurfaceCacheSystemCache::default());
82
83    builder.install_system::<CompositeTransformSystemResources>(
84        "transform",
85        composite_transform_system,
86        &[],
87    )?;
88    builder.install_system::<CompositeSpriteAnimationSystemResources>(
89        "sprite-animation",
90        composite_sprite_animation_system,
91        &[],
92    )?;
93    builder.install_system::<CompositeTilemapAnimationSystemResources>(
94        "tilemap-animation",
95        composite_tilemap_animation_system,
96        &[],
97    )?;
98    builder.install_system::<CompositeMeshAnimationSystemResources>(
99        "mesh-animation",
100        composite_mesh_animation_system,
101        &[],
102    )?;
103    builder.install_system::<CompositeSpriteSheetSystemResources>(
104        "sprite-sheet",
105        composite_sprite_sheet_system,
106        &["sprite-animation"],
107    )?;
108    builder.install_system::<CompositeTilemapSystemResources>(
109        "tilemap",
110        composite_tilemap_system,
111        &["tilemap-animation"],
112    )?;
113    builder.install_system::<CompositeMeshSystemResources>(
114        "mesh",
115        composite_mesh_system,
116        &["mesh-animation"],
117    )?;
118    builder.install_system::<CompositeMapSystemResources>("map", composite_map_system, &[])?;
119    builder.install_system::<CompositeCameraCacheSystemResources<CR>>(
120        "camera-cache",
121        composite_camera_cache_system::<CR>,
122        &[],
123    )?;
124    builder.install_system::<CompositeSurfaceCacheSystemResources<CR>>(
125        "surface-cache",
126        composite_surface_cache_system::<CR>,
127        &[],
128    )?;
129    builder.install_system::<CompositeRendererSystemResources<CR>>(
130        "renderer",
131        composite_renderer_system::<CR>,
132        &[],
133    )?;
134
135    Ok(())
136}
137
138pub fn protocols_installer(database: &mut AssetsDatabase) {
139    database.register(png_image_asset_protocol::PngImageAssetProtocol);
140    database.register(jpg_image_asset_protocol::JpgImageAssetProtocol);
141    database.register(svg_image_asset_protocol::SvgImageAssetProtocol);
142    database.register(sprite_sheet_asset_protocol::SpriteSheetAssetProtocol);
143    database.register(tileset_asset_protocol::TilesetAssetProtocol);
144    database.register(map_asset_protocol::MapAssetProtocol);
145    database.register(font_asset_protocol::FontAssetProtocol);
146    database.register(font_face_asset_protocol::FontFaceAssetProtocol);
147    database.register(mesh_asset_protocol::MeshAssetProtocol);
148    database.register(mesh_animation_asset_protocol::MeshAnimationAssetProtocol);
149}
150
151pub fn prefabs_installer(prefabs: &mut PrefabManager) {
152    prefabs.register_component_factory::<CompositeVisibility>("CompositeVisibility");
153    prefabs.register_component_factory::<CompositeSurfaceCache>("CompositeSurfaceCache");
154    prefabs.register_component_factory::<CompositeRenderable>("CompositeRenderable");
155    prefabs.register_component_factory::<CompositeRenderableStroke>("CompositeRenderableStroke");
156    prefabs.register_component_factory::<CompositeTransform>("CompositeTransform");
157    prefabs.register_component_factory::<CompositeRenderLayer>("CompositeRenderLayer");
158    prefabs.register_component_factory::<CompositeRenderDepth>("CompositeRenderDepth");
159    prefabs.register_component_factory::<CompositeRenderAlpha>("CompositeRenderAlpha");
160    prefabs.register_component_factory::<CompositeCameraAlignment>("CompositeCameraAlignment");
161    prefabs.register_component_factory::<CompositeEffect>("CompositeEffect");
162    prefabs.register_component_factory::<CompositeCamera>("CompositeCamera");
163    prefabs.register_component_factory::<CompositeSprite>("CompositeSprite");
164    prefabs.register_component_factory::<CompositeSpriteAnimation>("CompositeSpriteAnimation");
165    prefabs.register_component_factory::<CompositeTilemap>("CompositeTilemap");
166    prefabs.register_component_factory::<CompositeTilemapAnimation>("CompositeTilemapAnimation");
167    prefabs.register_component_factory::<CompositeMapChunk>("CompositeMapChunk");
168    prefabs.register_component_factory::<CompositeMesh>("CompositeMesh");
169    prefabs.register_component_factory::<CompositeMeshAnimation>("CompositeMeshAnimation");
170}