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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
extern crate oxygengine_core as core; #[macro_use] extern crate lazy_static; mod component; pub mod integration; pub mod interface; pub mod json_asset_protocol; pub mod scriptable; pub mod state; pub mod web_api; pub mod prelude { pub use crate::{ integration::*, interface::*, json_asset_protocol::*, scriptable::*, state::*, }; } use crate::{ component::WebScriptComponent, integration::core::{ AppLifeCycleScripted, AssetsDatabaseLoaderScripted, AssetsDatabaseScripted, }, interface::WebScriptInterface, }; use core::prelude::*; pub fn bundle_installer<'a, 'b, WSS>(builder: &mut AppBuilder<'a, 'b>, mut web_script_setup: WSS) where WSS: FnMut(&mut WebScriptInterface), { builder.install_component::<WebScriptComponent>(); WebScriptInterface::with(|interface| { interface.register_component_bridge("Name", Name::default()); interface.register_component_bridge("Tag", Tag::default()); interface.register_component_bridge("NonPersistent", NonPersistent::default()); interface.register_resource_bridge::<AppLifeCycle, AppLifeCycleScripted>("AppLifeCycle"); interface.register_resource_bridge::<AssetsDatabase, AssetsDatabaseLoaderScripted>( "AssetsDatabaseLoader", ); interface .register_resource_bridge::<AssetsDatabase, AssetsDatabaseScripted>("AssetsDatabase"); #[cfg(feature = "composite-renderer")] { use crate::integration::composite_renderer::*; use oxygengine_composite_renderer::component::*; use oxygengine_composite_renderer_backend_web::WebCompositeRenderer; interface .register_component_bridge("CompositeVisibility", CompositeVisibility::default()); interface.register_component_bridge::<_, CompositeSurfaceCacheScripted>( "CompositeSurfaceCache", CompositeSurfaceCache::default(), ); interface.register_component_bridge::<_, CompositeRenderable>( "CompositeRenderable", CompositeRenderable::default(), ); interface.register_component_bridge( "CompositeRenderableStroke", CompositeRenderableStroke::default(), ); interface.register_component_bridge::<_, CompositeTransformScripted>( "CompositeTransform", CompositeTransform::default(), ); interface .register_component_bridge("CompositeRenderDepth", CompositeRenderDepth::default()); interface .register_component_bridge("CompositeRenderAlpha", CompositeRenderAlpha::default()); interface.register_component_bridge( "CompositeCameraAlignment", CompositeCameraAlignment::default(), ); interface.register_component_bridge("CompositeEffect", CompositeEffect::default()); interface.register_component_bridge("CompositeCamera", CompositeCamera::default()); interface.register_component_bridge::<_, CompositeSpriteScripted>( "CompositeSprite", CompositeSprite::default(), ); interface.register_component_bridge::<_, CompositeSpriteAnimationScripted>( "CompositeSpriteAnimation", CompositeSpriteAnimation::default(), ); interface.register_component_bridge::<_, CompositeTilemapScripted>( "CompositeTilemap", CompositeTilemap::default(), ); interface.register_component_bridge::<_, CompositeTilemapAnimationScripted>( "CompositeTilemapAnimation", CompositeTilemapAnimation::default(), ); interface.register_component_bridge::<_, CompositeMapChunkScripted>( "CompositeMapChunk", CompositeMapChunk::default(), ); interface .register_resource_bridge::<WebCompositeRenderer, WebCompositeRendererScripted>( "WebCompositeRenderer", ); } #[cfg(feature = "audio")] { use crate::integration::audio::*; use oxygengine_audio::component::*; interface.register_component_bridge::<_, AudioSourceScripted>( "AudioSource", AudioSource::default(), ); } #[cfg(feature = "input")] { use crate::integration::input::*; use oxygengine_input::resource::*; interface.register_resource_bridge::<InputController, InputControllerMappingsScripted>( "InputControllerMappings", ); interface.register_resource_bridge::<InputController, InputControllerStateScripted>( "InputControllerState", ); } web_script_setup(interface); }); } pub fn protocols_installer(database: &mut AssetsDatabase) { database.register(json_asset_protocol::JsonAssetProtocol); }