excalibur 0.25.2 → 0.25.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -2
- package/build/dist/Actions/Action/Blink.js +51 -0
- package/build/dist/Actions/Action/Blink.js.map +1 -0
- package/build/dist/Actions/Action/CallMethod.js +21 -0
- package/build/dist/Actions/Action/CallMethod.js.map +1 -0
- package/build/dist/Actions/Action/Delay.js +25 -0
- package/build/dist/Actions/Action/Delay.js.map +1 -0
- package/build/dist/Actions/Action/Die.js +22 -0
- package/build/dist/Actions/Action/Die.js.map +1 -0
- package/build/dist/Actions/Action/EaseTo.js +69 -0
- package/build/dist/Actions/Action/EaseTo.js.map +1 -0
- package/build/dist/Actions/Action/Fade.js +46 -0
- package/build/dist/Actions/Action/Fade.js.map +1 -0
- package/build/dist/Actions/Action/Follow.js +55 -0
- package/build/dist/Actions/Action/Follow.js.map +1 -0
- package/build/dist/Actions/Action/Meet.js +52 -0
- package/build/dist/Actions/Action/Meet.js.map +1 -0
- package/build/dist/Actions/Action/MoveBy.js +47 -0
- package/build/dist/Actions/Action/MoveBy.js.map +1 -0
- package/build/dist/Actions/Action/MoveTo.js +40 -0
- package/build/dist/Actions/Action/MoveTo.js.map +1 -0
- package/build/dist/Actions/Action/Repeat.js +31 -0
- package/build/dist/Actions/Action/Repeat.js.map +1 -0
- package/build/dist/Actions/Action/RepeatForever.js +37 -0
- package/build/dist/Actions/Action/RepeatForever.js.map +1 -0
- package/build/dist/Actions/Action/RotateBy.js +91 -0
- package/build/dist/Actions/Action/RotateBy.js.map +1 -0
- package/build/dist/Actions/Action/RotateTo.js +90 -0
- package/build/dist/Actions/Action/RotateTo.js.map +1 -0
- package/build/dist/Actions/Action/ScaleBy.js +45 -0
- package/build/dist/Actions/Action/ScaleBy.js.map +1 -0
- package/build/dist/Actions/Action/ScaleTo.js +56 -0
- package/build/dist/Actions/Action/ScaleTo.js.map +1 -0
- package/build/dist/Actions/Action.js +2 -0
- package/build/dist/Actions/Action.js.map +1 -0
- package/build/dist/Actions/ActionContext.js +305 -0
- package/build/dist/Actions/ActionContext.js.map +1 -0
- package/build/dist/Actions/ActionQueue.js +87 -0
- package/build/dist/Actions/ActionQueue.js.map +1 -0
- package/build/dist/Actions/Actionable.js +2 -0
- package/build/dist/Actions/Actionable.js.map +1 -0
- package/build/dist/Actions/ActionsComponent.js +198 -0
- package/build/dist/Actions/ActionsComponent.js.map +1 -0
- package/build/dist/Actions/ActionsSystem.js +18 -0
- package/build/dist/Actions/ActionsSystem.js.map +1 -0
- package/build/dist/Actions/Index.js +22 -0
- package/build/dist/Actions/Index.js.map +1 -0
- package/build/dist/Actions/RotationType.js +27 -0
- package/build/dist/Actions/RotationType.js.map +1 -0
- package/build/dist/Actor.js +831 -0
- package/build/dist/Actor.js.map +1 -0
- package/build/dist/Camera.js +663 -0
- package/build/dist/Camera.js.map +1 -0
- package/build/dist/Class.js +48 -0
- package/build/dist/Class.js.map +1 -0
- package/build/dist/Collision/BodyComponent.js +351 -0
- package/build/dist/Collision/BodyComponent.js.map +1 -0
- package/build/dist/Collision/BoundingBox.js +361 -0
- package/build/dist/Collision/BoundingBox.js.map +1 -0
- package/build/dist/Collision/ColliderComponent.js +198 -0
- package/build/dist/Collision/ColliderComponent.js.map +1 -0
- package/build/dist/Collision/Colliders/CircleCollider.js +264 -0
- package/build/dist/Collision/Colliders/CircleCollider.js.map +1 -0
- package/build/dist/Collision/Colliders/ClosestLineJumpTable.js +211 -0
- package/build/dist/Collision/Colliders/ClosestLineJumpTable.js.map +1 -0
- package/build/dist/Collision/Colliders/Collider.js +26 -0
- package/build/dist/Collision/Colliders/Collider.js.map +1 -0
- package/build/dist/Collision/Colliders/CollisionJumpTable.js +301 -0
- package/build/dist/Collision/Colliders/CollisionJumpTable.js.map +1 -0
- package/build/dist/Collision/Colliders/CompositeCollider.js +232 -0
- package/build/dist/Collision/Colliders/CompositeCollider.js.map +1 -0
- package/build/dist/Collision/Colliders/EdgeCollider.js +253 -0
- package/build/dist/Collision/Colliders/EdgeCollider.js.map +1 -0
- package/build/dist/Collision/Colliders/PolygonCollider.js +389 -0
- package/build/dist/Collision/Colliders/PolygonCollider.js.map +1 -0
- package/build/dist/Collision/Colliders/SeparatingAxis.js +67 -0
- package/build/dist/Collision/Colliders/SeparatingAxis.js.map +1 -0
- package/build/dist/Collision/Colliders/Shape.js +102 -0
- package/build/dist/Collision/Colliders/Shape.js.map +1 -0
- package/build/dist/Collision/CollisionSystem.js +116 -0
- package/build/dist/Collision/CollisionSystem.js.map +1 -0
- package/build/dist/Collision/CollisionType.js +33 -0
- package/build/dist/Collision/CollisionType.js.map +1 -0
- package/build/dist/Collision/Detection/CollisionContact.js +46 -0
- package/build/dist/Collision/Detection/CollisionContact.js.map +1 -0
- package/build/dist/Collision/Detection/CollisionProcessor.js +2 -0
- package/build/dist/Collision/Detection/CollisionProcessor.js.map +1 -0
- package/build/dist/Collision/Detection/DynamicTree.js +442 -0
- package/build/dist/Collision/Detection/DynamicTree.js.map +1 -0
- package/build/dist/Collision/Detection/DynamicTreeCollisionProcessor.js +211 -0
- package/build/dist/Collision/Detection/DynamicTreeCollisionProcessor.js.map +1 -0
- package/build/dist/Collision/Detection/Pair.js +92 -0
- package/build/dist/Collision/Detection/Pair.js.map +1 -0
- package/build/dist/Collision/Group/CollisionGroup.js +114 -0
- package/build/dist/Collision/Group/CollisionGroup.js.map +1 -0
- package/build/dist/Collision/Group/CollisionGroupManager.js +52 -0
- package/build/dist/Collision/Group/CollisionGroupManager.js.map +1 -0
- package/build/dist/Collision/Index.js +29 -0
- package/build/dist/Collision/Index.js.map +1 -0
- package/build/dist/Collision/Integrator.js +11 -0
- package/build/dist/Collision/Integrator.js.map +1 -0
- package/build/dist/Collision/MotionSystem.js +42 -0
- package/build/dist/Collision/MotionSystem.js.map +1 -0
- package/build/dist/Collision/Physics.js +163 -0
- package/build/dist/Collision/Physics.js.map +1 -0
- package/build/dist/Collision/Side.js +51 -0
- package/build/dist/Collision/Side.js.map +1 -0
- package/build/dist/Collision/Solver/ArcadeSolver.js +101 -0
- package/build/dist/Collision/Solver/ArcadeSolver.js.map +1 -0
- package/build/dist/Collision/Solver/ContactConstraintPoint.js +83 -0
- package/build/dist/Collision/Solver/ContactConstraintPoint.js.map +1 -0
- package/build/dist/Collision/Solver/RealisticSolver.js +248 -0
- package/build/dist/Collision/Solver/RealisticSolver.js.map +1 -0
- package/build/dist/Collision/Solver/Solver.js +37 -0
- package/build/dist/Collision/Solver/Solver.js.map +1 -0
- package/build/dist/Color.js +461 -0
- package/build/dist/Color.js.map +1 -0
- package/build/dist/Configurable.js +32 -0
- package/build/dist/Configurable.js.map +1 -0
- package/build/dist/Debug/Debug.js +375 -0
- package/build/dist/Debug/Debug.js.map +1 -0
- package/build/dist/Debug/DebugFlags.js +40 -0
- package/build/dist/Debug/DebugFlags.js.map +1 -0
- package/build/dist/Debug/DebugSystem.js +251 -0
- package/build/dist/Debug/DebugSystem.js.map +1 -0
- package/build/dist/Debug/index.js +4 -0
- package/build/dist/Debug/index.js.map +1 -0
- package/build/dist/Deprecated.js +2 -0
- package/build/dist/Deprecated.js.map +1 -0
- package/build/dist/Drawing/Animation.js +294 -0
- package/build/dist/Drawing/Animation.js.map +1 -0
- package/build/dist/Drawing/CanvasDrawComponent.js +16 -0
- package/build/dist/Drawing/CanvasDrawComponent.js.map +1 -0
- package/build/dist/Drawing/CanvasDrawingSystem.js +95 -0
- package/build/dist/Drawing/CanvasDrawingSystem.js.map +1 -0
- package/build/dist/Drawing/Index.js +10 -0
- package/build/dist/Drawing/Index.js.map +1 -0
- package/build/dist/Drawing/Polygon.js +139 -0
- package/build/dist/Drawing/Polygon.js.map +1 -0
- package/build/dist/Drawing/Sprite.js +355 -0
- package/build/dist/Drawing/Sprite.js.map +1 -0
- package/build/dist/Drawing/SpriteEffects.js +246 -0
- package/build/dist/Drawing/SpriteEffects.js.map +1 -0
- package/build/dist/Drawing/SpriteSheet.js +413 -0
- package/build/dist/Drawing/SpriteSheet.js.map +1 -0
- package/build/dist/Drawing/Texture.js +69 -0
- package/build/dist/Drawing/Texture.js.map +1 -0
- package/build/dist/Engine.d.ts +4 -1
- package/build/dist/Engine.js +985 -0
- package/build/dist/Engine.js.map +1 -0
- package/build/dist/EntityComponentSystem/Component.js +65 -0
- package/build/dist/EntityComponentSystem/Component.js.map +1 -0
- package/build/dist/EntityComponentSystem/Components/MotionComponent.js +33 -0
- package/build/dist/EntityComponentSystem/Components/MotionComponent.js.map +1 -0
- package/build/dist/EntityComponentSystem/Components/TransformComponent.js +249 -0
- package/build/dist/EntityComponentSystem/Components/TransformComponent.js.map +1 -0
- package/build/dist/EntityComponentSystem/Entity.js +452 -0
- package/build/dist/EntityComponentSystem/Entity.js.map +1 -0
- package/build/dist/EntityComponentSystem/EntityManager.js +128 -0
- package/build/dist/EntityComponentSystem/EntityManager.js.map +1 -0
- package/build/dist/EntityComponentSystem/Query.js +91 -0
- package/build/dist/EntityComponentSystem/Query.js.map +1 -0
- package/build/dist/EntityComponentSystem/QueryManager.js +90 -0
- package/build/dist/EntityComponentSystem/QueryManager.js.map +1 -0
- package/build/dist/EntityComponentSystem/System.js +76 -0
- package/build/dist/EntityComponentSystem/System.js.map +1 -0
- package/build/dist/EntityComponentSystem/SystemManager.js +102 -0
- package/build/dist/EntityComponentSystem/SystemManager.js.map +1 -0
- package/build/dist/EntityComponentSystem/Util.js +5 -0
- package/build/dist/EntityComponentSystem/Util.js.map +1 -0
- package/build/dist/EntityComponentSystem/World.js +55 -0
- package/build/dist/EntityComponentSystem/World.js.map +1 -0
- package/build/dist/EntityComponentSystem/index.js +11 -0
- package/build/dist/EntityComponentSystem/index.js.map +1 -0
- package/build/dist/EventDispatcher.js +114 -0
- package/build/dist/EventDispatcher.js.map +1 -0
- package/build/dist/Events/ExEvent.js +12 -0
- package/build/dist/Events/ExEvent.js.map +1 -0
- package/build/dist/Events/MediaEvents.js +75 -0
- package/build/dist/Events/MediaEvents.js.map +1 -0
- package/build/dist/Events/PointerEvents.js +52 -0
- package/build/dist/Events/PointerEvents.js.map +1 -0
- package/build/dist/Events.js +497 -0
- package/build/dist/Events.js.map +1 -0
- package/build/dist/Flags.js +90 -0
- package/build/dist/Flags.js.map +1 -0
- package/build/dist/Graphics/Animation.js +310 -0
- package/build/dist/Graphics/Animation.js.map +1 -0
- package/build/dist/Graphics/Canvas.js +38 -0
- package/build/dist/Graphics/Canvas.js.map +1 -0
- package/build/dist/Graphics/Circle.js +47 -0
- package/build/dist/Graphics/Circle.js.map +1 -0
- package/build/dist/Graphics/Context/ExcaliburGraphicsContext.js +2 -0
- package/build/dist/Graphics/Context/ExcaliburGraphicsContext.js.map +1 -0
- package/build/dist/Graphics/Context/ExcaliburGraphicsContext2DCanvas.js +207 -0
- package/build/dist/Graphics/Context/ExcaliburGraphicsContext2DCanvas.js.map +1 -0
- package/build/dist/Graphics/Context/ExcaliburGraphicsContextWebGL.js +331 -0
- package/build/dist/Graphics/Context/ExcaliburGraphicsContextWebGL.js.map +1 -0
- package/build/dist/Graphics/Context/circle-renderer/circle-renderer.js +160 -0
- package/build/dist/Graphics/Context/circle-renderer/circle-renderer.js.map +1 -0
- package/build/dist/Graphics/Context/debug-text.js +47 -0
- package/build/dist/Graphics/Context/debug-text.js.map +1 -0
- package/build/dist/Graphics/Context/image-renderer/image-renderer.js +209 -0
- package/build/dist/Graphics/Context/image-renderer/image-renderer.js.map +1 -0
- package/build/dist/Graphics/Context/line-renderer/line-renderer.js +87 -0
- package/build/dist/Graphics/Context/line-renderer/line-renderer.js.map +1 -0
- package/build/dist/Graphics/Context/point-renderer/point-renderer.js +82 -0
- package/build/dist/Graphics/Context/point-renderer/point-renderer.js.map +1 -0
- package/build/dist/Graphics/Context/quad-index-buffer.js +69 -0
- package/build/dist/Graphics/Context/quad-index-buffer.js.map +1 -0
- package/build/dist/Graphics/Context/rectangle-renderer/rectangle-renderer.js +272 -0
- package/build/dist/Graphics/Context/rectangle-renderer/rectangle-renderer.js.map +1 -0
- package/build/dist/Graphics/Context/render-source.js +16 -0
- package/build/dist/Graphics/Context/render-source.js.map +1 -0
- package/build/dist/Graphics/Context/render-target.js +65 -0
- package/build/dist/Graphics/Context/render-target.js.map +1 -0
- package/build/dist/Graphics/Context/renderer.js +2 -0
- package/build/dist/Graphics/Context/renderer.js.map +1 -0
- package/build/dist/Graphics/Context/screen-pass-painter/screen-pass-painter.js +53 -0
- package/build/dist/Graphics/Context/screen-pass-painter/screen-pass-painter.js.map +1 -0
- package/build/dist/Graphics/Context/shader.js +236 -0
- package/build/dist/Graphics/Context/shader.js.map +1 -0
- package/build/dist/Graphics/Context/state-stack.js +27 -0
- package/build/dist/Graphics/Context/state-stack.js.map +1 -0
- package/build/dist/Graphics/Context/texture-loader.d.ts +8 -0
- package/build/dist/Graphics/Context/texture-loader.js +121 -0
- package/build/dist/Graphics/Context/texture-loader.js.map +1 -0
- package/build/dist/Graphics/Context/transform-stack.js +30 -0
- package/build/dist/Graphics/Context/transform-stack.js.map +1 -0
- package/build/dist/Graphics/Context/vertex-buffer.js +45 -0
- package/build/dist/Graphics/Context/vertex-buffer.js.map +1 -0
- package/build/dist/Graphics/Context/vertex-layout.js +93 -0
- package/build/dist/Graphics/Context/vertex-layout.js.map +1 -0
- package/build/dist/Graphics/Context/webgl-adapter.js +19 -0
- package/build/dist/Graphics/Context/webgl-adapter.js.map +1 -0
- package/build/dist/Graphics/Context/webgl-util.js +105 -0
- package/build/dist/Graphics/Context/webgl-util.js.map +1 -0
- package/build/dist/Graphics/DebugGraphicsComponent.js +15 -0
- package/build/dist/Graphics/DebugGraphicsComponent.js.map +1 -0
- package/build/dist/Graphics/Filtering.js +17 -0
- package/build/dist/Graphics/Filtering.js.map +1 -0
- package/build/dist/Graphics/Font.js +293 -0
- package/build/dist/Graphics/Font.js.map +1 -0
- package/build/dist/Graphics/FontCommon.js +109 -0
- package/build/dist/Graphics/FontCommon.js.map +1 -0
- package/build/dist/Graphics/Graphic.js +200 -0
- package/build/dist/Graphics/Graphic.js.map +1 -0
- package/build/dist/Graphics/GraphicsComponent.js +290 -0
- package/build/dist/Graphics/GraphicsComponent.js.map +1 -0
- package/build/dist/Graphics/GraphicsDiagnostics.js +9 -0
- package/build/dist/Graphics/GraphicsDiagnostics.js.map +1 -0
- package/build/dist/Graphics/GraphicsGroup.js +69 -0
- package/build/dist/Graphics/GraphicsGroup.js.map +1 -0
- package/build/dist/Graphics/GraphicsSystem.js +153 -0
- package/build/dist/Graphics/GraphicsSystem.js.map +1 -0
- package/build/dist/Graphics/ImageSource.js +116 -0
- package/build/dist/Graphics/ImageSource.js.map +1 -0
- package/build/dist/Graphics/Polygon.js +59 -0
- package/build/dist/Graphics/Polygon.js.map +1 -0
- package/build/dist/Graphics/PostProcessor/ColorBlindnessMode.js +7 -0
- package/build/dist/Graphics/PostProcessor/ColorBlindnessMode.js.map +1 -0
- package/build/dist/Graphics/PostProcessor/ColorBlindnessPostProcessor.js +52 -0
- package/build/dist/Graphics/PostProcessor/ColorBlindnessPostProcessor.js.map +1 -0
- package/build/dist/Graphics/PostProcessor/PostProcessor.js +2 -0
- package/build/dist/Graphics/PostProcessor/PostProcessor.js.map +1 -0
- package/build/dist/Graphics/PostProcessor/ScreenShader.js +56 -0
- package/build/dist/Graphics/PostProcessor/ScreenShader.js.map +1 -0
- package/build/dist/Graphics/Raster.js +207 -0
- package/build/dist/Graphics/Raster.js.map +1 -0
- package/build/dist/Graphics/Rectangle.js +29 -0
- package/build/dist/Graphics/Rectangle.js.map +1 -0
- package/build/dist/Graphics/Sprite.js +103 -0
- package/build/dist/Graphics/Sprite.js.map +1 -0
- package/build/dist/Graphics/SpriteFont.js +120 -0
- package/build/dist/Graphics/SpriteFont.js.map +1 -0
- package/build/dist/Graphics/SpriteSheet.js +115 -0
- package/build/dist/Graphics/SpriteSheet.js.map +1 -0
- package/build/dist/Graphics/Text.js +94 -0
- package/build/dist/Graphics/Text.js.map +1 -0
- package/build/dist/Graphics/index.js +42 -0
- package/build/dist/Graphics/index.js.map +1 -0
- package/build/dist/Id.js +8 -0
- package/build/dist/Id.js.map +1 -0
- package/build/dist/Input/CapturePointerConfig.js +5 -0
- package/build/dist/Input/CapturePointerConfig.js.map +1 -0
- package/build/dist/Input/EngineInput.js +2 -0
- package/build/dist/Input/EngineInput.js.map +1 -0
- package/build/dist/Input/Gamepad.js +358 -0
- package/build/dist/Input/Gamepad.js.map +1 -0
- package/build/dist/Input/Index.js +22 -0
- package/build/dist/Input/Index.js.map +1 -0
- package/build/dist/Input/Keyboard.js +267 -0
- package/build/dist/Input/Keyboard.js.map +1 -0
- package/build/dist/Input/NativePointerButton.js +12 -0
- package/build/dist/Input/NativePointerButton.js.map +1 -0
- package/build/dist/Input/PointerAbstraction.js +41 -0
- package/build/dist/Input/PointerAbstraction.js.map +1 -0
- package/build/dist/Input/PointerButton.js +12 -0
- package/build/dist/Input/PointerButton.js.map +1 -0
- package/build/dist/Input/PointerComponent.js +28 -0
- package/build/dist/Input/PointerComponent.js.map +1 -0
- package/build/dist/Input/PointerEvent.js +25 -0
- package/build/dist/Input/PointerEvent.js.map +1 -0
- package/build/dist/Input/PointerEventReceiver.js +414 -0
- package/build/dist/Input/PointerEventReceiver.js.map +1 -0
- package/build/dist/Input/PointerScope.js +16 -0
- package/build/dist/Input/PointerScope.js.map +1 -0
- package/build/dist/Input/PointerSystem.js +217 -0
- package/build/dist/Input/PointerSystem.js.map +1 -0
- package/build/dist/Input/PointerType.js +11 -0
- package/build/dist/Input/PointerType.js.map +1 -0
- package/build/dist/Input/WheelDeltaMode.js +7 -0
- package/build/dist/Input/WheelDeltaMode.js.map +1 -0
- package/build/dist/Input/WheelEvent.js +21 -0
- package/build/dist/Input/WheelEvent.js.map +1 -0
- package/build/dist/Interfaces/Audio.js +2 -0
- package/build/dist/Interfaces/Audio.js.map +1 -0
- package/build/dist/Interfaces/AudioImplementation.js +11 -0
- package/build/dist/Interfaces/AudioImplementation.js.map +1 -0
- package/build/dist/Interfaces/Clonable.js +2 -0
- package/build/dist/Interfaces/Clonable.js.map +1 -0
- package/build/dist/Interfaces/Drawable.js +2 -0
- package/build/dist/Interfaces/Drawable.js.map +1 -0
- package/build/dist/Interfaces/Evented.js +2 -0
- package/build/dist/Interfaces/Evented.js.map +1 -0
- package/build/dist/Interfaces/Index.js +10 -0
- package/build/dist/Interfaces/Index.js.map +1 -0
- package/build/dist/Interfaces/LifecycleEvents.js +51 -0
- package/build/dist/Interfaces/LifecycleEvents.js.map +1 -0
- package/build/dist/Interfaces/Loadable.js +2 -0
- package/build/dist/Interfaces/Loadable.js.map +1 -0
- package/build/dist/Interfaces/PointerEventHandlers.js +2 -0
- package/build/dist/Interfaces/PointerEventHandlers.js.map +1 -0
- package/build/dist/Interfaces/Trait.js +2 -0
- package/build/dist/Interfaces/Trait.js.map +1 -0
- package/build/dist/Label.js +273 -0
- package/build/dist/Label.js.map +1 -0
- package/build/dist/Loader.js +367 -0
- package/build/dist/Loader.js.map +1 -0
- package/build/dist/Math/Index.js +10 -0
- package/build/dist/Math/Index.js.map +1 -0
- package/build/dist/Math/Random.js +239 -0
- package/build/dist/Math/Random.js.map +1 -0
- package/build/dist/Math/global-coordinates.js +30 -0
- package/build/dist/Math/global-coordinates.js.map +1 -0
- package/build/dist/Math/line.js +194 -0
- package/build/dist/Math/line.js.map +1 -0
- package/build/dist/Math/matrix.js +446 -0
- package/build/dist/Math/matrix.js.map +1 -0
- package/build/dist/Math/projection.js +24 -0
- package/build/dist/Math/projection.js.map +1 -0
- package/build/dist/Math/ray.js +52 -0
- package/build/dist/Math/ray.js.map +1 -0
- package/build/dist/Math/util.js +82 -0
- package/build/dist/Math/util.js.map +1 -0
- package/build/dist/Math/vector-view.js +25 -0
- package/build/dist/Math/vector-view.js.map +1 -0
- package/build/dist/Math/vector.js +326 -0
- package/build/dist/Math/vector.js.map +1 -0
- package/build/dist/Particles.js +449 -0
- package/build/dist/Particles.js.map +1 -0
- package/build/dist/Polyfill.js +56 -0
- package/build/dist/Polyfill.js.map +1 -0
- package/build/dist/Promises.js +205 -0
- package/build/dist/Promises.js.map +1 -0
- package/build/dist/Resources/Gif.js +479 -0
- package/build/dist/Resources/Gif.js.map +1 -0
- package/build/dist/Resources/Index.js +4 -0
- package/build/dist/Resources/Index.js.map +1 -0
- package/build/dist/Resources/Resource.js +74 -0
- package/build/dist/Resources/Resource.js.map +1 -0
- package/build/dist/Resources/Sound/AudioContext.js +16 -0
- package/build/dist/Resources/Sound/AudioContext.js.map +1 -0
- package/build/dist/Resources/Sound/Index.js +4 -0
- package/build/dist/Resources/Sound/Index.js.map +1 -0
- package/build/dist/Resources/Sound/Sound.js +240 -0
- package/build/dist/Resources/Sound/Sound.js.map +1 -0
- package/build/dist/Resources/Sound/WebAudioInstance.js +160 -0
- package/build/dist/Resources/Sound/WebAudioInstance.js.map +1 -0
- package/build/dist/Scene.js +458 -0
- package/build/dist/Scene.js.map +1 -0
- package/build/dist/Screen.js +634 -0
- package/build/dist/Screen.js.map +1 -0
- package/build/dist/ScreenElement.js +29 -0
- package/build/dist/ScreenElement.js.map +1 -0
- package/build/dist/TileMap.js +488 -0
- package/build/dist/TileMap.js.map +1 -0
- package/build/dist/Timer.js +198 -0
- package/build/dist/Timer.js.map +1 -0
- package/build/dist/Traits/Index.js +5 -0
- package/build/dist/Traits/Index.js.map +1 -0
- package/build/dist/Traits/OffscreenCulling.js +35 -0
- package/build/dist/Traits/OffscreenCulling.js.map +1 -0
- package/build/dist/Trigger.js +113 -0
- package/build/dist/Trigger.js.map +1 -0
- package/build/dist/Util/Actors.js +19 -0
- package/build/dist/Util/Actors.js.map +1 -0
- package/build/dist/Util/Browser.js +66 -0
- package/build/dist/Util/Browser.js.map +1 -0
- package/build/dist/Util/Clock.js +219 -0
- package/build/dist/Util/Clock.js.map +1 -0
- package/build/dist/Util/CullingBox.js +104 -0
- package/build/dist/Util/CullingBox.js.map +1 -0
- package/build/dist/Util/Decorators.js +78 -0
- package/build/dist/Util/Decorators.js.map +1 -0
- package/build/dist/Util/Detector.js +167 -0
- package/build/dist/Util/Detector.js.map +1 -0
- package/build/dist/Util/DrawUtil.js +117 -0
- package/build/dist/Util/DrawUtil.js.map +1 -0
- package/build/dist/Util/EasingFunctions.js +118 -0
- package/build/dist/Util/EasingFunctions.js.map +1 -0
- package/build/dist/Util/Fps.js +47 -0
- package/build/dist/Util/Fps.js.map +1 -0
- package/build/dist/Util/Index.js +7 -0
- package/build/dist/Util/Index.js.map +1 -0
- package/build/dist/Util/Log.js +195 -0
- package/build/dist/Util/Log.js.map +1 -0
- package/build/dist/Util/Observable.js +60 -0
- package/build/dist/Util/Observable.js.map +1 -0
- package/build/dist/Util/Pool.js +66 -0
- package/build/dist/Util/Pool.js.map +1 -0
- package/build/dist/Util/SortedList.js +261 -0
- package/build/dist/Util/SortedList.js.map +1 -0
- package/build/dist/Util/Sound.js +22 -0
- package/build/dist/Util/Sound.js.map +1 -0
- package/build/dist/Util/Util.js +294 -0
- package/build/dist/Util/Util.js.map +1 -0
- package/build/dist/Util/Watch.js +67 -0
- package/build/dist/Util/Watch.js.map +1 -0
- package/build/dist/Util/WebAudio.js +62 -0
- package/build/dist/Util/WebAudio.js.map +1 -0
- package/build/dist/excalibur.js +101 -22
- package/build/dist/excalibur.js.map +1 -1
- package/build/dist/excalibur.min.js +1 -1
- package/build/dist/excalibur.min.js.LICENSE.txt +1 -1
- package/build/dist/excalibur.min.js.map +1 -1
- package/build/dist/index.js +74 -0
- package/build/dist/index.js.map +1 -0
- package/build/esm/Engine.d.ts +4 -1
- package/build/esm/Graphics/Context/texture-loader.d.ts +8 -0
- package/build/esm/excalibur.js +101 -22
- package/build/esm/excalibur.js.map +1 -1
- package/build/esm/excalibur.min.js +1 -1
- package/build/esm/excalibur.min.js.LICENSE.txt +1 -1
- package/build/esm/excalibur.min.js.map +1 -1
- package/package.json +23 -22
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import { ExcaliburWebGLContextAccessor } from './webgl-adapter';
|
|
2
|
+
import { getAttributeComponentSize, getAttributePointerType } from './webgl-util';
|
|
3
|
+
export class Shader {
|
|
4
|
+
/**
|
|
5
|
+
* Create a shader program in excalibur
|
|
6
|
+
* @param options specify shader vertex and fragment source
|
|
7
|
+
*/
|
|
8
|
+
constructor(options) {
|
|
9
|
+
this._gl = ExcaliburWebGLContextAccessor.gl;
|
|
10
|
+
this.uniforms = {};
|
|
11
|
+
this.attributes = {};
|
|
12
|
+
this._compiled = false;
|
|
13
|
+
const { vertexSource, fragmentSource } = options;
|
|
14
|
+
this.vertexSource = vertexSource;
|
|
15
|
+
this.fragmentSource = fragmentSource;
|
|
16
|
+
}
|
|
17
|
+
get compiled() {
|
|
18
|
+
return this._compiled;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Binds the shader program
|
|
22
|
+
*/
|
|
23
|
+
use() {
|
|
24
|
+
const gl = this._gl;
|
|
25
|
+
gl.useProgram(this.program);
|
|
26
|
+
Shader._ACTIVE_SHADER_INSTANCE = this;
|
|
27
|
+
}
|
|
28
|
+
isCurrentlyBound() {
|
|
29
|
+
return Shader._ACTIVE_SHADER_INSTANCE === this;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Compile the current shader against a webgl context
|
|
33
|
+
*/
|
|
34
|
+
compile() {
|
|
35
|
+
const gl = this._gl;
|
|
36
|
+
const vertexShader = this._compileShader(gl, this.vertexSource, gl.VERTEX_SHADER);
|
|
37
|
+
const fragmentShader = this._compileShader(gl, this.fragmentSource, gl.FRAGMENT_SHADER);
|
|
38
|
+
this.program = this._createProgram(gl, vertexShader, fragmentShader);
|
|
39
|
+
const attributes = this.getAttributes();
|
|
40
|
+
for (const attribute of attributes) {
|
|
41
|
+
this.attributes[attribute.name] = attribute;
|
|
42
|
+
}
|
|
43
|
+
const uniforms = this.getUniforms();
|
|
44
|
+
for (const uniform of uniforms) {
|
|
45
|
+
this.uniforms[uniform.name] = uniform;
|
|
46
|
+
}
|
|
47
|
+
this._compiled = true;
|
|
48
|
+
return this.program;
|
|
49
|
+
}
|
|
50
|
+
getUniforms() {
|
|
51
|
+
const gl = this._gl;
|
|
52
|
+
const uniformCount = gl.getProgramParameter(this.program, gl.ACTIVE_UNIFORMS);
|
|
53
|
+
const uniforms = [];
|
|
54
|
+
for (let i = 0; i < uniformCount; i++) {
|
|
55
|
+
const uniform = gl.getActiveUniform(this.program, i);
|
|
56
|
+
const uniformLocation = gl.getUniformLocation(this.program, uniform.name);
|
|
57
|
+
uniforms.push({
|
|
58
|
+
name: uniform.name,
|
|
59
|
+
glType: uniform.type,
|
|
60
|
+
location: uniformLocation
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return uniforms;
|
|
64
|
+
}
|
|
65
|
+
getAttributes() {
|
|
66
|
+
const gl = this._gl;
|
|
67
|
+
const attributeCount = gl.getProgramParameter(this.program, gl.ACTIVE_ATTRIBUTES);
|
|
68
|
+
const attributes = [];
|
|
69
|
+
for (let i = 0; i < attributeCount; i++) {
|
|
70
|
+
const attribute = gl.getActiveAttrib(this.program, i);
|
|
71
|
+
const attributeLocation = gl.getAttribLocation(this.program, attribute.name);
|
|
72
|
+
attributes.push({
|
|
73
|
+
name: attribute.name,
|
|
74
|
+
glType: getAttributePointerType(gl, attribute.type),
|
|
75
|
+
size: getAttributeComponentSize(gl, attribute.type),
|
|
76
|
+
location: attributeLocation,
|
|
77
|
+
normalized: false
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return attributes;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Set a texture in a gpu texture slot
|
|
84
|
+
* @param slotNumber
|
|
85
|
+
* @param texture
|
|
86
|
+
*/
|
|
87
|
+
setTexture(slotNumber, texture) {
|
|
88
|
+
const gl = this._gl;
|
|
89
|
+
gl.activeTexture(gl.TEXTURE0 + slotNumber);
|
|
90
|
+
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Set an integer uniform for the current shader
|
|
94
|
+
*
|
|
95
|
+
* **Important** Must call ex.Shader.use() before setting a uniform!
|
|
96
|
+
*
|
|
97
|
+
* @param name
|
|
98
|
+
* @param value
|
|
99
|
+
*/
|
|
100
|
+
setUniformInt(name, value) {
|
|
101
|
+
this.setUniform('uniform1i', name, ~~value);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Set an integer array uniform for the current shader
|
|
105
|
+
*
|
|
106
|
+
* **Important** Must call ex.Shader.use() before setting a uniform!
|
|
107
|
+
*
|
|
108
|
+
* @param name
|
|
109
|
+
* @param value
|
|
110
|
+
*/
|
|
111
|
+
setUniformIntArray(name, value) {
|
|
112
|
+
this.setUniform('uniform1iv', name, value);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Set a boolean uniform for the current shader
|
|
116
|
+
*
|
|
117
|
+
* **Important** Must call ex.Shader.use() before setting a uniform!
|
|
118
|
+
*
|
|
119
|
+
* @param name
|
|
120
|
+
* @param value
|
|
121
|
+
*/
|
|
122
|
+
setUniformBoolean(name, value) {
|
|
123
|
+
this.setUniform('uniform1i', name, value ? 1 : 0);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Set a float uniform for the current shader
|
|
127
|
+
*
|
|
128
|
+
* **Important** Must call ex.Shader.use() before setting a uniform!
|
|
129
|
+
*
|
|
130
|
+
* @param name
|
|
131
|
+
* @param value
|
|
132
|
+
*/
|
|
133
|
+
setUniformFloat(name, value) {
|
|
134
|
+
this.setUniform('uniform1f', name, value);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Set a float array uniform for the current shader
|
|
138
|
+
*
|
|
139
|
+
* **Important** Must call ex.Shader.use() before setting a uniform!
|
|
140
|
+
*
|
|
141
|
+
* @param name
|
|
142
|
+
* @param value
|
|
143
|
+
*/
|
|
144
|
+
setUniformFloatArray(name, value) {
|
|
145
|
+
this.setUniform('uniform1fv', name, value);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Set a [[Vector]] uniform for the current shader
|
|
149
|
+
*
|
|
150
|
+
* **Important** Must call ex.Shader.use() before setting a uniform!
|
|
151
|
+
*
|
|
152
|
+
* @param name
|
|
153
|
+
* @param value
|
|
154
|
+
*/
|
|
155
|
+
setUniformFloatVector(name, value) {
|
|
156
|
+
this.setUniform('uniform2f', name, value.x, value.y);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Set an [[Matrix]] uniform for the current shader
|
|
160
|
+
*
|
|
161
|
+
* **Important** Must call ex.Shader.use() before setting a uniform!
|
|
162
|
+
*
|
|
163
|
+
* @param name
|
|
164
|
+
* @param value
|
|
165
|
+
*/
|
|
166
|
+
setUniformMatrix(name, value) {
|
|
167
|
+
this.setUniform('uniformMatrix4fv', name, false, value.data);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Set any available uniform type in webgl
|
|
171
|
+
*
|
|
172
|
+
* For example setUniform('uniformMatrix2fv', 'u_my2x2_mat`, ...);
|
|
173
|
+
*/
|
|
174
|
+
setUniform(uniformType, name, ...value) {
|
|
175
|
+
if (!this._compiled) {
|
|
176
|
+
throw Error(`Must compile shader before setting a uniform ${uniformType}:${name}`);
|
|
177
|
+
}
|
|
178
|
+
if (!this.isCurrentlyBound()) {
|
|
179
|
+
throw Error('Currently accessed shader instance is not the current active shader in WebGL,' +
|
|
180
|
+
' must call `shader.use()` before setting uniforms');
|
|
181
|
+
}
|
|
182
|
+
const gl = this._gl;
|
|
183
|
+
const location = gl.getUniformLocation(this.program, name);
|
|
184
|
+
if (location) {
|
|
185
|
+
const args = [location, ...value];
|
|
186
|
+
this._gl[uniformType].apply(this._gl, args);
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
throw Error(`Uniform ${uniformType}:${name} doesn\'t exist or is not used in the shader source code,` +
|
|
190
|
+
' unused uniforms are optimized away by most browsers');
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
_createProgram(gl, vertexShader, fragmentShader) {
|
|
194
|
+
const program = gl.createProgram();
|
|
195
|
+
if (program === null) {
|
|
196
|
+
throw Error('Could not create graphics shader program');
|
|
197
|
+
}
|
|
198
|
+
// attach the shaders.
|
|
199
|
+
gl.attachShader(program, vertexShader);
|
|
200
|
+
gl.attachShader(program, fragmentShader);
|
|
201
|
+
// link the program.
|
|
202
|
+
gl.linkProgram(program);
|
|
203
|
+
const success = gl.getProgramParameter(program, gl.LINK_STATUS);
|
|
204
|
+
if (!success) {
|
|
205
|
+
throw Error(`Could not link the program: [${gl.getProgramInfoLog(program)}]`);
|
|
206
|
+
}
|
|
207
|
+
return program;
|
|
208
|
+
}
|
|
209
|
+
_compileShader(gl, source, type) {
|
|
210
|
+
const typeName = gl.VERTEX_SHADER === type ? 'vertex' : 'fragment';
|
|
211
|
+
const shader = gl.createShader(type);
|
|
212
|
+
if (shader === null) {
|
|
213
|
+
throw Error(`Could not build shader: [${source}]`);
|
|
214
|
+
}
|
|
215
|
+
gl.shaderSource(shader, source);
|
|
216
|
+
gl.compileShader(shader);
|
|
217
|
+
const success = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
|
|
218
|
+
if (!success) {
|
|
219
|
+
const errorInfo = gl.getShaderInfoLog(shader);
|
|
220
|
+
throw Error(`Could not compile ${typeName} shader:\n\n${errorInfo}${this._processSourceForError(source, errorInfo)}`);
|
|
221
|
+
}
|
|
222
|
+
return shader;
|
|
223
|
+
}
|
|
224
|
+
_processSourceForError(source, errorInfo) {
|
|
225
|
+
const lines = source.split('\n');
|
|
226
|
+
const errorLineStart = errorInfo.search(/\d:\d/);
|
|
227
|
+
const errorLineEnd = errorInfo.indexOf(' ', errorLineStart);
|
|
228
|
+
const [_, error2] = errorInfo.slice(errorLineStart, errorLineEnd).split(':').map(v => Number(v));
|
|
229
|
+
for (let i = 0; i < lines.length; i++) {
|
|
230
|
+
lines[i] = `${i + 1}: ${lines[i]}${error2 === (i + 1) ? ' <----- ERROR!' : ''}`;
|
|
231
|
+
}
|
|
232
|
+
return '\n\nSource:\n' + lines.join('\n');
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
Shader._ACTIVE_SHADER_INSTANCE = null;
|
|
236
|
+
//# sourceMappingURL=shader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader.js","sourceRoot":"","sources":["../../../../src/engine/Graphics/Context/shader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export class StateStack {
|
|
2
|
+
constructor() {
|
|
3
|
+
this._states = [];
|
|
4
|
+
this._currentState = this._getDefaultState();
|
|
5
|
+
}
|
|
6
|
+
_getDefaultState() {
|
|
7
|
+
return {
|
|
8
|
+
opacity: 1
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
_cloneState() {
|
|
12
|
+
return {
|
|
13
|
+
opacity: this._currentState.opacity
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
save() {
|
|
17
|
+
this._states.push(this._currentState);
|
|
18
|
+
this._currentState = this._cloneState();
|
|
19
|
+
}
|
|
20
|
+
restore() {
|
|
21
|
+
this._currentState = this._states.pop();
|
|
22
|
+
}
|
|
23
|
+
get current() {
|
|
24
|
+
return this._currentState;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=state-stack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-stack.js","sourceRoot":"","sources":["../../../../src/engine/Graphics/Context/state-stack.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,UAAU;IAAvB;QACU,YAAO,GAAoC,EAAE,CAAC;QAC9C,kBAAa,GAAkC,IAAI,CAAC,gBAAgB,EAAE,CAAC;IA0BjF,CAAC;IAxBS,gBAAgB;QACtB,OAAO;YACL,OAAO,EAAE,CAAC;SACX,CAAC;IACJ,CAAC;IAEO,WAAW;QACjB,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO;SACpC,CAAC;IACJ,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC1C,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1C,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -4,6 +4,7 @@ import { HTMLImageSource } from './ExcaliburGraphicsContext';
|
|
|
4
4
|
* Manages loading image sources into webgl textures, a unique id is associated with all sources
|
|
5
5
|
*/
|
|
6
6
|
export declare class TextureLoader {
|
|
7
|
+
private static _LOGGER;
|
|
7
8
|
/**
|
|
8
9
|
* Sets the default filtering for the Excalibur texture loader, default [[ImageFiltering.Blended]]
|
|
9
10
|
*/
|
|
@@ -12,6 +13,7 @@ export declare class TextureLoader {
|
|
|
12
13
|
private static _POT_CTX;
|
|
13
14
|
private static _GL;
|
|
14
15
|
private static _TEXTURE_MAP;
|
|
16
|
+
private static _MAX_TEXTURE_SIZE;
|
|
15
17
|
static register(context: WebGLRenderingContext): void;
|
|
16
18
|
/**
|
|
17
19
|
* Get the WebGL Texture from a source image
|
|
@@ -36,4 +38,10 @@ export declare class TextureLoader {
|
|
|
36
38
|
* @param image
|
|
37
39
|
*/
|
|
38
40
|
static toPowerOfTwoImage(image: HTMLImageSource): HTMLImageSource;
|
|
41
|
+
/**
|
|
42
|
+
* Takes an image and returns if it meets size criteria for hardware
|
|
43
|
+
* @param image
|
|
44
|
+
* @returns if the image will be supported at runtime
|
|
45
|
+
*/
|
|
46
|
+
static checkImageSizeSupportedAndLog(image: HTMLImageSource): boolean;
|
|
39
47
|
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { Logger } from '../../Util/Log';
|
|
2
|
+
import { ImageFiltering } from '../Filtering';
|
|
3
|
+
import { ensurePowerOfTwo, isPowerOfTwo } from './webgl-util';
|
|
4
|
+
/**
|
|
5
|
+
* Manages loading image sources into webgl textures, a unique id is associated with all sources
|
|
6
|
+
*/
|
|
7
|
+
export class TextureLoader {
|
|
8
|
+
static register(context) {
|
|
9
|
+
TextureLoader._GL = context;
|
|
10
|
+
TextureLoader._MAX_TEXTURE_SIZE = context.getParameter(context.MAX_TEXTURE_SIZE);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Get the WebGL Texture from a source image
|
|
14
|
+
* @param image
|
|
15
|
+
*/
|
|
16
|
+
static get(image) {
|
|
17
|
+
return TextureLoader._TEXTURE_MAP.get(image);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Returns whether a source image has been loaded as a texture
|
|
21
|
+
* @param image
|
|
22
|
+
*/
|
|
23
|
+
static has(image) {
|
|
24
|
+
return TextureLoader._TEXTURE_MAP.has(image);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Loads a graphic into webgl and returns it's texture info, a webgl context must be previously registered
|
|
28
|
+
* @param image Source graphic
|
|
29
|
+
* @param filtering {ImageFiltering} The ImageFiltering mode to apply to the loaded texture
|
|
30
|
+
* @param forceUpdate Optionally force a texture to be reloaded, useful if the source graphic has changed
|
|
31
|
+
*/
|
|
32
|
+
static load(image, filtering, forceUpdate = false) {
|
|
33
|
+
// Ignore loading if webgl is not registered
|
|
34
|
+
const gl = TextureLoader._GL;
|
|
35
|
+
if (!gl) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
let tex = null;
|
|
39
|
+
// If reuse the texture if it's from the same source
|
|
40
|
+
if (TextureLoader.has(image)) {
|
|
41
|
+
tex = TextureLoader.get(image);
|
|
42
|
+
}
|
|
43
|
+
// Update existing webgl texture and return early
|
|
44
|
+
if (tex) {
|
|
45
|
+
if (forceUpdate) {
|
|
46
|
+
gl.bindTexture(gl.TEXTURE_2D, tex);
|
|
47
|
+
const source = TextureLoader.toPowerOfTwoImage(image);
|
|
48
|
+
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source);
|
|
49
|
+
}
|
|
50
|
+
return tex;
|
|
51
|
+
}
|
|
52
|
+
// No texture exists create a new one
|
|
53
|
+
tex = gl.createTexture();
|
|
54
|
+
const source = TextureLoader.toPowerOfTwoImage(image);
|
|
55
|
+
TextureLoader.checkImageSizeSupportedAndLog(image);
|
|
56
|
+
gl.bindTexture(gl.TEXTURE_2D, tex);
|
|
57
|
+
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);
|
|
58
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
59
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
60
|
+
// NEAREST for pixel art, LINEAR for hi-res
|
|
61
|
+
const filterMode = filtering !== null && filtering !== void 0 ? filtering : TextureLoader.filtering;
|
|
62
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, filterMode === ImageFiltering.Pixel ? gl.NEAREST : gl.LINEAR);
|
|
63
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, filterMode === ImageFiltering.Pixel ? gl.NEAREST : gl.LINEAR);
|
|
64
|
+
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source);
|
|
65
|
+
TextureLoader._TEXTURE_MAP.set(image, tex);
|
|
66
|
+
return tex;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Converts source images into power of two images, WebGL only supports POT images
|
|
70
|
+
* https://www.khronos.org/webgl/wiki/WebGL_and_OpenGL_Differences#Non-Power_of_Two_Texture_Support
|
|
71
|
+
* @param image
|
|
72
|
+
*/
|
|
73
|
+
static toPowerOfTwoImage(image) {
|
|
74
|
+
const potCanvas = TextureLoader._POT_CANVAS;
|
|
75
|
+
const potCtx = TextureLoader._POT_CTX;
|
|
76
|
+
if (!isPowerOfTwo(image.width) || !isPowerOfTwo(image.height)) {
|
|
77
|
+
// Scale up the texture to the next highest power of two dimensions.
|
|
78
|
+
potCanvas.width = ensurePowerOfTwo(image.width);
|
|
79
|
+
potCanvas.height = ensurePowerOfTwo(image.height);
|
|
80
|
+
potCtx.imageSmoothingEnabled = false;
|
|
81
|
+
potCtx.clearRect(0, 0, potCanvas.width, potCanvas.height);
|
|
82
|
+
potCtx.drawImage(image, 0, 0, image.width, image.height);
|
|
83
|
+
image = potCanvas;
|
|
84
|
+
}
|
|
85
|
+
return image;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Takes an image and returns if it meets size criteria for hardware
|
|
89
|
+
* @param image
|
|
90
|
+
* @returns if the image will be supported at runtime
|
|
91
|
+
*/
|
|
92
|
+
static checkImageSizeSupportedAndLog(image) {
|
|
93
|
+
var _a;
|
|
94
|
+
const originalSrc = (_a = image.dataset.originalSrc) !== null && _a !== void 0 ? _a : 'internal canvas bitmap';
|
|
95
|
+
if (image.width > TextureLoader._MAX_TEXTURE_SIZE || image.height > TextureLoader._MAX_TEXTURE_SIZE) {
|
|
96
|
+
TextureLoader._LOGGER.error(`The image [${originalSrc}] provided to Excalibur is too large for the device's maximum texture size of ` +
|
|
97
|
+
`(${TextureLoader._MAX_TEXTURE_SIZE}x${TextureLoader._MAX_TEXTURE_SIZE}) please resize to an image `
|
|
98
|
+
+ `for excalibur to render properly.\n\nImages will likely render as black rectangles.\n\n` +
|
|
99
|
+
`Read more here: https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/WebGL_best_practices#understand_system_limits`);
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
else if (image.width > 4096 || image.height > 4096) {
|
|
103
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/WebGL_best_practices#understand_system_limits
|
|
104
|
+
TextureLoader._LOGGER.warn(`The image [${originalSrc}] provided to excalibur is too large may not work on all mobile devices, ` +
|
|
105
|
+
`it is recommended you resize images to a maximum (4096x4096).\n\n` +
|
|
106
|
+
`Images will likely render as black rectangles on some mobile platforms.\n\n` +
|
|
107
|
+
`Read more here: https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/WebGL_best_practices#understand_system_limits`);
|
|
108
|
+
}
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
TextureLoader._LOGGER = Logger.getInstance();
|
|
113
|
+
/**
|
|
114
|
+
* Sets the default filtering for the Excalibur texture loader, default [[ImageFiltering.Blended]]
|
|
115
|
+
*/
|
|
116
|
+
TextureLoader.filtering = ImageFiltering.Blended;
|
|
117
|
+
TextureLoader._POT_CANVAS = document.createElement('canvas');
|
|
118
|
+
TextureLoader._POT_CTX = TextureLoader._POT_CANVAS.getContext('2d');
|
|
119
|
+
TextureLoader._TEXTURE_MAP = new Map();
|
|
120
|
+
TextureLoader._MAX_TEXTURE_SIZE = 0;
|
|
121
|
+
//# sourceMappingURL=texture-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-loader.js","sourceRoot":"","sources":["../../../../src/engine/Graphics/Context/texture-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Matrix } from '../../Math/matrix';
|
|
2
|
+
export class TransformStack {
|
|
3
|
+
constructor() {
|
|
4
|
+
this._transforms = [];
|
|
5
|
+
this._currentTransform = Matrix.identity();
|
|
6
|
+
}
|
|
7
|
+
save() {
|
|
8
|
+
this._transforms.push(this._currentTransform);
|
|
9
|
+
this._currentTransform = this._currentTransform.clone();
|
|
10
|
+
}
|
|
11
|
+
restore() {
|
|
12
|
+
this._currentTransform = this._transforms.pop();
|
|
13
|
+
}
|
|
14
|
+
translate(x, y) {
|
|
15
|
+
return this._currentTransform.translate(x, y);
|
|
16
|
+
}
|
|
17
|
+
rotate(angle) {
|
|
18
|
+
return this._currentTransform.rotate(angle);
|
|
19
|
+
}
|
|
20
|
+
scale(x, y) {
|
|
21
|
+
return this._currentTransform.scale(x, y);
|
|
22
|
+
}
|
|
23
|
+
set current(matrix) {
|
|
24
|
+
this._currentTransform = matrix;
|
|
25
|
+
}
|
|
26
|
+
get current() {
|
|
27
|
+
return this._currentTransform;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=transform-stack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-stack.js","sourceRoot":"","sources":["../../../../src/engine/Graphics/Context/transform-stack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,OAAO,cAAc;IAA3B;QACU,gBAAW,GAAa,EAAE,CAAC;QAC3B,sBAAiB,GAAW,MAAM,CAAC,QAAQ,EAAE,CAAC;IA8BxD,CAAC;IA5BQ,IAAI;QACT,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IAC1D,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;IAClD,CAAC;IAEM,SAAS,CAAC,CAAS,EAAE,CAAS;QACnC,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAEM,MAAM,CAAC,KAAa;QACzB,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEM,KAAK,CAAC,CAAS,EAAE,CAAS;QAC/B,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,IAAW,OAAO,CAAC,MAAc;QAC/B,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;IAClC,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ExcaliburWebGLContextAccessor } from './webgl-adapter';
|
|
2
|
+
/**
|
|
3
|
+
* Helper around vertex buffer to simplify creating and uploading geometry
|
|
4
|
+
*
|
|
5
|
+
* Under the hood uses Float32Array
|
|
6
|
+
*/
|
|
7
|
+
export class VertexBuffer {
|
|
8
|
+
constructor(options) {
|
|
9
|
+
this._gl = ExcaliburWebGLContextAccessor.gl;
|
|
10
|
+
/**
|
|
11
|
+
* If the vertices never change switching 'static' can be more efficient on the gpu
|
|
12
|
+
*
|
|
13
|
+
* Default is 'dynamic'
|
|
14
|
+
*/
|
|
15
|
+
this.type = 'dynamic';
|
|
16
|
+
const { size, type, data } = options;
|
|
17
|
+
this.buffer = this._gl.createBuffer();
|
|
18
|
+
if (!data && !size) {
|
|
19
|
+
throw Error('Must either provide data or a size to the VertexBuffer');
|
|
20
|
+
}
|
|
21
|
+
if (!data) {
|
|
22
|
+
this.bufferData = new Float32Array(size);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
this.bufferData = data;
|
|
26
|
+
}
|
|
27
|
+
this.type = type !== null && type !== void 0 ? type : this.type;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Bind this vertex buffer
|
|
31
|
+
*/
|
|
32
|
+
bind() {
|
|
33
|
+
const gl = this._gl;
|
|
34
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Upload vertex buffer geometry to the GPU
|
|
38
|
+
*/
|
|
39
|
+
upload() {
|
|
40
|
+
const gl = this._gl;
|
|
41
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer);
|
|
42
|
+
gl.bufferData(gl.ARRAY_BUFFER, this.bufferData, this.type === 'static' ? gl.STATIC_DRAW : gl.DYNAMIC_DRAW);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=vertex-buffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vertex-buffer.js","sourceRoot":"","sources":["../../../../src/engine/Graphics/Context/vertex-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAsBhE;;;;GAIG;AACH,MAAM,OAAO,YAAY;IAmBvB,YAAY,OAA4B;QAlBhC,QAAG,GAA0B,6BAA6B,CAAC,EAAE,CAAC;QAWtE;;;;WAIG;QACI,SAAI,GAAyB,SAAS,CAAC;QAG5C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;YAClB,MAAM,KAAK,CAAC,wDAAwD,CAAC,CAAC;SACvE;QAED,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;SAC1C;aAAM;YACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,IAAI,CAAC,IAAI,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,IAAI;QACF,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;IAC7G,CAAC;CACF"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Logger } from '../..';
|
|
2
|
+
import { ExcaliburWebGLContextAccessor } from './webgl-adapter';
|
|
3
|
+
import { getGlTypeSizeBytes } from './webgl-util';
|
|
4
|
+
/**
|
|
5
|
+
* Helper around creating vertex attributes in a given [[VertexBuffer]], this is useful for describing
|
|
6
|
+
* the memory layout for your vertices inside a particular buffer
|
|
7
|
+
*
|
|
8
|
+
* Note: This helper assumes interleaved attributes in one [[VertexBuffer]], not many.
|
|
9
|
+
*
|
|
10
|
+
* Working with `gl.vertexAttribPointer` can be tricky, and this attempts to double check you
|
|
11
|
+
*/
|
|
12
|
+
export class VertexLayout {
|
|
13
|
+
constructor(options) {
|
|
14
|
+
this._gl = ExcaliburWebGLContextAccessor.gl;
|
|
15
|
+
this._logger = Logger.getInstance();
|
|
16
|
+
this._layout = [];
|
|
17
|
+
this._attributes = [];
|
|
18
|
+
this._vertexTotalSizeBytes = 0;
|
|
19
|
+
const { shader, vertexBuffer, attributes } = options;
|
|
20
|
+
this._vertexBuffer = vertexBuffer;
|
|
21
|
+
this._attributes = attributes;
|
|
22
|
+
this._shader = shader;
|
|
23
|
+
this.initialize();
|
|
24
|
+
}
|
|
25
|
+
get vertexBuffer() {
|
|
26
|
+
return this._vertexBuffer;
|
|
27
|
+
}
|
|
28
|
+
get attributes() {
|
|
29
|
+
return this._attributes;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Total number of bytes that the vertex will take up
|
|
33
|
+
*/
|
|
34
|
+
get totalVertexSizeBytes() {
|
|
35
|
+
return this._vertexTotalSizeBytes;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Layouts need shader locations and must be bound to a shader
|
|
39
|
+
*/
|
|
40
|
+
initialize() {
|
|
41
|
+
if (!this._shader.compiled) {
|
|
42
|
+
throw Error('Shader not compiled, shader must be compiled before defining a vertex layout');
|
|
43
|
+
}
|
|
44
|
+
this._layout.length = 0;
|
|
45
|
+
const shaderAttributes = this._shader.attributes;
|
|
46
|
+
for (const attribute of this._attributes) {
|
|
47
|
+
const attrib = shaderAttributes[attribute[0]];
|
|
48
|
+
if (!attrib) {
|
|
49
|
+
throw Error(`The attribute named: ${attribute[0]} size ${attribute[1]}` +
|
|
50
|
+
` not found in the shader source code:\n ${this._shader.vertexSource}`);
|
|
51
|
+
}
|
|
52
|
+
if (attrib.size !== attribute[1]) {
|
|
53
|
+
throw Error(`VertexLayout size definition for attribute: [${attribute[0]}, ${attribute[1]}],`
|
|
54
|
+
+ ` doesnt match shader source size ${attrib.size}:\n ${this._shader.vertexSource}`);
|
|
55
|
+
}
|
|
56
|
+
this._layout.push(attrib);
|
|
57
|
+
}
|
|
58
|
+
// calc size
|
|
59
|
+
let componentsPerVertex = 0;
|
|
60
|
+
for (const vertAttribute of this._layout) {
|
|
61
|
+
const typeSize = getGlTypeSizeBytes(this._gl, vertAttribute.glType);
|
|
62
|
+
this._vertexTotalSizeBytes += typeSize * vertAttribute.size;
|
|
63
|
+
componentsPerVertex += vertAttribute.size;
|
|
64
|
+
}
|
|
65
|
+
if (this._vertexBuffer.bufferData.length % componentsPerVertex !== 0) {
|
|
66
|
+
this._logger.warn(`The vertex component size (${componentsPerVertex}) does divide evenly into the specified vertex buffer`
|
|
67
|
+
+ ` (${this._vertexBuffer.bufferData.length})`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Bind this layout with it's associated vertex buffer
|
|
72
|
+
*
|
|
73
|
+
* @param uploadBuffer Optionally indicate you wish to upload the buffer to the GPU associated with this layout
|
|
74
|
+
*/
|
|
75
|
+
use(uploadBuffer = false) {
|
|
76
|
+
const gl = this._gl;
|
|
77
|
+
if (!this._shader.isCurrentlyBound()) {
|
|
78
|
+
throw Error('Shader associated with this vertex layout is not active! Call shader.use() before layout.use()');
|
|
79
|
+
}
|
|
80
|
+
this._vertexBuffer.bind();
|
|
81
|
+
if (uploadBuffer) {
|
|
82
|
+
this._vertexBuffer.upload();
|
|
83
|
+
}
|
|
84
|
+
let offset = 0;
|
|
85
|
+
// TODO switch to VAOs if the extension is
|
|
86
|
+
for (const vert of this._layout) {
|
|
87
|
+
gl.vertexAttribPointer(vert.location, vert.size, vert.glType, vert.normalized, this.totalVertexSizeBytes, offset);
|
|
88
|
+
gl.enableVertexAttribArray(vert.location);
|
|
89
|
+
offset += getGlTypeSizeBytes(gl, vert.glType) * vert.size;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=vertex-layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vertex-layout.js","sourceRoot":"","sources":["../../../../src/engine/Graphics/Context/vertex-layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Must be accessed after Engine construction time to ensure the context has been created
|
|
3
|
+
*/
|
|
4
|
+
export class ExcaliburWebGLContextAccessor {
|
|
5
|
+
static clear() {
|
|
6
|
+
ExcaliburWebGLContextAccessor._GL = null;
|
|
7
|
+
}
|
|
8
|
+
static register(gl) {
|
|
9
|
+
ExcaliburWebGLContextAccessor._GL = gl;
|
|
10
|
+
}
|
|
11
|
+
// current webgl context
|
|
12
|
+
static get gl() {
|
|
13
|
+
if (!ExcaliburWebGLContextAccessor._GL) {
|
|
14
|
+
throw Error('Attempted gl access before init');
|
|
15
|
+
}
|
|
16
|
+
return ExcaliburWebGLContextAccessor._GL;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=webgl-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgl-adapter.js","sourceRoot":"","sources":["../../../../src/engine/Graphics/Context/webgl-adapter.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,MAAM,OAAO,6BAA6B;IAEjC,MAAM,CAAC,KAAK;QACjB,6BAA6B,CAAC,GAAG,GAAG,IAAI,CAAC;IAC3C,CAAC;IACM,MAAM,CAAC,QAAQ,CAAC,EAAyB;QAC9C,6BAA6B,CAAC,GAAG,GAAG,EAAE,CAAC;IACzC,CAAC;IACD,wBAAwB;IACjB,MAAM,KAAK,EAAE;QAClB,IAAI,CAAC,6BAA6B,CAAC,GAAG,EAAE;YACtC,MAAM,KAAK,CAAC,iCAAiC,CAAC,CAAC;SAChD;QACD,OAAO,6BAA6B,CAAC,GAAG,CAAC;IAC3C,CAAC;CACF"}
|