excalibur 0.28.3 → 0.28.4
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/.gitattributes +63 -63
- package/CHANGELOG.md +2003 -1955
- package/LICENSE.md +25 -25
- package/README.md +134 -134
- package/STYLEGUIDE.md +136 -136
- package/build/dist/Actions/Action/ActionSequence.js +31 -0
- package/build/dist/Actions/Action/ActionSequence.js.map +1 -0
- package/build/dist/Actions/Action/Blink.js +54 -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 +26 -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/EaseBy.js +70 -0
- package/build/dist/Actions/Action/EaseBy.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 +48 -0
- package/build/dist/Actions/Action/Fade.js.map +1 -0
- package/build/dist/Actions/Action/Follow.js +56 -0
- package/build/dist/Actions/Action/Follow.js.map +1 -0
- package/build/dist/Actions/Action/Meet.js +54 -0
- package/build/dist/Actions/Action/Meet.js.map +1 -0
- package/build/dist/Actions/Action/MoveBy.js +48 -0
- package/build/dist/Actions/Action/MoveBy.js.map +1 -0
- package/build/dist/Actions/Action/MoveTo.js +41 -0
- package/build/dist/Actions/Action/MoveTo.js.map +1 -0
- package/build/dist/Actions/Action/ParallelActions.js +23 -0
- package/build/dist/Actions/Action/ParallelActions.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 +95 -0
- package/build/dist/Actions/Action/RotateBy.js.map +1 -0
- package/build/dist/Actions/Action/RotateTo.js +91 -0
- package/build/dist/Actions/Action/RotateTo.js.map +1 -0
- package/build/dist/Actions/Action/ScaleBy.js +46 -0
- package/build/dist/Actions/Action/ScaleBy.js.map +1 -0
- package/build/dist/Actions/Action/ScaleTo.js +58 -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 +322 -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 +195 -0
- package/build/dist/Actions/ActionsComponent.js.map +1 -0
- package/build/dist/Actions/ActionsSystem.js +30 -0
- package/build/dist/Actions/ActionsSystem.js.map +1 -0
- package/build/dist/Actions/Index.js +26 -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 +629 -0
- package/build/dist/Actor.js.map +1 -0
- package/build/dist/Camera.js +660 -0
- package/build/dist/Camera.js.map +1 -0
- package/build/dist/Collision/BoundingBox.js +415 -0
- package/build/dist/Collision/BoundingBox.js.map +1 -0
- package/build/dist/Collision/ColliderComponent.js +202 -0
- package/build/dist/Collision/ColliderComponent.js.map +1 -0
- package/build/dist/Collision/Colliders/CircleCollider.js +226 -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 +32 -0
- package/build/dist/Collision/Colliders/Collider.js.map +1 -0
- package/build/dist/Collision/Colliders/CollisionJumpTable.js +300 -0
- package/build/dist/Collision/Colliders/CollisionJumpTable.js.map +1 -0
- package/build/dist/Collision/Colliders/EdgeCollider.js +229 -0
- package/build/dist/Collision/Colliders/EdgeCollider.js.map +1 -0
- package/build/dist/Collision/Colliders/PolygonCollider.js +556 -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 +99 -0
- package/build/dist/Collision/Colliders/Shape.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 +51 -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/Pair.js +92 -0
- package/build/dist/Collision/Detection/Pair.js.map +1 -0
- package/build/dist/Collision/Detection/QuadTree.js +193 -0
- package/build/dist/Collision/Detection/QuadTree.js.map +1 -0
- package/build/dist/Collision/Group/CollisionGroup.js +3 -3
- package/build/dist/Collision/Integrator.js +25 -0
- package/build/dist/Collision/Integrator.js.map +1 -0
- package/build/dist/Collision/MotionSystem.js +35 -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/PhysicsWorld.js +10 -0
- package/build/dist/Collision/PhysicsWorld.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 +154 -0
- package/build/dist/Collision/Solver/ArcadeSolver.js.map +1 -0
- package/build/dist/Collision/Solver/ContactConstraintPoint.js +87 -0
- package/build/dist/Collision/Solver/ContactConstraintPoint.js.map +1 -0
- package/build/dist/Collision/Solver/RealisticSolver.js +293 -0
- package/build/dist/Collision/Solver/RealisticSolver.js.map +1 -0
- package/build/dist/Collision/Solver/Solver.js +2 -0
- package/build/dist/Collision/Solver/Solver.js.map +1 -0
- package/build/dist/Color.js +417 -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.d.ts +11 -0
- package/build/dist/Debug/Debug.js +385 -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 +263 -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/Engine.js +986 -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 +107 -0
- package/build/dist/EntityComponentSystem/Components/TransformComponent.js.map +1 -0
- package/build/dist/EntityComponentSystem/Entity.js +487 -0
- package/build/dist/EntityComponentSystem/Entity.js.map +1 -0
- package/build/dist/EntityComponentSystem/EntityManager.js +137 -0
- package/build/dist/EntityComponentSystem/EntityManager.js.map +1 -0
- package/build/dist/EntityComponentSystem/Query.js +90 -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 +104 -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 +122 -0
- package/build/dist/EventDispatcher.js.map +1 -0
- package/build/dist/EventEmitter.js +86 -0
- package/build/dist/EventEmitter.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 +473 -0
- package/build/dist/Events.js.map +1 -0
- package/build/dist/Flags.js +67 -0
- package/build/dist/Flags.js.map +1 -0
- package/build/dist/Graphics/Animation.js +344 -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 +48 -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 +237 -0
- package/build/dist/Graphics/Context/ExcaliburGraphicsContext2DCanvas.js.map +1 -0
- package/build/dist/Graphics/Context/ExcaliburGraphicsContextWebGL.d.ts +1 -0
- package/build/dist/Graphics/Context/ExcaliburGraphicsContextWebGL.js +481 -0
- package/build/dist/Graphics/Context/ExcaliburGraphicsContextWebGL.js.map +1 -0
- package/build/dist/Graphics/Context/circle-renderer/circle-renderer.frag.glsl +52 -52
- package/build/dist/Graphics/Context/circle-renderer/circle-renderer.js +174 -0
- package/build/dist/Graphics/Context/circle-renderer/circle-renderer.js.map +1 -0
- package/build/dist/Graphics/Context/circle-renderer/circle-renderer.vert.glsl +37 -37
- 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/draw-call.js +16 -0
- package/build/dist/Graphics/Context/draw-call.js.map +1 -0
- package/build/dist/Graphics/Context/image-renderer/image-renderer.frag.glsl +32 -32
- package/build/dist/Graphics/Context/image-renderer/image-renderer.js +246 -0
- package/build/dist/Graphics/Context/image-renderer/image-renderer.js.map +1 -0
- package/build/dist/Graphics/Context/image-renderer/image-renderer.vert.glsl +32 -32
- package/build/dist/Graphics/Context/line-renderer/line-fragment.glsl +10 -10
- package/build/dist/Graphics/Context/line-renderer/line-renderer.js +90 -0
- package/build/dist/Graphics/Context/line-renderer/line-renderer.js.map +1 -0
- package/build/dist/Graphics/Context/line-renderer/line-vertex.glsl +14 -14
- package/build/dist/Graphics/Context/material-renderer/material-renderer.js +23 -2
- package/build/dist/Graphics/Context/material-renderer/material-renderer.js.map +1 -1
- package/build/dist/Graphics/Context/material.d.ts +2 -0
- package/build/dist/Graphics/Context/material.js +72 -0
- package/build/dist/Graphics/Context/material.js.map +1 -0
- package/build/dist/Graphics/Context/point-renderer/point-fragment.glsl +19 -19
- package/build/dist/Graphics/Context/point-renderer/point-renderer.js +91 -0
- package/build/dist/Graphics/Context/point-renderer/point-renderer.js.map +1 -0
- package/build/dist/Graphics/Context/point-renderer/point-vertex.glsl +11 -11
- package/build/dist/Graphics/Context/quad-index-buffer.js +67 -0
- package/build/dist/Graphics/Context/quad-index-buffer.js.map +1 -0
- package/build/dist/Graphics/Context/rectangle-renderer/rectangle-renderer.frag.glsl +85 -85
- package/build/dist/Graphics/Context/rectangle-renderer/rectangle-renderer.js +305 -0
- package/build/dist/Graphics/Context/rectangle-renderer/rectangle-renderer.js.map +1 -0
- package/build/dist/Graphics/Context/rectangle-renderer/rectangle-renderer.vert.glsl +42 -42
- 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-fragment.glsl +13 -13
- package/build/dist/Graphics/Context/screen-pass-painter/screen-pass-painter.js +56 -0
- package/build/dist/Graphics/Context/screen-pass-painter/screen-pass-painter.js.map +1 -0
- package/build/dist/Graphics/Context/screen-pass-painter/screen-vertex.glsl +11 -11
- package/build/dist/Graphics/Context/state-stack.js +37 -0
- package/build/dist/Graphics/Context/state-stack.js.map +1 -0
- package/build/dist/Graphics/Context/texture-loader.js +109 -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 +53 -0
- package/build/dist/Graphics/Context/vertex-buffer.js.map +1 -0
- package/build/dist/Graphics/Context/webgl-util.js +79 -0
- package/build/dist/Graphics/Context/webgl-util.js.map +1 -0
- package/build/dist/Graphics/DebugGraphicsComponent.d.ts +3 -2
- package/build/dist/Graphics/DebugGraphicsComponent.js +16 -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 +148 -0
- package/build/dist/Graphics/Font.js.map +1 -0
- package/build/dist/Graphics/FontCache.d.ts +1 -0
- package/build/dist/Graphics/FontCache.js +80 -0
- package/build/dist/Graphics/FontCache.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/FontTextInstance.js +230 -0
- package/build/dist/Graphics/FontTextInstance.js.map +1 -0
- package/build/dist/Graphics/Graphic.js +208 -0
- package/build/dist/Graphics/Graphic.js.map +1 -0
- package/build/dist/Graphics/GraphicsComponent.js +336 -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 +210 -0
- package/build/dist/Graphics/GraphicsSystem.js.map +1 -0
- package/build/dist/Graphics/ImageSource.js +124 -0
- package/build/dist/Graphics/ImageSource.js.map +1 -0
- package/build/dist/Graphics/Line.js +45 -0
- package/build/dist/Graphics/Line.js.map +1 -0
- package/build/dist/Graphics/OffscreenSystem.js +64 -0
- package/build/dist/Graphics/OffscreenSystem.js.map +1 -0
- package/build/dist/Graphics/ParallaxComponent.js +11 -0
- package/build/dist/Graphics/ParallaxComponent.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 +59 -0
- package/build/dist/Graphics/PostProcessor/ScreenShader.js.map +1 -0
- package/build/dist/Graphics/PostProcessor/color-blind-fragment.glsl +64 -64
- package/build/dist/Graphics/Raster.js +215 -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 +82 -0
- package/build/dist/Graphics/Sprite.js.map +1 -0
- package/build/dist/Graphics/SpriteFont.js +139 -0
- package/build/dist/Graphics/SpriteFont.js.map +1 -0
- package/build/dist/Graphics/SpriteSheet.js +116 -0
- package/build/dist/Graphics/SpriteSheet.js.map +1 -0
- package/build/dist/Graphics/Text.js +103 -0
- package/build/dist/Graphics/Text.js.map +1 -0
- package/build/dist/Graphics/index.js +46 -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 +422 -0
- package/build/dist/Input/Gamepad.js.map +1 -0
- package/build/dist/Input/Index.js +88 -0
- package/build/dist/Input/Index.js.map +1 -0
- package/build/dist/Input/InputMapper.js +45 -0
- package/build/dist/Input/InputMapper.js.map +1 -0
- package/build/dist/Input/Keyboard.js +348 -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 +44 -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 +456 -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 +249 -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/Evented.js +2 -0
- package/build/dist/Interfaces/Evented.js.map +1 -0
- package/build/dist/Interfaces/Index.js +8 -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/Label.js +81 -0
- package/build/dist/Label.js.map +1 -0
- package/build/dist/Loader.js +416 -0
- package/build/dist/Loader.js.map +1 -0
- package/build/dist/Math/Index.js +13 -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/affine-matrix.js +331 -0
- package/build/dist/Math/affine-matrix.js.map +1 -0
- package/build/dist/Math/coord-plane.js +17 -0
- package/build/dist/Math/coord-plane.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-segment.js +205 -0
- package/build/dist/Math/line-segment.js.map +1 -0
- package/build/dist/Math/matrix.js +457 -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/transform.js +219 -0
- package/build/dist/Math/transform.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 +340 -0
- package/build/dist/Math/vector.js.map +1 -0
- package/build/dist/Math/watch-vector.js +26 -0
- package/build/dist/Math/watch-vector.js.map +1 -0
- package/build/dist/Particles.js +430 -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/Resources/Gif.js +464 -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 +81 -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 +326 -0
- package/build/dist/Resources/Sound/Sound.js.map +1 -0
- package/build/dist/Resources/Sound/WebAudioInstance.js +190 -0
- package/build/dist/Resources/Sound/WebAudioInstance.js.map +1 -0
- package/build/dist/Scene.js +444 -0
- package/build/dist/Scene.js.map +1 -0
- package/build/dist/Screen.js +782 -0
- package/build/dist/Screen.js.map +1 -0
- package/build/dist/ScreenElement.js +43 -0
- package/build/dist/ScreenElement.js.map +1 -0
- package/build/dist/TileMap/IsometricEntityComponent.js +17 -0
- package/build/dist/TileMap/IsometricEntityComponent.js.map +1 -0
- package/build/dist/TileMap/IsometricEntitySystem.js +23 -0
- package/build/dist/TileMap/IsometricEntitySystem.js.map +1 -0
- package/build/dist/TileMap/IsometricMap.js +311 -0
- package/build/dist/TileMap/IsometricMap.js.map +1 -0
- package/build/dist/TileMap/TileMap.d.ts +2 -1
- package/build/dist/TileMap/TileMap.js +630 -0
- package/build/dist/TileMap/TileMap.js.map +1 -0
- package/build/dist/TileMap/index.js +5 -0
- package/build/dist/TileMap/index.js.map +1 -0
- package/build/dist/Timer.js +202 -0
- package/build/dist/Timer.js.map +1 -0
- package/build/dist/Trigger.js +94 -0
- package/build/dist/Trigger.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/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 +115 -0
- package/build/dist/Util/DrawUtil.js.map +1 -0
- package/build/dist/Util/EasingFunctions.js +102 -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/Future.js +30 -0
- package/build/dist/Util/Future.js.map +1 -0
- package/build/dist/Util/IFrame.js +23 -0
- package/build/dist/Util/IFrame.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 +66 -0
- package/build/dist/Util/Observable.js.map +1 -0
- package/build/dist/Util/Pool.js +74 -0
- package/build/dist/Util/Pool.js.map +1 -0
- package/build/dist/Util/Semaphore.js +55 -0
- package/build/dist/Util/Semaphore.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/StateMachine.js +79 -0
- package/build/dist/Util/StateMachine.js.map +1 -0
- package/build/dist/Util/Toaster.css +28 -28
- package/build/dist/Util/Toaster.js +84 -0
- package/build/dist/Util/Toaster.js.map +1 -0
- package/build/dist/Util/Util.d.ts +6 -0
- package/build/dist/Util/Util.js +95 -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.d.ts +2 -2
- package/build/dist/excalibur.js +389 -258
- 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 +81 -0
- package/build/dist/index.js.map +1 -0
- package/build/esm/Debug/Debug.d.ts +11 -0
- package/build/esm/Graphics/Context/ExcaliburGraphicsContextWebGL.d.ts +1 -0
- package/build/esm/Graphics/Context/material.d.ts +2 -0
- package/build/esm/Graphics/DebugGraphicsComponent.d.ts +3 -2
- package/build/esm/Graphics/FontCache.d.ts +1 -0
- package/build/esm/TileMap/TileMap.d.ts +2 -1
- package/build/esm/Util/Util.d.ts +6 -0
- package/build/esm/excalibur.d.ts +2 -2
- package/build/esm/excalibur.js +389 -258
- 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/docker-compose.yml +11 -11
- package/package.json +131 -131
- package/build/dist/Loader.css +0 -122
- package/build/nuget/Excalibur.0.28.3.nupkg +0 -0
- package/build/v0.28.3.zip +0 -0
- package/excalibur-0.28.3.tgz +0 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Entity } from './Entity';
|
|
2
|
+
import { buildTypeKey } from './Util';
|
|
3
|
+
import { Observable } from '../Util/Observable';
|
|
4
|
+
import { Util } from '..';
|
|
5
|
+
import { AddedEntity, RemovedEntity } from './System';
|
|
6
|
+
/**
|
|
7
|
+
* Represents query for entities that match a list of types that is cached and observable
|
|
8
|
+
*
|
|
9
|
+
* Queries can be strongly typed by supplying a type union in the optional type parameter
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const queryAB = new ex.Query<ComponentTypeA | ComponentTypeB>(['A', 'B']);
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export class Query extends Observable {
|
|
15
|
+
get key() {
|
|
16
|
+
if (this._key) {
|
|
17
|
+
return this._key;
|
|
18
|
+
}
|
|
19
|
+
return (this._key = buildTypeKey(this.types));
|
|
20
|
+
}
|
|
21
|
+
constructor(types) {
|
|
22
|
+
super();
|
|
23
|
+
this._entities = [];
|
|
24
|
+
if (types[0] instanceof Function) {
|
|
25
|
+
this.types = types.map(T => (new T).type);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this.types = types;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Returns a list of entities that match the query
|
|
33
|
+
* @param sort Optional sorting function to sort entities returned from the query
|
|
34
|
+
*/
|
|
35
|
+
getEntities(sort) {
|
|
36
|
+
if (sort) {
|
|
37
|
+
this._entities.sort(sort);
|
|
38
|
+
}
|
|
39
|
+
return this._entities;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Add an entity to the query, will only be added if the entity matches the query types
|
|
43
|
+
* @param entity
|
|
44
|
+
*/
|
|
45
|
+
addEntity(entity) {
|
|
46
|
+
if (!Util.contains(this._entities, entity) && this.matches(entity)) {
|
|
47
|
+
this._entities.push(entity);
|
|
48
|
+
this.notifyAll(new AddedEntity(entity));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* If the entity is part of the query it will be removed regardless of types
|
|
53
|
+
* @param entity
|
|
54
|
+
*/
|
|
55
|
+
removeEntity(entity) {
|
|
56
|
+
if (Util.removeItemFromArray(entity, this._entities)) {
|
|
57
|
+
this.notifyAll(new RemovedEntity(entity));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Removes all entities and observers from the query
|
|
62
|
+
*/
|
|
63
|
+
clear() {
|
|
64
|
+
this._entities.length = 0;
|
|
65
|
+
for (let i = this.observers.length - 1; i >= 0; i--) {
|
|
66
|
+
this.unregister(this.observers[i]);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
matches(typesOrEntity) {
|
|
70
|
+
let types = [];
|
|
71
|
+
if (typesOrEntity instanceof Entity) {
|
|
72
|
+
types = typesOrEntity.types;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
types = typesOrEntity;
|
|
76
|
+
}
|
|
77
|
+
let matches = true;
|
|
78
|
+
for (const type of this.types) {
|
|
79
|
+
matches = matches && types.indexOf(type) > -1;
|
|
80
|
+
if (!matches) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return matches;
|
|
85
|
+
}
|
|
86
|
+
contain(type) {
|
|
87
|
+
return this.types.indexOf(type) > -1;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=Query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Query.js","sourceRoot":"","sources":["../../../src/engine/EntityComponentSystem/Query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { buildTypeKey } from './Util';
|
|
2
|
+
import { Query } from './Query';
|
|
3
|
+
/**
|
|
4
|
+
* The query manager is responsible for updating all queries when entities/components change
|
|
5
|
+
*/
|
|
6
|
+
export class QueryManager {
|
|
7
|
+
constructor(_world) {
|
|
8
|
+
this._world = _world;
|
|
9
|
+
this._queries = {};
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Adds a query to the manager and populates with any entities that match
|
|
13
|
+
* @param query
|
|
14
|
+
*/
|
|
15
|
+
_addQuery(query) {
|
|
16
|
+
this._queries[buildTypeKey(query.types)] = query;
|
|
17
|
+
for (const entity of this._world.entityManager.entities) {
|
|
18
|
+
query.addEntity(entity);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Removes the query if there are no observers left
|
|
23
|
+
* @param query
|
|
24
|
+
*/
|
|
25
|
+
maybeRemoveQuery(query) {
|
|
26
|
+
if (query.observers.length === 0) {
|
|
27
|
+
query.clear();
|
|
28
|
+
delete this._queries[buildTypeKey(query.types)];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Adds the entity to any matching query in the query manage
|
|
33
|
+
* @param entity
|
|
34
|
+
*/
|
|
35
|
+
addEntity(entity) {
|
|
36
|
+
for (const queryType in this._queries) {
|
|
37
|
+
if (this._queries[queryType]) {
|
|
38
|
+
this._queries[queryType].addEntity(entity);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Removes an entity from queries if the removed component disqualifies it
|
|
44
|
+
* @param entity
|
|
45
|
+
* @param component
|
|
46
|
+
*/
|
|
47
|
+
removeComponent(entity, component) {
|
|
48
|
+
for (const queryType in this._queries) {
|
|
49
|
+
// If the component being removed from an entity is a part of a query,
|
|
50
|
+
// it is now disqualified from that query, remove it
|
|
51
|
+
if (this._queries[queryType].contain(component.type)) {
|
|
52
|
+
this._queries[queryType].removeEntity(entity);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Removes an entity from all queries it is currently a part of
|
|
58
|
+
* @param entity
|
|
59
|
+
*/
|
|
60
|
+
removeEntity(entity) {
|
|
61
|
+
for (const queryType in this._queries) {
|
|
62
|
+
this._queries[queryType].removeEntity(entity);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Creates a populated query and returns, if the query already exists that will be returned instead of a new instance
|
|
67
|
+
* @param types
|
|
68
|
+
*/
|
|
69
|
+
createQuery(types) {
|
|
70
|
+
const maybeExistingQuery = this.getQuery(types);
|
|
71
|
+
if (maybeExistingQuery) {
|
|
72
|
+
return maybeExistingQuery;
|
|
73
|
+
}
|
|
74
|
+
const query = new Query(types);
|
|
75
|
+
this._addQuery(query);
|
|
76
|
+
return query;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Retrieves an existing query by types if it exists otherwise returns null
|
|
80
|
+
* @param types
|
|
81
|
+
*/
|
|
82
|
+
getQuery(types) {
|
|
83
|
+
const key = buildTypeKey(types);
|
|
84
|
+
if (this._queries[key]) {
|
|
85
|
+
return this._queries[key];
|
|
86
|
+
}
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=QueryManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryManager.js","sourceRoot":"","sources":["../../../src/engine/EntityComponentSystem/QueryManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIhC;;GAEG;AACH,MAAM,OAAO,YAAY;IAGvB,YAAoB,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;QAF9B,aAAQ,GAAiD,EAAE,CAAC;IAE3B,CAAC;IAE1C;;;OAGG;IACK,SAAS,CAAC,KAAiB;QACjC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;QACjD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YACxD,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,gBAAgB,CAAC,KAAY;QAClC,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,SAAS,CAAC,MAAc;QAC7B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,eAAe,CAAC,MAAc,EAAE,SAAoB;QACzD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtC,sEAAsE;YACtE,oDAAoD;YACpD,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,YAAY,CAAC,MAAc;QAChC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,WAAW,CAAkC,KAAwB;QAC1E,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAI,KAAK,CAAC,CAAC;QACnD,IAAI,kBAAkB,EAAE,CAAC;YACvB,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAI,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACI,QAAQ,CAAkC,KAAwB;QACvE,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAa,CAAC;QACxC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enum that determines whether to run the system in the update or draw phase
|
|
3
|
+
*/
|
|
4
|
+
export var SystemType;
|
|
5
|
+
(function (SystemType) {
|
|
6
|
+
SystemType["Update"] = "update";
|
|
7
|
+
SystemType["Draw"] = "draw";
|
|
8
|
+
})(SystemType || (SystemType = {}));
|
|
9
|
+
/**
|
|
10
|
+
* An Excalibur [[System]] that updates entities of certain types.
|
|
11
|
+
* Systems are scene specific
|
|
12
|
+
*
|
|
13
|
+
* Excalibur Systems currently require at least 1 Component type to operated
|
|
14
|
+
*
|
|
15
|
+
* Multiple types are declared as a type union
|
|
16
|
+
* For example:
|
|
17
|
+
*
|
|
18
|
+
* ```typescript
|
|
19
|
+
* class MySystem extends System<ComponentA | ComponentB> {
|
|
20
|
+
* public readonly types = ['a', 'b'] as const;
|
|
21
|
+
* public readonly systemType = SystemType.Update;
|
|
22
|
+
* public update(entities: Entity<ComponentA | ComponentB>) {
|
|
23
|
+
* ...
|
|
24
|
+
* }
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export class System {
|
|
29
|
+
constructor() {
|
|
30
|
+
/**
|
|
31
|
+
* System can execute in priority order, by default all systems are priority 0. Lower values indicated higher priority.
|
|
32
|
+
* For a system to execute before all other a lower priority value (-1 for example) must be set.
|
|
33
|
+
* For a system to execute after all other a higher priority value (10 for example) must be set.
|
|
34
|
+
*/
|
|
35
|
+
this.priority = 0;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Systems observe when entities match their types or no longer match their types, override
|
|
39
|
+
* @param _entityAddedOrRemoved
|
|
40
|
+
*/
|
|
41
|
+
notify(_entityAddedOrRemoved) {
|
|
42
|
+
// Override me
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* An [[Entity]] with [[Component]] types that matches a [[System]] types exists in the current scene.
|
|
47
|
+
*/
|
|
48
|
+
export class AddedEntity {
|
|
49
|
+
constructor(data) {
|
|
50
|
+
this.data = data;
|
|
51
|
+
this.type = 'Entity Added';
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Type guard to check for AddedEntity messages
|
|
56
|
+
* @param x
|
|
57
|
+
*/
|
|
58
|
+
export function isAddedSystemEntity(x) {
|
|
59
|
+
return !!x && x.type === 'Entity Added';
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* An [[Entity]] with [[Component]] types that no longer matches a [[System]] types exists in the current scene.
|
|
63
|
+
*/
|
|
64
|
+
export class RemovedEntity {
|
|
65
|
+
constructor(data) {
|
|
66
|
+
this.data = data;
|
|
67
|
+
this.type = 'Entity Removed';
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* type guard to check for the RemovedEntity message
|
|
72
|
+
*/
|
|
73
|
+
export function isRemoveSystemEntity(x) {
|
|
74
|
+
return !!x && x.type === 'Entity Removed';
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=System.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"System.js","sourceRoot":"","sources":["../../../src/engine/EntityComponentSystem/System.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,+BAAiB,CAAA;IACjB,2BAAa,CAAA;AACf,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAID;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAgB,MAAM;IAA5B;QAaE;;;;WAIG;QACI,aAAQ,GAAW,CAAC,CAAC;IA2C9B,CAAC;IAPC;;;OAGG;IACI,MAAM,CAAC,qBAAkD;QAC9D,cAAc;IAChB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,WAAW;IAEtB,YAAmB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;QADtB,SAAI,GAAmB,cAAc,CAAC;IACb,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,CAAkB;IACpD,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,aAAa;IAExB,YAAmB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;QADtB,SAAI,GAAqB,gBAAgB,CAAC;IACjB,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,CAAkB;IACrD,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Scene, Util } from '..';
|
|
2
|
+
/**
|
|
3
|
+
* The SystemManager is responsible for keeping track of all systems in a scene.
|
|
4
|
+
* Systems are scene specific
|
|
5
|
+
*/
|
|
6
|
+
export class SystemManager {
|
|
7
|
+
constructor(_world) {
|
|
8
|
+
this._world = _world;
|
|
9
|
+
/**
|
|
10
|
+
* List of systems, to add a new system call [[SystemManager.addSystem]]
|
|
11
|
+
*/
|
|
12
|
+
this.systems = [];
|
|
13
|
+
this.initialized = false;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Get a system registered in the manager by type
|
|
17
|
+
* @param systemType
|
|
18
|
+
*/
|
|
19
|
+
get(systemType) {
|
|
20
|
+
return this.systems.find((s) => s instanceof systemType);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Adds a system to the manager, it will now be updated every frame
|
|
24
|
+
* @param system
|
|
25
|
+
*/
|
|
26
|
+
addSystem(system) {
|
|
27
|
+
// validate system has types
|
|
28
|
+
if (!system.types || system.types.length === 0) {
|
|
29
|
+
throw new Error(`Attempted to add a System without any types`);
|
|
30
|
+
}
|
|
31
|
+
const query = this._world.queryManager.createQuery(system.types);
|
|
32
|
+
this.systems.push(system);
|
|
33
|
+
this.systems.sort((a, b) => a.priority - b.priority);
|
|
34
|
+
query.register(system);
|
|
35
|
+
// If systems are added and the manager has already been init'd
|
|
36
|
+
// then immediately init the system
|
|
37
|
+
if (this.initialized && system.initialize) {
|
|
38
|
+
system.initialize(this._world.context);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Removes a system from the manager, it will no longer be updated
|
|
43
|
+
* @param system
|
|
44
|
+
*/
|
|
45
|
+
removeSystem(system) {
|
|
46
|
+
Util.removeItemFromArray(system, this.systems);
|
|
47
|
+
const query = this._world.queryManager.getQuery(system.types);
|
|
48
|
+
if (query) {
|
|
49
|
+
query.unregister(system);
|
|
50
|
+
this._world.queryManager.maybeRemoveQuery(query);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Initialize all systems in the manager
|
|
55
|
+
*
|
|
56
|
+
* Systems added after initialize() will be initialized on add
|
|
57
|
+
*/
|
|
58
|
+
initialize() {
|
|
59
|
+
if (!this.initialized) {
|
|
60
|
+
this.initialized = true;
|
|
61
|
+
for (const s of this.systems) {
|
|
62
|
+
if (s.initialize) {
|
|
63
|
+
s.initialize(this._world.context);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Updates all systems
|
|
70
|
+
* @param type whether this is an update or draw system
|
|
71
|
+
* @param context context reference
|
|
72
|
+
* @param delta time in milliseconds
|
|
73
|
+
*/
|
|
74
|
+
updateSystems(type, context, delta) {
|
|
75
|
+
const systems = this.systems.filter((s) => s.systemType === type);
|
|
76
|
+
for (const s of systems) {
|
|
77
|
+
if (s.preupdate) {
|
|
78
|
+
s.preupdate(context, delta);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
for (const s of systems) {
|
|
82
|
+
// Get entities that match the system types, pre-sort
|
|
83
|
+
const entities = this._world.queryManager.getQuery(s.types).getEntities(s.sort);
|
|
84
|
+
// Initialize entities if needed
|
|
85
|
+
if (context instanceof Scene) {
|
|
86
|
+
for (const entity of entities) {
|
|
87
|
+
entity._initialize(context === null || context === void 0 ? void 0 : context.engine);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
s.update(entities, delta);
|
|
91
|
+
}
|
|
92
|
+
for (const s of systems) {
|
|
93
|
+
if (s.postupdate) {
|
|
94
|
+
s.postupdate(context, delta);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
clear() {
|
|
99
|
+
for (let i = this.systems.length - 1; i >= 0; i--) {
|
|
100
|
+
this.removeSystem(this.systems[i]);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=SystemManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SystemManager.js","sourceRoot":"","sources":["../../../src/engine/EntityComponentSystem/SystemManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Util.js","sourceRoot":"","sources":["../../../src/engine/EntityComponentSystem/Util.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAwB,EAAE,EAAE;IACvD,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Entity } from './Entity';
|
|
2
|
+
import { EntityManager } from './EntityManager';
|
|
3
|
+
import { QueryManager } from './QueryManager';
|
|
4
|
+
import { System, SystemType } from './System';
|
|
5
|
+
import { SystemManager } from './SystemManager';
|
|
6
|
+
/**
|
|
7
|
+
* The World is a self-contained entity component system for a particular context.
|
|
8
|
+
*/
|
|
9
|
+
export class World {
|
|
10
|
+
/**
|
|
11
|
+
* The context type is passed to the system updates
|
|
12
|
+
* @param context
|
|
13
|
+
*/
|
|
14
|
+
constructor(context) {
|
|
15
|
+
this.context = context;
|
|
16
|
+
this.queryManager = new QueryManager(this);
|
|
17
|
+
this.entityManager = new EntityManager(this);
|
|
18
|
+
this.systemManager = new SystemManager(this);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Update systems by type and time elapsed in milliseconds
|
|
22
|
+
*/
|
|
23
|
+
update(type, delta) {
|
|
24
|
+
if (type === SystemType.Update) {
|
|
25
|
+
this.entityManager.updateEntities(this.context, delta);
|
|
26
|
+
}
|
|
27
|
+
this.systemManager.updateSystems(type, this.context, delta);
|
|
28
|
+
this.entityManager.findEntitiesForRemoval();
|
|
29
|
+
this.entityManager.processComponentRemovals();
|
|
30
|
+
this.entityManager.processEntityRemovals();
|
|
31
|
+
}
|
|
32
|
+
add(entityOrSystem) {
|
|
33
|
+
if (entityOrSystem instanceof Entity) {
|
|
34
|
+
this.entityManager.addEntity(entityOrSystem);
|
|
35
|
+
}
|
|
36
|
+
if (entityOrSystem instanceof System) {
|
|
37
|
+
this.systemManager.addSystem(entityOrSystem);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
remove(entityOrSystem, deferred = true) {
|
|
41
|
+
if (entityOrSystem instanceof Entity) {
|
|
42
|
+
this.entityManager.removeEntity(entityOrSystem, deferred);
|
|
43
|
+
}
|
|
44
|
+
if (entityOrSystem instanceof System) {
|
|
45
|
+
this.systemManager.removeSystem(entityOrSystem);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
clearEntities() {
|
|
49
|
+
this.entityManager.clear();
|
|
50
|
+
}
|
|
51
|
+
clearSystems() {
|
|
52
|
+
this.systemManager.clear();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=World.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"World.js","sourceRoot":"","sources":["../../../src/engine/EntityComponentSystem/World.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;GAEG;AACH,MAAM,OAAO,KAAK;IAKhB;;;OAGG;IACH,YAAmB,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;QARhC,iBAAY,GAAiB,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;QACpD,kBAAa,GAA+B,IAAI,aAAa,CAAc,IAAI,CAAC,CAAC;QACjF,kBAAa,GAA+B,IAAI,aAAa,CAAc,IAAI,CAAC,CAAC;IAM9C,CAAC;IAE3C;;OAEG;IACH,MAAM,CAAC,IAAgB,EAAE,KAAa;QACpC,IAAI,IAAI,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC;QAC5C,IAAI,CAAC,aAAa,CAAC,wBAAwB,EAAE,CAAC;QAC9C,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;IAC7C,CAAC;IAYD,GAAG,CAAC,cAAiD;QACnD,IAAI,cAAc,YAAY,MAAM,EAAE,CAAC;YACrC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,cAAc,YAAY,MAAM,EAAE,CAAC;YACrC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAYD,MAAM,CAAC,cAAiD,EAAE,QAAQ,GAAG,IAAI;QACvE,IAAI,cAAc,YAAY,MAAM,EAAE,CAAC;YACrC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,cAAc,YAAY,MAAM,EAAE,CAAC;YACrC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,aAAa;QACX,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,YAAY;QACV,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './Component';
|
|
2
|
+
export * from './Entity';
|
|
3
|
+
export * from './EntityManager';
|
|
4
|
+
export * from './Query';
|
|
5
|
+
export * from './QueryManager';
|
|
6
|
+
export * from './System';
|
|
7
|
+
export * from './SystemManager';
|
|
8
|
+
export * from './World';
|
|
9
|
+
export * from './Components/TransformComponent';
|
|
10
|
+
export * from './Components/MotionComponent';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/EntityComponentSystem/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AAExB,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { GameEvent } from './Events';
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated Use [[EventEmitter]] will be removed in v0.29.0
|
|
4
|
+
*/
|
|
5
|
+
export class EventDispatcher {
|
|
6
|
+
constructor() {
|
|
7
|
+
this._handlers = {};
|
|
8
|
+
this._wiredEventDispatchers = [];
|
|
9
|
+
this._deferedHandlerRemovals = [];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Clears any existing handlers or wired event dispatchers on this event dispatcher
|
|
13
|
+
*/
|
|
14
|
+
clear() {
|
|
15
|
+
this._handlers = {};
|
|
16
|
+
this._wiredEventDispatchers = [];
|
|
17
|
+
}
|
|
18
|
+
_processDeferredHandlerRemovals() {
|
|
19
|
+
for (const eventHandler of this._deferedHandlerRemovals) {
|
|
20
|
+
this._removeHandler(eventHandler.name, eventHandler.handler);
|
|
21
|
+
}
|
|
22
|
+
this._deferedHandlerRemovals.length = 0;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Emits an event for target
|
|
26
|
+
* @param eventName The name of the event to publish
|
|
27
|
+
* @param event Optionally pass an event data object to the handler
|
|
28
|
+
*/
|
|
29
|
+
emit(eventName, event) {
|
|
30
|
+
this._processDeferredHandlerRemovals();
|
|
31
|
+
if (!eventName) {
|
|
32
|
+
// key not mapped
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
eventName = eventName.toLowerCase();
|
|
36
|
+
if (typeof event === 'undefined' || event === null) {
|
|
37
|
+
event = new GameEvent();
|
|
38
|
+
}
|
|
39
|
+
let i, len;
|
|
40
|
+
if (this._handlers[eventName]) {
|
|
41
|
+
i = 0;
|
|
42
|
+
len = this._handlers[eventName].length;
|
|
43
|
+
for (i; i < len; i++) {
|
|
44
|
+
this._handlers[eventName][i](event);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
i = 0;
|
|
48
|
+
len = this._wiredEventDispatchers.length;
|
|
49
|
+
for (i; i < len; i++) {
|
|
50
|
+
this._wiredEventDispatchers[i].emit(eventName, event);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Subscribe an event handler to a particular event name, multiple handlers per event name are allowed.
|
|
55
|
+
* @param eventName The name of the event to subscribe to
|
|
56
|
+
* @param handler The handler callback to fire on this event
|
|
57
|
+
*/
|
|
58
|
+
on(eventName, handler) {
|
|
59
|
+
this._processDeferredHandlerRemovals();
|
|
60
|
+
eventName = eventName.toLowerCase();
|
|
61
|
+
if (!this._handlers[eventName]) {
|
|
62
|
+
this._handlers[eventName] = [];
|
|
63
|
+
}
|
|
64
|
+
this._handlers[eventName].push(handler);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Unsubscribe an event handler(s) from an event. If a specific handler
|
|
68
|
+
* is specified for an event, only that handler will be unsubscribed.
|
|
69
|
+
* Otherwise all handlers will be unsubscribed for that event.
|
|
70
|
+
* @param eventName The name of the event to unsubscribe
|
|
71
|
+
* @param handler Optionally the specific handler to unsubscribe
|
|
72
|
+
*/
|
|
73
|
+
off(eventName, handler) {
|
|
74
|
+
this._deferedHandlerRemovals.push({ name: eventName, handler });
|
|
75
|
+
}
|
|
76
|
+
_removeHandler(eventName, handler) {
|
|
77
|
+
eventName = eventName.toLowerCase();
|
|
78
|
+
const eventHandlers = this._handlers[eventName];
|
|
79
|
+
if (eventHandlers) {
|
|
80
|
+
// if no explicit handler is give with the event name clear all handlers
|
|
81
|
+
if (!handler) {
|
|
82
|
+
this._handlers[eventName].length = 0;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
const index = eventHandlers.indexOf(handler);
|
|
86
|
+
if (index > -1) {
|
|
87
|
+
this._handlers[eventName].splice(index, 1);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Once listens to an event one time, then unsubscribes from that event
|
|
94
|
+
* @param eventName The name of the event to subscribe to once
|
|
95
|
+
* @param handler The handler of the event that will be auto unsubscribed
|
|
96
|
+
*/
|
|
97
|
+
once(eventName, handler) {
|
|
98
|
+
this._processDeferredHandlerRemovals();
|
|
99
|
+
const metaHandler = (event) => {
|
|
100
|
+
const ev = event || new GameEvent();
|
|
101
|
+
this.off(eventName, metaHandler);
|
|
102
|
+
handler(ev);
|
|
103
|
+
};
|
|
104
|
+
this.on(eventName, metaHandler);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Wires this event dispatcher to also receive events from another
|
|
108
|
+
*/
|
|
109
|
+
wire(eventDispatcher) {
|
|
110
|
+
eventDispatcher._wiredEventDispatchers.push(this);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Unwires this event dispatcher from another
|
|
114
|
+
*/
|
|
115
|
+
unwire(eventDispatcher) {
|
|
116
|
+
const index = eventDispatcher._wiredEventDispatchers.indexOf(this);
|
|
117
|
+
if (index > -1) {
|
|
118
|
+
eventDispatcher._wiredEventDispatchers.splice(index, 1);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=EventDispatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventDispatcher.js","sourceRoot":"","sources":["../../src/engine/EventDispatcher.ts"],"names":[],"mappings":"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"}
|