# Map
r: code refactoring
+  added new functionality/classes
f: fixed defects

# History
1.5.12:
    +: added scale property for DrawShapeObject and extended objects
    r: new System(settings, canvas), settings object is now optional

1.5.11:
    r: DrawObjectFactory.text() boxWidth, boxHeight optional params introduced
    r: boxWidth, boxHeight set separately
    f: remove text debug canvas

1.5.10:
    +: texts test page
    +: TextAtlas, ImageAtlasPosition introduced (adr#09)
    +: gameOptions.render.textAtlasMaxSize option introduced
    r: add texts draw calls merge (adr#09)
    r: add types for SystemSettings, CONST
    r: removed ImagesDrawProgram
    r: WebGlEngine._bindText() matrices calculations added

1.5.9:
    r: test workflow name
    r: fixed Readme
    r: fixed docs
    +: primitive objects draw merge (adr#9)

1.5.897:
    +: test workflow
    r: regression test: process.exit(1), headless: "shell", --disable-gpu

1.5.83 - 1.5.896:
    +: build pipeline fixes

1.5.82 - :
    f: removed console.log #isCircleToCircleCollision()
    f: ended, non repeated animation(AnimationEvent.isActive = false), continue to process with ImageDrawObject._processActiveAnimations()
    r: added npm upload through GitHub Actions

1.5.81:
    r: isObjectsCollision() returns Array<Object>(adr#15)
    f: removed objects merge issue

1.5.8:
    +: tileset.tileoffset property support
    r: assetsm updated to 0.2.0:  
        .tmx tilemaps support (adr#13)
        internal and .tsx tilesets support (adr#13)
    r: removed tileset.data level
    f: fixed y shift for tiles different than the tilemap cells height

1.5.71:
    f: tile layer merge empty data issue
    f: incorrect jsdoc get parameters
    f: System.registerStage() jsdoc issue
    
1.5.7
    +: stageData.cleanUp() added                                    (adr#8)
    r: Assetsm added as a submodule dependency                      (adr#7)
    r: updated to assetsm@0.1.8
    r: Readme file fixes
    r: jsdoc tutorials fixes
    r: jsdoc src fixes
    f: fixed DRAW_TYPE jsdoc
    
1.5.6:
    +: multiple tileset images warning
    +: mat3MultiplyPosCoords(), (transform matrix) * (pos coords)
    r: adding renderObjects refactored                              (adr#12)
    r: merge tilesets draws                                         (adr#9)
    f: tileset attach issue
    
1.5.5:
    +: GameStageData.#debugObjectBoundaries for debug draw image boundaries
    +: 3x3 Matrices multiplication methods
    +: webgl ImagesDrawProgramM program
    +: DrawImageObject draw calls merge
    r: _bindRenderObject refactored, removed workaround
    r: webgl images draw program refactored according               (adr#9)
    f: examples strategy build unit, if already in progress resources are taken away
    f: examples strategy build building, resources are taken after building complete

1.5.4:
    +: debug - vertices drawn added
    r: examples big_map 800x800 map added
    f: examples strategy house/barracks build done
    f: fixed fps slowdown bug on maps with different tilesets(strategy, dungeon)
    f: fixed big maps processing issue (with TiledLayerTempStorage() from 1.5.0)
    
1.5.3:
    +: RenderLoop and RenderLoopDebug classes
    +: Counting the number of draw calls
    +: two stages start throws an exception
    r: FPS count
    r: #registeredRenderObjects moved down to WebGlEngine
    r: _bindRenderObject() moved down to WebGlEngine
    r: removed optional render control time
    f: stage restart rendering issue
    f: examples/big_map issue

1.5.2:
    +: regression testing
    +: support tileset.margin property
    +: support image.margin property
    
1.5.1:
    r: refactor render time calculations
    r: refactor triangulation method
    r: refactor primitives examples page

1.5.0:
    r: refactor according adr#4
    r: refactor folder structure: draw objects moved to ./base/2d, temp objects to ./base/temp
    r: scheme supplemented
    r: TextureStorage -> ImageTempStorage
    +: introduced TiledLayerTempStorage() to store temp calculations data
    +: _initiateJsRender() introduced, method is used to precalculate and initiate boundaries arrays
    +: getRawBoundaries() returns Float32Array boundaries
    +: getEllipseBoundaries() returns Float32Array ellipse tiledLayer boundaries
    +: getPointBoundaries() returns Float32Array point tiledLayer boundaries


1.4.4:
    r: disable iNetwork interface by default
    
1.4.32:
    f: Mobile Chrome@125.0.6422.147 issue: "Name conflicts between an uniform and an attribute: a_position"
    f: registerStage() type issue
    f: System() htmlContainer param type issue
    +: DrawTextObject methods description

1.4.31:
    r: ADR(Architecture Design Records) moved to the separate folder
    +: Added discord channel for feedback and questions

1.4.3:
    r: refactor class scheme
    r: refactor image animation behavior, added activeAnimation property
    +: units.randomFromArray()
    +: example/strategy game

1.4.2:
    r: updated assetsm to version 0.1.7
    r: refactored class scheme according uml rules

1.4.1:
    f: fixed texts box size measurements
    f: texts artifacts
    f: textures images and tiles filtering NEAREST -> LINEAR
    
1.4.0:
    +: Tiled Editor: added animated tiles support
    +: Examples: setting options switch screen
    r: addAnimation(), removed cyclesPerFrame,  
    r: addAnimation(), animationSpriteIndexes is now Array<number> | Array<{duration:number, id:number}>
    f: tilesets.tiles property which has mix of animated and boundaries tiles
    f: drawing layers, which use multiple different tilesets
    f: world size infinite set for wasm and not optimized render

1.3.1:
    r: isEllipseCircleIntersect() return type

1.3.0:
    f: iRender error handling
    f: Autofixing world size for maps without boundaries
    f: iRender "reject is not defined"
    f: text artifacts in Chrome
    +: Tiled collision support: custom rects, polygons, ellipses, dots
    +: AtlasXML support
    +: Tanks game

1.2.2:
    f: Infinity message for 0 milliseconds render cycles
    r: fps averages calculations
    r: fps output count
    
1.2.1:
    f: fix default draw config
    
1.2.0:
    f: first fps calculation
    r: refactored DrawObjectFactory registering new objects and adding them to stageData
    r: refactored spine module for apply new objects adding to stageData
    r: all debug options moved to gameOptions.debug section
    +: added custom webgl program example 

1.1.3:
    f: typos
    f: render errors catch
    f: eslint issues

1.1.2:
    r: increased Memory for WebAssembly methods from 10 to 500
    +: added BigMap example for test big maps processing

1.1.1:
    +: added tileset.spacing > 0 support for NOT_OPTIMIZED and WEB_ASSEMBLY versions
    r: renamed WASM -> NATIVE_WAT
    f: fixed centerCameraPosition() for NOT_OPTIMIZED and WEB_ASSEMBLY versions
    f: fixed multiple tilesets in tilemap for NOT_OPTIMIZED and WEB_ASSEMBLY versions
    f: fixed ASSEMBLY_SCRIPT version
    
1.1.0:
    f: fixed npm registry issue
    r: GameStage.system -> GameStage.iSystem
    r: SystemSettings is now a class
    
1.0.0:
    r: Classes names and properties renamed and refactored, interface -> i, ScreenPage -> GameStage, screenPageData -> stageData

0.3.8:
    f: eslint issues
    f: mask._isMask = true doesn't set tiledLayer objects
    f: textures edges on rotate issue
    f: examples dungeon ghosts edges artifacts
    f: examples dungeon player - light overlay color artifact 
    r: examples dungeon map rebuilt
    r: increase default canvas size
    +: added tileset.spacing > 0 support
    +: images spaces property

0.3.7:
    +: addAnimation() cyclesPerFrame parameter
    f: spineModule registerObjectRender() parameters fixed
    r: tutorials updated, live examples added

0.3.6:
    f: webpack min rendering issue
    f: examples: nav back button offset issue

0.3.5:
    f: webpack builds
    r: updated assetsm to 0.1.3

0.3.4:
    f: fixed textures overflow
    f: fixed executing init methods
    r: refactored texture binding
    +: TextureStorage introduced
    +: examples added "main menu" button
    +: DrawSpineObject and DrawSpineTexture .sortIndex property
    
0.3.3:
    f: fixed world boundaries calculations
    f: fixed examples/dungeon decs
    f: tiled layers textures temp saving
    r: change enableBoundariesCalculations option check
    r: moved text texture calculations inside text object
    r: refactored text texture calculations
    +: added current cycles time calculations
    
0.3.2:
    f: circle-polygon collision
    f: sort by sortIndex
    f: removed setting stensil id for non mask objects
    +: introduced DrawShapeObject.#isMask property
    +: setting isMask property if object used as a mask
    +: setting stensil id only for mask and filtered by mask objects
    +: sortIndex added to DrawTiledLayer
    +: drawObjectFactory will now add items to the stageData
    +: draw circle boundaries

0.3.1:
    +: introduced IExtension
    r: removed spine module 3 parameter
    r: fixed jsdocs according last changes
    r: fixed jsdocs schemes
    r: added jsdoc switcher for prev versions

0.3.0:
    r: CanvasView -> IRender
    r: removed multiple layers and layers create
    r: IRender is now part of the ISystem
    r: render() itself moved to the IRender
    r: removed IRender.#renderLayers, any draw object will be added to #renderObjects array now
    r: IRender.#renderObjects moved to GameStage.GameStageData.#renderObjects
    r: RenderLayer -> DrawTiledLayer
    +: drawMasks introduced
    +: DrawShapeObject.setMask(), DrawShapeObject.removeMask()
    +: DrawTiledLayer.setMask(), DrawTiledLayer.removeMask()
    +: ISystem.registerDrawObject() for add new drawObjects
    +: new methods introduced: IRender.registerRenderInit() for register init drawing methods
    +: ISystem.registerDrawObject() for register new types of drawing objects
    +: IRender.registerObjectRender() for register object drawing methods
    
0.2.3
    +: circle boundaries
    +: circle/circle/polygon/boundaries collisions
    +: spine-animation tutorial
    
0.2.21
    f: fixed removing drawObjects
    
0.2.2:
    +: added system class types
    r: spine module design updated
    +: introduced spineModule.activateSpineRender()

0.2.12:
    f: fixed boundaries drawing
    f: left and bottom map boundaries count
    
0.2.11:
    f: fixed dependency issue

0.2.1:
    +: web assembly experiments

0.2.0:
    +: modules installing with system.installModule(key, moduleClass, ...params)
    +: spine module, integration spine runtimes
    r: rendering pipeline now use public, overwritable methods view.initiateContext() and view.render()
    r: GameStage.createCanvasView is now returns a CanvasView instance

0.1.24:
    f: updated tutorials

0.1.23:
    f: updated readme
    f: updated tutorials
    +: added config.modules.spineAnimations
    +: stage stages scheme

0.1.22:
    f: updated readme and tutorials
    +: added jsge name on loading screen

0.1.21:
    f: eslint issues
    +: package.json keywords
    
0.1.2:
    f: jsdocs
    +: ship sails state
    +: ship speed calculation depends on ship direction, wind direction and wind strength
    +: DrawImageObject set imageIndex()

0.1.1:
    +: loading progress bar
    f: jsdocs cleanup

0.1.0:
    +: tutorial How to add and use audio
    +: dungeon: default audio, ghost and fireball audio
    +: dungeon: enemy - player detect
    +: dungeon: enemy - player move
    +: utils.countDistance()
    +: DrawConusObject.fade_min
    +: DrawConusObject ability to draw fade effect, using fade_min property
    +: WebGL fade count, depends on fade_min and radius properties
    r: iLoader moved to the system class level
    r: updated scheme

0.0.9:
    f: draw object boundaries
    f: jsdoc: subtractProgram string -> cut boolean
    +: wholeWorldPrecalculations boundaries option and calculations
    +: stageData.getWholeWorldBoundaries()

0.0.8:
    r: changed main file to src/index.js
    r: added /modules, fixed modules imports
    r: changed socket.io to dynamic import
    f: fixed jsdocs
    f: fixed eslint issues

0.0.7:
    r: CanvasView.#webGlInterface._drawLines() accepts rotation and x, y params
    r: DrawObjectFactory jsdoc fix
    +: DrawImageObject.addAnimation isRepeated parameter
    +: DrawImageObject.stopRepeatedAnimation()
    f: repeated animation indexes processing
    r: types replaced with lowercase equivalents
    r: DrawImageObject.boundaries -> vertices, boundaries marked as deprecated
    r: vertices is now used to check collisions
    r: vertices are now Array<Array<number>> (Array of x,y coords )
    +: GameStage.isObjectsCollision()
    +: DrawCircleObject, DRAW_TYPE.CIRCLE
    +: Examples: dungeon, added casting fireballs, added enemies
    f: fixed animations cycles
    +: addAnimation() isRepeated and isReturnToBeginning parameters
    +: stopRepeatedAnimation()

0.0.6:
    f: examples: pirates fixed top white line
    r: CanvasView.isStatic -> isOffsetTurnedOff
    r: _bindRenderLayer() cut right/bottom offscreen tiles

0.0.52:
    f: CanvasView and GameStage issues
    f: examples/dungeon overlay size

0.0.51:
    r: changed setting world detentions behavior
    r: refactored encapsulation
    r: refactored classes
    r: refactored docs
    r: refactored scheme

0.0.5:
    r: changed mapBoundariesEnabled option behavior
    f: fixed setMapBoundaries() call
    +: fixed GameStage.createCanvasView() and CanvasView.#isStatic parameter
    f: removed centerCameraPosition() debug output
    
0.0.46:
    f: isPolygonLineIntersect() issue

0.0.45:
    f: countClosestTraversal2() issues
    r: isPointOnTheLine() added a measurement error parameter

0.0.42-0.0.44:
    f: fixed text and images transparency
    f: isPolygonLineIntersect() fixed polygon boundaries collision corner cases calculations
    f: GameStage public functions changed to arrow functions
    f: #triangulate() fix
    +: "prepare-to-push" npm task
    +: examples/racing car boundaries added

0.0.41:
    f: added build files, fixed jsdoc 
    
0.0.4:
    r: Refactor triangulate() method
    r: webgl render methods refactor
    r: removed default blendFunc for primitives
    r: DrawShapeObject width, height, boundaries properties and methods moved to DrawImageObject
    +: DrawObjectFactory.circle()
    +: drawConusObject.#calculateConusVertices()
    +: GameStage.isBoundariesCollision() to detect object(xy/mapBoundaries) and object(boundaries/mapBoundaries) collisions
    +: webGl.blendFunc parameters are added to the DrawShapeObject
    +: examples: pirates - added wind direction icon, added wind direction change
    f: fixed utils.isPointOnTheLine() and utils.countClosestTraversal2() issues
    
0.0.3:
    r: Fixed drawLines() position shift
    r: Removed drawLines() premultiply alpha
    r: Point() renamed to Vertex()
    r: fix isServerConnected check before network.init() runs
    +: polygon.triangulation algorithm
    +: polygon drawing
    +: object boundaries drawing
    
0.0.2:
    r: Fixed changing text properties render
    
0.0.1:
    +: Javascript Game Engine introduced

