[
  {
    "__docId__": 1,
    "kind": "external",
    "name": "Infinity",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Infinity",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 2,
    "kind": "external",
    "name": "NaN",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~NaN",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 3,
    "kind": "external",
    "name": "undefined",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~undefined",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 4,
    "kind": "external",
    "name": "null",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~null",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 5,
    "kind": "external",
    "name": "Object",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Object",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 6,
    "kind": "external",
    "name": "object",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~object",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 7,
    "kind": "external",
    "name": "Function",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Function",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 8,
    "kind": "external",
    "name": "function",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~function",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 9,
    "kind": "external",
    "name": "Boolean",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Boolean",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 10,
    "kind": "external",
    "name": "boolean",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~boolean",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 11,
    "kind": "external",
    "name": "Symbol",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Symbol",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 12,
    "kind": "external",
    "name": "Error",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Error",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 13,
    "kind": "external",
    "name": "EvalError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~EvalError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 14,
    "kind": "external",
    "name": "InternalError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/InternalError",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~InternalError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 15,
    "kind": "external",
    "name": "RangeError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~RangeError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 16,
    "kind": "external",
    "name": "ReferenceError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~ReferenceError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 17,
    "kind": "external",
    "name": "SyntaxError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~SyntaxError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 18,
    "kind": "external",
    "name": "TypeError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~TypeError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 19,
    "kind": "external",
    "name": "URIError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~URIError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 20,
    "kind": "external",
    "name": "Number",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Number",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 21,
    "kind": "external",
    "name": "number",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~number",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 22,
    "kind": "external",
    "name": "Date",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Date",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 23,
    "kind": "external",
    "name": "String",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~String",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 24,
    "kind": "external",
    "name": "string",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~string",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 25,
    "kind": "external",
    "name": "RegExp",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~RegExp",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 26,
    "kind": "external",
    "name": "Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 27,
    "kind": "external",
    "name": "Int8Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Int8Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 28,
    "kind": "external",
    "name": "Uint8Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Uint8Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 29,
    "kind": "external",
    "name": "Uint8ClampedArray",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Uint8ClampedArray",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 30,
    "kind": "external",
    "name": "Int16Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Int16Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 31,
    "kind": "external",
    "name": "Uint16Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Uint16Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 32,
    "kind": "external",
    "name": "Int32Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Int32Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 33,
    "kind": "external",
    "name": "Uint32Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Uint32Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 34,
    "kind": "external",
    "name": "Float32Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Float32Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 35,
    "kind": "external",
    "name": "Float64Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Float64Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 36,
    "kind": "external",
    "name": "Map",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Map",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 37,
    "kind": "external",
    "name": "Set",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Set",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 38,
    "kind": "external",
    "name": "WeakMap",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~WeakMap",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 39,
    "kind": "external",
    "name": "WeakSet",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~WeakSet",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 40,
    "kind": "external",
    "name": "ArrayBuffer",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~ArrayBuffer",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 41,
    "kind": "external",
    "name": "DataView",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~DataView",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 42,
    "kind": "external",
    "name": "JSON",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~JSON",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 43,
    "kind": "external",
    "name": "Promise",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Promise",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 44,
    "kind": "external",
    "name": "Generator",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Generator",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 45,
    "kind": "external",
    "name": "GeneratorFunction",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~GeneratorFunction",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 46,
    "kind": "external",
    "name": "Reflect",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Reflect",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 47,
    "kind": "external",
    "name": "Proxy",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy",
    "memberof": "src/.external-ecmascript.js",
    "static": true,
    "longname": "src/.external-ecmascript.js~Proxy",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 48,
    "kind": "file",
    "name": "src/Engine.js",
    "content": "'use-strict';\n\nimport EngineManager from './manager/EngineManager';\nimport Manager from './manager/Manager';\n\n/**\n * Engine Singleton class. Entry point reference to access managers and\n * to start and stop the Engine.\n */\nexport class _Engine {\n    /**\n     * Engine Contstructor.\n     */\n    constructor() {\n    }\n\n    /**\n     * Starts the engine.\n     */\n    start() {\n        EngineManager.start();\n    }\n\n    /**\n     * Stops the engine and cleans up code.\n     */\n    end() {\n        EngineManager.end();\n    }\n\n    /**\n     * Pauses the entire engine.\n     */\n    pause() {\n        EngineManager.pause();\n    }\n\n    /**\n     * Resumes to the Engine.\n     */\n    unpause() {\n        EngineManager.unpause();\n    }\n}\n\n/**\n * Singleton reference to the Engine.\n */\nconst Engine = new _Engine();\nexport default Engine;",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/Engine.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 49,
    "kind": "class",
    "name": "_Engine",
    "memberof": "src/Engine.js",
    "static": true,
    "longname": "src/Engine.js~_Engine",
    "access": "private",
    "export": true,
    "importPath": "seed-engine/src/Engine.js",
    "importStyle": "{_Engine}",
    "description": "Engine Singleton class. Entry point reference to access managers and\nto start and stop the Engine.",
    "lineNumber": 10,
    "interface": false
  },
  {
    "__docId__": 50,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/Engine.js~_Engine",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/Engine.js~_Engine#constructor",
    "access": "public",
    "description": "Engine Contstructor.",
    "lineNumber": 14
  },
  {
    "__docId__": 51,
    "kind": "method",
    "name": "start",
    "memberof": "src/Engine.js~_Engine",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/Engine.js~_Engine#start",
    "access": "public",
    "description": "Starts the engine.",
    "lineNumber": 20,
    "params": [],
    "return": null
  },
  {
    "__docId__": 52,
    "kind": "method",
    "name": "end",
    "memberof": "src/Engine.js~_Engine",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/Engine.js~_Engine#end",
    "access": "public",
    "description": "Stops the engine and cleans up code.",
    "lineNumber": 27,
    "params": [],
    "return": null
  },
  {
    "__docId__": 53,
    "kind": "method",
    "name": "pause",
    "memberof": "src/Engine.js~_Engine",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/Engine.js~_Engine#pause",
    "access": "public",
    "description": "Pauses the entire engine.",
    "lineNumber": 34,
    "params": [],
    "return": null
  },
  {
    "__docId__": 54,
    "kind": "method",
    "name": "unpause",
    "memberof": "src/Engine.js~_Engine",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/Engine.js~_Engine#unpause",
    "access": "public",
    "description": "Resumes to the Engine.",
    "lineNumber": 41,
    "params": [],
    "return": null
  },
  {
    "__docId__": 55,
    "kind": "variable",
    "name": "Engine",
    "memberof": "src/Engine.js",
    "static": true,
    "longname": "src/Engine.js~Engine",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/Engine.js",
    "importStyle": "Engine",
    "description": null,
    "lineNumber": 50,
    "undocument": true,
    "type": {
      "types": [
        "src/Engine.js~_Engine"
      ]
    }
  },
  {
    "__docId__": 56,
    "kind": "file",
    "name": "src/base/Updateable.js",
    "content": "import UpdateableManager from '../manager/UpdateableManager';\n\n/**\n * Baseclass for objects that follow the same ECS pattern of the seed engine.\n * \n * Used in anything that should follow a create, update, end loop \n * handled by the Engine.\n * \n * Many things will need to update/start/end. If you derive something that\n * has the start()/update()/end()... functions, the children should fill in\n * their respective callbacks (onStart()/onUpdate()/onEnd()/...).\n */\nexport default class Updateable {\n    constructor() {\n        this.hasStarted = false;\n        this.hasPaused = false;\n        this.id = -1;\n        this.deregister = UpdateableManager.registerUpdateable(this);\n    }\n\n    /**\n     * Base call function for when this Updateable is to be started.\n     */\n    start() {\n        this.onStart();\n        this.hasStarted = true;\n    }\n\n    /**\n     * Base call function for when this Updateable is to be updated.\n     */\n    update() {\n        if (this.hasPaused)\n            return;\n        \n        if (!this.hasStarted) {\n            this.start();\n            return;\n        }\n\n        this.onUpdate();\n    }\n\n    /**\n     * Base call function for when this Updateable is to be ended.\n     */\n    end() {\n        this.onEnd();\n        this.destructor();\n    }\n\n    /**\n     * Base call function for when this Updateable is to be paused.\n     */\n    pause() {\n        if (!this.hasPaused) {\n            this.hasPaused = true;\n            this.onPause();\n        }\n    }\n\n    /**\n     * Base call function for when this Updateable is to be unpaused.\n     */\n    unpause() {\n        if (this.hasPaused) {\n            this.hasPaused = false;\n            this.onUnpause();\n        }\n    }\n\n    /**\n     * Cleanup code for when destroying an Updateable.\n     */\n    destructor() {\n        this.deregister();\n    }\n\n    /**\n     * Called when the the object is first introduced.\n     * \n     * Managing code will call this on first iteration once introduced to the game loop.\n     */\n    onStart() {}\n\n    /**\n     * Called on every update within the game, once the object has had onStart called.\n     */\n    onUpdate() {}\n\n    /**\n     * Called when the object is being removed or cleaned up from usage.\n     */\n    onEnd() {}\n\n    /**\n     * Called when the object is intended to be paused.\n     */\n    onPause() {}\n\n    /**\n     * Called when the object is to be unpaused from paused state.\n     */\n    onUnpause() {}\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/base/Updateable.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 57,
    "kind": "class",
    "name": "Updateable",
    "memberof": "src/base/Updateable.js",
    "static": true,
    "longname": "src/base/Updateable.js~Updateable",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/base/Updateable.js",
    "importStyle": "Updateable",
    "description": "Baseclass for objects that follow the same ECS pattern of the seed engine.\n\nUsed in anything that should follow a create, update, end loop \nhandled by the Engine.\n\nMany things will need to update/start/end. If you derive something that\nhas the start()/update()/end()... functions, the children should fill in\ntheir respective callbacks (onStart()/onUpdate()/onEnd()/...).",
    "lineNumber": 13,
    "interface": false
  },
  {
    "__docId__": 58,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/base/Updateable.js~Updateable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/base/Updateable.js~Updateable#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 14,
    "undocument": true
  },
  {
    "__docId__": 59,
    "kind": "member",
    "name": "hasStarted",
    "memberof": "src/base/Updateable.js~Updateable",
    "static": false,
    "longname": "src/base/Updateable.js~Updateable#hasStarted",
    "access": "public",
    "description": null,
    "lineNumber": 15,
    "undocument": true,
    "type": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 60,
    "kind": "member",
    "name": "hasPaused",
    "memberof": "src/base/Updateable.js~Updateable",
    "static": false,
    "longname": "src/base/Updateable.js~Updateable#hasPaused",
    "access": "public",
    "description": null,
    "lineNumber": 16,
    "undocument": true,
    "type": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 61,
    "kind": "member",
    "name": "id",
    "memberof": "src/base/Updateable.js~Updateable",
    "static": false,
    "longname": "src/base/Updateable.js~Updateable#id",
    "access": "public",
    "description": null,
    "lineNumber": 17,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 62,
    "kind": "member",
    "name": "deregister",
    "memberof": "src/base/Updateable.js~Updateable",
    "static": false,
    "longname": "src/base/Updateable.js~Updateable#deregister",
    "access": "public",
    "description": null,
    "lineNumber": 18,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 63,
    "kind": "method",
    "name": "start",
    "memberof": "src/base/Updateable.js~Updateable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/base/Updateable.js~Updateable#start",
    "access": "public",
    "description": "Base call function for when this Updateable is to be started.",
    "lineNumber": 24,
    "params": [],
    "return": null
  },
  {
    "__docId__": 65,
    "kind": "method",
    "name": "update",
    "memberof": "src/base/Updateable.js~Updateable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/base/Updateable.js~Updateable#update",
    "access": "public",
    "description": "Base call function for when this Updateable is to be updated.",
    "lineNumber": 32,
    "params": [],
    "return": null
  },
  {
    "__docId__": 66,
    "kind": "method",
    "name": "end",
    "memberof": "src/base/Updateable.js~Updateable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/base/Updateable.js~Updateable#end",
    "access": "public",
    "description": "Base call function for when this Updateable is to be ended.",
    "lineNumber": 47,
    "params": [],
    "return": null
  },
  {
    "__docId__": 67,
    "kind": "method",
    "name": "pause",
    "memberof": "src/base/Updateable.js~Updateable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/base/Updateable.js~Updateable#pause",
    "access": "public",
    "description": "Base call function for when this Updateable is to be paused.",
    "lineNumber": 55,
    "params": [],
    "return": null
  },
  {
    "__docId__": 69,
    "kind": "method",
    "name": "unpause",
    "memberof": "src/base/Updateable.js~Updateable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/base/Updateable.js~Updateable#unpause",
    "access": "public",
    "description": "Base call function for when this Updateable is to be unpaused.",
    "lineNumber": 65,
    "params": [],
    "return": null
  },
  {
    "__docId__": 71,
    "kind": "method",
    "name": "destructor",
    "memberof": "src/base/Updateable.js~Updateable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/base/Updateable.js~Updateable#destructor",
    "access": "public",
    "description": "Cleanup code for when destroying an Updateable.",
    "lineNumber": 75,
    "params": [],
    "return": null
  },
  {
    "__docId__": 72,
    "kind": "method",
    "name": "onStart",
    "memberof": "src/base/Updateable.js~Updateable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/base/Updateable.js~Updateable#onStart",
    "access": "public",
    "description": "Called when the the object is first introduced.\n\nManaging code will call this on first iteration once introduced to the game loop.",
    "lineNumber": 84,
    "params": [],
    "return": null
  },
  {
    "__docId__": 73,
    "kind": "method",
    "name": "onUpdate",
    "memberof": "src/base/Updateable.js~Updateable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/base/Updateable.js~Updateable#onUpdate",
    "access": "public",
    "description": "Called on every update within the game, once the object has had onStart called.",
    "lineNumber": 89,
    "params": [],
    "return": null
  },
  {
    "__docId__": 74,
    "kind": "method",
    "name": "onEnd",
    "memberof": "src/base/Updateable.js~Updateable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/base/Updateable.js~Updateable#onEnd",
    "access": "public",
    "description": "Called when the object is being removed or cleaned up from usage.",
    "lineNumber": 94,
    "params": [],
    "return": null
  },
  {
    "__docId__": 75,
    "kind": "method",
    "name": "onPause",
    "memberof": "src/base/Updateable.js~Updateable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/base/Updateable.js~Updateable#onPause",
    "access": "public",
    "description": "Called when the object is intended to be paused.",
    "lineNumber": 99,
    "params": [],
    "return": null
  },
  {
    "__docId__": 76,
    "kind": "method",
    "name": "onUnpause",
    "memberof": "src/base/Updateable.js~Updateable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/base/Updateable.js~Updateable#onUnpause",
    "access": "public",
    "description": "Called when the object is to be unpaused from paused state.",
    "lineNumber": 104,
    "params": [],
    "return": null
  },
  {
    "__docId__": 77,
    "kind": "file",
    "name": "src/component/Animation.js",
    "content": "import Component from './Component';\n\n/**\n * Animation component to be added to a GameObject to create animations inline with\n * the global game loop. Animation Components currently only offer transform interpolation\n * frames. Using buildInterpolation can be used to make custom animations which last n frames.\n */\nexport default class Animation extends Component {\n\n    /**\n     * Constructor for the animation component. A GameObject may have more than one Animation component.\n     */\n    constructor() {\n        super(false);\n        this.className = 'Animation';\n        this.interpolationData = {};\n        this.animationFrames = 0;\n    }\n\n    /**\n     * Returns the frames left until all animations are complete.\n     */\n    animationFramesLeft() {\n        return this.animationFrames;\n    }\n\n    /**\n     * Checks to see if an animation, defined by the interpol animation key, \n     * still has frames left to complete the animation.\n     * \n     * @param {string} interpol Animation interpolation key.\n     */\n    isAnimating(interpol = null) {\n        if (interpol == null)\n            return Object.keys(this.interpolationData).length > 0;\n        return this.interpolationData[interpol] != null;\n    }\n\n    /**\n     * Adds an animation to the Animation component. The animation component will keep track\n     * and trigger the animation frames once per game tick until there are no more frames left.\n     * On the final frame, the finalFrame callback will be called instead.\n     * \n     * @param {string} key Animation interpolation key.\n     * @param {number} frames How many game ticks will this animation run.\n     * @param {function} frameChange Callback function executed once per animation frame.\n     * @param {function} finalFrame Callback function execured as the last frame. Defaults to frameChange.\n     */\n    buildInterpolation(key, frames, frameChange, finalFrame = frameChange) {\n        this.interpolationData[key] = {\n            frameChange,\n            finalFrame,\n            framesLeft: frames,\n        };\n    }\n\n    /**\n     * Clears an animation from executing any more frames. The animation to remove is defined\n     * by the key parameter.\n     * \n     * @param {string} key Animation interpolation key.\n     */\n    clearAnimation(key) {\n        delete this.interpolationData[key];\n    }\n\n    /**\n     * Clear all animations on this Animation component.\n     */\n    clearAnimations() {\n        this.interpolationData = {};\n        this.animationFrames = 0;\n    }\n\n    /**\n     * Wrapper function for creating animations of moving from one point to another (translating).\n     * \n     * @param {number} posX X position move per frame.\n     * @param {number} posY Y position move per frame.\n     * @param {number} posZ Z position move per frame.\n     * @param {number} frames Amount of frames in this animation.\n     * @param {number} cycles Amount of times to repeat this animation.\n     * @param {boolean} reset Reset the position on animation finish.\n     */\n    interpolatePosition(posX = 0, posY = 0, posZ = 0, frames = 1, cycles = 1, reset = false) {\n        let start = this.gameObject.transform.getPosition();\n        this.buildInterpolation('position', frames, () => {\n            this.gameObject.transform.translate(posX, posY, posZ);\n        }, () => {\n            this.gameObject.transform.setPosition(start.x + (reset ? 0 : posX * frames), start.y + (reset ? 0 : posY * frames), start.z + (reset ? 0 : posZ * frames));\n            if (--cycles > 0)\n                this.interpolatePosition(posX, posY, posZ, frames, cycles, reset);\n        })\n    }\n\n    /**\n     * Wrapper function for creating animations to change the scale of the GameObject.\n     * \n     * @param {number} posX X scale change per frame.\n     * @param {number} posY Y scale change per frame.\n     * @param {number} posZ Z scale change per frame.\n     * @param {number} frames Amount of frames in this animation.\n     * @param {number} cycles Amount of times to repeat this animation.\n     * @param {boolean} reset Reset the position on animation finish.\n     */\n    interpolateScale(scaleX = 0, scaleY = 0, scaleZ = 0, frames = 1, cycles = 1, reset = false) {\n        let start = this.gameObject.transform.getScale();\n        this.buildInterpolation('scale', frames, () => {\n            this.gameObject.transform.scale(scaleX, scaleY, scaleZ);\n        },() => {\n            this.gameObject.transform.setScale(start.x + (reset ? 0 : scaleX * frames), start.y + (reset ? 0 : scaleY * frames), start.z + (reset ? 0 : scaleZ * frames));\n            if (--cycles > 0)\n                this.interpolateScale(scaleX, scaleY, scaleZ, frames, cycles, reset);\n        });\n    }\n\n    /**\n     * Wrapper function for creating animations to rotate the GameObject.\n     * \n     * @param {number} posX X scale change per frame.\n     * @param {number} posY Y scale change per frame.\n     * @param {number} posZ Z scale change per frame.\n     * @param {number} frames Amount of frames in this animation.\n     * @param {number} cycles Amount of times to repeat this animation.\n     * @param {boolean} reset Reset the position on animation finish.\n     */\n    interpolateRotation(rotate, frames = 1, cycles = 1, reset = false) {\n        let start = this.gameObject.transform.getRotation();\n        this.buildInterpolation('rotation', frames, () => {\n            this.gameObject.transform.rotate(rotate);\n        },() => {\n            this.gameObject.transform.setRotation(start + (reset ? 0 : rotate * frames));\n            if (--cycles > 0)\n                this.interpolateRotation(rotate, frames, cycles, reset);\n        });\n    }\n\n    /**\n     * onUpdate is called automatically as a Component. Executes a frame for each animation.\n     */\n    onUpdate() {\n        let newFrameCount = --this.animationFrames;\n        let interpols = Object.keys(this.interpolationData);\n        for (let i = 0; i < interpols.length; i++) {\n            let interpol = this.interpolationData[interpols[i]];\n            newFrameCount = Math.max(this.animationFrames, interpol.framesLeft - 1);\n            if (interpol.framesLeft > 1) {\n                interpol.frameChange();\n                interpol.framesLeft--;\n            } else if (interpol.framesLeft >= 1) {\n                interpol.finalFrame();\n                interpol.framesLeft--;\n            } else if (interpol.framesLeft < 1) {\n                delete this.interpolationData[interpols[i]];\n            }\n        }\n        this.animationFrames = newFrameCount;\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/component/Animation.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 78,
    "kind": "class",
    "name": "Animation",
    "memberof": "src/component/Animation.js",
    "static": true,
    "longname": "src/component/Animation.js~Animation",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/component/Animation.js",
    "importStyle": "Animation",
    "description": "Animation component to be added to a GameObject to create animations inline with\nthe global game loop. Animation Components currently only offer transform interpolation\nframes. Using buildInterpolation can be used to make custom animations which last n frames.",
    "lineNumber": 8,
    "interface": false,
    "extends": [
      "src/component/Component.js~Component"
    ]
  },
  {
    "__docId__": 79,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/component/Animation.js~Animation",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Animation.js~Animation#constructor",
    "access": "public",
    "description": "Constructor for the animation component. A GameObject may have more than one Animation component.",
    "lineNumber": 13
  },
  {
    "__docId__": 80,
    "kind": "member",
    "name": "className",
    "memberof": "src/component/Animation.js~Animation",
    "static": false,
    "longname": "src/component/Animation.js~Animation#className",
    "access": "public",
    "description": null,
    "lineNumber": 15,
    "undocument": true,
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 81,
    "kind": "member",
    "name": "interpolationData",
    "memberof": "src/component/Animation.js~Animation",
    "static": false,
    "longname": "src/component/Animation.js~Animation#interpolationData",
    "access": "public",
    "description": null,
    "lineNumber": 16,
    "undocument": true,
    "type": {
      "types": [
        "{}"
      ]
    }
  },
  {
    "__docId__": 82,
    "kind": "member",
    "name": "animationFrames",
    "memberof": "src/component/Animation.js~Animation",
    "static": false,
    "longname": "src/component/Animation.js~Animation#animationFrames",
    "access": "public",
    "description": null,
    "lineNumber": 17,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 83,
    "kind": "method",
    "name": "animationFramesLeft",
    "memberof": "src/component/Animation.js~Animation",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Animation.js~Animation#animationFramesLeft",
    "access": "public",
    "description": "Returns the frames left until all animations are complete.",
    "lineNumber": 23,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 84,
    "kind": "method",
    "name": "isAnimating",
    "memberof": "src/component/Animation.js~Animation",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Animation.js~Animation#isAnimating",
    "access": "public",
    "description": "Checks to see if an animation, defined by the interpol animation key, \nstill has frames left to complete the animation.",
    "lineNumber": 33,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "interpol",
        "description": "Animation interpolation key."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 85,
    "kind": "method",
    "name": "buildInterpolation",
    "memberof": "src/component/Animation.js~Animation",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Animation.js~Animation#buildInterpolation",
    "access": "public",
    "description": "Adds an animation to the Animation component. The animation component will keep track\nand trigger the animation frames once per game tick until there are no more frames left.\nOn the final frame, the finalFrame callback will be called instead.",
    "lineNumber": 49,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "key",
        "description": "Animation interpolation key."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "frames",
        "description": "How many game ticks will this animation run."
      },
      {
        "nullable": null,
        "types": [
          "function"
        ],
        "spread": false,
        "optional": false,
        "name": "frameChange",
        "description": "Callback function executed once per animation frame."
      },
      {
        "nullable": null,
        "types": [
          "function"
        ],
        "spread": false,
        "optional": false,
        "name": "finalFrame",
        "description": "Callback function execured as the last frame. Defaults to frameChange."
      }
    ],
    "return": null
  },
  {
    "__docId__": 86,
    "kind": "method",
    "name": "clearAnimation",
    "memberof": "src/component/Animation.js~Animation",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Animation.js~Animation#clearAnimation",
    "access": "public",
    "description": "Clears an animation from executing any more frames. The animation to remove is defined\nby the key parameter.",
    "lineNumber": 63,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "key",
        "description": "Animation interpolation key."
      }
    ],
    "return": null
  },
  {
    "__docId__": 87,
    "kind": "method",
    "name": "clearAnimations",
    "memberof": "src/component/Animation.js~Animation",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Animation.js~Animation#clearAnimations",
    "access": "public",
    "description": "Clear all animations on this Animation component.",
    "lineNumber": 70,
    "params": [],
    "return": null
  },
  {
    "__docId__": 90,
    "kind": "method",
    "name": "interpolatePosition",
    "memberof": "src/component/Animation.js~Animation",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Animation.js~Animation#interpolatePosition",
    "access": "public",
    "description": "Wrapper function for creating animations of moving from one point to another (translating).",
    "lineNumber": 85,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "posX",
        "description": "X position move per frame."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "posY",
        "description": "Y position move per frame."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "posZ",
        "description": "Z position move per frame."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "frames",
        "description": "Amount of frames in this animation."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "cycles",
        "description": "Amount of times to repeat this animation."
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": false,
        "name": "reset",
        "description": "Reset the position on animation finish."
      }
    ],
    "return": null
  },
  {
    "__docId__": 91,
    "kind": "method",
    "name": "interpolateScale",
    "memberof": "src/component/Animation.js~Animation",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Animation.js~Animation#interpolateScale",
    "access": "public",
    "description": "Wrapper function for creating animations to change the scale of the GameObject.",
    "lineNumber": 106,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "posX",
        "description": "X scale change per frame."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "posY",
        "description": "Y scale change per frame."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "posZ",
        "description": "Z scale change per frame."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "frames",
        "description": "Amount of frames in this animation."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "cycles",
        "description": "Amount of times to repeat this animation."
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": false,
        "name": "reset",
        "description": "Reset the position on animation finish."
      }
    ],
    "return": null
  },
  {
    "__docId__": 92,
    "kind": "method",
    "name": "interpolateRotation",
    "memberof": "src/component/Animation.js~Animation",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Animation.js~Animation#interpolateRotation",
    "access": "public",
    "description": "Wrapper function for creating animations to rotate the GameObject.",
    "lineNumber": 127,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "posX",
        "description": "X scale change per frame."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "posY",
        "description": "Y scale change per frame."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "posZ",
        "description": "Z scale change per frame."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "frames",
        "description": "Amount of frames in this animation."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "cycles",
        "description": "Amount of times to repeat this animation."
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": false,
        "name": "reset",
        "description": "Reset the position on animation finish."
      }
    ],
    "return": null
  },
  {
    "__docId__": 93,
    "kind": "method",
    "name": "onUpdate",
    "memberof": "src/component/Animation.js~Animation",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Animation.js~Animation#onUpdate",
    "access": "public",
    "description": "onUpdate is called automatically as a Component. Executes a frame for each animation.",
    "lineNumber": 141,
    "params": [],
    "return": null
  },
  {
    "__docId__": 95,
    "kind": "file",
    "name": "src/component/Audio.js",
    "content": "import Component from './Component';\n\n/**\n * A Component that can be attatched to any GameObject.\n * \n * The Audio Component has controls for playing sounds and music.\n * Audio can be locallized to the Object location it is attached to.\n */\nexport default class Audio extends Component {\n\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/component/Audio.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 96,
    "kind": "class",
    "name": "Audio",
    "memberof": "src/component/Audio.js",
    "static": true,
    "longname": "src/component/Audio.js~Audio",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/component/Audio.js",
    "importStyle": "Audio",
    "description": "A Component that can be attatched to any GameObject.\n\nThe Audio Component has controls for playing sounds and music.\nAudio can be locallized to the Object location it is attached to.",
    "lineNumber": 9,
    "interface": false,
    "extends": [
      "src/component/Component.js~Component"
    ]
  },
  {
    "__docId__": 97,
    "kind": "file",
    "name": "src/component/BoxCollider.js",
    "content": "import Collider2D from './Collider2D';\n\n/**\n * A 2D Collider Component which can be attached to any GameObject.\n * \n * A BoxCollider Component monitors collisions with other Collider Components. \n * \n * This component is refined to a 2D square.\n */\nexport default class BoxCollider extends Collider2D {\n\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/component/BoxCollider.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 98,
    "kind": "class",
    "name": "BoxCollider",
    "memberof": "src/component/BoxCollider.js",
    "static": true,
    "longname": "src/component/BoxCollider.js~BoxCollider",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/component/BoxCollider.js",
    "importStyle": "BoxCollider",
    "description": "A 2D Collider Component which can be attached to any GameObject.\n\nA BoxCollider Component monitors collisions with other Collider Components. \n\nThis component is refined to a 2D square.",
    "lineNumber": 10,
    "interface": false,
    "extends": [
      "src/component/Collider2D.js~Collider2D"
    ]
  },
  {
    "__docId__": 99,
    "kind": "file",
    "name": "src/component/CircleCollider.js",
    "content": "import Collider2D from './Collider2D';\n\n/**\n * A 2D Collider Component which can be attached to any GameObject.\n * \n * A CircleCollider Component monitors collisions with other Collider Components. \n * \n * This component is refined to a 2D circle. A point of origin and radius.\n */\nexport default class CircleCollider extends Collider2D {\n\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/component/CircleCollider.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 100,
    "kind": "class",
    "name": "CircleCollider",
    "memberof": "src/component/CircleCollider.js",
    "static": true,
    "longname": "src/component/CircleCollider.js~CircleCollider",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/component/CircleCollider.js",
    "importStyle": "CircleCollider",
    "description": "A 2D Collider Component which can be attached to any GameObject.\n\nA CircleCollider Component monitors collisions with other Collider Components. \n\nThis component is refined to a 2D circle. A point of origin and radius.",
    "lineNumber": 10,
    "interface": false,
    "extends": [
      "src/component/Collider2D.js~Collider2D"
    ]
  },
  {
    "__docId__": 101,
    "kind": "file",
    "name": "src/component/ClickController.js",
    "content": "import Controller from './Controller';\nimport KeyCode from '../const/KeyCode';\nimport InputManager from '../manager/InputManager';\n\n/**\n * \n */\nexport default class ClickController extends Controller {\n    constructor(viewportID, onLeftReleased = (event) => {}, onRightReleased = (event) => {}, onLeftPressed = (event) => {}, onRightPressed = (event) => {}, onLeftReleaseOutside = (event) => {}, onRightReleaseOutside = (event) => {}) {\n        super();\n        this.className = 'ClickController';\n        this.viewportID = viewportID;\n        this.onLeftReleased = onLeftReleased;\n        this.onRightReleased = onRightReleased;\n        this.onLeftPressed = onLeftPressed;\n        this.onRightPressed = onRightPressed;\n        this.onLeftReleaseOutside = onLeftReleaseOutside;\n        this.onRightReleaseOutside = onRightReleaseOutside;\n\n        /**\n         * Was the left button pressed on this click area?\n         */\n        this.leftPressed = false;\n\n        /**\n         * Was the right button pressed on this click area?\n         */\n        this.rightPressed = false;\n    }\n\n    onUpdate() {\n        let pos = this.gameObject.transform.getPosition();\n        let offset = this.gameObject.transform.getOriginOffset();\n        let sca = this.gameObject.transform.getScale();\n        pos.subtract(sca.x * offset.x, sca.y * offset.y);\n        for (let i = 0; i < InputManager.LEFT_RELEASED[this.viewportID].length; i++) {\n            let ev = InputManager.LEFT_RELEASED[this.viewportID][i];\n            if (pos.x <= ev.x && pos.x + sca.x >= ev.x && pos.y <= ev.y && pos.y + sca.y >= ev.y) {\n                this.onLeftReleased(ev);\n            } else {\n                this.leftPressed = false;\n                this.onLeftReleaseOutside(ev);\n            }\n        }\n        for (let i = 0; i < InputManager.RIGHT_RELEASED[this.viewportID].length; i++) {\n            let ev = InputManager.RIGHT_RELEASED[this.viewportID][i];\n            if (pos.x <= ev.x && pos.x + sca.x >= ev.x && pos.y <= ev.y && pos.y + sca.y >= ev.y) {\n                this.onRightReleased(ev);\n            } else {\n                this.rightPressed = false;\n                this.onRightReleaseOutside(ev);\n            }\n        }\n        for (let i = 0; i < InputManager.LEFT_PRESSED[this.viewportID].length; i++) {\n            let ev = InputManager.LEFT_PRESSED[this.viewportID][i];\n            if (pos.x <= ev.x && pos.x + sca.x >= ev.x && pos.y <= ev.y && pos.y + sca.y >= ev.y) {\n                this.onLeftPressed(ev);\n                this.leftPressed = true;\n            }\n        }\n        for (let i = 0; i < InputManager.RIGHT_PRESSED[this.viewportID].length; i++) {\n            let ev = InputManager.RIGHT_PRESSED[this.viewportID][i];\n            if (pos.x <= ev.x && pos.x + sca.x >= ev.x && pos.y <= ev.y && pos.y + sca.y >= ev.y) {\n                this.onRightPressed(ev);\n                this.rightPressed = true;\n            }\n        }\n    }\n\n    onEnd() {\n        \n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/component/ClickController.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 102,
    "kind": "class",
    "name": "ClickController",
    "memberof": "src/component/ClickController.js",
    "static": true,
    "longname": "src/component/ClickController.js~ClickController",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/component/ClickController.js",
    "importStyle": "ClickController",
    "description": "",
    "lineNumber": 8,
    "interface": false,
    "extends": [
      "src/component/Controller.js~Controller"
    ]
  },
  {
    "__docId__": 103,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/component/ClickController.js~ClickController",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/ClickController.js~ClickController#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 9,
    "undocument": true
  },
  {
    "__docId__": 104,
    "kind": "member",
    "name": "className",
    "memberof": "src/component/ClickController.js~ClickController",
    "static": false,
    "longname": "src/component/ClickController.js~ClickController#className",
    "access": "public",
    "description": null,
    "lineNumber": 11,
    "undocument": true,
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 105,
    "kind": "member",
    "name": "viewportID",
    "memberof": "src/component/ClickController.js~ClickController",
    "static": false,
    "longname": "src/component/ClickController.js~ClickController#viewportID",
    "access": "public",
    "description": null,
    "lineNumber": 12,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 106,
    "kind": "member",
    "name": "onLeftReleased",
    "memberof": "src/component/ClickController.js~ClickController",
    "static": false,
    "longname": "src/component/ClickController.js~ClickController#onLeftReleased",
    "access": "public",
    "description": null,
    "lineNumber": 13,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 107,
    "kind": "member",
    "name": "onRightReleased",
    "memberof": "src/component/ClickController.js~ClickController",
    "static": false,
    "longname": "src/component/ClickController.js~ClickController#onRightReleased",
    "access": "public",
    "description": null,
    "lineNumber": 14,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 108,
    "kind": "member",
    "name": "onLeftPressed",
    "memberof": "src/component/ClickController.js~ClickController",
    "static": false,
    "longname": "src/component/ClickController.js~ClickController#onLeftPressed",
    "access": "public",
    "description": null,
    "lineNumber": 15,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 109,
    "kind": "member",
    "name": "onRightPressed",
    "memberof": "src/component/ClickController.js~ClickController",
    "static": false,
    "longname": "src/component/ClickController.js~ClickController#onRightPressed",
    "access": "public",
    "description": null,
    "lineNumber": 16,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 110,
    "kind": "member",
    "name": "onLeftReleaseOutside",
    "memberof": "src/component/ClickController.js~ClickController",
    "static": false,
    "longname": "src/component/ClickController.js~ClickController#onLeftReleaseOutside",
    "access": "public",
    "description": null,
    "lineNumber": 17,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 111,
    "kind": "member",
    "name": "onRightReleaseOutside",
    "memberof": "src/component/ClickController.js~ClickController",
    "static": false,
    "longname": "src/component/ClickController.js~ClickController#onRightReleaseOutside",
    "access": "public",
    "description": null,
    "lineNumber": 18,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 112,
    "kind": "member",
    "name": "leftPressed",
    "memberof": "src/component/ClickController.js~ClickController",
    "static": false,
    "longname": "src/component/ClickController.js~ClickController#leftPressed",
    "access": "public",
    "description": "Was the left button pressed on this click area?",
    "lineNumber": 23,
    "type": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 113,
    "kind": "member",
    "name": "rightPressed",
    "memberof": "src/component/ClickController.js~ClickController",
    "static": false,
    "longname": "src/component/ClickController.js~ClickController#rightPressed",
    "access": "public",
    "description": "Was the right button pressed on this click area?",
    "lineNumber": 28,
    "type": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 114,
    "kind": "method",
    "name": "onUpdate",
    "memberof": "src/component/ClickController.js~ClickController",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/ClickController.js~ClickController#onUpdate",
    "access": "public",
    "description": null,
    "lineNumber": 31,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 119,
    "kind": "method",
    "name": "onEnd",
    "memberof": "src/component/ClickController.js~ClickController",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/ClickController.js~ClickController#onEnd",
    "access": "public",
    "description": null,
    "lineNumber": 70,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 120,
    "kind": "file",
    "name": "src/component/Collider.js",
    "content": "import Component from './Component';\n\n/**\n * A Collider Component that checks bounds for collisions.\n * \n * This commponent has interface functions for calculating collisions\n * which have to be defined to work. See Subclasses.\n */\nexport default class Collider extends Component {\n\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/component/Collider.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 121,
    "kind": "class",
    "name": "Collider",
    "memberof": "src/component/Collider.js",
    "static": true,
    "longname": "src/component/Collider.js~Collider",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/component/Collider.js",
    "importStyle": "Collider",
    "description": "A Collider Component that checks bounds for collisions.\n\nThis commponent has interface functions for calculating collisions\nwhich have to be defined to work. See Subclasses.",
    "lineNumber": 9,
    "interface": false,
    "extends": [
      "src/component/Component.js~Component"
    ]
  },
  {
    "__docId__": 122,
    "kind": "file",
    "name": "src/component/Collider2D.js",
    "content": "import Collider from './Collider';\n\n/**\n * A Collider Component that checks bounds only on a plane.\n * \n * This commponent has interface functions for calculating collisions\n * which have to be defined to work. See Subclasses.\n */\nexport default class Collider2D extends Collider {\n\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/component/Collider2D.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 123,
    "kind": "class",
    "name": "Collider2D",
    "memberof": "src/component/Collider2D.js",
    "static": true,
    "longname": "src/component/Collider2D.js~Collider2D",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/component/Collider2D.js",
    "importStyle": "Collider2D",
    "description": "A Collider Component that checks bounds only on a plane.\n\nThis commponent has interface functions for calculating collisions\nwhich have to be defined to work. See Subclasses.",
    "lineNumber": 9,
    "interface": false,
    "extends": [
      "src/component/Collider.js~Collider"
    ]
  },
  {
    "__docId__": 124,
    "kind": "file",
    "name": "src/component/Component.js",
    "content": "import Updateable from '../base/Updateable';\n\n/**\n * A component may be added to any GameObject by using\n * GameObject's function: addComponent(component).\n * \n * A component should redefine the Updateable functions inherited with custom code to define the Component functionality.\n */\nexport default class Component extends Updateable {\n    /**\n     * Constructor for Base Components.\n     * Requires a boolean to indicate if a GameObject can contain multiple\n     * components of this type.\n     * \n     * @param {boolean} unique Is there only one of these component allowed on a GameObject?\n     */\n    constructor(unique) {\n        super();\n        this.className='Component';\n        this.isUnique = unique;\n    }\n\n    /**\n     * Called when the component is successfully added to a GameObject.\n     */\n    onAddComponent() {}\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/component/Component.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 125,
    "kind": "class",
    "name": "Component",
    "memberof": "src/component/Component.js",
    "static": true,
    "longname": "src/component/Component.js~Component",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/component/Component.js",
    "importStyle": "Component",
    "description": "A component may be added to any GameObject by using\nGameObject's function: addComponent(component).\n\nA component should redefine the Updateable functions inherited with custom code to define the Component functionality.",
    "lineNumber": 9,
    "interface": false,
    "extends": [
      "src/base/Updateable.js~Updateable"
    ]
  },
  {
    "__docId__": 126,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/component/Component.js~Component",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Component.js~Component#constructor",
    "access": "public",
    "description": "Constructor for Base Components.\nRequires a boolean to indicate if a GameObject can contain multiple\ncomponents of this type.",
    "lineNumber": 17,
    "params": [
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": false,
        "name": "unique",
        "description": "Is there only one of these component allowed on a GameObject?"
      }
    ]
  },
  {
    "__docId__": 127,
    "kind": "member",
    "name": "className",
    "memberof": "src/component/Component.js~Component",
    "static": false,
    "longname": "src/component/Component.js~Component#className",
    "access": "public",
    "description": null,
    "lineNumber": 19,
    "undocument": true,
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 128,
    "kind": "member",
    "name": "isUnique",
    "memberof": "src/component/Component.js~Component",
    "static": false,
    "longname": "src/component/Component.js~Component#isUnique",
    "access": "public",
    "description": null,
    "lineNumber": 20,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 129,
    "kind": "method",
    "name": "onAddComponent",
    "memberof": "src/component/Component.js~Component",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Component.js~Component#onAddComponent",
    "access": "public",
    "description": "Called when the component is successfully added to a GameObject.",
    "lineNumber": 26,
    "params": [],
    "return": null
  },
  {
    "__docId__": 130,
    "kind": "file",
    "name": "src/component/Controller.js",
    "content": "import Component from './Component';\nimport KeyCode from '../const/KeyCode';\nimport InputManager from '../manager/InputManager';\n\n/**\n * A Baseclass for controller components. It is advised to use\n * controllers to contain movement logic. There are basic movement and \n * onClick controllers. You may make your own, remember to derive this class.\n */\nexport default class Controller extends Component {\n    constructor() {\n        super(false);\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/component/Controller.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 131,
    "kind": "class",
    "name": "Controller",
    "memberof": "src/component/Controller.js",
    "static": true,
    "longname": "src/component/Controller.js~Controller",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/component/Controller.js",
    "importStyle": "Controller",
    "description": "A Baseclass for controller components. It is advised to use\ncontrollers to contain movement logic. There are basic movement and \nonClick controllers. You may make your own, remember to derive this class.",
    "lineNumber": 10,
    "interface": false,
    "extends": [
      "src/component/Component.js~Component"
    ]
  },
  {
    "__docId__": 132,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/component/Controller.js~Controller",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Controller.js~Controller#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 11,
    "undocument": true
  },
  {
    "__docId__": 133,
    "kind": "file",
    "name": "src/component/Physics.js",
    "content": "import Component from './Component';\n\n/**\n * A Physics Component can be added to any GameObject and will give it\n * physical properties which can be toggled and adjusted.\n * \n * This Component should have nothing to do with collisions. Instead, Physics\n * should provide pre and post reactions to collisions, gravity, frictions,\n * and anything else that should respond to an effect or change.\n * \n * This is intended to be a base class for more specific physics handling\n * depending on the application.\n */\nexport default class Physics extends Component {\n    \n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/component/Physics.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 134,
    "kind": "class",
    "name": "Physics",
    "memberof": "src/component/Physics.js",
    "static": true,
    "longname": "src/component/Physics.js~Physics",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/component/Physics.js",
    "importStyle": "Physics",
    "description": "A Physics Component can be added to any GameObject and will give it\nphysical properties which can be toggled and adjusted.\n\nThis Component should have nothing to do with collisions. Instead, Physics\nshould provide pre and post reactions to collisions, gravity, frictions,\nand anything else that should respond to an effect or change.\n\nThis is intended to be a base class for more specific physics handling\ndepending on the application.",
    "lineNumber": 14,
    "interface": false,
    "extends": [
      "src/component/Component.js~Component"
    ]
  },
  {
    "__docId__": 135,
    "kind": "file",
    "name": "src/component/Physics2D.js",
    "content": "import Physics from './Physics';\n\nexport default class Physics2D extends Physics {\n\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/component/Physics2D.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 136,
    "kind": "class",
    "name": "Physics2D",
    "memberof": "src/component/Physics2D.js",
    "static": true,
    "longname": "src/component/Physics2D.js~Physics2D",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/component/Physics2D.js",
    "importStyle": "Physics2D",
    "description": null,
    "lineNumber": 3,
    "undocument": true,
    "interface": false,
    "extends": [
      "src/component/Physics.js~Physics"
    ]
  },
  {
    "__docId__": 137,
    "kind": "file",
    "name": "src/component/Renderable.js",
    "content": "import Component from './Component';\nimport SceneManager from '../manager/SceneManager';\nimport RenderManager from '../manager/RenderManager';\nimport ProgramManager from '../manager/ProgramManager';\nimport Matrix3 from '../render/WebGL/Matrix3';\nimport Color from '../internal/Color';\n\nconst DepthRange = 10000000;\n\n/**\n * Base Renderable Component for all Components that want to draw to the screen. If\n * you want to show something on screen, it should derive Renderable.\n * \n * Contained in the class are functions for attaching the Renderable to viewports,\n * and updating Transform data into matricies for use with the Render Manager.\n * \n * The Renderable Component contains data on how the Renderable expects to be rendered.\n * Programs, render vectors, shader data, and other data that is on a per-object basis\n * for rendering is defined here.\n * \n * Classes which derive a Renderable should handle all base data and add or modify data\n * as needed to achieve certain effects.\n */\nexport default class Renderable extends Component {\n    /**\n     * Constructor for the Renderable component. Allows defaults to be assigned without\n     * having to call setter functions later.\n     * \n     * @param {Program} program A Program Object from the ProgramManager.\n     */\n    constructor(program = ProgramManager.getProgram('Default')) {\n        super(true);\n        this.deregisterViewports = {};\n\n        //currently unused\n        this.program = program;\n        this._matrixPosition = new Matrix3();\n        this._matrixScale = new Matrix3();\n        this._matrixRotation = new Matrix3();\n        this._matrixOriginOffset = new Matrix3();\n        this.color = new Color();\n        this.renderPositions = [0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1];\n        this.primitiveType = RenderManager.GL.TRIANGLES;\n        this.primitiveCount = 6;\n\n        //textures\n        this.textures = [];\n        this._subSpriteData = [0, 0, 1, 1];\n        \n        this.depth = 0.5;\n    }\n\n    requestRedraw() {\n        RenderManager.forceUpdate();\n    }\n\n    setColor(r, g, b, a) {\n        this.color.set(r, g, b, a);\n        this.requestRedraw();\n    }\n\n    setDepth(depth) {\n        this.depth = (Math.max(-DepthRange, Math.min(depth, DepthRange)) + DepthRange) / (DepthRange * 2);\n        this.requestRedraw();\n    }\n\n    setSubIndex(spriteIndex) {\n        if (this.textures.length < 1)\n            return;\n\n        let framesWidth = this.textures[0].frameWidth / this.textures[0].width;\n        let framesHeight = this.textures[0].frameHeight / this.textures[0].height;\n\n        let frameWidthIndex = spriteIndex % (1 / framesWidth);\n        let frameHeightIndex = Math.floor(spriteIndex * framesWidth);\n\n        this._subSpriteData = [-frameWidthIndex, -frameHeightIndex, framesWidth, framesHeight];\n        this.requestRedraw();\n    }\n\n    setUniformData(positionMatrix) {\n        this.program.setUniforms({\n            'u_color': this.color.color,\n            'u_matrix': positionMatrix,\n            'u_depth': this.depth,\n            'u_texture': 0,\n            'u_subTexcoord': this._subSpriteData,\n        });\n        return true;\n    }\n\n    setTexture(textureObject) {\n        this.textures[0] = textureObject;\n        this.requestRedraw();\n    }\n\n    /**\n     * Returns a joined matrix of position, scale, rotation and origin adjustment.\n     */\n    getMatrix() {       \n        return Matrix3.copy(this._matrixPosition).multiply(this._matrixRotation).multiply(this._matrixScale).multiply(this._matrixOriginOffset);\n    }\n\n    /**\n     * Sets the position matrix to the new position point assigned.\n     * \n     * @param {Point} point A position point.\n     */\n    setPosition(point) {\n        this._matrixPosition.setPosition(point.x, point.y); //point.z if we had 3D to override this\n        this.requestRedraw();\n    }\n\n    /**\n     * Sets the origin offset matrix to the new position point assigned. This matrix reacts differently from other matrix\n     * assignment. 0,0 is regular top left corner origin, -0.5, -0.5 centers the origin to the center of the Transform, and\n     * -1, -1 will align the origin to the bottom right.\n     * \n     * @param {Point} point Origin offset point.\n     */\n    setOriginOffset(point) {\n        this._matrixOriginOffset.setPosition(point.x, point.y); //point.z if we had 3D to override this\n    }\n\n    /**\n     * Sets the rotation matrix to the new rotation value assigned.\n     * \n     * TODO: Change to a rotation point for x, y, z rotation instead of just z.\n     * \n     * @param {number} rotation A rotation in degrees.\n     */\n    setRotation(rotation) {\n        this._matrixRotation.setRotation(rotation);\n        this.requestRedraw();\n    }\n\n    /**\n     * Sets the scale matrix to the new scale point assigned.\n     * \n     * @param {Point} scale A scale point.\n     */\n    setScale(scale) {\n        this._matrixScale.setScale(scale.x, scale.y);\n        this.requestRedraw();\n    }\n\n    /**\n     * Called immediatly after the Render component is added to a game object.\n     * \n     * Updates the data of this renderable to the current Transform data.\n     */\n    onAddComponent() {\n        let transform = this.gameObject.getComponent(\"Transform\");\n        transform.renderable = this;\n        this.setPosition(transform._position);\n        this.setScale(transform._scale);\n        this.setRotation(transform._rotation);\n        this.requestRedraw();\n    }\n\n    /**\n     * Adds this component to another viewport to be drawn. \n     * \n     * @param {number} viewportID Object ID of the viewport.\n     */\n    addToViewport(viewportID) {\n        this.deregisterViewports[viewportID] = SceneManager.getCurrentScene().registerRenderableComponent(this, viewportID);\n        this.requestRedraw();\n        return this;\n    }\n\n    /**\n     * Removes the renderable from all viewports.\n     */\n    removeFromViewports() {\n        let objKeys = Object.keys(this.deregisterViewports);\n        for (let i = 0; i < objKeys.length; i++) {\n            this.deregisterViewports[objKeys[i]]();\n        }\n        this.requestRedraw();\n    }\n\n    onEnd() {\n        this.removeFromViewports();\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/component/Renderable.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 138,
    "kind": "variable",
    "name": "DepthRange",
    "memberof": "src/component/Renderable.js",
    "static": true,
    "longname": "src/component/Renderable.js~DepthRange",
    "access": "public",
    "export": false,
    "importPath": "seed-engine/src/component/Renderable.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 8,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 139,
    "kind": "class",
    "name": "Renderable",
    "memberof": "src/component/Renderable.js",
    "static": true,
    "longname": "src/component/Renderable.js~Renderable",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/component/Renderable.js",
    "importStyle": "Renderable",
    "description": "Base Renderable Component for all Components that want to draw to the screen. If\nyou want to show something on screen, it should derive Renderable.\n\nContained in the class are functions for attaching the Renderable to viewports,\nand updating Transform data into matricies for use with the Render Manager.\n\nThe Renderable Component contains data on how the Renderable expects to be rendered.\nPrograms, render vectors, shader data, and other data that is on a per-object basis\nfor rendering is defined here.\n\nClasses which derive a Renderable should handle all base data and add or modify data\nas needed to achieve certain effects.",
    "lineNumber": 24,
    "interface": false,
    "extends": [
      "src/component/Component.js~Component"
    ]
  },
  {
    "__docId__": 140,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/component/Renderable.js~Renderable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#constructor",
    "access": "public",
    "description": "Constructor for the Renderable component. Allows defaults to be assigned without\nhaving to call setter functions later.",
    "lineNumber": 31,
    "params": [
      {
        "nullable": null,
        "types": [
          "Program"
        ],
        "spread": false,
        "optional": false,
        "name": "program",
        "description": "A Program Object from the ProgramManager."
      }
    ]
  },
  {
    "__docId__": 141,
    "kind": "member",
    "name": "deregisterViewports",
    "memberof": "src/component/Renderable.js~Renderable",
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#deregisterViewports",
    "access": "public",
    "description": null,
    "lineNumber": 33,
    "undocument": true,
    "type": {
      "types": [
        "{}"
      ]
    }
  },
  {
    "__docId__": 142,
    "kind": "member",
    "name": "program",
    "memberof": "src/component/Renderable.js~Renderable",
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#program",
    "access": "public",
    "description": null,
    "lineNumber": 36,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 143,
    "kind": "member",
    "name": "_matrixPosition",
    "memberof": "src/component/Renderable.js~Renderable",
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#_matrixPosition",
    "access": "private",
    "description": null,
    "lineNumber": 37,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 144,
    "kind": "member",
    "name": "_matrixScale",
    "memberof": "src/component/Renderable.js~Renderable",
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#_matrixScale",
    "access": "private",
    "description": null,
    "lineNumber": 38,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 145,
    "kind": "member",
    "name": "_matrixRotation",
    "memberof": "src/component/Renderable.js~Renderable",
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#_matrixRotation",
    "access": "private",
    "description": null,
    "lineNumber": 39,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 146,
    "kind": "member",
    "name": "_matrixOriginOffset",
    "memberof": "src/component/Renderable.js~Renderable",
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#_matrixOriginOffset",
    "access": "private",
    "description": null,
    "lineNumber": 40,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 147,
    "kind": "member",
    "name": "color",
    "memberof": "src/component/Renderable.js~Renderable",
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#color",
    "access": "public",
    "description": null,
    "lineNumber": 41,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 148,
    "kind": "member",
    "name": "renderPositions",
    "memberof": "src/component/Renderable.js~Renderable",
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#renderPositions",
    "access": "public",
    "description": null,
    "lineNumber": 42,
    "undocument": true,
    "type": {
      "types": [
        "number[]"
      ]
    }
  },
  {
    "__docId__": 149,
    "kind": "member",
    "name": "primitiveType",
    "memberof": "src/component/Renderable.js~Renderable",
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#primitiveType",
    "access": "public",
    "description": null,
    "lineNumber": 43,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 150,
    "kind": "member",
    "name": "primitiveCount",
    "memberof": "src/component/Renderable.js~Renderable",
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#primitiveCount",
    "access": "public",
    "description": null,
    "lineNumber": 44,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 151,
    "kind": "member",
    "name": "textures",
    "memberof": "src/component/Renderable.js~Renderable",
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#textures",
    "access": "public",
    "description": null,
    "lineNumber": 47,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 152,
    "kind": "member",
    "name": "_subSpriteData",
    "memberof": "src/component/Renderable.js~Renderable",
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#_subSpriteData",
    "access": "private",
    "description": null,
    "lineNumber": 48,
    "undocument": true,
    "type": {
      "types": [
        "number[]"
      ]
    }
  },
  {
    "__docId__": 153,
    "kind": "member",
    "name": "depth",
    "memberof": "src/component/Renderable.js~Renderable",
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#depth",
    "access": "public",
    "description": null,
    "lineNumber": 50,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 154,
    "kind": "method",
    "name": "requestRedraw",
    "memberof": "src/component/Renderable.js~Renderable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#requestRedraw",
    "access": "public",
    "description": null,
    "lineNumber": 53,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 155,
    "kind": "method",
    "name": "setColor",
    "memberof": "src/component/Renderable.js~Renderable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#setColor",
    "access": "public",
    "description": null,
    "lineNumber": 57,
    "undocument": true,
    "params": [
      {
        "name": "r",
        "types": [
          "*"
        ]
      },
      {
        "name": "g",
        "types": [
          "*"
        ]
      },
      {
        "name": "b",
        "types": [
          "*"
        ]
      },
      {
        "name": "a",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 156,
    "kind": "method",
    "name": "setDepth",
    "memberof": "src/component/Renderable.js~Renderable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#setDepth",
    "access": "public",
    "description": null,
    "lineNumber": 62,
    "undocument": true,
    "params": [
      {
        "name": "depth",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 158,
    "kind": "method",
    "name": "setSubIndex",
    "memberof": "src/component/Renderable.js~Renderable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#setSubIndex",
    "access": "public",
    "description": null,
    "lineNumber": 67,
    "undocument": true,
    "params": [
      {
        "name": "spriteIndex",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 160,
    "kind": "method",
    "name": "setUniformData",
    "memberof": "src/component/Renderable.js~Renderable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#setUniformData",
    "access": "public",
    "description": null,
    "lineNumber": 81,
    "undocument": true,
    "params": [
      {
        "name": "positionMatrix",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 161,
    "kind": "method",
    "name": "setTexture",
    "memberof": "src/component/Renderable.js~Renderable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#setTexture",
    "access": "public",
    "description": null,
    "lineNumber": 92,
    "undocument": true,
    "params": [
      {
        "name": "textureObject",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 162,
    "kind": "method",
    "name": "getMatrix",
    "memberof": "src/component/Renderable.js~Renderable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#getMatrix",
    "access": "public",
    "description": "Returns a joined matrix of position, scale, rotation and origin adjustment.",
    "lineNumber": 100,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 163,
    "kind": "method",
    "name": "setPosition",
    "memberof": "src/component/Renderable.js~Renderable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#setPosition",
    "access": "public",
    "description": "Sets the position matrix to the new position point assigned.",
    "lineNumber": 109,
    "params": [
      {
        "nullable": null,
        "types": [
          "Point"
        ],
        "spread": false,
        "optional": false,
        "name": "point",
        "description": "A position point."
      }
    ],
    "return": null
  },
  {
    "__docId__": 164,
    "kind": "method",
    "name": "setOriginOffset",
    "memberof": "src/component/Renderable.js~Renderable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#setOriginOffset",
    "access": "public",
    "description": "Sets the origin offset matrix to the new position point assigned. This matrix reacts differently from other matrix\nassignment. 0,0 is regular top left corner origin, -0.5, -0.5 centers the origin to the center of the Transform, and\n-1, -1 will align the origin to the bottom right.",
    "lineNumber": 121,
    "params": [
      {
        "nullable": null,
        "types": [
          "Point"
        ],
        "spread": false,
        "optional": false,
        "name": "point",
        "description": "Origin offset point."
      }
    ],
    "return": null
  },
  {
    "__docId__": 165,
    "kind": "method",
    "name": "setRotation",
    "memberof": "src/component/Renderable.js~Renderable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#setRotation",
    "access": "public",
    "description": "Sets the rotation matrix to the new rotation value assigned.\n\nTODO: Change to a rotation point for x, y, z rotation instead of just z.",
    "lineNumber": 132,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "rotation",
        "description": "A rotation in degrees."
      }
    ],
    "return": null
  },
  {
    "__docId__": 166,
    "kind": "method",
    "name": "setScale",
    "memberof": "src/component/Renderable.js~Renderable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#setScale",
    "access": "public",
    "description": "Sets the scale matrix to the new scale point assigned.",
    "lineNumber": 142,
    "params": [
      {
        "nullable": null,
        "types": [
          "Point"
        ],
        "spread": false,
        "optional": false,
        "name": "scale",
        "description": "A scale point."
      }
    ],
    "return": null
  },
  {
    "__docId__": 167,
    "kind": "method",
    "name": "onAddComponent",
    "memberof": "src/component/Renderable.js~Renderable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#onAddComponent",
    "access": "public",
    "description": "Called immediatly after the Render component is added to a game object.\n\nUpdates the data of this renderable to the current Transform data.",
    "lineNumber": 152,
    "params": [],
    "return": null
  },
  {
    "__docId__": 168,
    "kind": "method",
    "name": "addToViewport",
    "memberof": "src/component/Renderable.js~Renderable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#addToViewport",
    "access": "public",
    "description": "Adds this component to another viewport to be drawn. ",
    "lineNumber": 166,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "viewportID",
        "description": "Object ID of the viewport."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 169,
    "kind": "method",
    "name": "removeFromViewports",
    "memberof": "src/component/Renderable.js~Renderable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#removeFromViewports",
    "access": "public",
    "description": "Removes the renderable from all viewports.",
    "lineNumber": 175,
    "params": [],
    "return": null
  },
  {
    "__docId__": 170,
    "kind": "method",
    "name": "onEnd",
    "memberof": "src/component/Renderable.js~Renderable",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable.js~Renderable#onEnd",
    "access": "public",
    "description": null,
    "lineNumber": 183,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 171,
    "kind": "file",
    "name": "src/component/Renderable2D.js",
    "content": "import Renderable from './Renderable';\nimport Matrix3 from '../render/WebGL/Matrix3';\n\n/**\n * Renderable2D is a renderable component which focusses on\n * 2D shaders and matricies for 2D space rendering.\n */\nexport default class Renderable2D extends Renderable {\n    constructor() {\n        super();\n        this.className = 'Renderable2D';\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/component/Renderable2D.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 172,
    "kind": "class",
    "name": "Renderable2D",
    "memberof": "src/component/Renderable2D.js",
    "static": true,
    "longname": "src/component/Renderable2D.js~Renderable2D",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/component/Renderable2D.js",
    "importStyle": "Renderable2D",
    "description": "Renderable2D is a renderable component which focusses on\n2D shaders and matricies for 2D space rendering.",
    "lineNumber": 8,
    "interface": false,
    "extends": [
      "src/component/Renderable.js~Renderable"
    ]
  },
  {
    "__docId__": 173,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/component/Renderable2D.js~Renderable2D",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable2D.js~Renderable2D#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 9,
    "undocument": true
  },
  {
    "__docId__": 174,
    "kind": "member",
    "name": "className",
    "memberof": "src/component/Renderable2D.js~Renderable2D",
    "static": false,
    "longname": "src/component/Renderable2D.js~Renderable2D#className",
    "access": "public",
    "description": null,
    "lineNumber": 11,
    "undocument": true,
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 175,
    "kind": "file",
    "name": "src/component/Renderable2DGrid.js",
    "content": "import Renderable from './Renderable';\nimport Matrix3 from '../render/WebGL/Matrix3';\nimport ProgramManager from '../manager/ProgramManager';\nimport TextureManager from '../manager/TextureManager';\nimport RenderManager from '../manager/RenderManager';\nimport Renderable2DMultitex from './Renderable2DMultitex';\n\nvar dataTexCounter = 0;\n\n/**\n * Renderable2DGrid is a renderable component which uses two textures to draw\n * tilemaps using the GPU, and just one renderable. Renderable2DGrid will expect one\n * texture for sprites, and another containing the data for which tile goes where.\n * Additionaly, viewport support is added to make large maps require one time loads into self\n * managed data textures.\n */\nexport default class Renderable2DGrid extends Renderable2DMultitex {\n    /**\n     * Constructor for Renderable2D grid. Sets up data and initializes a data texture.\n     * \n     * @param {string} mapTilesTextureName Name of sprite sheet texture.\n     * @param {Array} gridData Array of indexes for each tile on the map.\n     * @param {number} width Width of the map.\n     * @param {number} height Height of the map.\n     * @param {number} tileViewWidth Width of the viewport.\n     * @param {number} tileViewHeight Height of the viewport.\n     */\n    constructor(mapTilesTextureName, gridData, width, height, tileViewWidth, tileViewHeight) {\n        super(ProgramManager.getProgram('2DGrid'));\n        this.className = 'Renderable2DGrid';\n\n        this.dataArray = new Uint16Array(width * height);\n\n        /*\n        [0][0] = 0 = Map data tiles width.\n\n        [0][1] = 1 = Map data tiles height.\n\n        [0][2] = 2 = Map tiles in the texture width.\n\n        [0][3] = 3 = Map tiles in the texture height.\n\n\n        [1][0] = 4 = Map viewport width.\n\n        [1][1] = 5 = Map viewport height.\n\n        [1][2] = 6 = Map viewport x1.\n\n        [1][3] = 7 = Map viewport y1.\n\n\n        [2][0] = 8 = TileSize width normalized.\n\n        [2][1] = 9 = TileSize height normalized. \n        */\n        this.shaderTileData = [];\n        this.mapTilesTexture = TextureManager.getTexture(mapTilesTextureName);\n        this.addTexture(this.mapTilesTexture);\n        this.mapTilesDataTextureName = mapTilesTextureName + 'Data' + dataTexCounter++;\n        this.setGridData(gridData, width, height, tileViewWidth, tileViewHeight);\n    }\n\n    updateDataArray(data, x1, y1, width, height) {\n        if (data == null)\n            return;\n        let dataY = 0;\n        for (let y = y1; y < y1 + height; y++) {\n            this.dataArray.set(data.slice(dataY * width, (dataY + 1) * width), x1 + (y * width));\n            dataY++;\n        }\n    }\n\n    /**\n     * Updates the data texture by quadrant. Quadrant is specified by the x1, y1, \n     * width, and height parameters.\n     * \n     * @param {Array} data Array of values indicating the index of each sprite.\n     * @param {number} x1 Top left x position to update.\n     * @param {number} y1 Top left y position to update.\n     * @param {number} width Width (in tiles) of data to update.\n     * @param {number} height Height (in tiles) of data to update.\n     */\n    updateGridData(data, x1, y1, width, height) {\n        this.updateDataArray(data, x1, y1, width, height);\n        this.buildShaderTileData(x1, y1, width, height);\n        TextureManager.updateDataTexture(this.mapTilesDataTextureName, this.dataArray, x1, y1, width, height);\n        this.requestRedraw();\n    }\n\n    /**\n     * \n     * \n     * @param {*} data \n     * @param {*} x1 \n     * @param {*} y1 \n     * @param {*} width \n     * @param {*} height \n     */\n    updateGridDataViewport(data, x1, y1, width, height, viewportWidth, viewportHeight) {\n        this.updateDataArray(data, x1, y1, width, height);\n        this.buildShaderTileData(x1, y1, viewportWidth, viewportHeight);\n        TextureManager.updateDataTexture(this.mapTilesDataTextureName, this.dataArray, x1, y1, width, height);\n        this.requestRedraw();\n    }\n\n    setGridData(data, width, height, tileViewWidth, tileViewHeight) {\n        this.updateDataArray(data, 0, 0, width, height);\n        let texture = TextureManager.addDataTexture(this.mapTilesDataTextureName, this.dataArray, RenderManager.GL.R16UI, RenderManager.GL.RED_INTEGER, RenderManager.GL.UNSIGNED_SHORT, -1, -1, width, height);\n        this.addTexture(texture);\n        /*\n        [0][0] = 0 = Map data tiles width.\n        [0][1] = 1 = Map data tiles height.\n        [0][2] = 2 = Map tiles in the texture width.\n        [0][3] = 3 = Map tiles in the texture height.\n\n        [1][0] = 4 = Map viewport width.\n        [1][1] = 5 = Map viewport height.\n        [1][2] = 6 = Map viewport x1.\n        [1][3] = 7 = Map viewport y1.\n\n        [2][0] = 8 = TileSize width normalized.\n        [2][1] = 9 = TileSize height normalized. \n        */\n        this.shaderTileData = [\n            width, height, this.mapTilesTexture.framesWidth, this.mapTilesTexture.framesHeight, \n            tileViewWidth, tileViewHeight, 0, 0, \n            1 / this.mapTilesTexture.framesWidth, 1 / this.mapTilesTexture.framesHeight, 1, 1, \n            1, 1, 1, 1\n        ];\n    }\n\n    /**\n     * Sets the viewport of the map grid to x1, y1, width, height (in tiles).\n     * \n     * @param {number} viewportX1 Top left x position of the viewport.\n     * @param {number} viewportY1 Top left y position of the viewport.\n     * @param {number} viewportWidth Width of the viewport\n     * @param {number} viewportHeight \n     */\n    buildShaderTileData(viewportX1, viewportY1, viewportWidth, viewportHeight) {\n        this.shaderTileData[4] = viewportWidth;\n        this.shaderTileData[5] = viewportHeight;\n        this.shaderTileData[6] = viewportX1;\n        this.shaderTileData[7] = viewportY1;\n    }\n\n    onEnd() {\n        this.removeFromViewports();\n        TextureManager.removeTexture(this.mapTilesDataTextureName);\n    }\n\n    /**\n     * Updates the uniforms of this renderable. Requires a position matrix for \n     * perspective calculations by the RendererManager.\n     * \n     * @param {Matrix3} positionMatrix Position matrix of this renderable.\n     */\n    setUniformData(positionMatrix) {\n        if (this.textures.length < 2)\n            return false;\n        this.program.setUniforms({\n            'u_color': this.color.color,\n            'u_matrix': positionMatrix,\n            'u_depth': this.depth,\n            'u_tileData': this.shaderTileData,\n            'u_texture': 0,\n            'u_mapDataTexture': 1,\n        });\n        return true;\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/component/Renderable2DGrid.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 176,
    "kind": "variable",
    "name": "dataTexCounter",
    "memberof": "src/component/Renderable2DGrid.js",
    "static": true,
    "longname": "src/component/Renderable2DGrid.js~dataTexCounter",
    "access": "public",
    "export": false,
    "importPath": "seed-engine/src/component/Renderable2DGrid.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 8,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 177,
    "kind": "class",
    "name": "Renderable2DGrid",
    "memberof": "src/component/Renderable2DGrid.js",
    "static": true,
    "longname": "src/component/Renderable2DGrid.js~Renderable2DGrid",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/component/Renderable2DGrid.js",
    "importStyle": "Renderable2DGrid",
    "description": "Renderable2DGrid is a renderable component which uses two textures to draw\ntilemaps using the GPU, and just one renderable. Renderable2DGrid will expect one\ntexture for sprites, and another containing the data for which tile goes where.\nAdditionaly, viewport support is added to make large maps require one time loads into self\nmanaged data textures.",
    "lineNumber": 17,
    "interface": false,
    "extends": [
      "src/component/Renderable2DMultitex.js~Renderable2DMultitex"
    ]
  },
  {
    "__docId__": 178,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/component/Renderable2DGrid.js~Renderable2DGrid",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable2DGrid.js~Renderable2DGrid#constructor",
    "access": "public",
    "description": "Constructor for Renderable2D grid. Sets up data and initializes a data texture.",
    "lineNumber": 28,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "mapTilesTextureName",
        "description": "Name of sprite sheet texture."
      },
      {
        "nullable": null,
        "types": [
          "Array"
        ],
        "spread": false,
        "optional": false,
        "name": "gridData",
        "description": "Array of indexes for each tile on the map."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "width",
        "description": "Width of the map."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "height",
        "description": "Height of the map."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "tileViewWidth",
        "description": "Width of the viewport."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "tileViewHeight",
        "description": "Height of the viewport."
      }
    ]
  },
  {
    "__docId__": 179,
    "kind": "member",
    "name": "className",
    "memberof": "src/component/Renderable2DGrid.js~Renderable2DGrid",
    "static": false,
    "longname": "src/component/Renderable2DGrid.js~Renderable2DGrid#className",
    "access": "public",
    "description": null,
    "lineNumber": 30,
    "undocument": true,
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 180,
    "kind": "member",
    "name": "dataArray",
    "memberof": "src/component/Renderable2DGrid.js~Renderable2DGrid",
    "static": false,
    "longname": "src/component/Renderable2DGrid.js~Renderable2DGrid#dataArray",
    "access": "public",
    "description": null,
    "lineNumber": 32,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 181,
    "kind": "member",
    "name": "shaderTileData",
    "memberof": "src/component/Renderable2DGrid.js~Renderable2DGrid",
    "static": false,
    "longname": "src/component/Renderable2DGrid.js~Renderable2DGrid#shaderTileData",
    "access": "public",
    "description": null,
    "lineNumber": 57,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 182,
    "kind": "member",
    "name": "mapTilesTexture",
    "memberof": "src/component/Renderable2DGrid.js~Renderable2DGrid",
    "static": false,
    "longname": "src/component/Renderable2DGrid.js~Renderable2DGrid#mapTilesTexture",
    "access": "public",
    "description": null,
    "lineNumber": 58,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 183,
    "kind": "member",
    "name": "mapTilesDataTextureName",
    "memberof": "src/component/Renderable2DGrid.js~Renderable2DGrid",
    "static": false,
    "longname": "src/component/Renderable2DGrid.js~Renderable2DGrid#mapTilesDataTextureName",
    "access": "public",
    "description": null,
    "lineNumber": 60,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 184,
    "kind": "method",
    "name": "updateDataArray",
    "memberof": "src/component/Renderable2DGrid.js~Renderable2DGrid",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable2DGrid.js~Renderable2DGrid#updateDataArray",
    "access": "public",
    "description": null,
    "lineNumber": 64,
    "undocument": true,
    "params": [
      {
        "name": "data",
        "types": [
          "*"
        ]
      },
      {
        "name": "x1",
        "types": [
          "*"
        ]
      },
      {
        "name": "y1",
        "types": [
          "*"
        ]
      },
      {
        "name": "width",
        "types": [
          "*"
        ]
      },
      {
        "name": "height",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 185,
    "kind": "method",
    "name": "updateGridData",
    "memberof": "src/component/Renderable2DGrid.js~Renderable2DGrid",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable2DGrid.js~Renderable2DGrid#updateGridData",
    "access": "public",
    "description": "Updates the data texture by quadrant. Quadrant is specified by the x1, y1, \nwidth, and height parameters.",
    "lineNumber": 84,
    "params": [
      {
        "nullable": null,
        "types": [
          "Array"
        ],
        "spread": false,
        "optional": false,
        "name": "data",
        "description": "Array of values indicating the index of each sprite."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x1",
        "description": "Top left x position to update."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "y1",
        "description": "Top left y position to update."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "width",
        "description": "Width (in tiles) of data to update."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "height",
        "description": "Height (in tiles) of data to update."
      }
    ],
    "return": null
  },
  {
    "__docId__": 186,
    "kind": "method",
    "name": "updateGridDataViewport",
    "memberof": "src/component/Renderable2DGrid.js~Renderable2DGrid",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable2DGrid.js~Renderable2DGrid#updateGridDataViewport",
    "access": "public",
    "description": "",
    "lineNumber": 100,
    "params": [
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "data",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "x1",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "y1",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "width",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "height",
        "description": ""
      }
    ],
    "return": null
  },
  {
    "__docId__": 187,
    "kind": "method",
    "name": "setGridData",
    "memberof": "src/component/Renderable2DGrid.js~Renderable2DGrid",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable2DGrid.js~Renderable2DGrid#setGridData",
    "access": "public",
    "description": null,
    "lineNumber": 107,
    "undocument": true,
    "params": [
      {
        "name": "data",
        "types": [
          "*"
        ]
      },
      {
        "name": "width",
        "types": [
          "*"
        ]
      },
      {
        "name": "height",
        "types": [
          "*"
        ]
      },
      {
        "name": "tileViewWidth",
        "types": [
          "*"
        ]
      },
      {
        "name": "tileViewHeight",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 189,
    "kind": "method",
    "name": "buildShaderTileData",
    "memberof": "src/component/Renderable2DGrid.js~Renderable2DGrid",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable2DGrid.js~Renderable2DGrid#buildShaderTileData",
    "access": "public",
    "description": "Sets the viewport of the map grid to x1, y1, width, height (in tiles).",
    "lineNumber": 141,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "viewportX1",
        "description": "Top left x position of the viewport."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "viewportY1",
        "description": "Top left y position of the viewport."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "viewportWidth",
        "description": "Width of the viewport"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "viewportHeight",
        "description": ""
      }
    ],
    "return": null
  },
  {
    "__docId__": 190,
    "kind": "method",
    "name": "onEnd",
    "memberof": "src/component/Renderable2DGrid.js~Renderable2DGrid",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable2DGrid.js~Renderable2DGrid#onEnd",
    "access": "public",
    "description": null,
    "lineNumber": 148,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 191,
    "kind": "method",
    "name": "setUniformData",
    "memberof": "src/component/Renderable2DGrid.js~Renderable2DGrid",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable2DGrid.js~Renderable2DGrid#setUniformData",
    "access": "public",
    "description": "Updates the uniforms of this renderable. Requires a position matrix for \nperspective calculations by the RendererManager.",
    "lineNumber": 159,
    "params": [
      {
        "nullable": null,
        "types": [
          "Matrix3"
        ],
        "spread": false,
        "optional": false,
        "name": "positionMatrix",
        "description": "Position matrix of this renderable."
      }
    ],
    "return": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 192,
    "kind": "file",
    "name": "src/component/Renderable2DMultitex.js",
    "content": "import Renderable from './Renderable';\nimport Matrix3 from '../render/WebGL/Matrix3';\nimport ProgramManager from '../manager/ProgramManager';\n\n/**\n * Renderable2DMultitex is a renderable component, similar to the Renderable2D, except\n * it supports multiple textures. The program assigned to this renderable computes what to\n * do with the shaders passed.\n */\nexport default class Renderable2DMultitex extends Renderable {\n    constructor(program = ProgramManager.getProgram('Default')) {\n        super(program);\n        this.className = 'Renderable2DMultitex';\n    }\n\n    /**\n     * Adds a texture to this renderable.\n     * \n     * @param {textureJSONObject} textureObject Texture reference object, from TextureManager.\n     */\n    addTexture(textureObject) {\n        this.textures.push(textureObject);\n    }\n\n    /**\n     * Removes the nth texture from this component. Textures are pushed to end of list when added.\n     * \n     * @param {number} textureIndex Index of texture to remove.\n     */\n    removeTexture(textureIndex) {\n        if (textureIndex < 0 || textureIndex >= this.textures.length)\n            return;\n\n        this.textures.splice(textureIndex, 1);\n    }\n\n    /**\n     * Removes all textures from this renderable.\n     */\n    removeTextures() {\n        this.textures = [];\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/component/Renderable2DMultitex.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 193,
    "kind": "class",
    "name": "Renderable2DMultitex",
    "memberof": "src/component/Renderable2DMultitex.js",
    "static": true,
    "longname": "src/component/Renderable2DMultitex.js~Renderable2DMultitex",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/component/Renderable2DMultitex.js",
    "importStyle": "Renderable2DMultitex",
    "description": "Renderable2DMultitex is a renderable component, similar to the Renderable2D, except\nit supports multiple textures. The program assigned to this renderable computes what to\ndo with the shaders passed.",
    "lineNumber": 10,
    "interface": false,
    "extends": [
      "src/component/Renderable.js~Renderable"
    ]
  },
  {
    "__docId__": 194,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/component/Renderable2DMultitex.js~Renderable2DMultitex",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable2DMultitex.js~Renderable2DMultitex#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 11,
    "undocument": true
  },
  {
    "__docId__": 195,
    "kind": "member",
    "name": "className",
    "memberof": "src/component/Renderable2DMultitex.js~Renderable2DMultitex",
    "static": false,
    "longname": "src/component/Renderable2DMultitex.js~Renderable2DMultitex#className",
    "access": "public",
    "description": null,
    "lineNumber": 13,
    "undocument": true,
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 196,
    "kind": "method",
    "name": "addTexture",
    "memberof": "src/component/Renderable2DMultitex.js~Renderable2DMultitex",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable2DMultitex.js~Renderable2DMultitex#addTexture",
    "access": "public",
    "description": "Adds a texture to this renderable.",
    "lineNumber": 21,
    "params": [
      {
        "nullable": null,
        "types": [
          "textureJSONObject"
        ],
        "spread": false,
        "optional": false,
        "name": "textureObject",
        "description": "Texture reference object, from TextureManager."
      }
    ],
    "return": null
  },
  {
    "__docId__": 197,
    "kind": "method",
    "name": "removeTexture",
    "memberof": "src/component/Renderable2DMultitex.js~Renderable2DMultitex",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable2DMultitex.js~Renderable2DMultitex#removeTexture",
    "access": "public",
    "description": "Removes the nth texture from this component. Textures are pushed to end of list when added.",
    "lineNumber": 30,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "textureIndex",
        "description": "Index of texture to remove."
      }
    ],
    "return": null
  },
  {
    "__docId__": 198,
    "kind": "method",
    "name": "removeTextures",
    "memberof": "src/component/Renderable2DMultitex.js~Renderable2DMultitex",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Renderable2DMultitex.js~Renderable2DMultitex#removeTextures",
    "access": "public",
    "description": "Removes all textures from this renderable.",
    "lineNumber": 40,
    "params": [],
    "return": null
  },
  {
    "__docId__": 199,
    "kind": "member",
    "name": "textures",
    "memberof": "src/component/Renderable2DMultitex.js~Renderable2DMultitex",
    "static": false,
    "longname": "src/component/Renderable2DMultitex.js~Renderable2DMultitex#textures",
    "access": "public",
    "description": null,
    "lineNumber": 41,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 200,
    "kind": "file",
    "name": "src/component/RenderableSquare.js",
    "content": "import Renderable2D from './Renderable2D';\n\nexport default class RenderableSquare extends Renderable2D {\n    \n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/component/RenderableSquare.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 201,
    "kind": "class",
    "name": "RenderableSquare",
    "memberof": "src/component/RenderableSquare.js",
    "static": true,
    "longname": "src/component/RenderableSquare.js~RenderableSquare",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/component/RenderableSquare.js",
    "importStyle": "RenderableSquare",
    "description": null,
    "lineNumber": 3,
    "undocument": true,
    "interface": false,
    "extends": [
      "src/component/Renderable2D.js~Renderable2D"
    ]
  },
  {
    "__docId__": 202,
    "kind": "file",
    "name": "src/component/RenderableText.js",
    "content": "import Renderable from './Renderable';\nimport Matrix3 from '../render/WebGL/Matrix3';\nimport ProgramManager from '../manager/ProgramManager';\nimport TextureManager from '../manager/TextureManager';\nimport RenderManager from '../manager/RenderManager';\nimport Renderable2DMultitex from './Renderable2DMultitex';\n\n/**\n * RenderableText is a renderable component which renders a line of text from a \n * collection of string data. The string data is loaded into the GPU using textures\n */\nexport default class RenderableText extends Renderable2DMultitex {\n\n    constructor(fontTexture) {\n        super(ProgramManager.getProgram('2DGrid'));\n        this.className = 'RenderableText';\n        this.renderableTextID = -1;\n        this.textData = {\n            //text in string form\n            text: '',\n\n            //text in indexable columns of the font texture. Represents an x value and a range of y values (automatically handled by the shader).\n            textPixelArray: [],\n\n            //width of the entire string and and formatting in px.\n            textPixelWidth: 0\n        };\n\n        /*\n        An array representing a matrix4. Should be replaced with a Matrix4 instance.\n\n        [0][0] = 0 = Map data tiles width.\n        [0][1] = 1 = Map data tiles height.\n        [0][2] = 2 = Map tiles in the texture width.\n        [0][3] = 3 = Map tiles in the texture height.\n\n        [1][0] = 4 = Map viewport width.\n        [1][1] = 5 = Map viewport height.\n        [1][2] = 6 = Map viewport x1.\n        [1][3] = 7 = Map viewport y1.\n\n        [2][0] = 8 = TileSize width normalized.\n        [2][1] = 9 = TileSize height normalized. \n        */\n        this.shaderFontData = [];\n        this.fontTexture = fontTexture;\n        this.addTexture(fontTexture);\n        this.setGridData();\n    }\n\n    onPause() {\n        this.requestRedraw();\n    }\n\n    onUnpause() {\n        this.requestRedraw();\n    }\n\n    setGridData() {\n        //text storage max width of 1024 px.\n        let width = 1024;\n\n        //1024 lines of text storeable.\n        let height = 1024; \n\n        //assigns an ID and sets up the statically used text data texture.\n        RenderManager.registerTextRenderable(this, width, height);\n        \n        this.addTexture(TextureManager.getTexture('TextData'));\n        \n        //additional data for the shader for font data and such.\n        this.buildShaderTileData();\n    }\n\n    setText(textString, fontScale) {\n        fontScale = Math.round(fontScale);\n        this.textData.text = textString;\n        this.textData.textPixelArray = [];\n        this.textData.textPixelWidth = 0;\n        for (let i = 0; i < textString.length; i++) {\n            let char = textString[i];\n            let charData = this.fontTexture.glyphInfo[char];\n            if (charData == null)\n                continue;\n\n            for (let x = charData.x; x < charData.x + charData.width; x++) {\n                this.textData.textPixelArray.push(x + (charData.row * this.fontTexture.width));\n            }\n        }\n        this.textData.textPixelWidth = this.textData.textPixelArray.length;\n        this.gameObject.transform.setScale(this.textData.textPixelWidth * fontScale, this.fontTexture.glyphInfo.height * fontScale);\n        TextureManager.updateDataTexture('TextData', new Uint16Array(this.textData.textPixelArray), 0, this.renderableTextID, this.textData.textPixelWidth, 1);\n        this.buildShaderTileData();\n    }\n\n    setTextAlign(textAlign) {\n        if (textAlign == 'center') {\n            this.textAlign = 1;\n        } else if (textAlign == 'right') {\n            this.textAlign = 2;\n        } else {\n            this.textAlign = 0;\n        }\n    }\n\n    buildShaderTileData() {\n        this.shaderFontData = [\n            1024, 1024, this.fontTexture.width, Math.floor(this.fontTexture.height / this.fontTexture.frameHeight), \n            this.textData.textPixelWidth, 1, 0, this.renderableTextID, \n            0.015625, 0.2, 1, 1, \n            1, 1, 1, 1\n        ];\n    }\n\n    setUniformData(positionMatrix) {\n        if (this.textures.length < 2)\n            return false;\n        this.program.setUniforms({\n            'u_color': this.color.color,\n            'u_matrix': positionMatrix,\n            'u_depth': this.depth,\n            'u_tileData': this.shaderFontData,\n            'u_texture': 0,\n            'u_mapDataTexture': 1,\n        });\n        return true;\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/component/RenderableText.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 203,
    "kind": "class",
    "name": "RenderableText",
    "memberof": "src/component/RenderableText.js",
    "static": true,
    "longname": "src/component/RenderableText.js~RenderableText",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/component/RenderableText.js",
    "importStyle": "RenderableText",
    "description": "RenderableText is a renderable component which renders a line of text from a \ncollection of string data. The string data is loaded into the GPU using textures",
    "lineNumber": 12,
    "interface": false,
    "extends": [
      "src/component/Renderable2DMultitex.js~Renderable2DMultitex"
    ]
  },
  {
    "__docId__": 204,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/component/RenderableText.js~RenderableText",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/RenderableText.js~RenderableText#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 14,
    "undocument": true
  },
  {
    "__docId__": 205,
    "kind": "member",
    "name": "className",
    "memberof": "src/component/RenderableText.js~RenderableText",
    "static": false,
    "longname": "src/component/RenderableText.js~RenderableText#className",
    "access": "public",
    "description": null,
    "lineNumber": 16,
    "undocument": true,
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 206,
    "kind": "member",
    "name": "renderableTextID",
    "memberof": "src/component/RenderableText.js~RenderableText",
    "static": false,
    "longname": "src/component/RenderableText.js~RenderableText#renderableTextID",
    "access": "public",
    "description": null,
    "lineNumber": 17,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 207,
    "kind": "member",
    "name": "textData",
    "memberof": "src/component/RenderableText.js~RenderableText",
    "static": false,
    "longname": "src/component/RenderableText.js~RenderableText#textData",
    "access": "public",
    "description": null,
    "lineNumber": 18,
    "undocument": true,
    "type": {
      "types": [
        "{\"text\": *, \"textPixelArray\": *, \"textPixelWidth\": *}"
      ]
    }
  },
  {
    "__docId__": 208,
    "kind": "member",
    "name": "shaderFontData",
    "memberof": "src/component/RenderableText.js~RenderableText",
    "static": false,
    "longname": "src/component/RenderableText.js~RenderableText#shaderFontData",
    "access": "public",
    "description": null,
    "lineNumber": 45,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 209,
    "kind": "member",
    "name": "fontTexture",
    "memberof": "src/component/RenderableText.js~RenderableText",
    "static": false,
    "longname": "src/component/RenderableText.js~RenderableText#fontTexture",
    "access": "public",
    "description": null,
    "lineNumber": 46,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 210,
    "kind": "method",
    "name": "onPause",
    "memberof": "src/component/RenderableText.js~RenderableText",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/RenderableText.js~RenderableText#onPause",
    "access": "public",
    "description": null,
    "lineNumber": 51,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 211,
    "kind": "method",
    "name": "onUnpause",
    "memberof": "src/component/RenderableText.js~RenderableText",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/RenderableText.js~RenderableText#onUnpause",
    "access": "public",
    "description": null,
    "lineNumber": 55,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 212,
    "kind": "method",
    "name": "setGridData",
    "memberof": "src/component/RenderableText.js~RenderableText",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/RenderableText.js~RenderableText#setGridData",
    "access": "public",
    "description": null,
    "lineNumber": 59,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 213,
    "kind": "method",
    "name": "setText",
    "memberof": "src/component/RenderableText.js~RenderableText",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/RenderableText.js~RenderableText#setText",
    "access": "public",
    "description": null,
    "lineNumber": 75,
    "undocument": true,
    "params": [
      {
        "name": "textString",
        "types": [
          "*"
        ]
      },
      {
        "name": "fontScale",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 214,
    "kind": "method",
    "name": "setTextAlign",
    "memberof": "src/component/RenderableText.js~RenderableText",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/RenderableText.js~RenderableText#setTextAlign",
    "access": "public",
    "description": null,
    "lineNumber": 96,
    "undocument": true,
    "params": [
      {
        "name": "textAlign",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 215,
    "kind": "member",
    "name": "textAlign",
    "memberof": "src/component/RenderableText.js~RenderableText",
    "static": false,
    "longname": "src/component/RenderableText.js~RenderableText#textAlign",
    "access": "public",
    "description": null,
    "lineNumber": 98,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 218,
    "kind": "method",
    "name": "buildShaderTileData",
    "memberof": "src/component/RenderableText.js~RenderableText",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/RenderableText.js~RenderableText#buildShaderTileData",
    "access": "public",
    "description": null,
    "lineNumber": 106,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 220,
    "kind": "method",
    "name": "setUniformData",
    "memberof": "src/component/RenderableText.js~RenderableText",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/RenderableText.js~RenderableText#setUniformData",
    "access": "public",
    "description": null,
    "lineNumber": 115,
    "undocument": true,
    "params": [
      {
        "name": "positionMatrix",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 221,
    "kind": "file",
    "name": "src/component/TopDownController.js",
    "content": "import Controller from './Controller';\nimport KeyCode from '../const/KeyCode';\nimport { InputManager, Point } from '../entry';\n\n/**\n * A Controller Component with extra methods designed for controlling a \n * character in a Top-Down Perspective view.\n */\nexport default class TopDownController extends Controller {\n    constructor() {\n        super();\n    }\n\n    /**\n     * Returns true if this game update notices a key press for 'W' or Up key.\n     */\n    isUpPressed() {\n        return InputManager.isKeyPressed(KeyCode.W) || InputManager.isKeyPressed(KeyCode.UP);\n    }\n\n    /**\n     * Returns true if this game update notices a key press for 'S' or Down key.\n     */\n    isDownPressed() {\n        return InputManager.isKeyPressed(KeyCode.S) || InputManager.isKeyPressed(KeyCode.DOWN);\n    }\n\n    /**\n     * Returns true if this game update notices a key press for 'A' or Left key.\n     */\n    isLeftPressed() {\n        return InputManager.isKeyPressed(KeyCode.A) || InputManager.isKeyPressed(KeyCode.LEFT);\n    }\n\n    /**\n     * Returns true if this game update notices a key press for 'D' or Right key.\n     */\n    isRightPressed() {\n        return InputManager.isKeyPressed(KeyCode.D) || InputManager.isKeyPressed(KeyCode.RIGHT);\n    }\n\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/component/TopDownController.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 222,
    "kind": "class",
    "name": "TopDownController",
    "memberof": "src/component/TopDownController.js",
    "static": true,
    "longname": "src/component/TopDownController.js~TopDownController",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/component/TopDownController.js",
    "importStyle": "TopDownController",
    "description": "A Controller Component with extra methods designed for controlling a \ncharacter in a Top-Down Perspective view.",
    "lineNumber": 9,
    "interface": false,
    "extends": [
      "src/component/Controller.js~Controller"
    ]
  },
  {
    "__docId__": 223,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/component/TopDownController.js~TopDownController",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/TopDownController.js~TopDownController#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 10,
    "undocument": true
  },
  {
    "__docId__": 224,
    "kind": "method",
    "name": "isUpPressed",
    "memberof": "src/component/TopDownController.js~TopDownController",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/TopDownController.js~TopDownController#isUpPressed",
    "access": "public",
    "description": "Returns true if this game update notices a key press for 'W' or Up key.",
    "lineNumber": 17,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 225,
    "kind": "method",
    "name": "isDownPressed",
    "memberof": "src/component/TopDownController.js~TopDownController",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/TopDownController.js~TopDownController#isDownPressed",
    "access": "public",
    "description": "Returns true if this game update notices a key press for 'S' or Down key.",
    "lineNumber": 24,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 226,
    "kind": "method",
    "name": "isLeftPressed",
    "memberof": "src/component/TopDownController.js~TopDownController",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/TopDownController.js~TopDownController#isLeftPressed",
    "access": "public",
    "description": "Returns true if this game update notices a key press for 'A' or Left key.",
    "lineNumber": 31,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 227,
    "kind": "method",
    "name": "isRightPressed",
    "memberof": "src/component/TopDownController.js~TopDownController",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/TopDownController.js~TopDownController#isRightPressed",
    "access": "public",
    "description": "Returns true if this game update notices a key press for 'D' or Right key.",
    "lineNumber": 38,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 228,
    "kind": "file",
    "name": "src/component/Transform.js",
    "content": "import Component from './Component';\nimport Point from '../internal/Point';\n\n/**\n * A component all GameObjects are given by default on instantiation.\n * \n * Transform components are unique to the object, meaning there cannot be more than\n * one Transform on a GameObject.\n * \n * Transforms keep track of GameObject position, scale (size), rotation, and \n * origin offset. These should be changes with their respective setters, and not directly,\n * to ensure the correct components are notified of these changes.\n * \n * TODO: Make rotation work on 3 axis like position and scale.\n * TODO: Change the updates and setters of the position/scale/rotation to use funcions in their base\n * definitions and remove the wrappers here to reduce code.\n */\nexport default class Transform extends Component {\n    constructor(position = new Point(0, 0, 0), scale = new Point(1, 1, 1), rotation = 0) {\n        super(true);\n        this.className='Transform';\n        this._position = position;\n        this._rotation = rotation;\n        this._scale = scale;\n        this._originOffset = new Point(0, 0, 0);\n        this.renderable = null;\n    }\n\n    /**\n     * Sets the Transforms position.\n     * \n     * @param {number} x X position. Defaults to current X position.\n     * @param {number} y Y position. Defaults to current Y position.\n     * @param {number} z Z position. Defaults to current Z position.\n     */\n    setPosition(x = this._position.x, y = this._position.y, z = this._position.z) {\n        this._position.set(x, y, z);\n        if (this.renderable != null) {\n            this.renderable.setPosition(this._position);\n        }\n    }\n\n    /**\n     * Triggers between two types of regularly used origin points. \n     * \n     * Origin points are used with Renderables and other components to offset the origin different from the Transform's position.\n     * \n     * \"Center\": (-0.5, -0.5, -0.5) centered to the Tranform's position, and \"Default\": (0, 0, 0), beginning at the top left of the Transform.\n     * \n     * @param {boolean} center \"Center\" if true, \"Default\" if false.\n     */\n    centerOrigin(center = true) {\n        if (center) {\n            this.setOriginOffset(-0.5, -0.5, -0.5);\n        } else {\n            this.setOriginOffset(0, 0, 0);\n        }\n    }\n\n    /**\n     * Sets the origin offset position. \n     * \n     * If you want an object to exist at a \n     * position, but do something else (like drawing, animations) \n     * in a relative position the the Tranform, use this to change the \n     * offset from the Transfrom.\n     * \n     * (0, 0, 0) would be top left of the transform. \n     * (-0.5, -0.5, -0.5) would be center of the transform. \n     * (-1, -1, -1) would be bottom right of transform.\n     * \n     * Parameters default to their current values.\n     * \n     * @param {number} x X axis offset. Defaults to current origin offset X.\n     * @param {number} y Y axis offset. Defaults to current origin offset Y.\n     * @param {number} z Z axis offset. Defaults to current origin offset Z.\n     */\n    setOriginOffset(x = this._originOffset.x, y = this._originOffset.y, z = this._originOffset.z) {\n        this._originOffset.set(x, y, z);\n        if (this.renderable != null) {\n            this.renderable.setOriginOffset(this._originOffset);\n        }\n    }\n\n    /**\n     * Rotates the transform to face a different direction.\n     * \n     * TODO: implement more than z axis rotation.\n     * \n     * @param {number} rotation Rotation around the Z axis (in degrees).\n     */\n    setRotation(rotation) {\n        this._rotation = rotation;\n        if (this.renderable != null) {\n            this.renderable.setRotation(this._rotation);\n        }\n    }\n\n    /**\n     * \n     * @param {number} scaleX X scale from 1. Defaults to current scale X.\n     * @param {number} scaleY Y scale from 1. Defaults to current scale Y.\n     * @param {number} scaleZ Z scale from 1. Defaults to current scale Z.\n     */\n    setScale(scaleX = this.scaleX, scaleY = this.scaleY, scaleZ = this.scaleZ) {\n        this._scale.set(scaleX, scaleY, scaleZ);\n        if (this.renderable != null) {\n            this.renderable.setScale(this._scale);\n        }\n    }\n\n    /**\n     * Adds the parameters of this function to the Transforms position.\n     * \n     * @param {number} x X position. Defaults to 0.\n     * @param {number} y Y position. Defaults to 0.\n     * @param {number} z Z position. Defaults to 0.\n     */\n    translate(x = 0, y = 0, z = 0) {\n        this._position.x += x;\n        this._position.y += y;\n        this._position.z += z;\n        if (this.renderable != null) {\n            this.renderable.setPosition(this._position);\n        }\n    }\n\n    flipX() {\n        this._scale.x = -this._scale.x;\n        if (this.renderable != null) {\n            this.renderable.setScale(this._scale);\n        }\n    }\n\n    flipY() {\n        this._scale.y = -this._scale.y;\n        if (this.renderable != null) {\n            this.renderable.setScale(this._scale);\n        }\n    }\n\n    /**\n     * Adds the rotation parameter to the current Transform rotation.\n     * \n     * @param {number} rotation Rotation to add.\n     */\n    rotate(rotation) {\n        this._rotation += rotation;\n        if (this.renderable != null) {\n            this.renderable.setRotation(this._rotation);\n        }\n    }\n\n    /**\n     * Adds the parameters of this function to the Transforms scale.\n     * \n     * @param {number} scaleX X scale. Defaults to 0.\n     * @param {number} scaleY Y scale. Defaults to 0.\n     * @param {number} scaleZ Z scale. Defaults to 0.\n     */\n    scale(scaleX = 0, scaleY = 0, scaleZ = 0) {\n        this._scale.x += scaleX;\n        this._scale.y += scaleY;\n        this._scale.z += scaleZ;\n        if (this.renderable != null) {\n            this.renderable.setScale(this._scale);\n        }\n    }\n\n    /**\n     * @returns {Point} The transform's position.\n     */\n    getPosition() {\n        return Point.copy(this._position);\n    }\n\n    /**\n     * @returns {Point} The transform's scale.\n     */\n    getScale() {\n        return Point.copy(this._scale);\n    }\n\n    /**\n     * @returns {number} The transform's rotation.\n     */\n    getRotation() {\n        return this._rotation;\n    }\n\n    /**\n     * @returns {Point} The transform's origin offset.\n     */\n    getOriginOffset() {\n        return Point.copy(this._originOffset);\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/component/Transform.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 229,
    "kind": "class",
    "name": "Transform",
    "memberof": "src/component/Transform.js",
    "static": true,
    "longname": "src/component/Transform.js~Transform",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/component/Transform.js",
    "importStyle": "Transform",
    "description": "A component all GameObjects are given by default on instantiation.\n\nTransform components are unique to the object, meaning there cannot be more than\none Transform on a GameObject.\n\nTransforms keep track of GameObject position, scale (size), rotation, and \norigin offset. These should be changes with their respective setters, and not directly,\nto ensure the correct components are notified of these changes.\n\nTODO: Make rotation work on 3 axis like position and scale.\nTODO: Change the updates and setters of the position/scale/rotation to use funcions in their base\ndefinitions and remove the wrappers here to reduce code.",
    "lineNumber": 18,
    "interface": false,
    "extends": [
      "src/component/Component.js~Component"
    ]
  },
  {
    "__docId__": 230,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/component/Transform.js~Transform",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Transform.js~Transform#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 19,
    "undocument": true
  },
  {
    "__docId__": 231,
    "kind": "member",
    "name": "className",
    "memberof": "src/component/Transform.js~Transform",
    "static": false,
    "longname": "src/component/Transform.js~Transform#className",
    "access": "public",
    "description": null,
    "lineNumber": 21,
    "undocument": true,
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 232,
    "kind": "member",
    "name": "_position",
    "memberof": "src/component/Transform.js~Transform",
    "static": false,
    "longname": "src/component/Transform.js~Transform#_position",
    "access": "private",
    "description": null,
    "lineNumber": 22,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 233,
    "kind": "member",
    "name": "_rotation",
    "memberof": "src/component/Transform.js~Transform",
    "static": false,
    "longname": "src/component/Transform.js~Transform#_rotation",
    "access": "private",
    "description": null,
    "lineNumber": 23,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 234,
    "kind": "member",
    "name": "_scale",
    "memberof": "src/component/Transform.js~Transform",
    "static": false,
    "longname": "src/component/Transform.js~Transform#_scale",
    "access": "private",
    "description": null,
    "lineNumber": 24,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 235,
    "kind": "member",
    "name": "_originOffset",
    "memberof": "src/component/Transform.js~Transform",
    "static": false,
    "longname": "src/component/Transform.js~Transform#_originOffset",
    "access": "private",
    "description": null,
    "lineNumber": 25,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 236,
    "kind": "member",
    "name": "renderable",
    "memberof": "src/component/Transform.js~Transform",
    "static": false,
    "longname": "src/component/Transform.js~Transform#renderable",
    "access": "public",
    "description": null,
    "lineNumber": 26,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 237,
    "kind": "method",
    "name": "setPosition",
    "memberof": "src/component/Transform.js~Transform",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Transform.js~Transform#setPosition",
    "access": "public",
    "description": "Sets the Transforms position.",
    "lineNumber": 36,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "X position. Defaults to current X position."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "y",
        "description": "Y position. Defaults to current Y position."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "z",
        "description": "Z position. Defaults to current Z position."
      }
    ],
    "return": null
  },
  {
    "__docId__": 238,
    "kind": "method",
    "name": "centerOrigin",
    "memberof": "src/component/Transform.js~Transform",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Transform.js~Transform#centerOrigin",
    "access": "public",
    "description": "Triggers between two types of regularly used origin points. \n\nOrigin points are used with Renderables and other components to offset the origin different from the Transform's position.\n\n\"Center\": (-0.5, -0.5, -0.5) centered to the Tranform's position, and \"Default\": (0, 0, 0), beginning at the top left of the Transform.",
    "lineNumber": 52,
    "params": [
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": false,
        "name": "center",
        "description": "\"Center\" if true, \"Default\" if false."
      }
    ],
    "return": null
  },
  {
    "__docId__": 239,
    "kind": "method",
    "name": "setOriginOffset",
    "memberof": "src/component/Transform.js~Transform",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Transform.js~Transform#setOriginOffset",
    "access": "public",
    "description": "Sets the origin offset position. \n\nIf you want an object to exist at a \nposition, but do something else (like drawing, animations) \nin a relative position the the Tranform, use this to change the \noffset from the Transfrom.\n\n(0, 0, 0) would be top left of the transform. \n(-0.5, -0.5, -0.5) would be center of the transform. \n(-1, -1, -1) would be bottom right of transform.\n\nParameters default to their current values.",
    "lineNumber": 78,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "X axis offset. Defaults to current origin offset X."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "y",
        "description": "Y axis offset. Defaults to current origin offset Y."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "z",
        "description": "Z axis offset. Defaults to current origin offset Z."
      }
    ],
    "return": null
  },
  {
    "__docId__": 240,
    "kind": "method",
    "name": "setRotation",
    "memberof": "src/component/Transform.js~Transform",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Transform.js~Transform#setRotation",
    "access": "public",
    "description": "Rotates the transform to face a different direction.\n\nTODO: implement more than z axis rotation.",
    "lineNumber": 92,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "rotation",
        "description": "Rotation around the Z axis (in degrees)."
      }
    ],
    "return": null
  },
  {
    "__docId__": 242,
    "kind": "method",
    "name": "setScale",
    "memberof": "src/component/Transform.js~Transform",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Transform.js~Transform#setScale",
    "access": "public",
    "description": "",
    "lineNumber": 105,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "scaleX",
        "description": "X scale from 1. Defaults to current scale X."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "scaleY",
        "description": "Y scale from 1. Defaults to current scale Y."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "scaleZ",
        "description": "Z scale from 1. Defaults to current scale Z."
      }
    ],
    "return": null
  },
  {
    "__docId__": 243,
    "kind": "method",
    "name": "translate",
    "memberof": "src/component/Transform.js~Transform",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Transform.js~Transform#translate",
    "access": "public",
    "description": "Adds the parameters of this function to the Transforms position.",
    "lineNumber": 119,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "X position. Defaults to 0."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "y",
        "description": "Y position. Defaults to 0."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "z",
        "description": "Z position. Defaults to 0."
      }
    ],
    "return": null
  },
  {
    "__docId__": 244,
    "kind": "method",
    "name": "flipX",
    "memberof": "src/component/Transform.js~Transform",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Transform.js~Transform#flipX",
    "access": "public",
    "description": null,
    "lineNumber": 128,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 245,
    "kind": "method",
    "name": "flipY",
    "memberof": "src/component/Transform.js~Transform",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Transform.js~Transform#flipY",
    "access": "public",
    "description": null,
    "lineNumber": 135,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 246,
    "kind": "method",
    "name": "rotate",
    "memberof": "src/component/Transform.js~Transform",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Transform.js~Transform#rotate",
    "access": "public",
    "description": "Adds the rotation parameter to the current Transform rotation.",
    "lineNumber": 147,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "rotation",
        "description": "Rotation to add."
      }
    ],
    "return": null
  },
  {
    "__docId__": 248,
    "kind": "method",
    "name": "scale",
    "memberof": "src/component/Transform.js~Transform",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Transform.js~Transform#scale",
    "access": "public",
    "description": "Adds the parameters of this function to the Transforms scale.",
    "lineNumber": 161,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "scaleX",
        "description": "X scale. Defaults to 0."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "scaleY",
        "description": "Y scale. Defaults to 0."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "scaleZ",
        "description": "Z scale. Defaults to 0."
      }
    ],
    "return": null
  },
  {
    "__docId__": 249,
    "kind": "method",
    "name": "getPosition",
    "memberof": "src/component/Transform.js~Transform",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Transform.js~Transform#getPosition",
    "access": "public",
    "description": "",
    "lineNumber": 173,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Point} The transform's position."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Point"
      ],
      "spread": false,
      "description": "The transform's position."
    },
    "params": []
  },
  {
    "__docId__": 250,
    "kind": "method",
    "name": "getScale",
    "memberof": "src/component/Transform.js~Transform",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Transform.js~Transform#getScale",
    "access": "public",
    "description": "",
    "lineNumber": 180,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Point} The transform's scale."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Point"
      ],
      "spread": false,
      "description": "The transform's scale."
    },
    "params": []
  },
  {
    "__docId__": 251,
    "kind": "method",
    "name": "getRotation",
    "memberof": "src/component/Transform.js~Transform",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Transform.js~Transform#getRotation",
    "access": "public",
    "description": "",
    "lineNumber": 187,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} The transform's rotation."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "The transform's rotation."
    },
    "params": []
  },
  {
    "__docId__": 252,
    "kind": "method",
    "name": "getOriginOffset",
    "memberof": "src/component/Transform.js~Transform",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/component/Transform.js~Transform#getOriginOffset",
    "access": "public",
    "description": "",
    "lineNumber": 194,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Point} The transform's origin offset."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Point"
      ],
      "spread": false,
      "description": "The transform's origin offset."
    },
    "params": []
  },
  {
    "__docId__": 253,
    "kind": "file",
    "name": "src/const/FragmentShader.js",
    "content": "/**\n * Default fragment shader which handles single colors and Texture sprite sheets.\n */\n\nexport const DEFAULT_F = `#version 300 es\n\nprecision mediump float;\n\n//in\nin vec2 v_texcoord;\nuniform vec4 u_color;\nuniform vec4 u_subTexcoord;\n\n//local\nuniform sampler2D u_texture;\nvec2 subTexcoord;\n\n//out\nout vec4 outColor;\n\nvoid main() {\n  subTexcoord = v_texcoord;\n  subTexcoord.xy -= u_subTexcoord.xy;\n  subTexcoord.xy *= u_subTexcoord.zw;\n  vec4 fragColor = texture(u_texture, subTexcoord) * u_color;\n\n  if(fragColor.a < 0.25) {\n    discard;\n  }\n\n  outColor = vec4(fragColor.rgb, u_color.a);\n}\n`;\n\n/**\n * Fragment shader which takes parameters to draw tile maps.\n */\n\nexport const TILEMAP_F = `#version 300 es\n\nprecision highp float;\n\n//in\nin vec2 v_texcoord;\nuniform vec4 u_color;\n\n/*\n[0][0] = 0 = Map data tiles width.\n[0][1] = 1 = Map data tiles height.\n[0][2] = 2 = Map tiles in the texture width.\n[0][3] = 3 = Map tiles in the texture height.\n\n[1][0] = 4 = Map viewport width.\n[1][1] = 5 = Map viewport height.\n[1][2] = 6 = Map viewport x1.\n[1][3] = 7 = Map viewport y1.\n\n[2][0] = 8 = TileSize width normalized.\n[2][1] = 9 = TileSize height normalized. \n*/\nuniform mat4 u_tileData;\nuniform mediump usampler2D u_mapDataTexture;\nuniform sampler2D u_texture;\n\n//local\n\n//texture tile image coordinates\nvec2 subTexcoord;\n\n//map data tile position.\nvec2 mapTilecoord;\n\n//Drawing coordinate.\nvec2 drawCoord;\n\n//out\nout vec4 outColor;\n\nvoid main() {\n\n  //get this tile xy coordinate to obtain the tile ID.\n  mapTilecoord.x = floor(u_tileData[1][2] + (v_texcoord.x * u_tileData[1][0])) / (u_tileData[0][0] - 1.0f);\n  mapTilecoord.y = floor(u_tileData[1][3] + (v_texcoord.y * u_tileData[1][1])) / (u_tileData[0][1] - 1.0f);\n\n  //get the tile ID from the texture.\n  float tileID = float(texture(u_mapDataTexture, mapTilecoord).r);\n\n  //get xy positions of texture from the ID, normalized.\n  subTexcoord.x = -mod(tileID, u_tileData[0][2]) / u_tileData[0][2];\n  subTexcoord.y = (-floor(tileID / u_tileData[0][2]) / u_tileData[0][3]);\n\n\n  drawCoord.x = fract(v_texcoord.x * u_tileData[1][0]);\n  drawCoord.y = fract(v_texcoord.y * u_tileData[1][1]);\n\n  drawCoord.x /= u_tileData[0][2];\n  drawCoord.y /= u_tileData[0][3];\n\n  drawCoord.x -= subTexcoord.x;\n  drawCoord.y -= subTexcoord.y;\n\n  vec4 fragColor = texture(u_texture , drawCoord) * u_color;\n\n  if (fragColor.a < 0.6) {\n    discard;\n  }\n\n  outColor = vec4(fragColor.rgb, u_color.a);\n}\n`;",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/const/FragmentShader.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 254,
    "kind": "variable",
    "name": "DEFAULT_F",
    "memberof": "src/const/FragmentShader.js",
    "static": true,
    "longname": "src/const/FragmentShader.js~DEFAULT_F",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/const/FragmentShader.js",
    "importStyle": "{DEFAULT_F}",
    "description": "Default fragment shader which handles single colors and Texture sprite sheets.",
    "lineNumber": 5,
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 255,
    "kind": "variable",
    "name": "TILEMAP_F",
    "memberof": "src/const/FragmentShader.js",
    "static": true,
    "longname": "src/const/FragmentShader.js~TILEMAP_F",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/const/FragmentShader.js",
    "importStyle": "{TILEMAP_F}",
    "description": "Fragment shader which takes parameters to draw tile maps.",
    "lineNumber": 39,
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 256,
    "kind": "file",
    "name": "src/const/KeyCode.js",
    "content": "/**\n * Keycode ENUM of Key: KeyCodeValue. Keys which start with an underscore should be ignored.\n */\nconst KeyCode = {\n    _0: 0,\n    _1: 1,\n    _2: 2,\n    CANCEL: 3,\n    _4: 4,\n    _5: 5,\n    HELP: 6,\n    _7: 7,\n    BACK_SPACE: 8,\n    TAB: 9,\n    _10: 10,\n    _11: 11,\n    CLEAR: 12,\n    ENTER: 13,\n    ENTER_SPECIAL: 14,\n    _15: 15,\n    SHIFT: 16,\n    CONTROL: 17,\n    ALT: 18,\n    PAUSE: 19,\n    CAPS_LOCK: 20,\n    KANA: 21,\n    EISU: 22,\n    JUNJA: 23,\n    FINAL: 24,\n    HANJA: 25,\n    _26: 26,\n    ESCAPE: 27,\n    CONVERT: 28,\n    NONCONVERT: 29,\n    ACCEPT: 30,\n    MODECHANGE: 31,\n    SPACE: 32,\n    PAGE_UP: 33,\n    PAGE_DOWN: 34,\n    END: 35,\n    HOME: 36,\n    LEFT: 37,\n    UP: 38,\n    RIGHT: 39,\n    DOWN: 40,\n    SELECT: 41,\n    PRINT: 42,\n    EXECUTE: 43,\n    PRINTSCREEN: 44,\n    INSERT: 45,\n    DELETE: 46,\n    _47: 47,\n    NUMBER_0: 48,\n    NUMBER_1: 49,\n    NUMBER_2: 50,\n    NUMBER_3: 51,\n    NUMBER_4: 52,\n    NUMBER_5: 53,\n    NUMBER_6: 54,\n    NUMBER_7: 55,\n    NUMBER_8: 56,\n    NUMBER_9: 57,\n    COLON: 58,\n    SEMICOLON: 59,\n    LESS_THAN: 60,\n    EQUALS: 61,\n    GREATER_THAN: 62,\n    QUESTION_MARK: 63,\n    AT: 64,\n    A: 65,\n    B: 66,\n    C: 67,\n    D: 68,\n    E: 69,\n    F: 70,\n    G: 71,\n    H: 72,\n    I: 73,\n    J: 74,\n    K: 75,\n    L: 76,\n    M: 77,\n    N: 78,\n    O: 79,\n    P: 80,\n    Q: 81,\n    R: 82,\n    S: 83,\n    T: 84,\n    U: 85,\n    V: 86,\n    W: 87,\n    X: 88,\n    Y: 89,\n    Z: 90,\n    OS_KEY: 91,\n    _92: 92,\n    CONTEXT_MENU: 93,\n    _94: 94,\n    SLEEP: 95,\n    NUMPAD0: 96,\n    NUMPAD1: 97,\n    NUMPAD2: 98,\n    NUMPAD3: 99,\n    NUMPAD4: 100,\n    NUMPAD5: 101,\n    NUMPAD6: 102,\n    NUMPAD7: 103,\n    NUMPAD8: 104,\n    NUMPAD9: 105,\n    MULTIPLY: 106,\n    ADD: 107,\n    SEPARATOR: 108,\n    SUBTRACT: 109,\n    DECIMAL: 110,\n    DIVIDE: 111,\n    F1: 112,\n    F2: 113,\n    F3: 114,\n    F4: 115,\n    F5: 116,\n    F6: 117,\n    F7: 118,\n    F8: 119,\n    F9: 120,\n    F10: 121,\n    F11: 122,\n    F12: 123,\n    F13: 124,\n    F14: 125,\n    F15: 126,\n    F16: 127,\n    F17: 128,\n    F18: 129,\n    F19: 130,\n    F20: 131,\n    F21: 132,\n    F22: 133,\n    F23: 134,\n    F24: 135,\n    _136: 136,\n    _137: 137,\n    _138: 138,\n    _139: 139,\n    _140: 140,\n    _141: 141,\n    _142: 142,\n    _143: 143,\n    NUM_LOCK: 144,\n    SCROLL_LOCK: 145,\n    WIN_OEM_FJ_JISHO: 146,\n    WIN_OEM_FJ_MASSHOU: 147,\n    WIN_OEM_FJ_TOUROKU: 148,\n    WIN_OEM_FJ_LOYA: 149,\n    WIN_OEM_FJ_ROYA: 150,\n    _151: 151,\n    _152: 152,\n    _153: 153,\n    _154: 154,\n    _155: 155,\n    _156: 156,\n    _157: 157,\n    _158: 158,\n    _159: 159,\n    CIRCUMFLEX: 160,\n    EXCLAMATION: 161,\n    DOUBLE_QUOTE: 162,\n    HASH: 163,\n    DOLLAR: 164,\n    PERCENT: 165,\n    AMPERSAND: 166,\n    UNDERSCORE: 167,\n    OPEN_PAREN: 168,\n    CLOSE_PAREN: 169,\n    ASTERISK: 170,\n    PLUS: 171,\n    PIPE: 172,\n    HYPHEN_MINUS: 173,\n    OPEN_CURLY_BRACKET: 174,\n    CLOSE_CURLY_BRACKET: 175,\n    TILDE: 176,\n    _177: 177,\n    _178: 178,\n    _179: 179,\n    _180: 180,\n    VOLUME_MUTE: 181,\n    VOLUME_DOWN: 182,\n    VOLUME_UP: 183,\n    _184: 184,\n    _185: 185,\n    SEMICOLON: 186,\n    EQUALS: 187,\n    COMMA: 188,\n    MINUS: 189,\n    PERIOD: 190,\n    SLASH: 191,\n    BACK_QUOTE: 192,\n    _193: 193,\n    _194: 194,\n    _195: 195,\n    _196: 196,\n    _197: 197,\n    _198: 198,\n    _199: 199,\n    _200: 200,\n    _201: 201,\n    _202: 202,\n    _203: 203,\n    _204: 204,\n    _205: 205,\n    _206: 206,\n    _207: 207,\n    _208: 208,\n    _209: 209,\n    _210: 210,\n    _211: 211,\n    _212: 212,\n    _213: 213,\n    _214: 214,\n    _215: 215,\n    _216: 216,\n    _217: 217,\n    _218: 218,\n    OPEN_BRACKET: 219,\n    BACK_SLASH: 220,\n    CLOSE_BRACKET: 221,\n    QUOTE: 222,\n    _223: 223,\n    META: 224,\n    ALTGR: 225,\n    _226: 226,\n    WIN_ICO_HELP: 227,\n    WIN_ICO_00: 228,\n    _229: 229,\n    WIN_ICO_CLEAR: 230,\n    _231: 231,\n    _232: 232,\n    WIN_OEM_RESET: 233,\n    WIN_OEM_JUMP: 234,\n    WIN_OEM_PA1: 235,\n    WIN_OEM_PA2: 236,\n    WIN_OEM_PA3: 237,\n    WIN_OEM_WSCTRL: 238,\n    WIN_OEM_CUSEL: 239,\n    WIN_OEM_ATTN: 240,\n    WIN_OEM_FINISH: 241,\n    WIN_OEM_COPY: 242,\n    WIN_OEM_AUTO: 243,\n    WIN_OEM_ENLW: 244,\n    WIN_OEM_BACKTAB: 245,\n    ATTN: 246,\n    CRSEL: 247,\n    EXSEL: 248,\n    EREOF: 249,\n    PLAY: 250,\n    ZOOM: 251,\n    _252: 252,\n    PA1: 253,\n    WIN_OEM_CLEAR: 254,\n    _255: 255,\n};\n\nexport default KeyCode;",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/const/KeyCode.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 257,
    "kind": "variable",
    "name": "KeyCode",
    "memberof": "src/const/KeyCode.js",
    "static": true,
    "longname": "src/const/KeyCode.js~KeyCode",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/const/KeyCode.js",
    "importStyle": "KeyCode",
    "description": "Keycode ENUM of Key: KeyCodeValue. Keys which start with an underscore should be ignored.",
    "lineNumber": 4,
    "type": {
      "types": [
        "{\"_0\": *, \"_1\": number, \"_2\": number, \"CANCEL\": number, \"_4\": number, \"_5\": number, \"HELP\": number, \"_7\": number, \"BACK_SPACE\": number, \"TAB\": number, \"_10\": number, \"_11\": number, \"CLEAR\": number, \"ENTER\": number, \"ENTER_SPECIAL\": number, \"_15\": number, \"SHIFT\": number, \"CONTROL\": number, \"ALT\": number, \"PAUSE\": number, \"CAPS_LOCK\": number, \"KANA\": number, \"EISU\": number, \"JUNJA\": number, \"FINAL\": number, \"HANJA\": number, \"_26\": number, \"ESCAPE\": number, \"CONVERT\": number, \"NONCONVERT\": number, \"ACCEPT\": number, \"MODECHANGE\": number, \"SPACE\": number, \"PAGE_UP\": number, \"PAGE_DOWN\": number, \"END\": number, \"HOME\": number, \"LEFT\": number, \"UP\": number, \"RIGHT\": number, \"DOWN\": number, \"SELECT\": number, \"PRINT\": number, \"EXECUTE\": number, \"PRINTSCREEN\": number, \"INSERT\": number, \"DELETE\": number, \"_47\": number, \"NUMBER_0\": number, \"NUMBER_1\": number, \"NUMBER_2\": number, \"NUMBER_3\": number, \"NUMBER_4\": number, \"NUMBER_5\": number, \"NUMBER_6\": number, \"NUMBER_7\": number, \"NUMBER_8\": number, \"NUMBER_9\": number, \"COLON\": number, \"SEMICOLON\": number, \"LESS_THAN\": number, \"EQUALS\": number, \"GREATER_THAN\": number, \"QUESTION_MARK\": number, \"AT\": number, \"A\": number, \"B\": number, \"C\": number, \"D\": number, \"E\": number, \"F\": number, \"G\": number, \"H\": number, \"I\": number, \"J\": number, \"K\": number, \"L\": number, \"M\": number, \"N\": number, \"O\": number, \"P\": number, \"Q\": number, \"R\": number, \"S\": number, \"T\": number, \"U\": number, \"V\": number, \"W\": number, \"X\": number, \"Y\": number, \"Z\": number, \"OS_KEY\": number, \"_92\": number, \"CONTEXT_MENU\": number, \"_94\": number, \"SLEEP\": number, \"NUMPAD0\": number, \"NUMPAD1\": number, \"NUMPAD2\": number, \"NUMPAD3\": number, \"NUMPAD4\": number, \"NUMPAD5\": number, \"NUMPAD6\": number, \"NUMPAD7\": number, \"NUMPAD8\": number, \"NUMPAD9\": number, \"MULTIPLY\": number, \"ADD\": number, \"SEPARATOR\": number, \"SUBTRACT\": number, \"DECIMAL\": number, \"DIVIDE\": number, \"F1\": number, \"F2\": number, \"F3\": number, \"F4\": number, \"F5\": number, \"F6\": number, \"F7\": number, \"F8\": number, \"F9\": number, \"F10\": number, \"F11\": number, \"F12\": number, \"F13\": number, \"F14\": number, \"F15\": number, \"F16\": number, \"F17\": number, \"F18\": number, \"F19\": number, \"F20\": number, \"F21\": number, \"F22\": number, \"F23\": number, \"F24\": number, \"_136\": number, \"_137\": number, \"_138\": number, \"_139\": number, \"_140\": number, \"_141\": number, \"_142\": number, \"_143\": number, \"NUM_LOCK\": number, \"SCROLL_LOCK\": number, \"WIN_OEM_FJ_JISHO\": number, \"WIN_OEM_FJ_MASSHOU\": number, \"WIN_OEM_FJ_TOUROKU\": number, \"WIN_OEM_FJ_LOYA\": number, \"WIN_OEM_FJ_ROYA\": number, \"_151\": number, \"_152\": number, \"_153\": number, \"_154\": number, \"_155\": number, \"_156\": number, \"_157\": number, \"_158\": number, \"_159\": number, \"CIRCUMFLEX\": number, \"EXCLAMATION\": number, \"DOUBLE_QUOTE\": number, \"HASH\": number, \"DOLLAR\": number, \"PERCENT\": number, \"AMPERSAND\": number, \"UNDERSCORE\": number, \"OPEN_PAREN\": number, \"CLOSE_PAREN\": number, \"ASTERISK\": number, \"PLUS\": number, \"PIPE\": number, \"HYPHEN_MINUS\": number, \"OPEN_CURLY_BRACKET\": number, \"CLOSE_CURLY_BRACKET\": number, \"TILDE\": number, \"_177\": number, \"_178\": number, \"_179\": number, \"_180\": number, \"VOLUME_MUTE\": number, \"VOLUME_DOWN\": number, \"VOLUME_UP\": number, \"_184\": number, \"_185\": number, \"COMMA\": number, \"MINUS\": number, \"PERIOD\": number, \"SLASH\": number, \"BACK_QUOTE\": number, \"_193\": number, \"_194\": number, \"_195\": number, \"_196\": number, \"_197\": number, \"_198\": number, \"_199\": number, \"_200\": number, \"_201\": number, \"_202\": number, \"_203\": number, \"_204\": number, \"_205\": number, \"_206\": number, \"_207\": number, \"_208\": number, \"_209\": number, \"_210\": number, \"_211\": number, \"_212\": number, \"_213\": number, \"_214\": number, \"_215\": number, \"_216\": number, \"_217\": number, \"_218\": number, \"OPEN_BRACKET\": number, \"BACK_SLASH\": number, \"CLOSE_BRACKET\": number, \"QUOTE\": number, \"_223\": number, \"META\": number, \"ALTGR\": number, \"_226\": number, \"WIN_ICO_HELP\": number, \"WIN_ICO_00\": number, \"_229\": number, \"WIN_ICO_CLEAR\": number, \"_231\": number, \"_232\": number, \"WIN_OEM_RESET\": number, \"WIN_OEM_JUMP\": number, \"WIN_OEM_PA1\": number, \"WIN_OEM_PA2\": number, \"WIN_OEM_PA3\": number, \"WIN_OEM_WSCTRL\": number, \"WIN_OEM_CUSEL\": number, \"WIN_OEM_ATTN\": number, \"WIN_OEM_FINISH\": number, \"WIN_OEM_COPY\": number, \"WIN_OEM_AUTO\": number, \"WIN_OEM_ENLW\": number, \"WIN_OEM_BACKTAB\": number, \"ATTN\": number, \"CRSEL\": number, \"EXSEL\": number, \"EREOF\": number, \"PLAY\": number, \"ZOOM\": number, \"_252\": number, \"PA1\": number, \"WIN_OEM_CLEAR\": number, \"_255\": number}"
      ]
    }
  },
  {
    "__docId__": 258,
    "kind": "file",
    "name": "src/const/VertexShader.js",
    "content": "/**\n * Default vertex shader that handles 2D matricies (3x3 matricies) to screen space.\n */\nexport const DEFAULT_V = `#version 300 es\n\n//in\nin vec2 a_position;\nin vec2 a_texcoord;\nuniform mat3 u_matrix;\nuniform float u_depth;\n\n\n//out\nout vec2 v_texcoord;\n\nvoid main() {\n  gl_Position = vec4((u_matrix * vec3(a_position, 1)).xy, u_depth, 1);\n  v_texcoord = a_texcoord;\n}\n`",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/const/VertexShader.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 259,
    "kind": "variable",
    "name": "DEFAULT_V",
    "memberof": "src/const/VertexShader.js",
    "static": true,
    "longname": "src/const/VertexShader.js~DEFAULT_V",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/const/VertexShader.js",
    "importStyle": "{DEFAULT_V}",
    "description": "Default vertex shader that handles 2D matricies (3x3 matricies) to screen space.",
    "lineNumber": 4,
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 260,
    "kind": "file",
    "name": "src/entry.js",
    "content": "/**\n * Export management for all Engine files.\n */\n\n//base\nimport Updateable from './base/Updateable';\n\n//component\nimport Animation from './component/Animation';\nimport Audio from './component/Audio';\nimport BoxCollider from './component/BoxCollider';\nimport CircleCollider from './component/CircleCollider';\nimport Collider from './component/Collider';\nimport Collider2D from './component/Collider2D';\nimport Component from './component/Component';\nimport Controller from './component/Controller';\nimport ClickController from './component/ClickController';\nimport Physics from './component/Physics';\nimport Physics2D from './component/Physics2D';\nimport Renderable from './component/Renderable';\nimport Renderable2D from './component/Renderable2D';\nimport Renderable2DGrid from './component/Renderable2DGrid';\nimport Renderable2DMultitex from './component/Renderable2DMultitex';\nimport RenderableText from './component/RenderableText';\nimport RenderableSquare from './component/RenderableSquare';\nimport TopDownController from './component/TopDownController';\nimport Transform from './component/Transform';\n\n//internal\nimport Bounds from './internal/Bounds';\nimport Point from './internal/Point';\n\n//manager\nimport AudioManager from './manager/AudioManager';\nimport DOMManager from './manager/DOMManager';\nimport EngineManager from './manager/EngineManager';\nimport InputManager from './manager/InputManager';\nimport Manager from './manager/Manager';\nimport UpdateableManager from './manager/UpdateableManager';\nimport PersistentManager from './manager/PersistentManager';\nimport PhysicsManager from './manager/PhysicsManager';\nimport RenderManager from './manager/RenderManager';\nimport SceneManager from './manager/SceneManager';\nimport TextureManager from './manager/TextureManager';\nimport UIManager from './manager/UIManager';\n\n//object\nimport GameObject from './object/GameObject';\nimport SceneObject from './object/SceneObject';\nimport PersistentObject from './object/PersistentObject';\n\n//prefab\nimport UIElement from './prefab/ui/UIElement';\nimport UIPanel from './prefab/ui/UIPanel';\nimport UIText from './prefab/ui/UIText';\nimport UIButton from './prefab/ui/UIButton';\nimport UITextInput from './prefab/ui/UITextInput';\n\n//render\n    //WebGL\n    import Matrix from './render/WebGL/Matrix';\n    import Matrix3 from './render/WebGL/Matrix3';\nimport Camera from './render/Camera';\nimport Light from './render/Light';\nimport Viewport from './render/Viewport';\n\n//scene\nimport Scene from './scene/Scene';\nimport BasicScene from './scene/BasicScene';\n\n//utils\nimport * as MathUtil from './utils/MathUtil';\nimport Messager from './utils/Messager';\nimport Loader from './utils/Loader';\n\n//const\nimport KeyCode from './const/KeyCode';\n\nimport Engine from './Engine';\n\nexport {\n    KeyCode,\n    Updateable,\n    Audio,\n    BoxCollider,\n    CircleCollider,\n    Collider,\n    Collider2D,\n    Component,\n    Controller,\n    Physics,\n    Physics2D,\n    Renderable,\n    Renderable2D,\n    RenderableSquare,\n    Transform,\n    FragmentShader,\n    VertexShader,\n    Bounds,\n    Point,\n    AudioManager,\n    DOMManager,\n    EngineManager,\n    InputManager,\n    Manager,\n    UpdateableManager,\n    PersistentManager,\n    PhysicsManager,\n    RenderManager,\n    SceneManager,\n    GameObject,\n    SceneObject,\n    PersistentObject,\n    Matrix,\n    Matrix3,\n    Camera,\n    Light,\n    Viewport,\n    Scene,\n    BasicScene,\n    MathUtil,\n    Messager,\n    Engine,\n    TopDownController,\n    ClickController,\n    TextureManager,\n    Loader,\n    Animation,\n    Renderable2DGrid,\n    RenderableText,\n    UIElement,\n    UIButton,\n    UIManager,\n    UIPanel,\n    UIText,\n    UITextInput\n};\n\n\n\n",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/entry.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 261,
    "kind": "file",
    "name": "src/internal/Bounds.js",
    "content": "import Point from './Point';\n\n/**\n * Two points which represent a bounding square.\n * \n * TODO: Add z index for 3D.\n */\nexport default class Bounds {\n    /**\n     * \n     * @param {number} x The x position of the bounding box. (x1)\n     * @param {number} y The y position of the bounding box. (y1)\n     * @param {number} w The end x position, or width, of the bounding box. (x2)\n     * @param {number} h The end x position, or height, of the bounding box. (y2)\n     */\n    constructor(x, y, w, h) {\n        this.p1 = new Point(x, y);\n        this.p2 = new Point(w, h);\n    }\n\n    /**\n     * Sets the bounding box to a new position.\n     * \n     * @param {number} x The x position of the bounding box. (x1)\n     * @param {number} y The y position of the bounding box. (y1)\n     * @param {number} w The end x position, or width, of the bounding box. (x2)\n     * @param {number} h The end x position, or height, of the bounding box. (y2)\n     */\n    set(x, y, w, h) {\n        this.p1.set(x, y);\n        this.p2.set(w, h);\n    }\n\n    /**\n     * Checks to see if the point [parameter 0] is within bounds.\n     * \n     * @param {Point} point Point to check within bounds.\n     */\n    isInBounds(point) {\n        return (point.x >= this.p1.x && point.x <= this.p2.x\n                && point.y >= this.p1.y && point.y <= this.p2.y);\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/internal/Bounds.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 262,
    "kind": "class",
    "name": "Bounds",
    "memberof": "src/internal/Bounds.js",
    "static": true,
    "longname": "src/internal/Bounds.js~Bounds",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/internal/Bounds.js",
    "importStyle": "Bounds",
    "description": "Two points which represent a bounding square.\n\nTODO: Add z index for 3D.",
    "lineNumber": 8,
    "interface": false
  },
  {
    "__docId__": 263,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/internal/Bounds.js~Bounds",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/internal/Bounds.js~Bounds#constructor",
    "access": "public",
    "description": "",
    "lineNumber": 16,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "The x position of the bounding box. (x1)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "y",
        "description": "The y position of the bounding box. (y1)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "w",
        "description": "The end x position, or width, of the bounding box. (x2)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "h",
        "description": "The end x position, or height, of the bounding box. (y2)"
      }
    ]
  },
  {
    "__docId__": 264,
    "kind": "member",
    "name": "p1",
    "memberof": "src/internal/Bounds.js~Bounds",
    "static": false,
    "longname": "src/internal/Bounds.js~Bounds#p1",
    "access": "public",
    "description": null,
    "lineNumber": 17,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 265,
    "kind": "member",
    "name": "p2",
    "memberof": "src/internal/Bounds.js~Bounds",
    "static": false,
    "longname": "src/internal/Bounds.js~Bounds#p2",
    "access": "public",
    "description": null,
    "lineNumber": 18,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 266,
    "kind": "method",
    "name": "set",
    "memberof": "src/internal/Bounds.js~Bounds",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/internal/Bounds.js~Bounds#set",
    "access": "public",
    "description": "Sets the bounding box to a new position.",
    "lineNumber": 29,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "The x position of the bounding box. (x1)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "y",
        "description": "The y position of the bounding box. (y1)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "w",
        "description": "The end x position, or width, of the bounding box. (x2)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "h",
        "description": "The end x position, or height, of the bounding box. (y2)"
      }
    ],
    "return": null
  },
  {
    "__docId__": 267,
    "kind": "method",
    "name": "isInBounds",
    "memberof": "src/internal/Bounds.js~Bounds",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/internal/Bounds.js~Bounds#isInBounds",
    "access": "public",
    "description": "Checks to see if the point [parameter 0] is within bounds.",
    "lineNumber": 39,
    "params": [
      {
        "nullable": null,
        "types": [
          "Point"
        ],
        "spread": false,
        "optional": false,
        "name": "point",
        "description": "Point to check within bounds."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 268,
    "kind": "file",
    "name": "src/internal/Color.js",
    "content": "/**\n * A color with r, g, b, a values between 0 and 1.\n * \n * Contains instatiation functions for creating default \n * colors without explicitly defining the values.\n */\nexport default class Color {\n    /**\n     * Builds a color into an array for easy access for WebGL.\n     * \n     * @param {number} r Red value between 0 - 1\n     * @param {number} g Green value between 0 - 1\n     * @param {number} b Blue value between 0 - 1\n     * @param {number} a Alpha value between 0 - 1\n     */\n    constructor(r = 1, g = 1, b = 1, a = 1) {\n        this.color = [this.minmax(r), this.minmax(g), this.minmax(b), this.minmax(a)];\n    }\n\n    minmax(val, min = 0, max = 1) {\n        return Math.max(min, Math.min(max, val));\n    }\n\n    /**\n     * \n     * @param {number} r Red value between 0 - 1. Defaults to previous value.\n     * @param {number} g Green value between 0 - 1. Defaults to previous value.\n     * @param {number} b Blue value between 0 - 1. Defaults to previous value.\n     * @param {number} a Alpha value between 0 - 1. Defaults to previous value.\n     */\n    set(r = this.color[0], g = this.color[1], b = this.color[2], a = this.color[3]) {\n        this.color = [this.minmax(r), this.minmax(g), this.minmax(b), this.minmax(a)];\n    }\n\n    /**\n     * Returns a new color with the color green. Value: #00FF00 with alpha 1.\n     */\n    static green() {\n        return new Color(0, 1, 0, 1);\n    }\n\n    /**\n     * Returns a new color with the color blue. Value: #0000FF with alpha 1.\n     */\n    static blue() {\n        return new Color(0, 0, 1, 1);\n    }\n\n    /**\n     * Returns a new color with the color red. Value: #FF0000 with alpha 1.\n     */\n    static red() {\n        return new Color(1, 0, 0, 1);\n    }\n\n    /**\n     * Returns a new color with the color pink. Value: #FF1493 with alpha 1.\n     */\n    static pink() {\n        return new Color([1, 0.078, 0.576, 1]);\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/internal/Color.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 269,
    "kind": "class",
    "name": "Color",
    "memberof": "src/internal/Color.js",
    "static": true,
    "longname": "src/internal/Color.js~Color",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/internal/Color.js",
    "importStyle": "Color",
    "description": "A color with r, g, b, a values between 0 and 1.\n\nContains instatiation functions for creating default \ncolors without explicitly defining the values.",
    "lineNumber": 7,
    "interface": false
  },
  {
    "__docId__": 270,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/internal/Color.js~Color",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/internal/Color.js~Color#constructor",
    "access": "public",
    "description": "Builds a color into an array for easy access for WebGL.",
    "lineNumber": 16,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "r",
        "description": "Red value between 0 - 1"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "g",
        "description": "Green value between 0 - 1"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "b",
        "description": "Blue value between 0 - 1"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "a",
        "description": "Alpha value between 0 - 1"
      }
    ]
  },
  {
    "__docId__": 271,
    "kind": "member",
    "name": "color",
    "memberof": "src/internal/Color.js~Color",
    "static": false,
    "longname": "src/internal/Color.js~Color#color",
    "access": "public",
    "description": null,
    "lineNumber": 17,
    "undocument": true,
    "type": {
      "types": [
        "undefined[]"
      ]
    }
  },
  {
    "__docId__": 272,
    "kind": "method",
    "name": "minmax",
    "memberof": "src/internal/Color.js~Color",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/internal/Color.js~Color#minmax",
    "access": "public",
    "description": null,
    "lineNumber": 20,
    "undocument": true,
    "params": [
      {
        "name": "val",
        "types": [
          "*"
        ]
      },
      {
        "name": "min",
        "optional": true,
        "types": [
          "number"
        ],
        "defaultRaw": 0,
        "defaultValue": "0"
      },
      {
        "name": "max",
        "optional": true,
        "types": [
          "number"
        ],
        "defaultRaw": 1,
        "defaultValue": "1"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 273,
    "kind": "method",
    "name": "set",
    "memberof": "src/internal/Color.js~Color",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/internal/Color.js~Color#set",
    "access": "public",
    "description": "",
    "lineNumber": 31,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "r",
        "description": "Red value between 0 - 1. Defaults to previous value."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "g",
        "description": "Green value between 0 - 1. Defaults to previous value."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "b",
        "description": "Blue value between 0 - 1. Defaults to previous value."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "a",
        "description": "Alpha value between 0 - 1. Defaults to previous value."
      }
    ],
    "return": null
  },
  {
    "__docId__": 275,
    "kind": "method",
    "name": "green",
    "memberof": "src/internal/Color.js~Color",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/internal/Color.js~Color.green",
    "access": "public",
    "description": "Returns a new color with the color green. Value: #00FF00 with alpha 1.",
    "lineNumber": 38,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 276,
    "kind": "method",
    "name": "blue",
    "memberof": "src/internal/Color.js~Color",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/internal/Color.js~Color.blue",
    "access": "public",
    "description": "Returns a new color with the color blue. Value: #0000FF with alpha 1.",
    "lineNumber": 45,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 277,
    "kind": "method",
    "name": "red",
    "memberof": "src/internal/Color.js~Color",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/internal/Color.js~Color.red",
    "access": "public",
    "description": "Returns a new color with the color red. Value: #FF0000 with alpha 1.",
    "lineNumber": 52,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 278,
    "kind": "method",
    "name": "pink",
    "memberof": "src/internal/Color.js~Color",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/internal/Color.js~Color.pink",
    "access": "public",
    "description": "Returns a new color with the color pink. Value: #FF1493 with alpha 1.",
    "lineNumber": 59,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 279,
    "kind": "file",
    "name": "src/internal/Point.js",
    "content": "/**\n * A point with x, y, z values. It may also be referred to as a Vector.\n */\nexport default class Point {\n    /**\n     * An x, y, z point. Default parameters are set as 0.\n     * \n     * @param {number} x X position of the point.\n     * @param {number} y Y position of the point.\n     * @param {number} z Z position of the point.\n     */\n    constructor(x = 0, y = 0, z = 0) {\n        /**\n         * {number} X position of the point.\n         */\n        this.x = x;\n\n        /**\n         * {number} Y position of the point.\n         */\n\n        this.y = y;\n        /**\n         * {number} Z position of the point.\n         */\n        this.z = z;\n    }\n    \n    /**\n     * Sets the point to a new x, y, z. Previous values are set\n     * as default parameters.\n     * \n     * @param {number} x X position of the point.\n     * @param {number} y Y position of the point.\n     * @param {number} z Z position of the point.\n     */\n    set(x = this.x, y = this.y, z = this.z) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n    }\n\n    /**\n     * Returns a copy of a point.\n     * \n     * @param {Point} point Point to copy.\n     */\n    static copy(point) {\n        return new Point(point.x, point.y, point.z);\n    }\n\n    /**\n     * Divides the point by a number. The first parameter will define all x, y, z values for division\n     * if the 2nd and 3rd are not specified.\n     * \n     * @param {number} divX \n     * @param {number} divY \n     * @param {number} divZ \n     * \n     * @returns {Point} This point after modification.\n     */\n    divide(divX, divY = divX, divZ = divX) {\n        this.x /= divX;\n        this.y /= divY;\n        this.z /= divZ;\n        return this;\n    }\n\n    /**\n     * Multiplies the point by a number. The first parameter will define all x, y, z values for multiplication\n     * if the 2nd and 3rd are not specified.\n     * \n     * @param {number} divX \n     * @param {number} divY \n     * @param {number} divZ \n     * \n     * @returns {Point} This point after modification.\n     */\n    multiply(multiX, multiY = multiX, multiZ = multiX) {\n        this.x *= multiX;\n        this.y *= multiY;\n        this.z *= multiZ;\n        return this;\n    }\n\n    /**\n     * Adds the point by a number(s). The first parameter will define all x, y, z values for addition\n     * if the 2nd and 3rd are not specified.\n     * \n     * @param {number} divX \n     * @param {number} divY \n     * @param {number} divZ \n     * \n     * @returns {Point} This point after modification.\n     */\n    add(addX, addY = addX, addZ = addX) {\n        this.x += addX;\n        this.y += addY;\n        this.z += addZ;\n        return this;\n    }\n\n    /**\n     * Subtracts the point by a number(s). The first parameter will define all x, y, z values for subtraction\n     * if the 2nd and 3rd are not specified.\n     * \n     * @param {number} divX \n     * @param {number} divY \n     * @param {number} divZ \n     * \n     * @returns {Point} This point after modification.\n     */\n    subtract(subX, subY = subX, subZ = subX) {\n        this.x -= subX;\n        this.y -= subY;\n        this.z -= subZ;\n        return this;\n    }\n\n    /**\n     * Gets the length of this point as a vector. sqrt(x^2 + y^2 + z^2).\n     */\n    length() {\n        return Math.sqrt((this.x * this.x) + (this.y * this.y) + (this.z * this.z));\n    }\n\n    /**\n     * Normalizes this vector to a unit vector.\n     */\n    normalize() {\n        let len = this.length();\n        if (len !== 0)\n            this.divide(len);\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/internal/Point.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 280,
    "kind": "class",
    "name": "Point",
    "memberof": "src/internal/Point.js",
    "static": true,
    "longname": "src/internal/Point.js~Point",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/internal/Point.js",
    "importStyle": "Point",
    "description": "A point with x, y, z values. It may also be referred to as a Vector.",
    "lineNumber": 4,
    "interface": false
  },
  {
    "__docId__": 281,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/internal/Point.js~Point",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/internal/Point.js~Point#constructor",
    "access": "public",
    "description": "An x, y, z point. Default parameters are set as 0.",
    "lineNumber": 12,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "X position of the point."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "y",
        "description": "Y position of the point."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "z",
        "description": "Z position of the point."
      }
    ]
  },
  {
    "__docId__": 282,
    "kind": "member",
    "name": "x",
    "memberof": "src/internal/Point.js~Point",
    "static": false,
    "longname": "src/internal/Point.js~Point#x",
    "access": "public",
    "description": "{number} X position of the point.",
    "lineNumber": 16,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 283,
    "kind": "member",
    "name": "y",
    "memberof": "src/internal/Point.js~Point",
    "static": false,
    "longname": "src/internal/Point.js~Point#y",
    "access": "public",
    "description": "{number} Y position of the point.",
    "lineNumber": 22,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 284,
    "kind": "member",
    "name": "z",
    "memberof": "src/internal/Point.js~Point",
    "static": false,
    "longname": "src/internal/Point.js~Point#z",
    "access": "public",
    "description": "{number} Z position of the point.",
    "lineNumber": 26,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 285,
    "kind": "method",
    "name": "set",
    "memberof": "src/internal/Point.js~Point",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/internal/Point.js~Point#set",
    "access": "public",
    "description": "Sets the point to a new x, y, z. Previous values are set\nas default parameters.",
    "lineNumber": 37,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "X position of the point."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "y",
        "description": "Y position of the point."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "z",
        "description": "Z position of the point."
      }
    ],
    "return": null
  },
  {
    "__docId__": 289,
    "kind": "method",
    "name": "copy",
    "memberof": "src/internal/Point.js~Point",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/internal/Point.js~Point.copy",
    "access": "public",
    "description": "Returns a copy of a point.",
    "lineNumber": 48,
    "params": [
      {
        "nullable": null,
        "types": [
          "Point"
        ],
        "spread": false,
        "optional": false,
        "name": "point",
        "description": "Point to copy."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 290,
    "kind": "method",
    "name": "divide",
    "memberof": "src/internal/Point.js~Point",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/internal/Point.js~Point#divide",
    "access": "public",
    "description": "Divides the point by a number. The first parameter will define all x, y, z values for division\nif the 2nd and 3rd are not specified.",
    "lineNumber": 62,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Point} This point after modification."
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "divX",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "divY",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "divZ",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Point"
      ],
      "spread": false,
      "description": "This point after modification."
    }
  },
  {
    "__docId__": 294,
    "kind": "method",
    "name": "multiply",
    "memberof": "src/internal/Point.js~Point",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/internal/Point.js~Point#multiply",
    "access": "public",
    "description": "Multiplies the point by a number. The first parameter will define all x, y, z values for multiplication\nif the 2nd and 3rd are not specified.",
    "lineNumber": 79,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Point} This point after modification."
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "divX",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "divY",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "divZ",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Point"
      ],
      "spread": false,
      "description": "This point after modification."
    }
  },
  {
    "__docId__": 298,
    "kind": "method",
    "name": "add",
    "memberof": "src/internal/Point.js~Point",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/internal/Point.js~Point#add",
    "access": "public",
    "description": "Adds the point by a number(s). The first parameter will define all x, y, z values for addition\nif the 2nd and 3rd are not specified.",
    "lineNumber": 96,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Point} This point after modification."
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "divX",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "divY",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "divZ",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Point"
      ],
      "spread": false,
      "description": "This point after modification."
    }
  },
  {
    "__docId__": 302,
    "kind": "method",
    "name": "subtract",
    "memberof": "src/internal/Point.js~Point",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/internal/Point.js~Point#subtract",
    "access": "public",
    "description": "Subtracts the point by a number(s). The first parameter will define all x, y, z values for subtraction\nif the 2nd and 3rd are not specified.",
    "lineNumber": 113,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Point} This point after modification."
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "divX",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "divY",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "divZ",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Point"
      ],
      "spread": false,
      "description": "This point after modification."
    }
  },
  {
    "__docId__": 306,
    "kind": "method",
    "name": "length",
    "memberof": "src/internal/Point.js~Point",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/internal/Point.js~Point#length",
    "access": "public",
    "description": "Gets the length of this point as a vector. sqrt(x^2 + y^2 + z^2).",
    "lineNumber": 123,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 307,
    "kind": "method",
    "name": "normalize",
    "memberof": "src/internal/Point.js~Point",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/internal/Point.js~Point#normalize",
    "access": "public",
    "description": "Normalizes this vector to a unit vector.",
    "lineNumber": 130,
    "params": [],
    "return": null
  },
  {
    "__docId__": 308,
    "kind": "file",
    "name": "src/internal/PostBoard.js",
    "content": "/**\n * Experemental! Still looking at other ways to implement this that would be more useful\n * for the engine, and lower lookup, post, and watch runtimes.\n * \n * A \"PostBoard\" is a messaging system that anyone who has reference to may \"post\" updates to.\n * Posts are any type of data, assigned by key.\n * Other objects may look at \"posts\", and continuously watch a \"post\".\n */\n\nexport default class PostBoard {\n    constructor() {\n        this.posts = {};\n        this.watchers = {};\n        this.watcherID = 0;\n    }\n\n    look(key) {\n        return this.posts[key];\n    }\n\n    post(key, message) {\n        this.posts[key] = message;\n        let watcherKeys = Object.keys(this.watchers[key]);\n        for (let i = 0; i < this.watcherKeys.length; i++) {\n            this.watchers[key][watcherKeys[i]](message);\n        }\n    }\n\n    watch(key, callback, id = null) {\n        if (id == null)\n            id = this.watcherID++;\n        this.watchers[key][id] = callback;\n        return id;\n    }\n\n    close(key, id) {\n        delete this.watchers[key][id];\n    }\n\n    closeAll(id) {\n        let keyKeys = Object.keys(this.watchers);\n        for (let i = 0; i < this.keyKeys.length; i++) {\n            delete this.watchers[keyKeys[i]][id];\n        }\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/internal/PostBoard.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 309,
    "kind": "class",
    "name": "PostBoard",
    "memberof": "src/internal/PostBoard.js",
    "static": true,
    "longname": "src/internal/PostBoard.js~PostBoard",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/internal/PostBoard.js",
    "importStyle": "PostBoard",
    "description": "Experemental! Still looking at other ways to implement this that would be more useful\nfor the engine, and lower lookup, post, and watch runtimes.\n\nA \"PostBoard\" is a messaging system that anyone who has reference to may \"post\" updates to.\nPosts are any type of data, assigned by key.\nOther objects may look at \"posts\", and continuously watch a \"post\".",
    "lineNumber": 10,
    "interface": false
  },
  {
    "__docId__": 310,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/internal/PostBoard.js~PostBoard",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/internal/PostBoard.js~PostBoard#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 11,
    "undocument": true
  },
  {
    "__docId__": 311,
    "kind": "member",
    "name": "posts",
    "memberof": "src/internal/PostBoard.js~PostBoard",
    "static": false,
    "longname": "src/internal/PostBoard.js~PostBoard#posts",
    "access": "public",
    "description": null,
    "lineNumber": 12,
    "undocument": true,
    "type": {
      "types": [
        "{}"
      ]
    }
  },
  {
    "__docId__": 312,
    "kind": "member",
    "name": "watchers",
    "memberof": "src/internal/PostBoard.js~PostBoard",
    "static": false,
    "longname": "src/internal/PostBoard.js~PostBoard#watchers",
    "access": "public",
    "description": null,
    "lineNumber": 13,
    "undocument": true,
    "type": {
      "types": [
        "{}"
      ]
    }
  },
  {
    "__docId__": 313,
    "kind": "member",
    "name": "watcherID",
    "memberof": "src/internal/PostBoard.js~PostBoard",
    "static": false,
    "longname": "src/internal/PostBoard.js~PostBoard#watcherID",
    "access": "public",
    "description": null,
    "lineNumber": 14,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 314,
    "kind": "method",
    "name": "look",
    "memberof": "src/internal/PostBoard.js~PostBoard",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/internal/PostBoard.js~PostBoard#look",
    "access": "public",
    "description": null,
    "lineNumber": 17,
    "undocument": true,
    "params": [
      {
        "name": "key",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 315,
    "kind": "method",
    "name": "post",
    "memberof": "src/internal/PostBoard.js~PostBoard",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/internal/PostBoard.js~PostBoard#post",
    "access": "public",
    "description": null,
    "lineNumber": 21,
    "undocument": true,
    "params": [
      {
        "name": "key",
        "types": [
          "*"
        ]
      },
      {
        "name": "message",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 316,
    "kind": "method",
    "name": "watch",
    "memberof": "src/internal/PostBoard.js~PostBoard",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/internal/PostBoard.js~PostBoard#watch",
    "access": "public",
    "description": null,
    "lineNumber": 29,
    "undocument": true,
    "params": [
      {
        "name": "key",
        "types": [
          "*"
        ]
      },
      {
        "name": "callback",
        "types": [
          "*"
        ]
      },
      {
        "name": "id",
        "optional": true,
        "types": [
          "undefined"
        ],
        "defaultValue": "undefined"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 317,
    "kind": "method",
    "name": "close",
    "memberof": "src/internal/PostBoard.js~PostBoard",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/internal/PostBoard.js~PostBoard#close",
    "access": "public",
    "description": null,
    "lineNumber": 36,
    "undocument": true,
    "params": [
      {
        "name": "key",
        "types": [
          "*"
        ]
      },
      {
        "name": "id",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 318,
    "kind": "method",
    "name": "closeAll",
    "memberof": "src/internal/PostBoard.js~PostBoard",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/internal/PostBoard.js~PostBoard#closeAll",
    "access": "public",
    "description": null,
    "lineNumber": 40,
    "undocument": true,
    "params": [
      {
        "name": "id",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 319,
    "kind": "file",
    "name": "src/manager/AudioManager.js",
    "content": "import Manager from './Manager';\n\nexport class _AudioManager extends Manager {\n    constructor() {\n        super();\n        this.masterVolume = 1;\n        this.audioCtx = null;\n\n        this.sounds = {};\n    }\n\n    setMasterVolume(volume) {\n        this.masterVolume = Math.max(0, Math.min(1, volume));\n    }\n\n    addSound(soundName, soundAssetPath) {\n        return this._createSoundBufferFromAsset(soundAssetPath).then((soundInfo) => {\n            this.sounds[soundName] = soundInfo;\n            return this.sounds[soundName];\n        });\n    }\n\n    _createSoundBufferFromAsset(assetPath) {\n        let soundInfo = {\n            buffer: null,\n        };\n\n        return new Promise((res, rej) => {\n            let request = new XMLHttpRequest();\n            request.open('GET', assetPath, true);\n            request.responseType = 'arraybuffer';\n            request.addEventListener('load', () => {\n                this.audioCtx.decodeAudioData(request.response, (buffer) => {\n                    soundInfo.buffer = buffer;\n                    return res(soundInfo);\n                }, (err) => {\n                    console.error(err);\n                });\n            });\n            request.send();\n        });\n    }\n\n    playSound(soundName, volume = 1) {\n        // Find the sound to play.\n        let sound = this.sounds[soundName];\n        if (sound == null)\n            return false;\n        \n        if (!this.audioCtx.createGain) // For older browser support\n            this.audioCtx.createGain = this.audioCtx.createGainNode;\n\n        // Create the gain preference and set the volume\n        let gainNode = this.audioCtx.createGain();\n        gainNode.gain.value = volume * this.masterVolume;\n\n        // Set the audio buffer source.\n        let source = this.audioCtx.createBufferSource();\n        source.buffer = sound.buffer;    \n\n        // Connect gain node to buffer.\n        source.connect(gainNode);      \n        \n        // Set default audio output.\n        gainNode.connect(this.audioCtx.destination);      \n\n        if (!source.start) // For older browser support\n            source.start = source.noteOn;\n\n        // Start the buffer playback.\n        source.start(0);        \n    }\n\n    start() {\n        try {\n            // Fix up for prefixing\n            window.AudioContext = window.AudioContext||window.webkitAudioContext;\n            this.audioCtx = new AudioContext();\n        }\n        catch(e) {\n            console.info('Web Audio API is not supported in this browser');\n        }\n    }\n\n    removeSound(soundName) {\n        delete this.sounds[soundName];\n    }\n\n    end() {\n        let soundNames = {};\n        //remove all loaded sounds\n    }\n}\n\n/**\n * Singleton reference to the Audio Manager.\n */\nconst AudioManager = new _AudioManager();\nexport default AudioManager;",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/manager/AudioManager.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 320,
    "kind": "class",
    "name": "_AudioManager",
    "memberof": "src/manager/AudioManager.js",
    "static": true,
    "longname": "src/manager/AudioManager.js~_AudioManager",
    "access": "private",
    "export": true,
    "importPath": "seed-engine/src/manager/AudioManager.js",
    "importStyle": "{_AudioManager}",
    "description": null,
    "lineNumber": 3,
    "undocument": true,
    "interface": false,
    "extends": [
      "src/manager/Manager.js~Manager"
    ]
  },
  {
    "__docId__": 321,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/manager/AudioManager.js~_AudioManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/AudioManager.js~_AudioManager#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 4,
    "undocument": true
  },
  {
    "__docId__": 322,
    "kind": "member",
    "name": "masterVolume",
    "memberof": "src/manager/AudioManager.js~_AudioManager",
    "static": false,
    "longname": "src/manager/AudioManager.js~_AudioManager#masterVolume",
    "access": "public",
    "description": null,
    "lineNumber": 6,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 323,
    "kind": "member",
    "name": "audioCtx",
    "memberof": "src/manager/AudioManager.js~_AudioManager",
    "static": false,
    "longname": "src/manager/AudioManager.js~_AudioManager#audioCtx",
    "access": "public",
    "description": null,
    "lineNumber": 7,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 324,
    "kind": "member",
    "name": "sounds",
    "memberof": "src/manager/AudioManager.js~_AudioManager",
    "static": false,
    "longname": "src/manager/AudioManager.js~_AudioManager#sounds",
    "access": "public",
    "description": null,
    "lineNumber": 9,
    "undocument": true,
    "type": {
      "types": [
        "{}"
      ]
    }
  },
  {
    "__docId__": 325,
    "kind": "method",
    "name": "setMasterVolume",
    "memberof": "src/manager/AudioManager.js~_AudioManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/AudioManager.js~_AudioManager#setMasterVolume",
    "access": "public",
    "description": null,
    "lineNumber": 12,
    "undocument": true,
    "params": [
      {
        "name": "volume",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 327,
    "kind": "method",
    "name": "addSound",
    "memberof": "src/manager/AudioManager.js~_AudioManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/AudioManager.js~_AudioManager#addSound",
    "access": "public",
    "description": null,
    "lineNumber": 16,
    "undocument": true,
    "params": [
      {
        "name": "soundName",
        "types": [
          "*"
        ]
      },
      {
        "name": "soundAssetPath",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 328,
    "kind": "method",
    "name": "_createSoundBufferFromAsset",
    "memberof": "src/manager/AudioManager.js~_AudioManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/AudioManager.js~_AudioManager#_createSoundBufferFromAsset",
    "access": "private",
    "description": null,
    "lineNumber": 23,
    "undocument": true,
    "params": [
      {
        "name": "assetPath",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 329,
    "kind": "method",
    "name": "playSound",
    "memberof": "src/manager/AudioManager.js~_AudioManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/AudioManager.js~_AudioManager#playSound",
    "access": "public",
    "description": null,
    "lineNumber": 44,
    "undocument": true,
    "params": [
      {
        "name": "soundName",
        "types": [
          "*"
        ]
      },
      {
        "name": "volume",
        "optional": true,
        "types": [
          "number"
        ],
        "defaultRaw": 1,
        "defaultValue": "1"
      }
    ],
    "return": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 330,
    "kind": "method",
    "name": "start",
    "memberof": "src/manager/AudioManager.js~_AudioManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/AudioManager.js~_AudioManager#start",
    "access": "public",
    "description": null,
    "lineNumber": 74,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 332,
    "kind": "method",
    "name": "removeSound",
    "memberof": "src/manager/AudioManager.js~_AudioManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/AudioManager.js~_AudioManager#removeSound",
    "access": "public",
    "description": null,
    "lineNumber": 85,
    "undocument": true,
    "params": [
      {
        "name": "soundName",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 333,
    "kind": "method",
    "name": "end",
    "memberof": "src/manager/AudioManager.js~_AudioManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/AudioManager.js~_AudioManager#end",
    "access": "public",
    "description": null,
    "lineNumber": 89,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 334,
    "kind": "variable",
    "name": "AudioManager",
    "memberof": "src/manager/AudioManager.js",
    "static": true,
    "longname": "src/manager/AudioManager.js~AudioManager",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/manager/AudioManager.js",
    "importStyle": "AudioManager",
    "description": null,
    "lineNumber": 99,
    "undocument": true,
    "type": {
      "types": [
        "src/manager/AudioManager.js~_AudioManager"
      ]
    }
  },
  {
    "__docId__": 335,
    "kind": "file",
    "name": "src/manager/DOMManager.js",
    "content": "import Manager from './Manager';\n\n/**\n * Manages the connection between the DOM and the Game & Engine.\n * \n * The DOMManager sets up and holds reference to the DOM elements required to display the game.\n */\nexport class _DOMManager extends Manager {\n    /**\n     * Initializes defaults for the DOMManager to hold once started.\n     */\n    constructor() {\n        super();\n        this.canvas = null;\n        this.GL = null;\n\n        this.canvasWidth = 0;\n        this.canvasHeight = 0;\n        this.canvasDPIWidth = 0;\n        this.canvasDPIHeight = 0;\n    }\n\n    /**\n     * Loads the canvas & setup for WebGL.\n     */\n    start() {\n        this.loadCanvas();\n        this.adjust();\n    }\n    \n    /**\n     * Loads the canvas & sets up a WebGL2 context to be used by the engine by the id 'game'. If nothing is happening on screen,\n     * ensure that the canvas you are using has this id in its HTML tag.\n     */\n    loadCanvas() {\n        this.canvas = document.getElementById('game');\n        if (this.canvas == null)\n            console.error(\"Error finding DOM Canvas. The canvas requires an id='game'\");\n        this.GL = this.canvas.getContext('webgl2', {alpha: false, antialias: false, powerPreference: 'high-performance', preserveDrawingBuffer: true,});\n        if (this.GL == null) {\n            console.error(\"WebGL2 Context could not be built. This browser does not support WebGL2.\");\n        }\n        window.addEventListener('resize', () => {\n            this.adjust();\n        })\n    }\n\n    /*\n    Any function that plays with sizing, ratio, or other \n    DOM elements with the canvas should call this after.\n    */\n    adjust() {\n        if (this.GL == null)\n            return;\n        this.GL.imageSmoothingEnabled = false;\n        this.GL.webkitImageSmoothingEnabled = false;\n\n        this.canvasWidth = this.canvas.width;\n        this.canvasHeight = this.canvas.height;\n        this.canvasDPIWidth = this.canvasWidth / this.canvas.clientWidth;\n        this.canvasDPIHeight = this.canvasHeight / this.canvas.clientHeight;\n    }\n}\n\n/**\n * Singleton reference to the DOM Manager.\n */\nconst DOMManager = new _DOMManager();\nexport default DOMManager;",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/manager/DOMManager.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 336,
    "kind": "class",
    "name": "_DOMManager",
    "memberof": "src/manager/DOMManager.js",
    "static": true,
    "longname": "src/manager/DOMManager.js~_DOMManager",
    "access": "private",
    "export": true,
    "importPath": "seed-engine/src/manager/DOMManager.js",
    "importStyle": "{_DOMManager}",
    "description": "Manages the connection between the DOM and the Game & Engine.\n\nThe DOMManager sets up and holds reference to the DOM elements required to display the game.",
    "lineNumber": 8,
    "interface": false,
    "extends": [
      "src/manager/Manager.js~Manager"
    ]
  },
  {
    "__docId__": 337,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/manager/DOMManager.js~_DOMManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/DOMManager.js~_DOMManager#constructor",
    "access": "public",
    "description": "Initializes defaults for the DOMManager to hold once started.",
    "lineNumber": 12
  },
  {
    "__docId__": 338,
    "kind": "member",
    "name": "canvas",
    "memberof": "src/manager/DOMManager.js~_DOMManager",
    "static": false,
    "longname": "src/manager/DOMManager.js~_DOMManager#canvas",
    "access": "public",
    "description": null,
    "lineNumber": 14,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 339,
    "kind": "member",
    "name": "GL",
    "memberof": "src/manager/DOMManager.js~_DOMManager",
    "static": false,
    "longname": "src/manager/DOMManager.js~_DOMManager#GL",
    "access": "public",
    "description": null,
    "lineNumber": 15,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 340,
    "kind": "member",
    "name": "canvasWidth",
    "memberof": "src/manager/DOMManager.js~_DOMManager",
    "static": false,
    "longname": "src/manager/DOMManager.js~_DOMManager#canvasWidth",
    "access": "public",
    "description": null,
    "lineNumber": 17,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 341,
    "kind": "member",
    "name": "canvasHeight",
    "memberof": "src/manager/DOMManager.js~_DOMManager",
    "static": false,
    "longname": "src/manager/DOMManager.js~_DOMManager#canvasHeight",
    "access": "public",
    "description": null,
    "lineNumber": 18,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 342,
    "kind": "member",
    "name": "canvasDPIWidth",
    "memberof": "src/manager/DOMManager.js~_DOMManager",
    "static": false,
    "longname": "src/manager/DOMManager.js~_DOMManager#canvasDPIWidth",
    "access": "public",
    "description": null,
    "lineNumber": 19,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 343,
    "kind": "member",
    "name": "canvasDPIHeight",
    "memberof": "src/manager/DOMManager.js~_DOMManager",
    "static": false,
    "longname": "src/manager/DOMManager.js~_DOMManager#canvasDPIHeight",
    "access": "public",
    "description": null,
    "lineNumber": 20,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 344,
    "kind": "method",
    "name": "start",
    "memberof": "src/manager/DOMManager.js~_DOMManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/DOMManager.js~_DOMManager#start",
    "access": "public",
    "description": "Loads the canvas & setup for WebGL.",
    "lineNumber": 26,
    "params": [],
    "return": null
  },
  {
    "__docId__": 345,
    "kind": "method",
    "name": "loadCanvas",
    "memberof": "src/manager/DOMManager.js~_DOMManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/DOMManager.js~_DOMManager#loadCanvas",
    "access": "public",
    "description": "Loads the canvas & sets up a WebGL2 context to be used by the engine by the id 'game'. If nothing is happening on screen,\nensure that the canvas you are using has this id in its HTML tag.",
    "lineNumber": 35,
    "params": [],
    "return": null
  },
  {
    "__docId__": 348,
    "kind": "method",
    "name": "adjust",
    "memberof": "src/manager/DOMManager.js~_DOMManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/DOMManager.js~_DOMManager#adjust",
    "access": "public",
    "description": null,
    "lineNumber": 52,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 353,
    "kind": "variable",
    "name": "DOMManager",
    "memberof": "src/manager/DOMManager.js",
    "static": true,
    "longname": "src/manager/DOMManager.js~DOMManager",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/manager/DOMManager.js",
    "importStyle": "DOMManager",
    "description": null,
    "lineNumber": 69,
    "undocument": true,
    "type": {
      "types": [
        "src/manager/DOMManager.js~_DOMManager"
      ]
    }
  },
  {
    "__docId__": 354,
    "kind": "file",
    "name": "src/manager/EngineManager.js",
    "content": "import Manager from './Manager';\nimport RenderManager from './RenderManager';\nimport ProgramManager from './ProgramManager';\nimport SceneManager from './SceneManager';\nimport DOMManager from './DOMManager';\nimport PersistentManager from './PersistentManager';\nimport InputManager from './InputManager';\nimport AudioManager from './AudioManager';\n\n/**\n *  A singleton & Manager.\n * \n * This class manages the core ECS system & game loop. It calls all other Managers\n * required to start. \n * \n * TODO: This system will be rewritten to allow Manager plugins to be added by the \n * user without editing the Engine.\n */\nexport class _EngineManager extends Manager {\n    constructor() {\n        super();\n        this.MS_PER_FRAME = 20;\n        this.coreUpdateLoopHandle = null;\n        this.hasPaused = false;\n    }\n\n    /**\n     * Called when the Engine should start all systems.\n     * This also includes specific setup code to get the game running, \n     * including setting up the render loop.\n     */\n    start() {\n        //Needs to be first to target the canvas.\n        DOMManager.start();\n        PersistentManager.start();\n        SceneManager.start();\n\n        //Needs to be ahead of RenderManager to init Programs for WebGL.\n        ProgramManager.start();\n        RenderManager.start();\n        RenderManager.update();\n        InputManager.start();\n        AudioManager.start();\n\n        this.coreUpdateLoopHandle = setInterval(() => {\n            if (!this.hasPaused) {\n                this.update();\n            }\n        }, this.MS_PER_FRAME);\n    }\n\n    /**\n     * The EngineManager sets up a loop on start() to call this function.\n     * Recalling this function will force a game update.\n     */\n    update() {\n        PersistentManager.update();\n        SceneManager.update();\n        //RenderManager.update(); Only called when a Renderable is updated.\n        InputManager.update();\n    }\n\n    /**\n     * Ends the Engine by calling all manager end functions.\n     */\n    end() {\n        PersistentManager.end();\n        SceneManager.end();\n        RenderManager.end();\n        clearInterval(this.coreUpdateLoopHandle);\n        DOMManager.end();\n        AudioManager.end();\n    }\n\n    /**\n     * Pauses the Engine by calling all manager pause functions.\n     */\n    pause() {\n        RenderManager.pause();\n        PersistentManager.pause();\n        SceneManager.pause();\n        this.hasPaused = true;\n    }\n\n    /**\n     * Unpauses the Engine by calling all manager unpause functions.\n     */\n    unpause() {\n        SceneManager.unpause();\n        PersistentManager.unpause();\n        RenderManager.unpause();\n        this.hasPaused = false;\n    }\n}\n\n/**\n * Singleton reference to the Engine Manager.\n */\nconst EngineManager = new _EngineManager();\nexport default EngineManager;",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/manager/EngineManager.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 355,
    "kind": "class",
    "name": "_EngineManager",
    "memberof": "src/manager/EngineManager.js",
    "static": true,
    "longname": "src/manager/EngineManager.js~_EngineManager",
    "access": "private",
    "export": true,
    "importPath": "seed-engine/src/manager/EngineManager.js",
    "importStyle": "{_EngineManager}",
    "description": " A singleton & Manager.\n\nThis class manages the core ECS system & game loop. It calls all other Managers\nrequired to start. \n\nTODO: This system will be rewritten to allow Manager plugins to be added by the \nuser without editing the Engine.",
    "lineNumber": 19,
    "interface": false,
    "extends": [
      "src/manager/Manager.js~Manager"
    ]
  },
  {
    "__docId__": 356,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/manager/EngineManager.js~_EngineManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/EngineManager.js~_EngineManager#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 20,
    "undocument": true
  },
  {
    "__docId__": 357,
    "kind": "member",
    "name": "MS_PER_FRAME",
    "memberof": "src/manager/EngineManager.js~_EngineManager",
    "static": false,
    "longname": "src/manager/EngineManager.js~_EngineManager#MS_PER_FRAME",
    "access": "public",
    "description": null,
    "lineNumber": 22,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 358,
    "kind": "member",
    "name": "coreUpdateLoopHandle",
    "memberof": "src/manager/EngineManager.js~_EngineManager",
    "static": false,
    "longname": "src/manager/EngineManager.js~_EngineManager#coreUpdateLoopHandle",
    "access": "public",
    "description": null,
    "lineNumber": 23,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 359,
    "kind": "member",
    "name": "hasPaused",
    "memberof": "src/manager/EngineManager.js~_EngineManager",
    "static": false,
    "longname": "src/manager/EngineManager.js~_EngineManager#hasPaused",
    "access": "public",
    "description": null,
    "lineNumber": 24,
    "undocument": true,
    "type": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 360,
    "kind": "method",
    "name": "start",
    "memberof": "src/manager/EngineManager.js~_EngineManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/EngineManager.js~_EngineManager#start",
    "access": "public",
    "description": "Called when the Engine should start all systems.\nThis also includes specific setup code to get the game running, \nincluding setting up the render loop.",
    "lineNumber": 32,
    "params": [],
    "return": null
  },
  {
    "__docId__": 362,
    "kind": "method",
    "name": "update",
    "memberof": "src/manager/EngineManager.js~_EngineManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/EngineManager.js~_EngineManager#update",
    "access": "public",
    "description": "The EngineManager sets up a loop on start() to call this function.\nRecalling this function will force a game update.",
    "lineNumber": 56,
    "params": [],
    "return": null
  },
  {
    "__docId__": 363,
    "kind": "method",
    "name": "end",
    "memberof": "src/manager/EngineManager.js~_EngineManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/EngineManager.js~_EngineManager#end",
    "access": "public",
    "description": "Ends the Engine by calling all manager end functions.",
    "lineNumber": 66,
    "params": [],
    "return": null
  },
  {
    "__docId__": 364,
    "kind": "method",
    "name": "pause",
    "memberof": "src/manager/EngineManager.js~_EngineManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/EngineManager.js~_EngineManager#pause",
    "access": "public",
    "description": "Pauses the Engine by calling all manager pause functions.",
    "lineNumber": 78,
    "params": [],
    "return": null
  },
  {
    "__docId__": 366,
    "kind": "method",
    "name": "unpause",
    "memberof": "src/manager/EngineManager.js~_EngineManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/EngineManager.js~_EngineManager#unpause",
    "access": "public",
    "description": "Unpauses the Engine by calling all manager unpause functions.",
    "lineNumber": 88,
    "params": [],
    "return": null
  },
  {
    "__docId__": 368,
    "kind": "variable",
    "name": "EngineManager",
    "memberof": "src/manager/EngineManager.js",
    "static": true,
    "longname": "src/manager/EngineManager.js~EngineManager",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/manager/EngineManager.js",
    "importStyle": "EngineManager",
    "description": null,
    "lineNumber": 100,
    "undocument": true,
    "type": {
      "types": [
        "src/manager/EngineManager.js~_EngineManager"
      ]
    }
  },
  {
    "__docId__": 369,
    "kind": "file",
    "name": "src/manager/InputManager.js",
    "content": "import Manager from './Manager';\nimport DOMManager from './DOMManager';\nimport Messager from '../utils/Messager';\nimport KeyCode from '../const/KeyCode';\nimport { SceneManager, Point } from '../entry';\n\n/**\n * A manager class intended to manage the javascript callback associated with the DOM.\n * The InputManager filters general DOM events such as key down, key up, left and right click.\n * The manager sorts events into referenceable lists for components to reference each game tick.\n * \n * In result, the InputManager creates a bridge between the DOM and Engine. Components should use the \n * `is` functions to determine if a specific character is down for that game tick. \n * \n * If you want to listen to all characters, for example a textbox input, use events instead. To listen to events, \n * use InputManager.events to access the event. Events are defined in InputManager.EVENT. See Messager.js for more info\n * on listening to events.\n */\nexport class _InputManager extends Manager {\n    /**\n     * Constructor. Initializes Messager, event definitons, and \n     * key and mouse states.\n     */\n    constructor() {\n        super();     \n        this.events = new Messager();\n        this.EVENT = {\n            LEFT_PRESSED: 'mouseLeftPressed',\n            LEFT_RELEASED: 'mouseLeftReleased',\n            RIGHT_PRESSED: 'mouseRightPressed',\n            RIGHT_RELEASED: 'mouseRightReleased',\n            MOUSE_MOVE: 'mouseMove',\n            KEY_DOWN: 'keyDown',\n            KEY_UP: 'keyUp',\n            KEY: 'keyDownRepeat',\n        };\n        this.KEY_DOWN = [];\n        this.KEY_PRESSED = [];\n        this.KEY_UP = [];\n        this.LEFT_PRESSED = [];\n        this.LEFT_RELEASED = [];\n        this.RIGHT_PRESSED = [];\n        this.RIGHT_RELEASED = [];\n\n        const AllKeys = 256;\n        for (let i = 0; i < AllKeys; i++) {\n            this.KEY_DOWN[i] = false;\n            this.KEY_PRESSED[i] = false;\n            this.KEY_UP[i] = false;\n        }\n    }\n\n    /**\n     * Returns true if the key represented by this KeyCode is pressed down on \n     * this game tick. Does not repeat each game tick. Must be released to re-trigger.\n     * The `isKeyPressed()` will also return true when this function does.\n     * \n     * @param {KeyCode} KeyCode Keycode enum which represents a character by number.\n     * \n     * @returns {boolean} Is this key down.\n     */\n    isKeyDown(KeyCode) {\n        return this.KEY_DOWN[KeyCode];\n    }\n\n    /**\n     * Returns true if the key represented by this KeyCode is held down on \n     * this game tick. Repeats each game tick it is held down.\n     * \n     * @param {KeyCode} KeyCode Keycode enum which represents a character by number.\n     * \n     * @returns {boolean} Is this key pressed (held down).\n     */\n    isKeyPressed(KeyCode) {\n        return this.KEY_PRESSED[KeyCode];\n    }\n\n    /**\n     * Returns true if the key represented by this KeyCode is released on \n     * this game tick.\n     * \n     * @param {KeyCode} KeyCode Keycode enum which represents a character by number.\n     * \n     * @returns {boolean} Is this key released.\n     */\n    isKeyUp(KeyCode) {\n        return this.KEY_UP[KeyCode];\n    }\n\n    /**\n     * Called by the EngineManager. Not intended to be referenced. \n     * Sets up event listeners on the DOM.\n     */\n    start() {\n        DOMManager.canvas.addEventListener('mouseup', (ev) => {\n            ev.preventDefault();\n            let event = {\n                x: ev.offsetX * DOMManager.canvasDPIWidth,\n                y: ev.offsetY * DOMManager.canvasDPIHeight,\n                shiftHeld: ev.shiftKey,\n                ctrlHeld: ev.ctrlKey,\n            };\n            let curScene = SceneManager.getCurrentScene();\n            if (curScene != null) {\n                for (let i = 0; i < curScene.viewports.length; i++) {                        \n                    if (curScene.viewports[i].getBounds().isInBounds(new Point(event.x, event.y))) {\n                        let relEvent = Object.assign({}, event);\n                        relEvent.x -= curScene.viewports[i].getBounds().p1.x;\n                        relEvent.y -= curScene.viewports[i].getBounds().p1.y;\n                        if (ev.button == 0) {\n                            this.LEFT_RELEASED[i].push(relEvent);\n                        } else if (ev.button == 2) {\n                            this.RIGHT_RELEASED[i].push(relEvent);\n                        }\n                    }\n                }\n            }\n            if (ev.button == 0) {\n                this.events.set(this.EVENT.LEFT_RELEASED, event);\n            } else if (ev.button == 2) {\n                this.events.set(this.EVENT.RIGHT_RELEASED, event);\n            }\n        })\n        DOMManager.canvas.addEventListener('mousedown', (ev) => {\n            ev.preventDefault();\n            let event = {\n                x: ev.offsetX * DOMManager.canvasDPIWidth,\n                y: ev.offsetY * DOMManager.canvasDPIHeight,\n                shiftHeld: ev.shiftKey,\n                ctrlHeld: ev.ctrlKey,\n            };\n            let curScene = SceneManager.getCurrentScene();\n            if (curScene != null) {\n                for (let i = 0; i < curScene.viewports.length; i++) {                        \n                    if (curScene.viewports[i].getBounds().isInBounds(new Point(event.x, event.y))) {\n                        let relEvent = Object.assign({}, event);\n                        relEvent.x -= curScene.viewports[i].getBounds().p1.x;\n                        relEvent.y -= curScene.viewports[i].getBounds().p1.y;\n                        if (ev.button == 0) {\n                            this.LEFT_PRESSED[i].push(relEvent);\n                        } else if (ev.button == 2) {\n                            this.RIGHT_PRESSED[i].push(relEvent);\n                        }\n                    }\n                }\n            }\n            if (ev.button == 0) {\n                this.events.set(this.EVENT.LEFT_PRESSED, event);\n            } else if (ev.button == 2) {\n                this.events.set(this.EVENT.RIGHT_PRESSED, event);\n            }\n        })\n\n        DOMManager.canvas.addEventListener('mousemove', (ev) => {\n            ev.preventDefault();\n            let event = {\n                x: ev.offsetX * DOMManager.canvasDPIWidth,\n                y: ev.offsetY * DOMManager.canvasDPIHeight,\n                shiftHeld: ev.shiftKey,\n                ctrlHeld: ev.ctrlKey,\n            };\n            let curScene = SceneManager.getCurrentScene();\n            if (curScene != null) {\n                for (let i = 0; i < curScene.viewports.length; i++) {                        \n                    if (curScene.viewports[i].getBounds().isInBounds(new Point(event.x, event.y))) {\n                        event.x -= curScene.viewports[i].getBounds().p1.x;\n                        event.y -= curScene.viewports[i].getBounds().p1.y;\n                        event.viewport = i;\n                        break;\n                    }\n                }\n            }\n            this.events.set(this.EVENT.MOUSE_MOVE, event);\n        })\n\n        //right click manager\n        DOMManager.canvas.oncontextmenu = (ev) => {\n            ev.preventDefault();\n        };\n\n        //Key down manager\n        document.addEventListener('keydown', (event) => {\n            event.preventDefault();\n            let code = event.which || event.keyCode;\n            this.KEY_PRESSED[code] = true;\n            if (!event.repeat) {\n                this.KEY_DOWN[code] = true;\n                this.events.set(this.EVENT.KEY_DOWN, {\n                    key: event.key,\n                    code,\n                    shiftHeld: event.shiftKey,\n                    ctrlHeld: event.ctrlKey,\n                    repeat: event.repeat,\n                });\n            }\n            this.events.set(this.EVENT.KEY, {\n                key: event.key,\n                code,\n                shiftHeld: event.shiftKey,\n                ctrlHeld: event.ctrlKey,\n                repeat: event.repeat,\n            });\n        });\n\n        //Key up manager\n        document.addEventListener('keyup', (event) => {\n            event.preventDefault();\n            let code = event.which || event.keyCode;\n            this.KEY_DOWN[code] = false;\n            this.KEY_PRESSED[code] = false;\n            this.KEY_UP[code] = true;\n            this.events.set(this.EVENT.KEY_UP, {\n                key: event.key,\n                code,\n                shiftHeld: event.shiftKey,\n                ctrlHeld: event.ctrlKey,\n                repeat: event.repeat,\n            });\n        });\n    }\n\n    /**\n     * Managed by the EngineManager. Do not call directly. Updates character and mouse\n     * inputs.\n     */\n    update() {\n        this.KEY_DOWN = [];\n        this.KEY_UP = [];\n        this.LEFT_PRESSED = [];\n        this.LEFT_RELEASED = [];\n        this.RIGHT_PRESSED = [];\n        this.RIGHT_RELEASED = [];\n\n        let scene = null;\n        if ((scene = SceneManager.getCurrentScene()) == null)\n            return;\n\n        for (let i = 0; i < scene.viewports.length; i++) {\n            this.LEFT_PRESSED.push([]);\n            this.LEFT_RELEASED.push([]);\n            this.RIGHT_PRESSED.push([]);\n            this.RIGHT_RELEASED.push([]);\n        }\n    }\n}\n\n/**\n * Singleton reference to the Input Manager.\n */\nconst InputManager = new _InputManager(); \nexport default InputManager;",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/manager/InputManager.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 370,
    "kind": "class",
    "name": "_InputManager",
    "memberof": "src/manager/InputManager.js",
    "static": true,
    "longname": "src/manager/InputManager.js~_InputManager",
    "access": "private",
    "export": true,
    "importPath": "seed-engine/src/manager/InputManager.js",
    "importStyle": "{_InputManager}",
    "description": "A manager class intended to manage the javascript callback associated with the DOM.\nThe InputManager filters general DOM events such as key down, key up, left and right click.\nThe manager sorts events into referenceable lists for components to reference each game tick.\n\nIn result, the InputManager creates a bridge between the DOM and Engine. Components should use the \n`is` functions to determine if a specific character is down for that game tick. \n\nIf you want to listen to all characters, for example a textbox input, use events instead. To listen to events, \nuse InputManager.events to access the event. Events are defined in InputManager.EVENT. See Messager.js for more info\non listening to events.",
    "lineNumber": 19,
    "interface": false,
    "extends": [
      "src/manager/Manager.js~Manager"
    ]
  },
  {
    "__docId__": 371,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/manager/InputManager.js~_InputManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/InputManager.js~_InputManager#constructor",
    "access": "public",
    "description": "Constructor. Initializes Messager, event definitons, and \nkey and mouse states.",
    "lineNumber": 24
  },
  {
    "__docId__": 372,
    "kind": "member",
    "name": "events",
    "memberof": "src/manager/InputManager.js~_InputManager",
    "static": false,
    "longname": "src/manager/InputManager.js~_InputManager#events",
    "access": "public",
    "description": null,
    "lineNumber": 26,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 373,
    "kind": "member",
    "name": "EVENT",
    "memberof": "src/manager/InputManager.js~_InputManager",
    "static": false,
    "longname": "src/manager/InputManager.js~_InputManager#EVENT",
    "access": "public",
    "description": null,
    "lineNumber": 27,
    "undocument": true,
    "type": {
      "types": [
        "{\"LEFT_PRESSED\": string, \"LEFT_RELEASED\": string, \"RIGHT_PRESSED\": string, \"RIGHT_RELEASED\": string, \"MOUSE_MOVE\": string, \"KEY_DOWN\": string, \"KEY_UP\": string, \"KEY\": string}"
      ]
    }
  },
  {
    "__docId__": 374,
    "kind": "member",
    "name": "KEY_DOWN",
    "memberof": "src/manager/InputManager.js~_InputManager",
    "static": false,
    "longname": "src/manager/InputManager.js~_InputManager#KEY_DOWN",
    "access": "public",
    "description": null,
    "lineNumber": 37,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 375,
    "kind": "member",
    "name": "KEY_PRESSED",
    "memberof": "src/manager/InputManager.js~_InputManager",
    "static": false,
    "longname": "src/manager/InputManager.js~_InputManager#KEY_PRESSED",
    "access": "public",
    "description": null,
    "lineNumber": 38,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 376,
    "kind": "member",
    "name": "KEY_UP",
    "memberof": "src/manager/InputManager.js~_InputManager",
    "static": false,
    "longname": "src/manager/InputManager.js~_InputManager#KEY_UP",
    "access": "public",
    "description": null,
    "lineNumber": 39,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 377,
    "kind": "member",
    "name": "LEFT_PRESSED",
    "memberof": "src/manager/InputManager.js~_InputManager",
    "static": false,
    "longname": "src/manager/InputManager.js~_InputManager#LEFT_PRESSED",
    "access": "public",
    "description": null,
    "lineNumber": 40,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 378,
    "kind": "member",
    "name": "LEFT_RELEASED",
    "memberof": "src/manager/InputManager.js~_InputManager",
    "static": false,
    "longname": "src/manager/InputManager.js~_InputManager#LEFT_RELEASED",
    "access": "public",
    "description": null,
    "lineNumber": 41,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 379,
    "kind": "member",
    "name": "RIGHT_PRESSED",
    "memberof": "src/manager/InputManager.js~_InputManager",
    "static": false,
    "longname": "src/manager/InputManager.js~_InputManager#RIGHT_PRESSED",
    "access": "public",
    "description": null,
    "lineNumber": 42,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 380,
    "kind": "member",
    "name": "RIGHT_RELEASED",
    "memberof": "src/manager/InputManager.js~_InputManager",
    "static": false,
    "longname": "src/manager/InputManager.js~_InputManager#RIGHT_RELEASED",
    "access": "public",
    "description": null,
    "lineNumber": 43,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 381,
    "kind": "method",
    "name": "isKeyDown",
    "memberof": "src/manager/InputManager.js~_InputManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/InputManager.js~_InputManager#isKeyDown",
    "access": "public",
    "description": "Returns true if the key represented by this KeyCode is pressed down on \nthis game tick. Does not repeat each game tick. Must be released to re-trigger.\nThe `isKeyPressed()` will also return true when this function does.",
    "lineNumber": 62,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{boolean} Is this key down."
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "KeyCode"
        ],
        "spread": false,
        "optional": false,
        "name": "KeyCode",
        "description": "Keycode enum which represents a character by number."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": "Is this key down."
    }
  },
  {
    "__docId__": 382,
    "kind": "method",
    "name": "isKeyPressed",
    "memberof": "src/manager/InputManager.js~_InputManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/InputManager.js~_InputManager#isKeyPressed",
    "access": "public",
    "description": "Returns true if the key represented by this KeyCode is held down on \nthis game tick. Repeats each game tick it is held down.",
    "lineNumber": 74,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{boolean} Is this key pressed (held down)."
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "KeyCode"
        ],
        "spread": false,
        "optional": false,
        "name": "KeyCode",
        "description": "Keycode enum which represents a character by number."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": "Is this key pressed (held down)."
    }
  },
  {
    "__docId__": 383,
    "kind": "method",
    "name": "isKeyUp",
    "memberof": "src/manager/InputManager.js~_InputManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/InputManager.js~_InputManager#isKeyUp",
    "access": "public",
    "description": "Returns true if the key represented by this KeyCode is released on \nthis game tick.",
    "lineNumber": 86,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{boolean} Is this key released."
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "KeyCode"
        ],
        "spread": false,
        "optional": false,
        "name": "KeyCode",
        "description": "Keycode enum which represents a character by number."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": "Is this key released."
    }
  },
  {
    "__docId__": 384,
    "kind": "method",
    "name": "start",
    "memberof": "src/manager/InputManager.js~_InputManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/InputManager.js~_InputManager#start",
    "access": "public",
    "description": "Called by the EngineManager. Not intended to be referenced. \nSets up event listeners on the DOM.",
    "lineNumber": 94,
    "params": [],
    "return": null
  },
  {
    "__docId__": 385,
    "kind": "method",
    "name": "update",
    "memberof": "src/manager/InputManager.js~_InputManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/InputManager.js~_InputManager#update",
    "access": "public",
    "description": "Managed by the EngineManager. Do not call directly. Updates character and mouse\ninputs.",
    "lineNumber": 226,
    "params": [],
    "return": null
  },
  {
    "__docId__": 392,
    "kind": "variable",
    "name": "InputManager",
    "memberof": "src/manager/InputManager.js",
    "static": true,
    "longname": "src/manager/InputManager.js~InputManager",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/manager/InputManager.js",
    "importStyle": "InputManager",
    "description": null,
    "lineNumber": 251,
    "undocument": true,
    "type": {
      "types": [
        "src/manager/InputManager.js~_InputManager"
      ]
    }
  },
  {
    "__docId__": 393,
    "kind": "file",
    "name": "src/manager/Manager.js",
    "content": "/**\n * Baseclass for all Managers.\n * \n * In order for a new Manager to be added to the engine, it must inherit\n * this class and define these functions to be recognized by the Engine.\n * \n * TODO: Finish Plugins in Engine Manager & implement optional function calls on updateables.\n */\n\nexport default class Manager {\n    constructor() {\n\n    }\n    \n    start() {}\n    update() {}\n    end() {}\n    pause() {}\n    unpause() {}\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/manager/Manager.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 394,
    "kind": "class",
    "name": "Manager",
    "memberof": "src/manager/Manager.js",
    "static": true,
    "longname": "src/manager/Manager.js~Manager",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/manager/Manager.js",
    "importStyle": "Manager",
    "description": "Baseclass for all Managers.\n\nIn order for a new Manager to be added to the engine, it must inherit\nthis class and define these functions to be recognized by the Engine.\n\nTODO: Finish Plugins in Engine Manager & implement optional function calls on updateables.",
    "lineNumber": 10,
    "interface": false
  },
  {
    "__docId__": 395,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/manager/Manager.js~Manager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/Manager.js~Manager#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 11,
    "undocument": true
  },
  {
    "__docId__": 396,
    "kind": "method",
    "name": "start",
    "memberof": "src/manager/Manager.js~Manager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/Manager.js~Manager#start",
    "access": "public",
    "description": null,
    "lineNumber": 15,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 397,
    "kind": "method",
    "name": "update",
    "memberof": "src/manager/Manager.js~Manager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/Manager.js~Manager#update",
    "access": "public",
    "description": null,
    "lineNumber": 16,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 398,
    "kind": "method",
    "name": "end",
    "memberof": "src/manager/Manager.js~Manager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/Manager.js~Manager#end",
    "access": "public",
    "description": null,
    "lineNumber": 17,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 399,
    "kind": "method",
    "name": "pause",
    "memberof": "src/manager/Manager.js~Manager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/Manager.js~Manager#pause",
    "access": "public",
    "description": null,
    "lineNumber": 18,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 400,
    "kind": "method",
    "name": "unpause",
    "memberof": "src/manager/Manager.js~Manager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/Manager.js~Manager#unpause",
    "access": "public",
    "description": null,
    "lineNumber": 19,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 401,
    "kind": "file",
    "name": "src/manager/PersistentManager.js",
    "content": "import Manager from './Manager';\n\n/**\n * Manages all Persistent Objects in the Engine. A PersistentObject is a child of \n * GameObject, and sibling of SceneObjects.\n * \n * PersistentObjects exist and update in all scenes, changing scenes will not inturrupt this object.\n */\nexport class _PersistentManager extends Manager {\n    constructor() {\n        super();\n        this.persistentObjects = {};\n    }\n\n    /**\n     * When a PersistentObject is created, it is assigned to the PersistentManager through this function.\n     * The manager will keep reference to the Object and handle Engine events.\n     * \n     * @param {persistentObject} persistentObject A PersistentObject.\n     */\n    registerPersistentObject(persistentObject) {\n        this.persistentObjects[persistentObject.id] = persistentObject;\n        let deregisterCallback = () => {\n            delete this.persistentObjects[persistentObject.id];\n        }\n        return deregisterCallback;\n    }\n\n    /**\n     * Calls update on all Persistent Objects.\n     */\n    update() {\n        let objKeys = Object.keys(this.persistentObjects);\n        for (let i = 0; i < objKeys.length; i++) {\n            this.persistentObjects[objKeys[i]].update();\n        }\n    }\n\n    /**\n     * Calls end on all Persistent Objects.\n     */\n    end() {\n        let objKeys = Object.keys(this.persistentObjects);\n        for (let i = 0; i < objKeys.length; i++) {\n            this.persistentObjects[objKeys[i]].end();\n        }\n    }\n\n    /**\n     * Calls pause on all Persistent Objects.\n     */\n    pause() {\n        let objKeys = Object.keys(this.persistentObjects);\n        for (let i = 0; i < objKeys.length; i++) {\n            this.persistentObjects[objKeys[i]].pause();\n        }\n    }\n\n    /**\n     * Calls unpause on all Persistent Objects.\n     */\n    unpause() {\n        let objKeys = Object.keys(this.persistentObjects);\n        for (let i = 0; i < objKeys.length; i++) {\n            this.persistentObjects[objKeys[i]].unpause();\n        }\n    }\n}\n\n/**\n * Singleton reference to the Persistent Objects Manager.\n */\nconst PersistentManager = new _PersistentManager();\nexport default PersistentManager;",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/manager/PersistentManager.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 402,
    "kind": "class",
    "name": "_PersistentManager",
    "memberof": "src/manager/PersistentManager.js",
    "static": true,
    "longname": "src/manager/PersistentManager.js~_PersistentManager",
    "access": "private",
    "export": true,
    "importPath": "seed-engine/src/manager/PersistentManager.js",
    "importStyle": "{_PersistentManager}",
    "description": "Manages all Persistent Objects in the Engine. A PersistentObject is a child of \nGameObject, and sibling of SceneObjects.\n\nPersistentObjects exist and update in all scenes, changing scenes will not inturrupt this object.",
    "lineNumber": 9,
    "interface": false,
    "extends": [
      "src/manager/Manager.js~Manager"
    ]
  },
  {
    "__docId__": 403,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/manager/PersistentManager.js~_PersistentManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/PersistentManager.js~_PersistentManager#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 10,
    "undocument": true
  },
  {
    "__docId__": 404,
    "kind": "member",
    "name": "persistentObjects",
    "memberof": "src/manager/PersistentManager.js~_PersistentManager",
    "static": false,
    "longname": "src/manager/PersistentManager.js~_PersistentManager#persistentObjects",
    "access": "public",
    "description": null,
    "lineNumber": 12,
    "undocument": true,
    "type": {
      "types": [
        "{}"
      ]
    }
  },
  {
    "__docId__": 405,
    "kind": "method",
    "name": "registerPersistentObject",
    "memberof": "src/manager/PersistentManager.js~_PersistentManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/PersistentManager.js~_PersistentManager#registerPersistentObject",
    "access": "public",
    "description": "When a PersistentObject is created, it is assigned to the PersistentManager through this function.\nThe manager will keep reference to the Object and handle Engine events.",
    "lineNumber": 21,
    "params": [
      {
        "nullable": null,
        "types": [
          "persistentObject"
        ],
        "spread": false,
        "optional": false,
        "name": "persistentObject",
        "description": "A PersistentObject."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 406,
    "kind": "method",
    "name": "update",
    "memberof": "src/manager/PersistentManager.js~_PersistentManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/PersistentManager.js~_PersistentManager#update",
    "access": "public",
    "description": "Calls update on all Persistent Objects.",
    "lineNumber": 32,
    "params": [],
    "return": null
  },
  {
    "__docId__": 407,
    "kind": "method",
    "name": "end",
    "memberof": "src/manager/PersistentManager.js~_PersistentManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/PersistentManager.js~_PersistentManager#end",
    "access": "public",
    "description": "Calls end on all Persistent Objects.",
    "lineNumber": 42,
    "params": [],
    "return": null
  },
  {
    "__docId__": 408,
    "kind": "method",
    "name": "pause",
    "memberof": "src/manager/PersistentManager.js~_PersistentManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/PersistentManager.js~_PersistentManager#pause",
    "access": "public",
    "description": "Calls pause on all Persistent Objects.",
    "lineNumber": 52,
    "params": [],
    "return": null
  },
  {
    "__docId__": 409,
    "kind": "method",
    "name": "unpause",
    "memberof": "src/manager/PersistentManager.js~_PersistentManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/PersistentManager.js~_PersistentManager#unpause",
    "access": "public",
    "description": "Calls unpause on all Persistent Objects.",
    "lineNumber": 62,
    "params": [],
    "return": null
  },
  {
    "__docId__": 410,
    "kind": "variable",
    "name": "PersistentManager",
    "memberof": "src/manager/PersistentManager.js",
    "static": true,
    "longname": "src/manager/PersistentManager.js~PersistentManager",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/manager/PersistentManager.js",
    "importStyle": "PersistentManager",
    "description": null,
    "lineNumber": 74,
    "undocument": true,
    "type": {
      "types": [
        "src/manager/PersistentManager.js~_PersistentManager"
      ]
    }
  },
  {
    "__docId__": 411,
    "kind": "file",
    "name": "src/manager/PhysicsManager.js",
    "content": "import Manager from './Manager';\n\nexport class _PhysicsManager extends Manager {\n    constructor() {\n        super();\n    }\n\n}\n\n/**\n * Singleton reference to the Physics Manager.\n */\nconst PhysicsManager = new _PhysicsManager();\nexport default PhysicsManager;",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/manager/PhysicsManager.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 412,
    "kind": "class",
    "name": "_PhysicsManager",
    "memberof": "src/manager/PhysicsManager.js",
    "static": true,
    "longname": "src/manager/PhysicsManager.js~_PhysicsManager",
    "access": "private",
    "export": true,
    "importPath": "seed-engine/src/manager/PhysicsManager.js",
    "importStyle": "{_PhysicsManager}",
    "description": null,
    "lineNumber": 3,
    "undocument": true,
    "interface": false,
    "extends": [
      "src/manager/Manager.js~Manager"
    ]
  },
  {
    "__docId__": 413,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/manager/PhysicsManager.js~_PhysicsManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/PhysicsManager.js~_PhysicsManager#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 4,
    "undocument": true
  },
  {
    "__docId__": 414,
    "kind": "variable",
    "name": "PhysicsManager",
    "memberof": "src/manager/PhysicsManager.js",
    "static": true,
    "longname": "src/manager/PhysicsManager.js~PhysicsManager",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/manager/PhysicsManager.js",
    "importStyle": "PhysicsManager",
    "description": null,
    "lineNumber": 14,
    "undocument": true,
    "type": {
      "types": [
        "src/manager/PhysicsManager.js~_PhysicsManager"
      ]
    }
  },
  {
    "__docId__": 415,
    "kind": "file",
    "name": "src/manager/ProgramManager.js",
    "content": "import Manager from './Manager';\nimport DOMManager from './DOMManager';\nimport * as VertexShader from '../const/VertexShader';\nimport * as FragmentShader from '../const/FragmentShader';\n\n\n/**\n * Manages WebGL Programs so that they only need to be created once across the engine\n * allowing multiple objects to still share the same reference.\n * \n * Elliminates the need for the programmer to compile shaders and create programs, and eases \n * on-the-fly Shader compiling.\n */\nexport class _ProgramManager extends Manager {\n    constructor() {\n        super();\n        this.programIDCounter = 0;\n        this.programs = {};\n    }\n\n    /**\n     * Creates default programs for easy reference later on.\n     */\n    start() {\n        if (DOMManager.GL == null)\n            return;\n        this.addProgram('Default', VertexShader.DEFAULT_V, FragmentShader.DEFAULT_F, {\n            'u_color': 'uniform4fv',\n            'u_matrix': 'uniformMatrix3fv',\n            'u_depth': 'uniform1f',\n            'u_texture': 'uniform1i',\n            'u_subTexcoord': 'uniform4fv',\n        });\n        this.addProgram('2DGrid', VertexShader.DEFAULT_V, FragmentShader.TILEMAP_F, {\n            'u_color': 'uniform4fv',\n            'u_matrix': 'uniformMatrix3fv',\n            'u_depth': 'uniform1f',\n            'u_mapDataTexture': 'uniform1i',\n            'u_texture': 'uniform1i',\n            'u_tileData': 'uniformMatrix4fv'\n        });\n    }\n\n    /**\n     * Returns a Program JSON Object containing the program, name and id.\n     * \n     * @param {string} programKey Name of the program.\n     * \n     * @returns {Program Object} Returns a JSON object with Program data.\n     */\n    getProgram(programKey) {\n        if (this.programs[programKey] == null)\n            throw 'Program does not exist!';\n        return this.programs[programKey];\n    }\n\n    /**\n     * Creates a Program JSON Object and initializes the program and metadata.\n     * The program is added to the programs array.\n     * \n     * @param {string} programName Name of the program.\n     * @param {string} vertexShaderSource Source code of the vertex shader.\n     * @param {string} fragmentShaderSource Source code of the fragment shader.\n     * @param {Object} uniforms An object of 'string': 'number' values indicating the uniform variable name & data type enum value.\n     */\n    addProgram(programName, vertexShaderSource, fragmentShaderSource, uniforms) {\n        let program = this._createProgram(vertexShaderSource, fragmentShaderSource);\n        let uniformSetters = this._createProgramLocationSetters(program, uniforms);\n        this.programs[programName] = {\n            name: programName,\n            id: this.programIDCounter++,\n            program,\n            uniformSetters,\n            setUniforms: (uniformDataMapping) => {\n                let setters = Object.keys(uniformDataMapping);\n                for (let i = 0; i < setters.length; i++) {\n                    uniformSetters[setters[i]](DOMManager.GL, uniformDataMapping[setters[i]]);\n                }\n            }\n        };\n    }\n\n    /**\n     * Creates a WebGL program from a compiled vertex and fragment shader. The program is returned.\n     * \n     * @param {CompiledVertexShader} vertexShader A compiled vertex shader.\n     * @param {CompiledFragmentShader} fragmentShader A compiled fragment shader.\n     * \n     * @returns {Program} A WebGL program. Null if unsuccessful.\n     */\n    _createShadersProgram(vertexShader, fragmentShader) {\n        let program = DOMManager.GL.createProgram();\n        DOMManager.GL.attachShader(program, vertexShader);\n        DOMManager.GL.attachShader(program, fragmentShader);\n        DOMManager.GL.linkProgram(program);\n        let success = DOMManager.GL.getProgramParameter(program, DOMManager.GL.LINK_STATUS);\n        if (success) {\n            return program;\n        }\n\n        console.error(DOMManager.GL.getProgramInfoLog(program));\n        DOMManager.GL.deleteProgram(program);\n        return null;\n    }\n\n    /**\n     * Creates a shader of either Vertex or Fragment type and returns the compiled version.\n     * \n     * @param {GLShaderType} type A GL shader type of either VERTEX_SHADER or FRAGMENT_SHADER.\n     * @param {string} source Source code for the shader type.\n     * \n     * @returns {CompiledShader} A compiled shader. Null if unsuccessful.\n     */\n    _createShader(type, source) {\n        let shader = DOMManager.GL.createShader(type);\n        DOMManager.GL.shaderSource(shader, source);\n        DOMManager.GL.compileShader(shader);\n        let success = DOMManager.GL.getShaderParameter(shader, DOMManager.GL.COMPILE_STATUS);\n        if (success) {\n            return shader;\n        }\n\n        console.error(DOMManager.GL.getShaderInfoLog(shader));\n        DOMManager.GL.deleteShader(shader);\n        return null;\n    }\n\n    /**\n     * Compiles the vertex shader and fragment shader and returns a WebGL program.\n     * \n     * @param {string} vertexShaderSource Source code for a vertex shader.\n     * @param {string} fragmentShaderSource Source code for a fragment shader.\n     * \n     * @returns {Program} A program compiled from the two shader sources.\n     */\n    _createProgram(vertexShaderSource, fragmentShaderSource) {\n        let vertexShader = this._createShader(DOMManager.GL.VERTEX_SHADER, vertexShaderSource);\n        let fragmentShader = this._createShader(DOMManager.GL.FRAGMENT_SHADER, fragmentShaderSource);\n\n        return this._createShadersProgram(vertexShader, fragmentShader);\n    }\n\n    _createProgramLocationSetters(program, uniforms) {\n        let uniformLocationSetters = {};\n        let uniformKeys = Object.keys(uniforms);\n        for (let i = 0; i < uniformKeys.length; i++) {\n            let location = DOMManager.GL.getUniformLocation(program, uniformKeys[i]);\n            uniformLocationSetters[uniformKeys[i]] = this._getUniformSetterFromString(location, uniforms[uniformKeys[i]]);\n        }\n        return uniformLocationSetters;\n    }\n\n    _getUniformSetterFromString(location, type) {\n        return {\n            'uniform4fv': (gl, uniformData) => { gl.uniform4fv(location, uniformData); },\n            'uniformMatrix3fv': (gl, uniformData) => { gl.uniformMatrix3fv(location, false, uniformData); },\n            'uniformMatrix4fv': (gl, uniformData) => { gl.uniformMatrix4fv(location, false, uniformData); },\n            'uniform1f': (gl, uniformData) => { gl.uniform1f(location, uniformData); },\n            'uniform1i': (gl, uniformData) => { gl.uniform1i(location, uniformData); },\n        }[type];\n    }\n}\n\n/**\n * Singleton reference to the WebGL Program Manager.\n */\nconst ProgramManager = new _ProgramManager();\nexport default ProgramManager;",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/manager/ProgramManager.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 416,
    "kind": "class",
    "name": "_ProgramManager",
    "memberof": "src/manager/ProgramManager.js",
    "static": true,
    "longname": "src/manager/ProgramManager.js~_ProgramManager",
    "access": "private",
    "export": true,
    "importPath": "seed-engine/src/manager/ProgramManager.js",
    "importStyle": "{_ProgramManager}",
    "description": "Manages WebGL Programs so that they only need to be created once across the engine\nallowing multiple objects to still share the same reference.\n\nElliminates the need for the programmer to compile shaders and create programs, and eases \non-the-fly Shader compiling.",
    "lineNumber": 14,
    "interface": false,
    "extends": [
      "src/manager/Manager.js~Manager"
    ]
  },
  {
    "__docId__": 417,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/manager/ProgramManager.js~_ProgramManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/ProgramManager.js~_ProgramManager#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 15,
    "undocument": true
  },
  {
    "__docId__": 418,
    "kind": "member",
    "name": "programIDCounter",
    "memberof": "src/manager/ProgramManager.js~_ProgramManager",
    "static": false,
    "longname": "src/manager/ProgramManager.js~_ProgramManager#programIDCounter",
    "access": "public",
    "description": null,
    "lineNumber": 17,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 419,
    "kind": "member",
    "name": "programs",
    "memberof": "src/manager/ProgramManager.js~_ProgramManager",
    "static": false,
    "longname": "src/manager/ProgramManager.js~_ProgramManager#programs",
    "access": "public",
    "description": null,
    "lineNumber": 18,
    "undocument": true,
    "type": {
      "types": [
        "{}"
      ]
    }
  },
  {
    "__docId__": 420,
    "kind": "method",
    "name": "start",
    "memberof": "src/manager/ProgramManager.js~_ProgramManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/ProgramManager.js~_ProgramManager#start",
    "access": "public",
    "description": "Creates default programs for easy reference later on.",
    "lineNumber": 24,
    "params": [],
    "return": null
  },
  {
    "__docId__": 421,
    "kind": "method",
    "name": "getProgram",
    "memberof": "src/manager/ProgramManager.js~_ProgramManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/ProgramManager.js~_ProgramManager#getProgram",
    "access": "public",
    "description": "Returns a Program JSON Object containing the program, name and id.",
    "lineNumber": 51,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Program Object} Returns a JSON object with Program data."
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "programKey",
        "description": "Name of the program."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Program Object"
      ],
      "spread": false,
      "description": "Returns a JSON object with Program data."
    }
  },
  {
    "__docId__": 422,
    "kind": "method",
    "name": "addProgram",
    "memberof": "src/manager/ProgramManager.js~_ProgramManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/ProgramManager.js~_ProgramManager#addProgram",
    "access": "public",
    "description": "Creates a Program JSON Object and initializes the program and metadata.\nThe program is added to the programs array.",
    "lineNumber": 66,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "programName",
        "description": "Name of the program."
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "vertexShaderSource",
        "description": "Source code of the vertex shader."
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "fragmentShaderSource",
        "description": "Source code of the fragment shader."
      },
      {
        "nullable": null,
        "types": [
          "Object"
        ],
        "spread": false,
        "optional": false,
        "name": "uniforms",
        "description": "An object of 'string': 'number' values indicating the uniform variable name & data type enum value."
      }
    ],
    "return": null
  },
  {
    "__docId__": 423,
    "kind": "method",
    "name": "_createShadersProgram",
    "memberof": "src/manager/ProgramManager.js~_ProgramManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/ProgramManager.js~_ProgramManager#_createShadersProgram",
    "access": "private",
    "description": "Creates a WebGL program from a compiled vertex and fragment shader. The program is returned.",
    "lineNumber": 91,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Program} A WebGL program. Null if unsuccessful."
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "CompiledVertexShader"
        ],
        "spread": false,
        "optional": false,
        "name": "vertexShader",
        "description": "A compiled vertex shader."
      },
      {
        "nullable": null,
        "types": [
          "CompiledFragmentShader"
        ],
        "spread": false,
        "optional": false,
        "name": "fragmentShader",
        "description": "A compiled fragment shader."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Program"
      ],
      "spread": false,
      "description": "A WebGL program. Null if unsuccessful."
    }
  },
  {
    "__docId__": 424,
    "kind": "method",
    "name": "_createShader",
    "memberof": "src/manager/ProgramManager.js~_ProgramManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/ProgramManager.js~_ProgramManager#_createShader",
    "access": "private",
    "description": "Creates a shader of either Vertex or Fragment type and returns the compiled version.",
    "lineNumber": 114,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{CompiledShader} A compiled shader. Null if unsuccessful."
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "GLShaderType"
        ],
        "spread": false,
        "optional": false,
        "name": "type",
        "description": "A GL shader type of either VERTEX_SHADER or FRAGMENT_SHADER."
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "source",
        "description": "Source code for the shader type."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "CompiledShader"
      ],
      "spread": false,
      "description": "A compiled shader. Null if unsuccessful."
    }
  },
  {
    "__docId__": 425,
    "kind": "method",
    "name": "_createProgram",
    "memberof": "src/manager/ProgramManager.js~_ProgramManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/ProgramManager.js~_ProgramManager#_createProgram",
    "access": "private",
    "description": "Compiles the vertex shader and fragment shader and returns a WebGL program.",
    "lineNumber": 136,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Program} A program compiled from the two shader sources."
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "vertexShaderSource",
        "description": "Source code for a vertex shader."
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "fragmentShaderSource",
        "description": "Source code for a fragment shader."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Program"
      ],
      "spread": false,
      "description": "A program compiled from the two shader sources."
    }
  },
  {
    "__docId__": 426,
    "kind": "method",
    "name": "_createProgramLocationSetters",
    "memberof": "src/manager/ProgramManager.js~_ProgramManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/ProgramManager.js~_ProgramManager#_createProgramLocationSetters",
    "access": "private",
    "description": null,
    "lineNumber": 143,
    "undocument": true,
    "params": [
      {
        "name": "program",
        "types": [
          "*"
        ]
      },
      {
        "name": "uniforms",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 427,
    "kind": "method",
    "name": "_getUniformSetterFromString",
    "memberof": "src/manager/ProgramManager.js~_ProgramManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/ProgramManager.js~_ProgramManager#_getUniformSetterFromString",
    "access": "private",
    "description": null,
    "lineNumber": 153,
    "undocument": true,
    "params": [
      {
        "name": "location",
        "types": [
          "*"
        ]
      },
      {
        "name": "type",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 428,
    "kind": "variable",
    "name": "ProgramManager",
    "memberof": "src/manager/ProgramManager.js",
    "static": true,
    "longname": "src/manager/ProgramManager.js~ProgramManager",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/manager/ProgramManager.js",
    "importStyle": "ProgramManager",
    "description": null,
    "lineNumber": 168,
    "undocument": true,
    "type": {
      "types": [
        "src/manager/ProgramManager.js~_ProgramManager"
      ]
    }
  },
  {
    "__docId__": 429,
    "kind": "file",
    "name": "src/manager/RenderManager.js",
    "content": "import Manager from './Manager';\nimport DOMManager from './DOMManager';\nimport ProgramManager from './ProgramManager';\nimport SceneManager from './SceneManager';\nimport * as VertexShader from '../const/VertexShader';\nimport * as FragmentShader from '../const/FragmentShader';\nimport Matrix3 from '../render/WebGL/Matrix3';\nimport { TextureManager } from '../entry';\n\n/**\n * Manages the WebGL2 rendering of all renderable components in the scene.\n * This manager is not intended to be referenced directly.\n */\nexport class _RenderManager extends Manager {\n    constructor() {\n        super();\n        this.GL = null;\n        this.currentProgram = null;\n        this.activeTextureIDs = [];\n\n        //text\n        this.RenderableTextIDCounter = 0;\n\n        //last update microsecond\n        this.lastUpdate = -1;\n    }\n\n    /**\n     * Initial setup on GL rendering. \n     */\n    start() {\n        this.GL = DOMManager.GL;\n        if (this.GL == null)\n            return;\n\n        this._updateProgram(ProgramManager.getProgram('Default'));\n        \n        this.positionAttributeLocation = this.GL.getAttribLocation(this.currentProgram.program, \"a_position\");\n\n        //textures\n        this.texcoordAttributeLocation = this.GL.getAttribLocation(this.currentProgram.program, \"a_texcoord\");\n\n        let positionBuffer = this.GL.createBuffer();\n\n        this.GL.bindBuffer(this.GL.ARRAY_BUFFER, positionBuffer);\n\n        this.GL.bufferData(this.GL.ARRAY_BUFFER, new Float32Array([0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1]), this.GL.STATIC_DRAW);\n\n        this.vao = this.GL.createVertexArray();\n\n        this.GL.bindVertexArray(this.vao);\n\n        this.GL.enableVertexAttribArray(this.positionAttributeLocation);\n\n        let size = 2;\n        let type = this.GL.FLOAT;\n        let normalize = false;\n        let stride = 0;\n        let vertexOffset = 0;\n        this.GL.vertexAttribPointer(this.positionAttributeLocation, size, type, normalize, stride, vertexOffset);\n\n        //textures\n        this.texcoordBuffer = this.GL.createBuffer();\n        this.GL.bindBuffer(this.GL.ARRAY_BUFFER, this.texcoordBuffer);\n        this.GL.bufferData(this.GL.ARRAY_BUFFER, new Float32Array([0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1]), this.GL.STATIC_DRAW);\n\n        // Turn on the attribute\n        this.GL.enableVertexAttribArray(this.texcoordAttributeLocation);\n\n        // Tell the attribute how to get data out of colorBuffer (ARRAY_BUFFER)\n        let t_size = 2;          // 3 components per iteration\n        let t_type = this.GL.FLOAT;   // the data is 32bit floats\n        let t_normalize = true;  // convert from 0-255 to 0.0-1.0\n        let t_stride = 0;        // 0 = move forward size * sizeof(type) each iteration to get the next color\n        let t_offset = 0;        // start at the beginning of the buffer\n        this.GL.vertexAttribPointer(\n            this.texcoordAttributeLocation, t_size, t_type, t_normalize, t_stride, t_offset);\n\n\n        this.GL.enable(this.GL.DEPTH_TEST);\n        this.GL.depthFunc(this.GL.LESS);      \n        this.GL.enable(this.GL.BLEND);\n        //this.GL.blendFuncSeparate(this.GL.GL_SRC_ALPHA, this.GL.GL_ONE_MINUS_SRC_ALPHA, this.GL.GL_ONE, this.GL.GL_ONE_MINUS_SRC_ALPHA);\n    }\n\n    /**\n     * Checks if the program for the next object to draw must be changed.\n     * If it does, it will change WebGL programs.\n     * \n     * @param {ProgramObject} program A program object returned from ProgramManager.getProgram()\n     */\n    _updateProgram(program) {\n        if (this.currentProgram == null || this.currentProgram.id != program.id) {\n            this.GL.useProgram(program.program);\n            this.currentProgram = program;\n        }\n    }\n\n    _updateTextures(textures) {\n        let newActiveTextures = [];\n        for (let t = 0; t < textures.length; t++) {\n            newActiveTextures.push(textures[t].id);\n            this.GL.activeTexture(this.GL.TEXTURE0 + t);\n            this.GL.bindTexture(this.GL.TEXTURE_2D, textures[t].tex);\n        }\n    }\n\n    registerTextRenderable(textRenderable, width, height) {\n        textRenderable.renderableTextID = this.RenderableTextIDCounter++ % 1024;\n        if (TextureManager.getTexture('TextData') == null) {\n            //data of the text data to be read in the FS for rendering. Defaults to 0's. If you have a character at location 0, 1st column, it will be the \"empty\" character.\n            let textDataTextureData = new Uint16Array(width * height);\n            TextureManager.addDataTexture('TextData', textDataTextureData, RenderManager.GL.R16UI, RenderManager.GL.RED_INTEGER, RenderManager.GL.UNSIGNED_SHORT, -1, -1, width, height);\n        }\n    }\n\n    forceUpdate() {\n        if (performance.now() + 0.1 <= this.lastUpdate)\n            return;\n        requestAnimationFrame((time) => {\n            if (time > this.lastUpdate) {\n                this.lastUpdate = time;\n                RenderManager.update();\n            }\n        });\n    }\n\n    /**\n     * Update function for updating all renderable objects in each viewport in the current scene.\n     */\n    update() {\n        if (this.GL == null)\n            return;\n        // this.GL.clearColor(0, 0, 0, 0);\n        // this.GL.clearDepth(1.0);\n        this.GL.clear(this.GL.COLOR_BUFFER_BIT | this.GL.DEPTH_BUFFER_BIT);\n\n        let scene = SceneManager.getCurrentScene();\n        \n        if (scene == null)\n            return;\n\n        let viewports = scene.viewports;\n\n        for (let vi = 0; vi < viewports.length; vi++) {\n            let viewport = viewports[vi];\n\n            let viewPortWidth = viewport._rendererBounds.p2.x;\n            let viewPortHeight = viewport._rendererBounds.p2.y;\n\n            this.GL.viewport(viewport._rendererBounds.p1.x, viewport._rendererBounds.p1.y, viewPortWidth, viewPortHeight);\n\n            //setup camera from viewport\n\n            let renderables = viewport.renderables;\n            let renderableKeys = Object.keys(renderables);\n            for (let ri = 0; ri < renderableKeys.length; ri++) {\n                let renderable = renderables[renderableKeys[ri]];\n\n                if (renderable.hasPaused)\n                    continue;\n\n                this._updateProgram(renderable.program);\n\n                if (!renderable.setUniformData(Matrix3.projection(viewPortWidth, viewPortHeight).multiply(renderable.getMatrix()).m))\n                    continue;\n\n                //if (renderable.updateTextures) {\n                    this._updateTextures(renderable.textures);\n                    renderable.updateTextures = false;\n                //}\n\n                this.GL.drawArrays(renderable.primitiveType, 0, renderable.primitiveCount);\n            }\n        }\n    }\n}\n\n/**\n * Singleton reference to the Rendering Manager.\n */\nconst RenderManager = new _RenderManager();\nexport default RenderManager;",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/manager/RenderManager.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 430,
    "kind": "class",
    "name": "_RenderManager",
    "memberof": "src/manager/RenderManager.js",
    "static": true,
    "longname": "src/manager/RenderManager.js~_RenderManager",
    "access": "private",
    "export": true,
    "importPath": "seed-engine/src/manager/RenderManager.js",
    "importStyle": "{_RenderManager}",
    "description": "Manages the WebGL2 rendering of all renderable components in the scene.\nThis manager is not intended to be referenced directly.",
    "lineNumber": 14,
    "interface": false,
    "extends": [
      "src/manager/Manager.js~Manager"
    ]
  },
  {
    "__docId__": 431,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/manager/RenderManager.js~_RenderManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/RenderManager.js~_RenderManager#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 15,
    "undocument": true
  },
  {
    "__docId__": 432,
    "kind": "member",
    "name": "GL",
    "memberof": "src/manager/RenderManager.js~_RenderManager",
    "static": false,
    "longname": "src/manager/RenderManager.js~_RenderManager#GL",
    "access": "public",
    "description": null,
    "lineNumber": 17,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 433,
    "kind": "member",
    "name": "currentProgram",
    "memberof": "src/manager/RenderManager.js~_RenderManager",
    "static": false,
    "longname": "src/manager/RenderManager.js~_RenderManager#currentProgram",
    "access": "public",
    "description": null,
    "lineNumber": 18,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 434,
    "kind": "member",
    "name": "activeTextureIDs",
    "memberof": "src/manager/RenderManager.js~_RenderManager",
    "static": false,
    "longname": "src/manager/RenderManager.js~_RenderManager#activeTextureIDs",
    "access": "public",
    "description": null,
    "lineNumber": 19,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 435,
    "kind": "member",
    "name": "RenderableTextIDCounter",
    "memberof": "src/manager/RenderManager.js~_RenderManager",
    "static": false,
    "longname": "src/manager/RenderManager.js~_RenderManager#RenderableTextIDCounter",
    "access": "public",
    "description": null,
    "lineNumber": 22,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 436,
    "kind": "member",
    "name": "lastUpdate",
    "memberof": "src/manager/RenderManager.js~_RenderManager",
    "static": false,
    "longname": "src/manager/RenderManager.js~_RenderManager#lastUpdate",
    "access": "public",
    "description": null,
    "lineNumber": 25,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 437,
    "kind": "method",
    "name": "start",
    "memberof": "src/manager/RenderManager.js~_RenderManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/RenderManager.js~_RenderManager#start",
    "access": "public",
    "description": "Initial setup on GL rendering. ",
    "lineNumber": 31,
    "params": [],
    "return": null
  },
  {
    "__docId__": 439,
    "kind": "member",
    "name": "positionAttributeLocation",
    "memberof": "src/manager/RenderManager.js~_RenderManager",
    "static": false,
    "longname": "src/manager/RenderManager.js~_RenderManager#positionAttributeLocation",
    "access": "public",
    "description": null,
    "lineNumber": 38,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 440,
    "kind": "member",
    "name": "texcoordAttributeLocation",
    "memberof": "src/manager/RenderManager.js~_RenderManager",
    "static": false,
    "longname": "src/manager/RenderManager.js~_RenderManager#texcoordAttributeLocation",
    "access": "public",
    "description": null,
    "lineNumber": 41,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 441,
    "kind": "member",
    "name": "vao",
    "memberof": "src/manager/RenderManager.js~_RenderManager",
    "static": false,
    "longname": "src/manager/RenderManager.js~_RenderManager#vao",
    "access": "public",
    "description": null,
    "lineNumber": 49,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 442,
    "kind": "member",
    "name": "texcoordBuffer",
    "memberof": "src/manager/RenderManager.js~_RenderManager",
    "static": false,
    "longname": "src/manager/RenderManager.js~_RenderManager#texcoordBuffer",
    "access": "public",
    "description": null,
    "lineNumber": 63,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 443,
    "kind": "method",
    "name": "_updateProgram",
    "memberof": "src/manager/RenderManager.js~_RenderManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/RenderManager.js~_RenderManager#_updateProgram",
    "access": "private",
    "description": "Checks if the program for the next object to draw must be changed.\nIf it does, it will change WebGL programs.",
    "lineNumber": 92,
    "params": [
      {
        "nullable": null,
        "types": [
          "ProgramObject"
        ],
        "spread": false,
        "optional": false,
        "name": "program",
        "description": "A program object returned from ProgramManager.getProgram()"
      }
    ],
    "return": null
  },
  {
    "__docId__": 445,
    "kind": "method",
    "name": "_updateTextures",
    "memberof": "src/manager/RenderManager.js~_RenderManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/RenderManager.js~_RenderManager#_updateTextures",
    "access": "private",
    "description": null,
    "lineNumber": 99,
    "undocument": true,
    "params": [
      {
        "name": "textures",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 446,
    "kind": "method",
    "name": "registerTextRenderable",
    "memberof": "src/manager/RenderManager.js~_RenderManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/RenderManager.js~_RenderManager#registerTextRenderable",
    "access": "public",
    "description": null,
    "lineNumber": 108,
    "undocument": true,
    "params": [
      {
        "name": "textRenderable",
        "types": [
          "*"
        ]
      },
      {
        "name": "width",
        "types": [
          "*"
        ]
      },
      {
        "name": "height",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 447,
    "kind": "method",
    "name": "forceUpdate",
    "memberof": "src/manager/RenderManager.js~_RenderManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/RenderManager.js~_RenderManager#forceUpdate",
    "access": "public",
    "description": null,
    "lineNumber": 117,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 449,
    "kind": "method",
    "name": "update",
    "memberof": "src/manager/RenderManager.js~_RenderManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/RenderManager.js~_RenderManager#update",
    "access": "public",
    "description": "Update function for updating all renderable objects in each viewport in the current scene.",
    "lineNumber": 131,
    "params": [],
    "return": null
  },
  {
    "__docId__": 450,
    "kind": "variable",
    "name": "RenderManager",
    "memberof": "src/manager/RenderManager.js",
    "static": true,
    "longname": "src/manager/RenderManager.js~RenderManager",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/manager/RenderManager.js",
    "importStyle": "RenderManager",
    "description": null,
    "lineNumber": 183,
    "undocument": true,
    "type": {
      "types": [
        "src/manager/RenderManager.js~_RenderManager"
      ]
    }
  },
  {
    "__docId__": 451,
    "kind": "file",
    "name": "src/manager/SceneManager.js",
    "content": "import Manager from './Manager';\nimport GameObject from '../object/GameObject';\n\n/**\n * A manager which manages all scenes and passes commands to the current scene.\n * \n * Manages scenes on a stack, pausing scenes below them (stopping rendering), and managing\n * the top scene for triggering updates on all objects on the scene.\n * \n * GameObjects, components, or anything else can use the SceneManager to reference the\n * current active scene. There are also wrapper functions for passing SceneObjects and\n * Viewports to the current scene for registration with that scene.\n */\nexport class _SceneManager extends Manager {\n    constructor() {\n        super();\n        this.scenes = [];\n    }\n\n    /**\n     * Adds a SceneObject to the current scene on the stack. The scene will hold \n     * reference and manage the SceneObject.\n     * \n     * @param {SceneObject} sceneObject The SceneObject that is being registered.\n     */\n    registerSceneObject(sceneObject) {\n        let scene = this.getCurrentScene();\n        if (scene != null)\n            return scene.registerSceneObject(sceneObject);\n        else\n            return () => {};\n    }\n\n    /**\n     * Addsa viewport to the current scene on the stack. The scene will hold reference\n     * to the viewport.\n     * \n     * @param {viewport} viewport The Viewport that is being registered.\n     */\n    registerViewport(viewport) {\n        let scene = this.getCurrentScene();\n        if (scene != null)\n            return scene.registerViewport(viewport);\n    }\n\n    /**\n     * Gets the current scene on the stack. This scene will be the one currently\n     * used in the update loop.\n     */\n    getCurrentScene() {\n        if (this.scenes.length > 0)\n            return this.scenes[this.scenes.length - 1];\n        return null;\n    }\n\n    /**\n     * Starts the current scene on the stack.\n     */\n    start() {\n        if (this.scenes.length > 0) {\n            this.scenes[this.scenes.length - 1].start();\n        }\n    }\n\n    /**\n     * Updates the current scene and all SceneObjects that are assigned to that\n     * scene.\n     */\n    update() {\n        let scene = this.getCurrentScene();\n        if (scene != null) {\n            scene.update();\n            for (let i = 0; i < scene.sceneObjects.length; i++) {\n                scene.sceneObjects[i].update();\n            }\n        }\n    }\n\n    /**\n     * Ends all scenes, starting from the top & poping each scene off the stack as it goes.\n     */\n    end() {\n        while (this.scenes.length > 0) {\n            this.scenes[this.scenes.length - 1].pop().end();\n        }\n    }\n\n    /**\n     * Pauses the current scene.\n     */\n    pause() {\n        if (this.scenes.length > 0)\n            this.scenes[this.scenes.length - 1].pause();\n    }\n    \n    /**\n     * Unpauses the current scene.\n     */\n    unpause() {\n        if (this.scenes.length > 0)\n            this.scenes[this.scenes.length - 1].unpause();\n    }\n\n    /**\n     * Adds the new scene to the top of the stack, pausing the current\n     * scene first.\n     * \n     * @param {Scene} scene The new scene.\n     */\n    addScene(scene) {\n        if (this.scenes.length > 0) {\n            this.scenes[this.scenes.length - 1].pause();\n        }\n        this.scenes.push(scene);\n    }\n\n    /**\n     * Removes the top scene from the stack, calls its end() function,\n     * and unpauses the scene below it.\n     */\n    removeScene() {\n        this.scenes.pop().end();\n        this.scenes[this.scenes.length - 1].unpause();\n    }\n}\n\n/**\n * Singleton reference to the Scene Manager.\n */\nconst SceneManager = new _SceneManager();\nexport default SceneManager;",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/manager/SceneManager.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 452,
    "kind": "class",
    "name": "_SceneManager",
    "memberof": "src/manager/SceneManager.js",
    "static": true,
    "longname": "src/manager/SceneManager.js~_SceneManager",
    "access": "private",
    "export": true,
    "importPath": "seed-engine/src/manager/SceneManager.js",
    "importStyle": "{_SceneManager}",
    "description": "A manager which manages all scenes and passes commands to the current scene.\n\nManages scenes on a stack, pausing scenes below them (stopping rendering), and managing\nthe top scene for triggering updates on all objects on the scene.\n\nGameObjects, components, or anything else can use the SceneManager to reference the\ncurrent active scene. There are also wrapper functions for passing SceneObjects and\nViewports to the current scene for registration with that scene.",
    "lineNumber": 14,
    "interface": false,
    "extends": [
      "src/manager/Manager.js~Manager"
    ]
  },
  {
    "__docId__": 453,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/manager/SceneManager.js~_SceneManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/SceneManager.js~_SceneManager#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 15,
    "undocument": true
  },
  {
    "__docId__": 454,
    "kind": "member",
    "name": "scenes",
    "memberof": "src/manager/SceneManager.js~_SceneManager",
    "static": false,
    "longname": "src/manager/SceneManager.js~_SceneManager#scenes",
    "access": "public",
    "description": null,
    "lineNumber": 17,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 455,
    "kind": "method",
    "name": "registerSceneObject",
    "memberof": "src/manager/SceneManager.js~_SceneManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/SceneManager.js~_SceneManager#registerSceneObject",
    "access": "public",
    "description": "Adds a SceneObject to the current scene on the stack. The scene will hold \nreference and manage the SceneObject.",
    "lineNumber": 26,
    "params": [
      {
        "nullable": null,
        "types": [
          "SceneObject"
        ],
        "spread": false,
        "optional": false,
        "name": "sceneObject",
        "description": "The SceneObject that is being registered."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 456,
    "kind": "method",
    "name": "registerViewport",
    "memberof": "src/manager/SceneManager.js~_SceneManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/SceneManager.js~_SceneManager#registerViewport",
    "access": "public",
    "description": "Addsa viewport to the current scene on the stack. The scene will hold reference\nto the viewport.",
    "lineNumber": 40,
    "params": [
      {
        "nullable": null,
        "types": [
          "viewport"
        ],
        "spread": false,
        "optional": false,
        "name": "viewport",
        "description": "The Viewport that is being registered."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 457,
    "kind": "method",
    "name": "getCurrentScene",
    "memberof": "src/manager/SceneManager.js~_SceneManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/SceneManager.js~_SceneManager#getCurrentScene",
    "access": "public",
    "description": "Gets the current scene on the stack. This scene will be the one currently\nused in the update loop.",
    "lineNumber": 50,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 458,
    "kind": "method",
    "name": "start",
    "memberof": "src/manager/SceneManager.js~_SceneManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/SceneManager.js~_SceneManager#start",
    "access": "public",
    "description": "Starts the current scene on the stack.",
    "lineNumber": 59,
    "params": [],
    "return": null
  },
  {
    "__docId__": 459,
    "kind": "method",
    "name": "update",
    "memberof": "src/manager/SceneManager.js~_SceneManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/SceneManager.js~_SceneManager#update",
    "access": "public",
    "description": "Updates the current scene and all SceneObjects that are assigned to that\nscene.",
    "lineNumber": 69,
    "params": [],
    "return": null
  },
  {
    "__docId__": 460,
    "kind": "method",
    "name": "end",
    "memberof": "src/manager/SceneManager.js~_SceneManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/SceneManager.js~_SceneManager#end",
    "access": "public",
    "description": "Ends all scenes, starting from the top & poping each scene off the stack as it goes.",
    "lineNumber": 82,
    "params": [],
    "return": null
  },
  {
    "__docId__": 461,
    "kind": "method",
    "name": "pause",
    "memberof": "src/manager/SceneManager.js~_SceneManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/SceneManager.js~_SceneManager#pause",
    "access": "public",
    "description": "Pauses the current scene.",
    "lineNumber": 91,
    "params": [],
    "return": null
  },
  {
    "__docId__": 462,
    "kind": "method",
    "name": "unpause",
    "memberof": "src/manager/SceneManager.js~_SceneManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/SceneManager.js~_SceneManager#unpause",
    "access": "public",
    "description": "Unpauses the current scene.",
    "lineNumber": 99,
    "params": [],
    "return": null
  },
  {
    "__docId__": 463,
    "kind": "method",
    "name": "addScene",
    "memberof": "src/manager/SceneManager.js~_SceneManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/SceneManager.js~_SceneManager#addScene",
    "access": "public",
    "description": "Adds the new scene to the top of the stack, pausing the current\nscene first.",
    "lineNumber": 110,
    "params": [
      {
        "nullable": null,
        "types": [
          "Scene"
        ],
        "spread": false,
        "optional": false,
        "name": "scene",
        "description": "The new scene."
      }
    ],
    "return": null
  },
  {
    "__docId__": 464,
    "kind": "method",
    "name": "removeScene",
    "memberof": "src/manager/SceneManager.js~_SceneManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/SceneManager.js~_SceneManager#removeScene",
    "access": "public",
    "description": "Removes the top scene from the stack, calls its end() function,\nand unpauses the scene below it.",
    "lineNumber": 121,
    "params": [],
    "return": null
  },
  {
    "__docId__": 465,
    "kind": "variable",
    "name": "SceneManager",
    "memberof": "src/manager/SceneManager.js",
    "static": true,
    "longname": "src/manager/SceneManager.js~SceneManager",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/manager/SceneManager.js",
    "importStyle": "SceneManager",
    "description": null,
    "lineNumber": 131,
    "undocument": true,
    "type": {
      "types": [
        "src/manager/SceneManager.js~_SceneManager"
      ]
    }
  },
  {
    "__docId__": 466,
    "kind": "file",
    "name": "src/manager/TextureManager.js",
    "content": "import Manager from './Manager';\nimport DOMManager from './DOMManager';\nimport AudioManager from './AudioManager';\n\n\n/**\n * Manages textures in the engine so the RendererManager and Renderables\n * can reference one location for Textures. Essentially a texture library.\n */\nexport class _TextureManager extends Manager {\n    constructor() {\n        super();\n        this.textures = {};\n        this.textureIDs = [];\n    }\n\n    /**\n     * Returns a texture JSON Object containing the texture, texture data, name and id.\n     * \n     * @param {number} texID Name of the texture.\n     * \n     * @returns {Texture Object} Returns a JSON object with Texture data.\n     */\n    getTexture(texID) {\n        if (this.textures[texID] == null)\n            return null;\n        return this.textures[texID];\n    }\n\n    _setAvailableTextureID() {\n        for (let i = 0; i < this.textureIDs.length; i++)\n            if (!this.textureIDs[i]) {\n                this.textureIDs[i] = true;\n                return i;\n            }\n        this.textureIDs.push(true);\n        return this.textureIDs.length - 1;\n    }\n\n    /**\n     * Creates a Texture JSON Object and initializes the Texture with WebGL.\n     * The Texture is added to the textures array.\n     * \n     * @param {string} texName Name of the texture.\n     * @param {string} textureImageAsset Path to the texture image to load.\n     * @param {number} frameWidth Width of sprite in spritesheet. -1 for full.\n     * @param {number} frameHeight Height of sprite in spritesheet. -1 for full.\n     * @param {JSON Object} glyphInfo Object defining additional info for letters to be used as a mapping for writing text.\n     * Fonts should have these for displaying letters. Format the ojject like so:\n     * {\n     *     //height of all letters\n     *     height: 8, \n     * \n     *     //letter corrosponding to the location and size defined inside.\n     *     'A': {\n     *         //the x position in pixels for this character.\n     *         x: 0,\n     * \n     *         //width in pixels for this character.\n     *         width: 8\n     *     }\n     * }\n     * \n     * @returns {Promise} A pending promise which will return the texture reference after complete.\n     */\n    addTexture(texName, textureImageAsset, frameWidth, frameHeight, glyphInfo = null) {\n        return this._createTextureFromAsset(textureImageAsset).then((textureData) => {\n            let texObj = this.textures[texName] = Object.assign({\n                name: texName,\n                id: this._setAvailableTextureID(),\n                frameWidth,\n                frameHeight,\n                glyphInfo,\n            }, textureData);\n            this.textures[texName].framesWidth = texObj.width / texObj.frameWidth;\n            this.textures[texName].framesHeight = texObj.height / texObj.frameHeight;\n            return this.textures[texName];\n        })\n    }\n\n    /**\n     * \n     * @param {string} texName The name of the texture.\n     * @param {Array *} textureData An array object of data, array type depending on the textureInternalFormat.\n     * @param {GLint} textureInternalFormat Internal texture format type.\n     * @param {GLint} textureFormat Texture format type.\n     * @param {number} frameWidth Width of each sub sprite frame.\n     * @param {number} frameHeight Height of each sub sprite frame.\n     * @param {number} width Width of the texture.\n     * @param {number} height Height of the texture.\n     */\n    addDataTexture(texName, textureData, textureInternalFormat, textureFormat, textureByteType, frameWidth, frameHeight, width, height) {\n        let tex = this._createTextureFromData(textureData, textureInternalFormat, textureFormat, textureByteType, width, height);\n        this.textures[texName] = Object.assign({\n            name: texName,\n            id: this._setAvailableTextureID(),\n            frameWidth,\n            frameHeight,\n            width,\n            height,\n            framesWidth: width / frameWidth,\n            framesHeight: height / frameHeight,\n            textureInternalFormat,\n            textureFormat,\n            textureByteType,\n        }, {tex});\n        return this.textures[texName];\n    }\n\n    removeTexture(texName) {\n        if (this.textures[texName] == null)\n            return;\n        \n        let id = this.textures[texName].id;\n        this.textureIDs[id] = false;\n        this.textures[texName] = null;\n    }\n\n    updateDataTexture(texName, textureData, x1, y1, width, height) {\n        let texture = this.getTexture(texName);\n        DOMManager.GL.bindTexture(DOMManager.GL.TEXTURE_2D, texture.tex);\n        DOMManager.GL.texSubImage2D(DOMManager.GL.TEXTURE_2D, 0, x1, y1, width, height, texture.textureFormat, texture.textureByteType, textureData);\n        return texture;\n    }\n\n    addGlyphInfoToTexture(texName, glyphInfo) {\n        let texture = this.getTexture(texName);\n        if (texture == null) {\n            console.error('Texture does not exist!');\n            return false;\n        }\n        texture.glyphInfo = glyphInfo;\n    }\n\n    _createTextureFromData(texData, textureInternalFormat, textureFormat, textureByteType, width, height) {\n        let tex = DOMManager.GL.createTexture();\n\n        DOMManager.GL.bindTexture(DOMManager.GL.TEXTURE_2D, tex);\n        DOMManager.GL.pixelStorei(DOMManager.GL.UNPACK_FLIP_Y_WEBGL, false);\n        \n        DOMManager.GL.texParameteri(DOMManager.GL.TEXTURE_2D, DOMManager.GL.TEXTURE_MIN_FILTER, DOMManager.GL.NEAREST);\n        DOMManager.GL.texParameteri(DOMManager.GL.TEXTURE_2D, DOMManager.GL.TEXTURE_MAG_FILTER, DOMManager.GL.NEAREST);\n        DOMManager.GL.texParameteri(DOMManager.GL.TEXTURE_2D, DOMManager.GL.TEXTURE_WRAP_S, DOMManager.GL.CLAMP_TO_EDGE);\n        DOMManager.GL.texParameteri(DOMManager.GL.TEXTURE_2D, DOMManager.GL.TEXTURE_WRAP_T, DOMManager.GL.CLAMP_TO_EDGE);\n\n        DOMManager.GL.texImage2D(DOMManager.GL.TEXTURE_2D, 0, textureInternalFormat, width, height, 0, textureFormat, textureByteType, texData);\n\n        return tex;\n    }\n\n    /**\n     * Private function used for initializing a Texture from a path and\n     * binding it with WebGL.\n     * \n     * @param {string} asset Path to texture file.\n     * \n     * @returns {Promise} Returns a pending promise.\n     */\n    _createTextureFromAsset(asset) {\n        let texInfo = {\n            tex: DOMManager.GL.createTexture(),\n            width: 0,\n            height: 0,\n            framesWidth: 0,\n            framesHeight: 0,\n        };\n\n        return new Promise((res, rej) => {\n            let assetLoaded = new Image();\n            assetLoaded.addEventListener('load', () => {\n                texInfo.width = assetLoaded.width;\n                texInfo.height = assetLoaded.height;\n\n                DOMManager.GL.bindTexture(DOMManager.GL.TEXTURE_2D, texInfo.tex);\n               \n                DOMManager.GL.texParameteri(DOMManager.GL.TEXTURE_2D, DOMManager.GL.TEXTURE_WRAP_S, DOMManager.GL.CLAMP_TO_EDGE);\n                DOMManager.GL.texParameteri(DOMManager.GL.TEXTURE_2D, DOMManager.GL.TEXTURE_WRAP_T, DOMManager.GL.CLAMP_TO_EDGE);\n        \n                DOMManager.GL.bindTexture(DOMManager.GL.TEXTURE_2D, texInfo.tex);\n                DOMManager.GL.texImage2D(DOMManager.GL.TEXTURE_2D, 0, DOMManager.GL.RGBA, DOMManager.GL.RGBA, DOMManager.GL.UNSIGNED_BYTE, assetLoaded);\n                DOMManager.GL.generateMipmap(DOMManager.GL.TEXTURE_2D);\n                return res(texInfo);\n            });\n            assetLoaded.src = asset;\n        })\n    }\n}\n\n/**\n * Singleton reference to the WebGL Program Manager.\n */\nconst TextureManager = new _TextureManager();\nexport default TextureManager;",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/manager/TextureManager.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 467,
    "kind": "class",
    "name": "_TextureManager",
    "memberof": "src/manager/TextureManager.js",
    "static": true,
    "longname": "src/manager/TextureManager.js~_TextureManager",
    "access": "private",
    "export": true,
    "importPath": "seed-engine/src/manager/TextureManager.js",
    "importStyle": "{_TextureManager}",
    "description": "Manages textures in the engine so the RendererManager and Renderables\ncan reference one location for Textures. Essentially a texture library.",
    "lineNumber": 10,
    "interface": false,
    "extends": [
      "src/manager/Manager.js~Manager"
    ]
  },
  {
    "__docId__": 468,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/manager/TextureManager.js~_TextureManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/TextureManager.js~_TextureManager#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 11,
    "undocument": true
  },
  {
    "__docId__": 469,
    "kind": "member",
    "name": "textures",
    "memberof": "src/manager/TextureManager.js~_TextureManager",
    "static": false,
    "longname": "src/manager/TextureManager.js~_TextureManager#textures",
    "access": "public",
    "description": null,
    "lineNumber": 13,
    "undocument": true,
    "type": {
      "types": [
        "{}"
      ]
    }
  },
  {
    "__docId__": 470,
    "kind": "member",
    "name": "textureIDs",
    "memberof": "src/manager/TextureManager.js~_TextureManager",
    "static": false,
    "longname": "src/manager/TextureManager.js~_TextureManager#textureIDs",
    "access": "public",
    "description": null,
    "lineNumber": 14,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 471,
    "kind": "method",
    "name": "getTexture",
    "memberof": "src/manager/TextureManager.js~_TextureManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/TextureManager.js~_TextureManager#getTexture",
    "access": "public",
    "description": "Returns a texture JSON Object containing the texture, texture data, name and id.",
    "lineNumber": 24,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Texture Object} Returns a JSON object with Texture data."
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "texID",
        "description": "Name of the texture."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Texture Object"
      ],
      "spread": false,
      "description": "Returns a JSON object with Texture data."
    }
  },
  {
    "__docId__": 472,
    "kind": "method",
    "name": "_setAvailableTextureID",
    "memberof": "src/manager/TextureManager.js~_TextureManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/TextureManager.js~_TextureManager#_setAvailableTextureID",
    "access": "private",
    "description": null,
    "lineNumber": 30,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 473,
    "kind": "method",
    "name": "addTexture",
    "memberof": "src/manager/TextureManager.js~_TextureManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/TextureManager.js~_TextureManager#addTexture",
    "access": "public",
    "description": "Creates a Texture JSON Object and initializes the Texture with WebGL.\nThe Texture is added to the textures array.",
    "lineNumber": 66,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Promise} A pending promise which will return the texture reference after complete."
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "texName",
        "description": "Name of the texture."
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "textureImageAsset",
        "description": "Path to the texture image to load."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "frameWidth",
        "description": "Width of sprite in spritesheet. -1 for full."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "frameHeight",
        "description": "Height of sprite in spritesheet. -1 for full."
      },
      {
        "nullable": null,
        "types": [
          "JSON Object"
        ],
        "spread": false,
        "optional": false,
        "name": "glyphInfo",
        "description": "Object defining additional info for letters to be used as a mapping for writing text.\nFonts should have these for displaying letters. Format the ojject like so:\n{\n    //height of all letters\n    height: 8, \n\n    //letter corrosponding to the location and size defined inside.\n    'A': {\n        //the x position in pixels for this character.\n        x: 0,\n\n        //width in pixels for this character.\n        width: 8\n    }\n}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Promise"
      ],
      "spread": false,
      "description": "A pending promise which will return the texture reference after complete."
    }
  },
  {
    "__docId__": 474,
    "kind": "method",
    "name": "addDataTexture",
    "memberof": "src/manager/TextureManager.js~_TextureManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/TextureManager.js~_TextureManager#addDataTexture",
    "access": "public",
    "description": "",
    "lineNumber": 92,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "texName",
        "description": "The name of the texture."
      },
      {
        "nullable": null,
        "types": [
          "Array *"
        ],
        "spread": false,
        "optional": false,
        "name": "textureData",
        "description": "An array object of data, array type depending on the textureInternalFormat."
      },
      {
        "nullable": null,
        "types": [
          "GLint"
        ],
        "spread": false,
        "optional": false,
        "name": "textureInternalFormat",
        "description": "Internal texture format type."
      },
      {
        "nullable": null,
        "types": [
          "GLint"
        ],
        "spread": false,
        "optional": false,
        "name": "textureFormat",
        "description": "Texture format type."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "frameWidth",
        "description": "Width of each sub sprite frame."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "frameHeight",
        "description": "Height of each sub sprite frame."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "width",
        "description": "Width of the texture."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "height",
        "description": "Height of the texture."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 475,
    "kind": "method",
    "name": "removeTexture",
    "memberof": "src/manager/TextureManager.js~_TextureManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/TextureManager.js~_TextureManager#removeTexture",
    "access": "public",
    "description": null,
    "lineNumber": 110,
    "undocument": true,
    "params": [
      {
        "name": "texName",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 476,
    "kind": "method",
    "name": "updateDataTexture",
    "memberof": "src/manager/TextureManager.js~_TextureManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/TextureManager.js~_TextureManager#updateDataTexture",
    "access": "public",
    "description": null,
    "lineNumber": 119,
    "undocument": true,
    "params": [
      {
        "name": "texName",
        "types": [
          "*"
        ]
      },
      {
        "name": "textureData",
        "types": [
          "*"
        ]
      },
      {
        "name": "x1",
        "types": [
          "*"
        ]
      },
      {
        "name": "y1",
        "types": [
          "*"
        ]
      },
      {
        "name": "width",
        "types": [
          "*"
        ]
      },
      {
        "name": "height",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 477,
    "kind": "method",
    "name": "addGlyphInfoToTexture",
    "memberof": "src/manager/TextureManager.js~_TextureManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/TextureManager.js~_TextureManager#addGlyphInfoToTexture",
    "access": "public",
    "description": null,
    "lineNumber": 126,
    "undocument": true,
    "params": [
      {
        "name": "texName",
        "types": [
          "*"
        ]
      },
      {
        "name": "glyphInfo",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 478,
    "kind": "method",
    "name": "_createTextureFromData",
    "memberof": "src/manager/TextureManager.js~_TextureManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/TextureManager.js~_TextureManager#_createTextureFromData",
    "access": "private",
    "description": null,
    "lineNumber": 135,
    "undocument": true,
    "params": [
      {
        "name": "texData",
        "types": [
          "*"
        ]
      },
      {
        "name": "textureInternalFormat",
        "types": [
          "*"
        ]
      },
      {
        "name": "textureFormat",
        "types": [
          "*"
        ]
      },
      {
        "name": "textureByteType",
        "types": [
          "*"
        ]
      },
      {
        "name": "width",
        "types": [
          "*"
        ]
      },
      {
        "name": "height",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 479,
    "kind": "method",
    "name": "_createTextureFromAsset",
    "memberof": "src/manager/TextureManager.js~_TextureManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/TextureManager.js~_TextureManager#_createTextureFromAsset",
    "access": "private",
    "description": "Private function used for initializing a Texture from a path and\nbinding it with WebGL.",
    "lineNumber": 159,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Promise} Returns a pending promise."
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "asset",
        "description": "Path to texture file."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Promise"
      ],
      "spread": false,
      "description": "Returns a pending promise."
    }
  },
  {
    "__docId__": 480,
    "kind": "variable",
    "name": "TextureManager",
    "memberof": "src/manager/TextureManager.js",
    "static": true,
    "longname": "src/manager/TextureManager.js~TextureManager",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/manager/TextureManager.js",
    "importStyle": "TextureManager",
    "description": null,
    "lineNumber": 193,
    "undocument": true,
    "type": {
      "types": [
        "src/manager/TextureManager.js~_TextureManager"
      ]
    }
  },
  {
    "__docId__": 481,
    "kind": "file",
    "name": "src/manager/UIManager.js",
    "content": "import Manager from './Manager';\nimport { TextureManager } from '../entry';\n\nexport class _UIManager extends Manager {\n    constructor() {\n        super();\n\n        this.defaultStyle = {\n            buttonTexture: TextureManager.getTexture('uiButtonDefault'),\n            buttonSubImage: 0,\n            buttonHoverSubImage: 0,\n            buttonPressedSubImage: 1,\n            buttonReleasedSubImage: 1,\n            fontTexture: TextureManager.getTexture('fontDefault'),\n            textInputBoxTexture: TextureManager.getTexture('uiButtonDefault'),\n        };\n        this.styles = [];\n        this.currentStyle = null;\n        this.addStyle('Default', {});\n        this.setCurrentStyle('Default');\n    }\n\n    /**\n     * \n     * \n     * @param {JSONObject} jsonStyleObject A JSON formatted object containing generic drawing data for styles.\n     */\n    addStyle(uiStyleName, jsonStyleObject) {\n        this.styles[uiStyleName] = Object.assign({}, this.defaultStyle, jsonStyleObject);\n    }\n\n    setCurrentStyle(uiStyleName) {\n        this.currentStyle = this.getStyle(uiStyleName);\n    }\n\n    getCurrentStyle() {\n        return this.currentStyle;\n    }\n\n    getStyle(styleName) {\n        let style = this.styles[styleName];\n\n        if (style == null)\n            throw 'UI style does not exist!';\n\n        return style;\n    }\n}\n\n/**\n * Singleton reference to the UIManager.\n */\nconst UIManager = new _UIManager();\nexport default UIManager;",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/manager/UIManager.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 482,
    "kind": "class",
    "name": "_UIManager",
    "memberof": "src/manager/UIManager.js",
    "static": true,
    "longname": "src/manager/UIManager.js~_UIManager",
    "access": "private",
    "export": true,
    "importPath": "seed-engine/src/manager/UIManager.js",
    "importStyle": "{_UIManager}",
    "description": null,
    "lineNumber": 4,
    "undocument": true,
    "interface": false,
    "extends": [
      "src/manager/Manager.js~Manager"
    ]
  },
  {
    "__docId__": 483,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/manager/UIManager.js~_UIManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/UIManager.js~_UIManager#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 5,
    "undocument": true
  },
  {
    "__docId__": 484,
    "kind": "member",
    "name": "defaultStyle",
    "memberof": "src/manager/UIManager.js~_UIManager",
    "static": false,
    "longname": "src/manager/UIManager.js~_UIManager#defaultStyle",
    "access": "public",
    "description": null,
    "lineNumber": 8,
    "undocument": true,
    "type": {
      "types": [
        "{\"buttonTexture\": *, \"buttonSubImage\": *, \"buttonHoverSubImage\": *, \"buttonPressedSubImage\": number, \"buttonReleasedSubImage\": number, \"fontTexture\": *, \"textInputBoxTexture\": *}"
      ]
    }
  },
  {
    "__docId__": 485,
    "kind": "member",
    "name": "styles",
    "memberof": "src/manager/UIManager.js~_UIManager",
    "static": false,
    "longname": "src/manager/UIManager.js~_UIManager#styles",
    "access": "public",
    "description": null,
    "lineNumber": 17,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 486,
    "kind": "member",
    "name": "currentStyle",
    "memberof": "src/manager/UIManager.js~_UIManager",
    "static": false,
    "longname": "src/manager/UIManager.js~_UIManager#currentStyle",
    "access": "public",
    "description": null,
    "lineNumber": 18,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 487,
    "kind": "method",
    "name": "addStyle",
    "memberof": "src/manager/UIManager.js~_UIManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/UIManager.js~_UIManager#addStyle",
    "access": "public",
    "description": "",
    "lineNumber": 28,
    "params": [
      {
        "nullable": null,
        "types": [
          "JSONObject"
        ],
        "spread": false,
        "optional": false,
        "name": "jsonStyleObject",
        "description": "A JSON formatted object containing generic drawing data for styles."
      }
    ],
    "return": null
  },
  {
    "__docId__": 488,
    "kind": "method",
    "name": "setCurrentStyle",
    "memberof": "src/manager/UIManager.js~_UIManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/UIManager.js~_UIManager#setCurrentStyle",
    "access": "public",
    "description": null,
    "lineNumber": 32,
    "undocument": true,
    "params": [
      {
        "name": "uiStyleName",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 490,
    "kind": "method",
    "name": "getCurrentStyle",
    "memberof": "src/manager/UIManager.js~_UIManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/UIManager.js~_UIManager#getCurrentStyle",
    "access": "public",
    "description": null,
    "lineNumber": 36,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 491,
    "kind": "method",
    "name": "getStyle",
    "memberof": "src/manager/UIManager.js~_UIManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/UIManager.js~_UIManager#getStyle",
    "access": "public",
    "description": null,
    "lineNumber": 40,
    "undocument": true,
    "params": [
      {
        "name": "styleName",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 492,
    "kind": "variable",
    "name": "UIManager",
    "memberof": "src/manager/UIManager.js",
    "static": true,
    "longname": "src/manager/UIManager.js~UIManager",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/manager/UIManager.js",
    "importStyle": "UIManager",
    "description": null,
    "lineNumber": 54,
    "undocument": true,
    "type": {
      "types": [
        "src/manager/UIManager.js~_UIManager"
      ]
    }
  },
  {
    "__docId__": 493,
    "kind": "file",
    "name": "src/manager/UpdateableManager.js",
    "content": "import Manager from './Manager';\n\n/**\n * Singleton manager that manages all Updateable Objects. All updateable objects are given a global game\n * ID (number) which can be used to distinguish it.\n * \n * Any object that descends from Updateable will have an ID.\n */\nexport class _UpdateableManager extends Manager {\n    /**\n     * Constructor for UpdateableManager. Holds the static ID counter.\n     */\n    constructor() {\n        super();\n        this.updateableIDCounter = 0;\n    }\n\n    /**\n     * Gives an ID and a way to unsubscribe from the Updateable binding with the manager.\n     * \n     * Since the UpdateableManager does nothing to bind the Updateable to the manager, there is no code in the callback\n     * assigned. However, the pattern is there to outline a default.\n     * \n     * @param {Updateable} updateable The updateable to be registered.\n     */\n    registerUpdateable(updateable) {\n        updateable.id = this.updateableIDCounter++;\n        let deregisterCallback = () => {}\n        return deregisterCallback;\n    }\n}\n\n/**\n * Singleton reference to the Object Manager.\n */\nconst UpdateableManager = new _UpdateableManager();\nexport default UpdateableManager;",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/manager/UpdateableManager.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 494,
    "kind": "class",
    "name": "_UpdateableManager",
    "memberof": "src/manager/UpdateableManager.js",
    "static": true,
    "longname": "src/manager/UpdateableManager.js~_UpdateableManager",
    "access": "private",
    "export": true,
    "importPath": "seed-engine/src/manager/UpdateableManager.js",
    "importStyle": "{_UpdateableManager}",
    "description": "Singleton manager that manages all Updateable Objects. All updateable objects are given a global game\nID (number) which can be used to distinguish it.\n\nAny object that descends from Updateable will have an ID.",
    "lineNumber": 9,
    "interface": false,
    "extends": [
      "src/manager/Manager.js~Manager"
    ]
  },
  {
    "__docId__": 495,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/manager/UpdateableManager.js~_UpdateableManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/UpdateableManager.js~_UpdateableManager#constructor",
    "access": "public",
    "description": "Constructor for UpdateableManager. Holds the static ID counter.",
    "lineNumber": 13
  },
  {
    "__docId__": 496,
    "kind": "member",
    "name": "updateableIDCounter",
    "memberof": "src/manager/UpdateableManager.js~_UpdateableManager",
    "static": false,
    "longname": "src/manager/UpdateableManager.js~_UpdateableManager#updateableIDCounter",
    "access": "public",
    "description": null,
    "lineNumber": 15,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 497,
    "kind": "method",
    "name": "registerUpdateable",
    "memberof": "src/manager/UpdateableManager.js~_UpdateableManager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/manager/UpdateableManager.js~_UpdateableManager#registerUpdateable",
    "access": "public",
    "description": "Gives an ID and a way to unsubscribe from the Updateable binding with the manager.\n\nSince the UpdateableManager does nothing to bind the Updateable to the manager, there is no code in the callback\nassigned. However, the pattern is there to outline a default.",
    "lineNumber": 26,
    "params": [
      {
        "nullable": null,
        "types": [
          "Updateable"
        ],
        "spread": false,
        "optional": false,
        "name": "updateable",
        "description": "The updateable to be registered."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 498,
    "kind": "variable",
    "name": "UpdateableManager",
    "memberof": "src/manager/UpdateableManager.js",
    "static": true,
    "longname": "src/manager/UpdateableManager.js~UpdateableManager",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/manager/UpdateableManager.js",
    "importStyle": "UpdateableManager",
    "description": null,
    "lineNumber": 37,
    "undocument": true,
    "type": {
      "types": [
        "src/manager/UpdateableManager.js~_UpdateableManager"
      ]
    }
  },
  {
    "__docId__": 499,
    "kind": "file",
    "name": "src/object/GameObject.js",
    "content": "import Updateable from '../base/Updateable';\nimport Component from '../component/Component';\nimport Transform from '../component/Transform';\n\n/**\n * Baseclass GameObject which derives from Updateable.\n * \n * Do not derive this class directly! GameObjects are not managed until they are assigned to a manager.\n * Instead, derive SceneObject or PersistentObject to create objects that exist the scope of a scene, or the scope of the game.\n * \n * All objects that should exist in the game screen should derive this. \n */\nexport default class GameObject extends Updateable {\n    /**\n     * Default position, size and rotation of the Object.\n     * \n     * @param {Point} position A point of creation in the world.\n     * @param {Point} size A point representing scale of the object.\n     * @param {number} rotation A number representing angular rotation (in degrees).\n     */\n    constructor(position = new Point(0, 0, 0), size = new Point(32, 32, 1), rotation = 0) {\n        super();\n        this.className = 'GameObject';\n\n        this.components = {};\n        this.addComponent(new Transform(position, size, rotation));\n        this.transform = this.getComponent(\"Transform\");\n    }\n\n    /**\n     * Adds a component to this game object, and keeps reference to it.\n     * GameObjects will handle their components as they are added to the object.\n     * \n     * @param {Component} component The component assigned to this object.\n     */\n    addComponent(component) {\n        if (this.components[component.className] == null) {\n            this.components[component.className] = [];\n        }\n        if (component.isUnique && this.components[component.className].length > 0) {\n            throw 'There is already a unique component of type ' + component.className + ' on this GameObject!';\n            return false;\n        }\n        this.components[component.className].push(component);\n        component.gameObject = this;\n        component.onAddComponent();\n        return true;\n    }\n\n    /**\n     * Removes a single component from this GameObject by ID.\n     * \n     * @param {number} componentID Id of the component to remove.\n     */\n    removeComponent(componentName, componentID) {\n        if (this.components[componentName] == null)\n            return false;\n        for (let i = 0; i < this.components[componentName].length; i++) {\n            if (this.components[componentName][i].id === componentID) {\n                let comp = this.components[componentName][i];\n                this.components[componentName].splice(i, 1);\n                comp.end();\n                return true;\n            }\n        }\n        return false;\n    }\n\n    /**\n     * Removes all Components of the named type.\n     * \n     * @param {string} componentName The name of the components to clear.\n     */\n    removeComponents(componentName) {\n        if (this.components[componentName] == null)\n            return false;\n        for (let i = this.components[componentName].length - 1; i >= 0; i--) {\n            let comp = this.components[componentName][i];\n            this.components[componentName].splice(i, 1);\n            comp.end();\n        }\n        return true;\n    }\n\n    /**\n     * Removes all components except for the Transform component.\n     */\n    removeAllComponents() {\n        let compTypes = Object.keys(this.components);\n        for (let i = 0; i < compTypes.length; i++) {\n            let thisCompType = compTypes[i];\n            if (thisCompType === 'Transform')\n                continue;\n            for (let ii = 0; ii < this.components[thisCompType].length; ii++) {\n                this.components[thisCompType][ii].end();\n            }\n            this.components[thisCompType] = [];\n        }\n        return true;\n    }\n\n    /**\n     * Returns a boolean on if there is a component of type {componentName}.\n     * \n     * @param {string} componentName Name of the component type to search for.\n     * \n     * @returns {boolean} true if there is at least one component of this type.\n     */\n    hasComponent(componentName) {\n        if (this.components[componentName] == null) {\n            return false;\n        }\n        return this.components[componentName].length > 0;\n    }\n\n    /**\n     * Returns a component of type {componentName}. The second parameter can determine which \n     * Component of that type to return if there are more than 1. \n     * \n     * @param {string} componentName Name of the component type to return.\n     * @param {*} index Index of the component to get. Defaults to first component.\n     */\n    getComponent(componentName, index = 0) {\n        if (this.components[componentName] == null) {\n            return null;\n        }\n        return this.components[componentName][index];\n    }\n    \n    /**\n     * Updates all components on this GameObject.\n     */\n    updateComponents() {\n        let compTypes = Object.keys(this.components);\n        for (let i = 0; i < compTypes.length; i++) {\n            let thisCompType = compTypes[i];\n            for (let ii = 0; ii < this.components[thisCompType].length; ii++) {\n                this.components[thisCompType][ii].update();\n            }\n        }\n    }\n\n    onPause() {\n        let compTypes = Object.keys(this.components);\n        for (let i = 0; i < compTypes.length; i++) {\n            let thisCompType = compTypes[i];\n            for (let ii = 0; ii < this.components[thisCompType].length; ii++) {\n                this.components[thisCompType][ii].pause();\n            }\n        }\n    }\n\n    onUnpause() {\n        let compTypes = Object.keys(this.components);\n        for (let i = 0; i < compTypes.length; i++) {\n            let thisCompType = compTypes[i];\n            for (let ii = 0; ii < this.components[thisCompType].length; ii++) {\n                this.components[thisCompType][ii].unpause();\n            }\n        }\n    }\n    \n    /**\n     * Rewritten update() functions which is originally defined in Updateable.\n     * The GameObject adds a pre and post update function, and respective overrideable callbacks\n     * (onPreUpdate and onPostUpdate).\n     */\n    update() {\n        if (this.hasPaused)\n            return;\n        \n        if (!this.hasStarted) {\n            this.start();\n            return;\n        }\n        \n        this.preUpdate();\n        this.onUpdate();\n        this.updateComponents();\n        this.postUpdate();\n    }\n\n    /**\n     * Called by the GameObject before an update to do default calls for preUpdating. Afterwards it\n     * calls the overrideable function, onPreUpdate.\n     */\n    preUpdate() {\n        this.onPreUpdate();\n    }\n\n    /**\n     * Called by the GameObject after an update to do default calls for postUpdating. Afterwards it\n     * calls the overrideable function, onPostUpdate.\n     */\n    postUpdate() {\n        this.onPostUpdate();\n    }\n\n    /**\n     * Override for Pre Update functionality.\n     */\n    onPreUpdate() {}\n\n    /**\n     * Override for Post Update functionality.\n     */\n    onPostUpdate() {}\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/object/GameObject.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 500,
    "kind": "class",
    "name": "GameObject",
    "memberof": "src/object/GameObject.js",
    "static": true,
    "longname": "src/object/GameObject.js~GameObject",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/object/GameObject.js",
    "importStyle": "GameObject",
    "description": "Baseclass GameObject which derives from Updateable.\n\nDo not derive this class directly! GameObjects are not managed until they are assigned to a manager.\nInstead, derive SceneObject or PersistentObject to create objects that exist the scope of a scene, or the scope of the game.\n\nAll objects that should exist in the game screen should derive this. ",
    "lineNumber": 13,
    "interface": false,
    "extends": [
      "src/base/Updateable.js~Updateable"
    ]
  },
  {
    "__docId__": 501,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/object/GameObject.js~GameObject",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/object/GameObject.js~GameObject#constructor",
    "access": "public",
    "description": "Default position, size and rotation of the Object.",
    "lineNumber": 21,
    "params": [
      {
        "nullable": null,
        "types": [
          "Point"
        ],
        "spread": false,
        "optional": false,
        "name": "position",
        "description": "A point of creation in the world."
      },
      {
        "nullable": null,
        "types": [
          "Point"
        ],
        "spread": false,
        "optional": false,
        "name": "size",
        "description": "A point representing scale of the object."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "rotation",
        "description": "A number representing angular rotation (in degrees)."
      }
    ]
  },
  {
    "__docId__": 502,
    "kind": "member",
    "name": "className",
    "memberof": "src/object/GameObject.js~GameObject",
    "static": false,
    "longname": "src/object/GameObject.js~GameObject#className",
    "access": "public",
    "description": null,
    "lineNumber": 23,
    "undocument": true,
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 503,
    "kind": "member",
    "name": "components",
    "memberof": "src/object/GameObject.js~GameObject",
    "static": false,
    "longname": "src/object/GameObject.js~GameObject#components",
    "access": "public",
    "description": null,
    "lineNumber": 25,
    "undocument": true,
    "type": {
      "types": [
        "{}"
      ]
    }
  },
  {
    "__docId__": 504,
    "kind": "member",
    "name": "transform",
    "memberof": "src/object/GameObject.js~GameObject",
    "static": false,
    "longname": "src/object/GameObject.js~GameObject#transform",
    "access": "public",
    "description": null,
    "lineNumber": 27,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 505,
    "kind": "method",
    "name": "addComponent",
    "memberof": "src/object/GameObject.js~GameObject",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/object/GameObject.js~GameObject#addComponent",
    "access": "public",
    "description": "Adds a component to this game object, and keeps reference to it.\nGameObjects will handle their components as they are added to the object.",
    "lineNumber": 36,
    "params": [
      {
        "nullable": null,
        "types": [
          "Component"
        ],
        "spread": false,
        "optional": false,
        "name": "component",
        "description": "The component assigned to this object."
      }
    ],
    "return": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 506,
    "kind": "method",
    "name": "removeComponent",
    "memberof": "src/object/GameObject.js~GameObject",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/object/GameObject.js~GameObject#removeComponent",
    "access": "public",
    "description": "Removes a single component from this GameObject by ID.",
    "lineNumber": 55,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "componentID",
        "description": "Id of the component to remove."
      }
    ],
    "return": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 507,
    "kind": "method",
    "name": "removeComponents",
    "memberof": "src/object/GameObject.js~GameObject",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/object/GameObject.js~GameObject#removeComponents",
    "access": "public",
    "description": "Removes all Components of the named type.",
    "lineNumber": 74,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "componentName",
        "description": "The name of the components to clear."
      }
    ],
    "return": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 508,
    "kind": "method",
    "name": "removeAllComponents",
    "memberof": "src/object/GameObject.js~GameObject",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/object/GameObject.js~GameObject#removeAllComponents",
    "access": "public",
    "description": "Removes all components except for the Transform component.",
    "lineNumber": 88,
    "params": [],
    "return": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 509,
    "kind": "method",
    "name": "hasComponent",
    "memberof": "src/object/GameObject.js~GameObject",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/object/GameObject.js~GameObject#hasComponent",
    "access": "public",
    "description": "Returns a boolean on if there is a component of type {componentName}.",
    "lineNumber": 109,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{boolean} true if there is at least one component of this type."
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "componentName",
        "description": "Name of the component type to search for."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": "true if there is at least one component of this type."
    }
  },
  {
    "__docId__": 510,
    "kind": "method",
    "name": "getComponent",
    "memberof": "src/object/GameObject.js~GameObject",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/object/GameObject.js~GameObject#getComponent",
    "access": "public",
    "description": "Returns a component of type {componentName}. The second parameter can determine which \nComponent of that type to return if there are more than 1. ",
    "lineNumber": 123,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "componentName",
        "description": "Name of the component type to return."
      },
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "index",
        "description": "Index of the component to get. Defaults to first component."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 511,
    "kind": "method",
    "name": "updateComponents",
    "memberof": "src/object/GameObject.js~GameObject",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/object/GameObject.js~GameObject#updateComponents",
    "access": "public",
    "description": "Updates all components on this GameObject.",
    "lineNumber": 133,
    "params": [],
    "return": null
  },
  {
    "__docId__": 512,
    "kind": "method",
    "name": "onPause",
    "memberof": "src/object/GameObject.js~GameObject",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/object/GameObject.js~GameObject#onPause",
    "access": "public",
    "description": null,
    "lineNumber": 143,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 513,
    "kind": "method",
    "name": "onUnpause",
    "memberof": "src/object/GameObject.js~GameObject",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/object/GameObject.js~GameObject#onUnpause",
    "access": "public",
    "description": null,
    "lineNumber": 153,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 514,
    "kind": "method",
    "name": "update",
    "memberof": "src/object/GameObject.js~GameObject",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/object/GameObject.js~GameObject#update",
    "access": "public",
    "description": "Rewritten update() functions which is originally defined in Updateable.\nThe GameObject adds a pre and post update function, and respective overrideable callbacks\n(onPreUpdate and onPostUpdate).",
    "lineNumber": 168,
    "params": [],
    "return": null
  },
  {
    "__docId__": 515,
    "kind": "method",
    "name": "preUpdate",
    "memberof": "src/object/GameObject.js~GameObject",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/object/GameObject.js~GameObject#preUpdate",
    "access": "public",
    "description": "Called by the GameObject before an update to do default calls for preUpdating. Afterwards it\ncalls the overrideable function, onPreUpdate.",
    "lineNumber": 187,
    "params": [],
    "return": null
  },
  {
    "__docId__": 516,
    "kind": "method",
    "name": "postUpdate",
    "memberof": "src/object/GameObject.js~GameObject",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/object/GameObject.js~GameObject#postUpdate",
    "access": "public",
    "description": "Called by the GameObject after an update to do default calls for postUpdating. Afterwards it\ncalls the overrideable function, onPostUpdate.",
    "lineNumber": 195,
    "params": [],
    "return": null
  },
  {
    "__docId__": 517,
    "kind": "method",
    "name": "onPreUpdate",
    "memberof": "src/object/GameObject.js~GameObject",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/object/GameObject.js~GameObject#onPreUpdate",
    "access": "public",
    "description": "Override for Pre Update functionality.",
    "lineNumber": 202,
    "params": [],
    "return": null
  },
  {
    "__docId__": 518,
    "kind": "method",
    "name": "onPostUpdate",
    "memberof": "src/object/GameObject.js~GameObject",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/object/GameObject.js~GameObject#onPostUpdate",
    "access": "public",
    "description": "Override for Post Update functionality.",
    "lineNumber": 207,
    "params": [],
    "return": null
  },
  {
    "__docId__": 519,
    "kind": "file",
    "name": "src/object/PersistentObject.js",
    "content": "import GameObject from \"./GameObject\";\nimport PersistentManager from \"../manager/PersistentManager\";\n\n/**\n * A GameObject which exists across scenes. \n * \n * Objects which derive PersistentObjects do not belong to any one scene. \n * If the derived object is intended to be rendered cross scene, the renderable component's\n * viewports must be reassigned on scene changes.\n */\nexport default class PersistentObject extends GameObject {\n    /**\n     * Default position, size and rotation of the Object.\n     * \n     * @param {Point} position A point of creation in the world.\n     * @param {Point} size A point representing scale of the object.\n     * @param {number} rotation A number representing angular rotation (in degrees).\n     */\n    constructor(position = new Point(0, 0, 0), size = new Point(32, 32, 1), rotation = 0) {\n        super(position, size, rotation);\n        this.deregister = PersistentManager.registerPersistentObject(this);\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/object/PersistentObject.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 520,
    "kind": "class",
    "name": "PersistentObject",
    "memberof": "src/object/PersistentObject.js",
    "static": true,
    "longname": "src/object/PersistentObject.js~PersistentObject",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/object/PersistentObject.js",
    "importStyle": "PersistentObject",
    "description": "A GameObject which exists across scenes. \n\nObjects which derive PersistentObjects do not belong to any one scene. \nIf the derived object is intended to be rendered cross scene, the renderable component's\nviewports must be reassigned on scene changes.",
    "lineNumber": 11,
    "interface": false,
    "extends": [
      "src/object/GameObject.js~GameObject"
    ]
  },
  {
    "__docId__": 521,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/object/PersistentObject.js~PersistentObject",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/object/PersistentObject.js~PersistentObject#constructor",
    "access": "public",
    "description": "Default position, size and rotation of the Object.",
    "lineNumber": 19,
    "params": [
      {
        "nullable": null,
        "types": [
          "Point"
        ],
        "spread": false,
        "optional": false,
        "name": "position",
        "description": "A point of creation in the world."
      },
      {
        "nullable": null,
        "types": [
          "Point"
        ],
        "spread": false,
        "optional": false,
        "name": "size",
        "description": "A point representing scale of the object."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "rotation",
        "description": "A number representing angular rotation (in degrees)."
      }
    ]
  },
  {
    "__docId__": 522,
    "kind": "member",
    "name": "deregister",
    "memberof": "src/object/PersistentObject.js~PersistentObject",
    "static": false,
    "longname": "src/object/PersistentObject.js~PersistentObject#deregister",
    "access": "public",
    "description": null,
    "lineNumber": 21,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 523,
    "kind": "file",
    "name": "src/object/SceneObject.js",
    "content": "import GameObject from \"./GameObject\";\nimport SceneManager from '../manager/SceneManager';\nimport Point from '../internal/Point';\n\n/**\n * A GameObject which exists only on the current active scene.\n * When this object is instantiated, it registers with the current active scene\n * through the SceneManager.\n * \n */\nexport default class SceneObject extends GameObject {\n    /**\n     * Default position, size and rotation of the Object.\n     * \n     * @param {Point} position A point of creation in the world.\n     * @param {Point} size A point representing scale of the object.\n     * @param {number} rotation A number representing angular rotation (in degrees).\n     */\n    constructor(position = new Point(0, 0, 0), size = new Point(32, 32, 1), rotation = 0) {\n        super(position, size, rotation);\n        this.deregister = SceneManager.registerSceneObject(this);\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/object/SceneObject.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 524,
    "kind": "class",
    "name": "SceneObject",
    "memberof": "src/object/SceneObject.js",
    "static": true,
    "longname": "src/object/SceneObject.js~SceneObject",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/object/SceneObject.js",
    "importStyle": "SceneObject",
    "description": "A GameObject which exists only on the current active scene.\nWhen this object is instantiated, it registers with the current active scene\nthrough the SceneManager.",
    "lineNumber": 11,
    "interface": false,
    "extends": [
      "src/object/GameObject.js~GameObject"
    ]
  },
  {
    "__docId__": 525,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/object/SceneObject.js~SceneObject",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/object/SceneObject.js~SceneObject#constructor",
    "access": "public",
    "description": "Default position, size and rotation of the Object.",
    "lineNumber": 19,
    "params": [
      {
        "nullable": null,
        "types": [
          "Point"
        ],
        "spread": false,
        "optional": false,
        "name": "position",
        "description": "A point of creation in the world."
      },
      {
        "nullable": null,
        "types": [
          "Point"
        ],
        "spread": false,
        "optional": false,
        "name": "size",
        "description": "A point representing scale of the object."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "rotation",
        "description": "A number representing angular rotation (in degrees)."
      }
    ]
  },
  {
    "__docId__": 526,
    "kind": "member",
    "name": "deregister",
    "memberof": "src/object/SceneObject.js~SceneObject",
    "static": false,
    "longname": "src/object/SceneObject.js~SceneObject#deregister",
    "access": "public",
    "description": null,
    "lineNumber": 21,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 527,
    "kind": "file",
    "name": "src/prefab/ui/UIButton.js",
    "content": "import { ClickController, Point, SceneObject, Renderable2D, UIManager, UIText, UIPanel } from '../../entry';\n\nexport default class UIButton extends UIText {\n    constructor(viewport, x, y, w, h, text, onLeft, onRight = () => {}) {\n        super(viewport, x + (w * .1), y + (h * .1), w, h * .8, text);\n\n        this.buttonObject = new UIPanel(viewport, x, y, w, h, this.uiStyle.buttonTexture);\n        this.buttonObject.setSubIndex(this.uiStyle.buttonSubImage);\n        this.buttonObject.setDepth(1000);\n\n        this.viewport = viewport;\n        this.onLeftClick = onLeft;\n        this.onRightClick = onRight;\n\n        this.buttonObject.clickController = new ClickController(this.viewport, () => {\n            if (this.buttonObject.clickController.leftPressed) {\n                this.buttonObject.setSubIndex(this.uiStyle.buttonReleasedSubImage);\n                this.onLeftClick();\n                this.buttonObject.clickController.leftPressed = false;\n            }\n        }, () => {\n            if (this.buttonObject.clickController.rightPressed) {\n                this.buttonObject.setSubIndex(this.uiStyle.buttonReleasedSubImage);\n                this.onRightClick();\n                this.buttonObject.clickController.rightPressed = false;\n            }\n        }, () => {\n            this.buttonObject.setSubIndex(this.uiStyle.buttonPressedSubImage);\n        }, () => {\n            this.buttonObject.setSubIndex(this.uiStyle.buttonPressedSubImage);\n        });\n        this.buttonObject.addComponent(this.buttonObject.clickController);\n    }\n\n    onPause() {\n        this.textObject.pause();\n        this.textObject.renderableText.pause();\n        this.buttonObject.pause();\n        this.buttonObject.clickController.pause();\n    }\n\n    onUnpause() {\n        this.textObject.unpause();\n        this.textObject.renderableText.unpause();\n        this.buttonObject.unpause();\n        this.buttonObject.clickController.unpause();\n        this.setText(this.text);\n    }\n\n    setDepth(depth) {\n        this.textObject.renderableText.setDepth(depth);\n        this.buttonObject.setDepth(depth);\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/prefab/ui/UIButton.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 528,
    "kind": "class",
    "name": "UIButton",
    "memberof": "src/prefab/ui/UIButton.js",
    "static": true,
    "longname": "src/prefab/ui/UIButton.js~UIButton",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/prefab/ui/UIButton.js",
    "importStyle": "UIButton",
    "description": null,
    "lineNumber": 3,
    "undocument": true,
    "interface": false,
    "extends": [
      "src/entry.js~UIText"
    ]
  },
  {
    "__docId__": 529,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/prefab/ui/UIButton.js~UIButton",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIButton.js~UIButton#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 4,
    "undocument": true
  },
  {
    "__docId__": 530,
    "kind": "member",
    "name": "buttonObject",
    "memberof": "src/prefab/ui/UIButton.js~UIButton",
    "static": false,
    "longname": "src/prefab/ui/UIButton.js~UIButton#buttonObject",
    "access": "public",
    "description": null,
    "lineNumber": 7,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 531,
    "kind": "member",
    "name": "viewport",
    "memberof": "src/prefab/ui/UIButton.js~UIButton",
    "static": false,
    "longname": "src/prefab/ui/UIButton.js~UIButton#viewport",
    "access": "public",
    "description": null,
    "lineNumber": 11,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 532,
    "kind": "member",
    "name": "onLeftClick",
    "memberof": "src/prefab/ui/UIButton.js~UIButton",
    "static": false,
    "longname": "src/prefab/ui/UIButton.js~UIButton#onLeftClick",
    "access": "public",
    "description": null,
    "lineNumber": 12,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 533,
    "kind": "member",
    "name": "onRightClick",
    "memberof": "src/prefab/ui/UIButton.js~UIButton",
    "static": false,
    "longname": "src/prefab/ui/UIButton.js~UIButton#onRightClick",
    "access": "public",
    "description": null,
    "lineNumber": 13,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 534,
    "kind": "method",
    "name": "onPause",
    "memberof": "src/prefab/ui/UIButton.js~UIButton",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIButton.js~UIButton#onPause",
    "access": "public",
    "description": null,
    "lineNumber": 35,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 535,
    "kind": "method",
    "name": "onUnpause",
    "memberof": "src/prefab/ui/UIButton.js~UIButton",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIButton.js~UIButton#onUnpause",
    "access": "public",
    "description": null,
    "lineNumber": 42,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 536,
    "kind": "method",
    "name": "setDepth",
    "memberof": "src/prefab/ui/UIButton.js~UIButton",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIButton.js~UIButton#setDepth",
    "access": "public",
    "description": null,
    "lineNumber": 50,
    "undocument": true,
    "params": [
      {
        "name": "depth",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 537,
    "kind": "file",
    "name": "src/prefab/ui/UIElement.js",
    "content": "import { ClickController, Point, SceneObject, Renderable2D, UIManager } from '../../entry';\n\nexport default class UIElement extends SceneObject {\n    constructor(position, scale, rotation) {\n        super(position, scale, rotation);\n        this.uiStyle = UIManager.getCurrentStyle();\n    }\n\n    setStyle(uiStyleName) {\n        this.uiStyle = UIManager.getStyle(uiStyleName);\n    }\n\n    setDepth(depth) {\n        \n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/prefab/ui/UIElement.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 538,
    "kind": "class",
    "name": "UIElement",
    "memberof": "src/prefab/ui/UIElement.js",
    "static": true,
    "longname": "src/prefab/ui/UIElement.js~UIElement",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/prefab/ui/UIElement.js",
    "importStyle": "UIElement",
    "description": null,
    "lineNumber": 3,
    "undocument": true,
    "interface": false,
    "extends": [
      "src/entry.js~SceneObject"
    ]
  },
  {
    "__docId__": 539,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/prefab/ui/UIElement.js~UIElement",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIElement.js~UIElement#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 4,
    "undocument": true
  },
  {
    "__docId__": 540,
    "kind": "member",
    "name": "uiStyle",
    "memberof": "src/prefab/ui/UIElement.js~UIElement",
    "static": false,
    "longname": "src/prefab/ui/UIElement.js~UIElement#uiStyle",
    "access": "public",
    "description": null,
    "lineNumber": 6,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 541,
    "kind": "method",
    "name": "setStyle",
    "memberof": "src/prefab/ui/UIElement.js~UIElement",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIElement.js~UIElement#setStyle",
    "access": "public",
    "description": null,
    "lineNumber": 9,
    "undocument": true,
    "params": [
      {
        "name": "uiStyleName",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 543,
    "kind": "method",
    "name": "setDepth",
    "memberof": "src/prefab/ui/UIElement.js~UIElement",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIElement.js~UIElement#setDepth",
    "access": "public",
    "description": null,
    "lineNumber": 13,
    "undocument": true,
    "params": [
      {
        "name": "depth",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 544,
    "kind": "file",
    "name": "src/prefab/ui/UIPanel.js",
    "content": "import { ClickController, Point, SceneObject, Renderable2D, UIManager, UIElement, TextureManager } from '../../entry';\n\nexport default class UIPanel extends UIElement {\n    constructor(viewport, x, y, w, h, texture) {\n        super(new Point(x, y, 0), new Point(w, h, 0), 0);\n\n        this.panelObject = new SceneObject(new Point(x, y, 0), new Point(w, h, 0), 0);\n        this.panelObject.renderable = new Renderable2D();\n        this.panelObject.addComponent(this.panelObject.renderable);\n        this.panelObject.renderable.addToViewport(viewport);\n        this.panelObject.renderable.setTexture(texture);\n        this.panelObject.renderable.setDepth(2000);\n    }\n\n    setPosition(x, y) {\n        this.transform.setPosition(x, y, 0);\n        this.panelObject.transform.setPosition(x, y, 0);\n    }\n\n    setScale(x, y) {\n        this.transform.setScale(x, y, 0);\n        this.panelObject.transform.setScale(x, y, 0);\n    }\n\n    setColor(r, g, b, a) {\n        this.panelObject.renderable.setColor(r, g, b, a);\n    }\n\n    onPause() {\n        this.panelObject.pause();\n        this.panelObject.renderable.pause();\n    }\n\n    onUnpause() {\n        this.panelObject.unpause();\n        this.panelObject.renderable.unpause();\n    }\n\n    setSubIndex(index) {\n        this.panelObject.renderable.setSubIndex(index);\n    }\n\n    setDepth(depth) {\n        this.panelObject.renderable.setDepth(depth);\n    }\n\n    onEnd() {\n        this.panelObject.renderable.end();\n        this.panelObject.end();\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/prefab/ui/UIPanel.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 545,
    "kind": "class",
    "name": "UIPanel",
    "memberof": "src/prefab/ui/UIPanel.js",
    "static": true,
    "longname": "src/prefab/ui/UIPanel.js~UIPanel",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/prefab/ui/UIPanel.js",
    "importStyle": "UIPanel",
    "description": null,
    "lineNumber": 3,
    "undocument": true,
    "interface": false,
    "extends": [
      "src/entry.js~UIElement"
    ]
  },
  {
    "__docId__": 546,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/prefab/ui/UIPanel.js~UIPanel",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIPanel.js~UIPanel#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 4,
    "undocument": true
  },
  {
    "__docId__": 547,
    "kind": "member",
    "name": "panelObject",
    "memberof": "src/prefab/ui/UIPanel.js~UIPanel",
    "static": false,
    "longname": "src/prefab/ui/UIPanel.js~UIPanel#panelObject",
    "access": "public",
    "description": null,
    "lineNumber": 7,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 548,
    "kind": "method",
    "name": "setPosition",
    "memberof": "src/prefab/ui/UIPanel.js~UIPanel",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIPanel.js~UIPanel#setPosition",
    "access": "public",
    "description": null,
    "lineNumber": 15,
    "undocument": true,
    "params": [
      {
        "name": "x",
        "types": [
          "*"
        ]
      },
      {
        "name": "y",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 549,
    "kind": "method",
    "name": "setScale",
    "memberof": "src/prefab/ui/UIPanel.js~UIPanel",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIPanel.js~UIPanel#setScale",
    "access": "public",
    "description": null,
    "lineNumber": 20,
    "undocument": true,
    "params": [
      {
        "name": "x",
        "types": [
          "*"
        ]
      },
      {
        "name": "y",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 550,
    "kind": "method",
    "name": "setColor",
    "memberof": "src/prefab/ui/UIPanel.js~UIPanel",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIPanel.js~UIPanel#setColor",
    "access": "public",
    "description": null,
    "lineNumber": 25,
    "undocument": true,
    "params": [
      {
        "name": "r",
        "types": [
          "*"
        ]
      },
      {
        "name": "g",
        "types": [
          "*"
        ]
      },
      {
        "name": "b",
        "types": [
          "*"
        ]
      },
      {
        "name": "a",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 551,
    "kind": "method",
    "name": "onPause",
    "memberof": "src/prefab/ui/UIPanel.js~UIPanel",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIPanel.js~UIPanel#onPause",
    "access": "public",
    "description": null,
    "lineNumber": 29,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 552,
    "kind": "method",
    "name": "onUnpause",
    "memberof": "src/prefab/ui/UIPanel.js~UIPanel",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIPanel.js~UIPanel#onUnpause",
    "access": "public",
    "description": null,
    "lineNumber": 34,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 553,
    "kind": "method",
    "name": "setSubIndex",
    "memberof": "src/prefab/ui/UIPanel.js~UIPanel",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIPanel.js~UIPanel#setSubIndex",
    "access": "public",
    "description": null,
    "lineNumber": 39,
    "undocument": true,
    "params": [
      {
        "name": "index",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 554,
    "kind": "method",
    "name": "setDepth",
    "memberof": "src/prefab/ui/UIPanel.js~UIPanel",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIPanel.js~UIPanel#setDepth",
    "access": "public",
    "description": null,
    "lineNumber": 43,
    "undocument": true,
    "params": [
      {
        "name": "depth",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 555,
    "kind": "method",
    "name": "onEnd",
    "memberof": "src/prefab/ui/UIPanel.js~UIPanel",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIPanel.js~UIPanel#onEnd",
    "access": "public",
    "description": null,
    "lineNumber": 47,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 556,
    "kind": "file",
    "name": "src/prefab/ui/UIText.js",
    "content": "import { ClickController, Point, SceneObject, Renderable2D, UIManager, UIElement, RenderableText } from '../../entry';\n\nexport default class UIText extends UIElement {\n    constructor(viewport, x, y, w, h, text) {\n        super(new Point(x, y, 0), new Point(w, h, 0), 0);\n\n        this.text = text;\n        this.currentTextScale = 1;\n\n        this.textObject = new SceneObject(new Point(x, y, 0), new Point(w, h, 0), 0);\n        this.textObject.renderableText = new RenderableText(this.uiStyle.fontTexture);\n        this.textObject.addComponent(this.textObject.renderableText);\n        this.textObject.renderableText.addToViewport(viewport);\n        this.setText(text, h / this.uiStyle.fontTexture.frameHeight);\n        this.textObject.renderableText.setDepth(-2000);\n    }\n\n    translate(x, y) {\n        this.transform.translate(x, y);\n        this.textObject.transform.translate(x, y);\n    }\n\n    setPosition(x, y) {\n        this.transform.setPosition(x, y, 0);\n        this.textObject.transform.setPosition(x, y, 0);\n    }\n\n    setColor(r, g, b, a) {\n        this.textObject.renderableText.setColor(r, g, b, a);\n    }\n\n    getTextWidth() {\n        return this.textObject.renderableText.textData.textPixelWidth;\n    }\n\n    getText() {\n        return this.text;\n    }\n\n    setText(text, scale = this.currentTextScale) {\n        this.text = text;\n        this.currentTextScale = Math.max(1, scale);\n        this.textObject.renderableText.setText(text, this.currentTextScale);\n    }\n\n    onPause() {\n        this.textObject.pause();\n        this.textObject.renderableText.pause();\n    }\n\n    onUnpause() {\n        this.textObject.unpause();\n        this.textObject.renderableText.unpause();\n        this.setText(this.text);\n    }\n\n    setDepth(depth) {\n        this.textObject.renderableText.setDepth(depth);\n    }\n\n    end() {\n        this.textObject.removeAllComponents();\n        this.textObject.end();\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/prefab/ui/UIText.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 557,
    "kind": "class",
    "name": "UIText",
    "memberof": "src/prefab/ui/UIText.js",
    "static": true,
    "longname": "src/prefab/ui/UIText.js~UIText",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/prefab/ui/UIText.js",
    "importStyle": "UIText",
    "description": null,
    "lineNumber": 3,
    "undocument": true,
    "interface": false,
    "extends": [
      "src/entry.js~UIElement"
    ]
  },
  {
    "__docId__": 558,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/prefab/ui/UIText.js~UIText",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIText.js~UIText#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 4,
    "undocument": true
  },
  {
    "__docId__": 559,
    "kind": "member",
    "name": "text",
    "memberof": "src/prefab/ui/UIText.js~UIText",
    "static": false,
    "longname": "src/prefab/ui/UIText.js~UIText#text",
    "access": "public",
    "description": null,
    "lineNumber": 7,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 560,
    "kind": "member",
    "name": "currentTextScale",
    "memberof": "src/prefab/ui/UIText.js~UIText",
    "static": false,
    "longname": "src/prefab/ui/UIText.js~UIText#currentTextScale",
    "access": "public",
    "description": null,
    "lineNumber": 8,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 561,
    "kind": "member",
    "name": "textObject",
    "memberof": "src/prefab/ui/UIText.js~UIText",
    "static": false,
    "longname": "src/prefab/ui/UIText.js~UIText#textObject",
    "access": "public",
    "description": null,
    "lineNumber": 10,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 562,
    "kind": "method",
    "name": "translate",
    "memberof": "src/prefab/ui/UIText.js~UIText",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIText.js~UIText#translate",
    "access": "public",
    "description": null,
    "lineNumber": 18,
    "undocument": true,
    "params": [
      {
        "name": "x",
        "types": [
          "*"
        ]
      },
      {
        "name": "y",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 563,
    "kind": "method",
    "name": "setPosition",
    "memberof": "src/prefab/ui/UIText.js~UIText",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIText.js~UIText#setPosition",
    "access": "public",
    "description": null,
    "lineNumber": 23,
    "undocument": true,
    "params": [
      {
        "name": "x",
        "types": [
          "*"
        ]
      },
      {
        "name": "y",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 564,
    "kind": "method",
    "name": "setColor",
    "memberof": "src/prefab/ui/UIText.js~UIText",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIText.js~UIText#setColor",
    "access": "public",
    "description": null,
    "lineNumber": 28,
    "undocument": true,
    "params": [
      {
        "name": "r",
        "types": [
          "*"
        ]
      },
      {
        "name": "g",
        "types": [
          "*"
        ]
      },
      {
        "name": "b",
        "types": [
          "*"
        ]
      },
      {
        "name": "a",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 565,
    "kind": "method",
    "name": "getTextWidth",
    "memberof": "src/prefab/ui/UIText.js~UIText",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIText.js~UIText#getTextWidth",
    "access": "public",
    "description": null,
    "lineNumber": 32,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 566,
    "kind": "method",
    "name": "getText",
    "memberof": "src/prefab/ui/UIText.js~UIText",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIText.js~UIText#getText",
    "access": "public",
    "description": null,
    "lineNumber": 36,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 567,
    "kind": "method",
    "name": "setText",
    "memberof": "src/prefab/ui/UIText.js~UIText",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIText.js~UIText#setText",
    "access": "public",
    "description": null,
    "lineNumber": 40,
    "undocument": true,
    "params": [
      {
        "name": "text",
        "types": [
          "*"
        ]
      },
      {
        "name": "scale",
        "optional": true,
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 570,
    "kind": "method",
    "name": "onPause",
    "memberof": "src/prefab/ui/UIText.js~UIText",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIText.js~UIText#onPause",
    "access": "public",
    "description": null,
    "lineNumber": 46,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 571,
    "kind": "method",
    "name": "onUnpause",
    "memberof": "src/prefab/ui/UIText.js~UIText",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIText.js~UIText#onUnpause",
    "access": "public",
    "description": null,
    "lineNumber": 51,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 572,
    "kind": "method",
    "name": "setDepth",
    "memberof": "src/prefab/ui/UIText.js~UIText",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIText.js~UIText#setDepth",
    "access": "public",
    "description": null,
    "lineNumber": 57,
    "undocument": true,
    "params": [
      {
        "name": "depth",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 573,
    "kind": "method",
    "name": "end",
    "memberof": "src/prefab/ui/UIText.js~UIText",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UIText.js~UIText#end",
    "access": "public",
    "description": null,
    "lineNumber": 61,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 574,
    "kind": "file",
    "name": "src/prefab/ui/UITextInput.js",
    "content": "import { ClickController, Point, SceneObject, Renderable2D, UIManager, UIElement, InputManager, KeyCode } from '../../entry';\nimport UIPanel from './UIPanel';\nimport UIText from './UIText';\n\nexport default class UITextInput extends UIElement {\n      constructor(viewport, x, y, w, h, text = '', requiresFocus = true) {\n        super(new Point(x, y, 0), new Point(w, h, 0), 0);\n\n        this.text = text;\n        this.baseText = ''; //preceeding text always there.\n        this.textView = text;\n        this.textViewPassword = false;\n\n        this.x = x;\n        this.y = y;\n        this.w = w;\n        this.h = h;\n\n        this.maxTextLength = 80;\n\n        this.requiresFocus = requiresFocus;\n\n        this.isFocussed = !this.requiresFocus;\n\n        //called when enter/return key is pressed.\n        this.onReturn = () => {};\n\n        //Text\n        this.textObject = new UIText(viewport, x + 5, y + 5, w, h, this.text);\n\n        //text box\n        this.textBoxObject = new UIPanel(viewport, x, y, w, h, this.uiStyle.textInputBoxTexture);\n\n        //onclick\n        this.textBoxObject.clickController = new ClickController(viewport, () => {\n            if (!this.hasPaused)\n                this.focus();\n        }, () => {}, () => {\n            if (!this.hasPaused)\n                this.focus();\n        }, () => {}, () => {\n            if (!this.hasPaused)\n                this.focus(false);\n        });\n        this.textBoxObject.addComponent(this.textBoxObject.clickController);\n\n        //on keyboard input\n        this.keyboardListenerHandle = null;\n        this.setupKeyboardListener();\n        this.setText(this.text);\n    }\n\n    focus(focus = true) {\n        this.isFocussed = focus;\n        this.setText(this.text);\n    }\n\n    isPassword(textViewPassword) {\n        this.textViewPassword = textViewPassword;\n        if (textViewPassword) {\n            this.textView = this.text.replace(/./g, 'x');\n        } else {\n            this.textView = this.text;\n        }\n    }\n\n    applyBaseText() {\n        this.textView = this.baseText + this.textView;\n    }\n\n    getText() {\n        return this.text;\n    }\n\n    _applyFilters() {\n        this.isPassword(this.textViewPassword);\n        this.applyBaseText();\n    }\n\n    _updateText(text) { \n        this.textObject.setText(text, this.h / this.uiStyle.fontTexture.frameHeight);\n    }\n\n    setText(text) {\n        this.text = text;\n        this._applyFilters();\n        this._updateText(this.textView + (this.isFocussed || !this.requiresFocus ? '*' : ''));\n    }\n\n    setBaseText(text) {\n        this.baseText = text;\n        this._applyFilters();\n        this._updateText(this.textView);\n    }\n\n    setOnReturn(callback) {\n        this.onReturn = callback;\n    }\n\n    setDepth(depth) {\n        this.textObject.setDepth(depth);\n        this.textBoxObject.setDepth(depth);\n    }\n\n    setupKeyboardListener() {\n        if (this.keyboardListenerHandle != null)\n            this.keyboardListenerHandle.stop();\n        this.keyboardListenerHandle = InputManager.events.watch(InputManager.EVENT.KEY, (event) => {\n            if (!this.isFocussed && this.requiresFocus)\n                return;\n            \n            //backspace\n            if (event.code === 8)\n                this.text = this.text.substring(0, this.text.length - 1);\n\n            //return/enter\n            if (event.code === 13 && InputManager.isKeyDown(KeyCode.ENTER)) {\n                return this.onReturn();\n            }\n            \n            if (this.text.length >= this.maxTextLength)\n                return;\n\n            //space & underscore are the same due to lack of characters (for now)\n            if (event.code === 32 || event.code === 167)\n                this.text += ' ';\n\n            //numbers\n            if ((event.code >= 48 && event.code <= 57))\n                this.text += event.key;\n\n            //letters\n            if (event.code >= 64 && event.code <= 90)\n                this.text += event.key;\n\n            //      ; = , - . /\n            if (event.code >= 186 && event.code <= 191 || event.code == 219 || event.code == 221)\n                this.text += event.key;\n\n            //special\n            // if (event.code >= 48 && event.code <= 57)\n            //     this.text += event.key;\n\n\n\n            this.setText(this.text);\n        }, false);\n    }\n\n    onPause() {\n        this.textObject.pause();\n        this.textBoxObject.clickController.pause();\n        this.textBoxObject.pause();\n        if (this.keyboardListenerHandle != null)\n            this.keyboardListenerHandle.stop();\n    }\n\n    onUnpause() {\n        this.textObject.unpause();\n        this.textBoxObject.unpause();\n        this.textBoxObject.clickController.unpause();\n        this.setupKeyboardListener();\n        this.setText(this.text);\n    }\n\n    onEnd() {\n        this.textObject.end();\n        this.textBoxObject.clickController.end();\n        this.textBoxObject.end();\n        if (this.keyboardListenerHandle != null)\n            this.keyboardListenerHandle.stop();\n    }\n}\n\n\n",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/prefab/ui/UITextInput.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 575,
    "kind": "class",
    "name": "UITextInput",
    "memberof": "src/prefab/ui/UITextInput.js",
    "static": true,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/prefab/ui/UITextInput.js",
    "importStyle": "UITextInput",
    "description": null,
    "lineNumber": 5,
    "undocument": true,
    "interface": false,
    "extends": [
      "src/entry.js~UIElement"
    ]
  },
  {
    "__docId__": 576,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 6,
    "undocument": true
  },
  {
    "__docId__": 577,
    "kind": "member",
    "name": "text",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#text",
    "access": "public",
    "description": null,
    "lineNumber": 9,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 578,
    "kind": "member",
    "name": "baseText",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#baseText",
    "access": "public",
    "description": null,
    "lineNumber": 10,
    "undocument": true,
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 579,
    "kind": "member",
    "name": "textView",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#textView",
    "access": "public",
    "description": null,
    "lineNumber": 11,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 580,
    "kind": "member",
    "name": "textViewPassword",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#textViewPassword",
    "access": "public",
    "description": null,
    "lineNumber": 12,
    "undocument": true,
    "type": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 581,
    "kind": "member",
    "name": "x",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#x",
    "access": "public",
    "description": null,
    "lineNumber": 14,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 582,
    "kind": "member",
    "name": "y",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#y",
    "access": "public",
    "description": null,
    "lineNumber": 15,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 583,
    "kind": "member",
    "name": "w",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#w",
    "access": "public",
    "description": null,
    "lineNumber": 16,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 584,
    "kind": "member",
    "name": "h",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#h",
    "access": "public",
    "description": null,
    "lineNumber": 17,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 585,
    "kind": "member",
    "name": "maxTextLength",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#maxTextLength",
    "access": "public",
    "description": null,
    "lineNumber": 19,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 586,
    "kind": "member",
    "name": "requiresFocus",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#requiresFocus",
    "access": "public",
    "description": null,
    "lineNumber": 21,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 587,
    "kind": "member",
    "name": "isFocussed",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#isFocussed",
    "access": "public",
    "description": null,
    "lineNumber": 23,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 588,
    "kind": "member",
    "name": "onReturn",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#onReturn",
    "access": "public",
    "description": null,
    "lineNumber": 26,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 589,
    "kind": "member",
    "name": "textObject",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#textObject",
    "access": "public",
    "description": null,
    "lineNumber": 29,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 590,
    "kind": "member",
    "name": "textBoxObject",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#textBoxObject",
    "access": "public",
    "description": null,
    "lineNumber": 32,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 591,
    "kind": "member",
    "name": "keyboardListenerHandle",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#keyboardListenerHandle",
    "access": "public",
    "description": null,
    "lineNumber": 48,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 592,
    "kind": "method",
    "name": "focus",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#focus",
    "access": "public",
    "description": null,
    "lineNumber": 53,
    "undocument": true,
    "params": [
      {
        "name": "focus",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": true,
        "defaultValue": "true"
      }
    ],
    "return": null
  },
  {
    "__docId__": 594,
    "kind": "method",
    "name": "isPassword",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#isPassword",
    "access": "public",
    "description": null,
    "lineNumber": 58,
    "undocument": true,
    "params": [
      {
        "name": "textViewPassword",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 598,
    "kind": "method",
    "name": "applyBaseText",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#applyBaseText",
    "access": "public",
    "description": null,
    "lineNumber": 67,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 600,
    "kind": "method",
    "name": "getText",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#getText",
    "access": "public",
    "description": null,
    "lineNumber": 71,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 601,
    "kind": "method",
    "name": "_applyFilters",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#_applyFilters",
    "access": "private",
    "description": null,
    "lineNumber": 75,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 602,
    "kind": "method",
    "name": "_updateText",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#_updateText",
    "access": "private",
    "description": null,
    "lineNumber": 80,
    "undocument": true,
    "params": [
      {
        "name": "text",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 603,
    "kind": "method",
    "name": "setText",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#setText",
    "access": "public",
    "description": null,
    "lineNumber": 84,
    "undocument": true,
    "params": [
      {
        "name": "text",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 605,
    "kind": "method",
    "name": "setBaseText",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#setBaseText",
    "access": "public",
    "description": null,
    "lineNumber": 90,
    "undocument": true,
    "params": [
      {
        "name": "text",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 607,
    "kind": "method",
    "name": "setOnReturn",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#setOnReturn",
    "access": "public",
    "description": null,
    "lineNumber": 96,
    "undocument": true,
    "params": [
      {
        "name": "callback",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 609,
    "kind": "method",
    "name": "setDepth",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#setDepth",
    "access": "public",
    "description": null,
    "lineNumber": 100,
    "undocument": true,
    "params": [
      {
        "name": "depth",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 610,
    "kind": "method",
    "name": "setupKeyboardListener",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#setupKeyboardListener",
    "access": "public",
    "description": null,
    "lineNumber": 105,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 617,
    "kind": "method",
    "name": "onPause",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#onPause",
    "access": "public",
    "description": null,
    "lineNumber": 150,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 618,
    "kind": "method",
    "name": "onUnpause",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#onUnpause",
    "access": "public",
    "description": null,
    "lineNumber": 158,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 619,
    "kind": "method",
    "name": "onEnd",
    "memberof": "src/prefab/ui/UITextInput.js~UITextInput",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/prefab/ui/UITextInput.js~UITextInput#onEnd",
    "access": "public",
    "description": null,
    "lineNumber": 166,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 620,
    "kind": "file",
    "name": "src/render/Camera.js",
    "content": "",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/render/Camera.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 621,
    "kind": "file",
    "name": "src/render/Light.js",
    "content": "",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/render/Light.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 622,
    "kind": "file",
    "name": "src/render/Viewport.js",
    "content": "import SceneManager from '../manager/SceneManager';\nimport DOMManager from '../manager/DOMManager';\nimport Updateable from '../base/Updateable';\nimport Bounds from '../internal/Bounds';\n\n/**\n * A viewport is a display port on the game canvas. Each scene can have multiple\n * viewports and renderable objects are assigned to the ones they want to be drawn on.\n * \n * Viewports contain lighting and cameras.\n * \n * GameObjects and their components exist across all viewports, it is up to the programmer\n * to specify the viewports to render to.\n * \n * Examples on when to use viewports: \n * - UI\n * - Minimaps\n * - Different views\n * \n * TODO: An object of keys represented by 'z' indexes to store all \n * renderable objects in render order.\n */\nexport default class Viewport extends Updateable {\n    constructor(x, y, w, h) {\n        super();\n        this._bounds = null;\n        this._rendererBounds = null;\n        this.setBounds(x, y, w, h);\n\n        this.renderables = {};\n    }\n\n    setBounds(x, y, w, h) {\n        this._bounds = new Bounds(x, y, x + w, y + h);\n        this._rendererBounds = new Bounds(x, DOMManager.canvasHeight - y - h, w, h);\n    }\n\n    getBounds() {\n        return this._bounds;\n    }\n\n    /**\n     * Register an Updateable component with this viewport for drawing.\n     * \n     * @param {Renderable} renderable Renderable component to register.\n     */\n    registerRenderableComponent(renderable) {\n        this.renderables[renderable.id] = renderable;\n        let deregisterCallback = () => {\n            delete this.renderables[renderable.id];\n        }\n        return deregisterCallback;\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/render/Viewport.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 623,
    "kind": "class",
    "name": "Viewport",
    "memberof": "src/render/Viewport.js",
    "static": true,
    "longname": "src/render/Viewport.js~Viewport",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/render/Viewport.js",
    "importStyle": "Viewport",
    "description": "A viewport is a display port on the game canvas. Each scene can have multiple\nviewports and renderable objects are assigned to the ones they want to be drawn on.\n\nViewports contain lighting and cameras.\n\nGameObjects and their components exist across all viewports, it is up to the programmer\nto specify the viewports to render to.\n\nExamples on when to use viewports: \n- UI\n- Minimaps\n- Different views\n\nTODO: An object of keys represented by 'z' indexes to store all \nrenderable objects in render order.",
    "lineNumber": 23,
    "interface": false,
    "extends": [
      "src/base/Updateable.js~Updateable"
    ]
  },
  {
    "__docId__": 624,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/render/Viewport.js~Viewport",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/render/Viewport.js~Viewport#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 24,
    "undocument": true
  },
  {
    "__docId__": 625,
    "kind": "member",
    "name": "_bounds",
    "memberof": "src/render/Viewport.js~Viewport",
    "static": false,
    "longname": "src/render/Viewport.js~Viewport#_bounds",
    "access": "private",
    "description": null,
    "lineNumber": 26,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 626,
    "kind": "member",
    "name": "_rendererBounds",
    "memberof": "src/render/Viewport.js~Viewport",
    "static": false,
    "longname": "src/render/Viewport.js~Viewport#_rendererBounds",
    "access": "private",
    "description": null,
    "lineNumber": 27,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 627,
    "kind": "member",
    "name": "renderables",
    "memberof": "src/render/Viewport.js~Viewport",
    "static": false,
    "longname": "src/render/Viewport.js~Viewport#renderables",
    "access": "public",
    "description": null,
    "lineNumber": 30,
    "undocument": true,
    "type": {
      "types": [
        "{}"
      ]
    }
  },
  {
    "__docId__": 628,
    "kind": "method",
    "name": "setBounds",
    "memberof": "src/render/Viewport.js~Viewport",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/render/Viewport.js~Viewport#setBounds",
    "access": "public",
    "description": null,
    "lineNumber": 33,
    "undocument": true,
    "params": [
      {
        "name": "x",
        "types": [
          "*"
        ]
      },
      {
        "name": "y",
        "types": [
          "*"
        ]
      },
      {
        "name": "w",
        "types": [
          "*"
        ]
      },
      {
        "name": "h",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 631,
    "kind": "method",
    "name": "getBounds",
    "memberof": "src/render/Viewport.js~Viewport",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/render/Viewport.js~Viewport#getBounds",
    "access": "public",
    "description": null,
    "lineNumber": 38,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 632,
    "kind": "method",
    "name": "registerRenderableComponent",
    "memberof": "src/render/Viewport.js~Viewport",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/render/Viewport.js~Viewport#registerRenderableComponent",
    "access": "public",
    "description": "Register an Updateable component with this viewport for drawing.",
    "lineNumber": 47,
    "params": [
      {
        "nullable": null,
        "types": [
          "Renderable"
        ],
        "spread": false,
        "optional": false,
        "name": "renderable",
        "description": "Renderable component to register."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 633,
    "kind": "file",
    "name": "src/render/WebGL/Matrix.js",
    "content": "\n/**\n * Baseclass for a Matrix. Use Matrix3 or Matrix4 for 2D and 3D matrix math.\n */\nexport default class Matrix {\n\n    setPosition(x, y) {}\n\n    setScale(scaleX, scaleY) {}\n\n    setRotation(rotationDegree) {}\n\n    copy() {}\n\n    add(m) {}\n\n    multiply(m) {}\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/render/WebGL/Matrix.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 634,
    "kind": "class",
    "name": "Matrix",
    "memberof": "src/render/WebGL/Matrix.js",
    "static": true,
    "longname": "src/render/WebGL/Matrix.js~Matrix",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/render/WebGL/Matrix.js",
    "importStyle": "Matrix",
    "description": "Baseclass for a Matrix. Use Matrix3 or Matrix4 for 2D and 3D matrix math.",
    "lineNumber": 5,
    "interface": false
  },
  {
    "__docId__": 635,
    "kind": "method",
    "name": "setPosition",
    "memberof": "src/render/WebGL/Matrix.js~Matrix",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/render/WebGL/Matrix.js~Matrix#setPosition",
    "access": "public",
    "description": null,
    "lineNumber": 7,
    "undocument": true,
    "params": [
      {
        "name": "x",
        "types": [
          "*"
        ]
      },
      {
        "name": "y",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 636,
    "kind": "method",
    "name": "setScale",
    "memberof": "src/render/WebGL/Matrix.js~Matrix",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/render/WebGL/Matrix.js~Matrix#setScale",
    "access": "public",
    "description": null,
    "lineNumber": 9,
    "undocument": true,
    "params": [
      {
        "name": "scaleX",
        "types": [
          "*"
        ]
      },
      {
        "name": "scaleY",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 637,
    "kind": "method",
    "name": "setRotation",
    "memberof": "src/render/WebGL/Matrix.js~Matrix",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/render/WebGL/Matrix.js~Matrix#setRotation",
    "access": "public",
    "description": null,
    "lineNumber": 11,
    "undocument": true,
    "params": [
      {
        "name": "rotationDegree",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 638,
    "kind": "method",
    "name": "copy",
    "memberof": "src/render/WebGL/Matrix.js~Matrix",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/render/WebGL/Matrix.js~Matrix#copy",
    "access": "public",
    "description": null,
    "lineNumber": 13,
    "undocument": true,
    "params": [],
    "return": null
  },
  {
    "__docId__": 639,
    "kind": "method",
    "name": "add",
    "memberof": "src/render/WebGL/Matrix.js~Matrix",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/render/WebGL/Matrix.js~Matrix#add",
    "access": "public",
    "description": null,
    "lineNumber": 15,
    "undocument": true,
    "params": [
      {
        "name": "m",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 640,
    "kind": "method",
    "name": "multiply",
    "memberof": "src/render/WebGL/Matrix.js~Matrix",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/render/WebGL/Matrix.js~Matrix#multiply",
    "access": "public",
    "description": null,
    "lineNumber": 17,
    "undocument": true,
    "params": [
      {
        "name": "m",
        "types": [
          "*"
        ]
      }
    ],
    "return": null
  },
  {
    "__docId__": 641,
    "kind": "file",
    "name": "src/render/WebGL/Matrix3.js",
    "content": "import * as MathUtil from '../../utils/MathUtil';\nimport Matrix from './Matrix';\n\n\nexport default class Matrix3 extends Matrix {\n    constructor(data = [1,0,0,0,1,0,0,0,1]) {\n        super();\n        //default x = 0, y = 0, scaleXY = 1, rotation = 0\n        this.m = data;\n        return this;\n    }\n\n    /**\n     * Sets the translation positions of the matrix with x, y points. This overwrites the values and \n     * does not adjust the parameters to work relative to the rest of the matrix values.\n     * \n     * @param {number} x X position.\n     * @param {number} y Y position.\n     */\n    setPosition(x, y) {\n        this.m[6] = x;\n        this.m[7] = y;\n    }\n\n    /**\n     * Sets the scale values of the matrix with w, h values. This overwrites the values and \n     * does not adjust the parameters to work relative to the rest of the matrix values.\n     * \n     * @param {number} x X scale.\n     * @param {number} y Y scale.\n     */\n    setScale(x, y) {\n        this.m[0] = x;\n        this.m[4] = y;\n    }\n\n    /**\n     * Sets the matrix rotation values to rotate an object around the z axis. This overwrites the values and \n     * does not adjust the parameters to work relative to the rest of the matrix values.\n     * \n     * @param {number} rotationDegree \n     */\n    setRotation(rotationDegree) {\n        let rad = MathUtil.degToRad(rotationDegree);\n        let c = Math.cos(rad);\n        let s = Math.sin(rad);\n        this.m[0] = c;\n        this.m[1] = -s;\n        this.m[3] = s;\n        this.m[4] = c;\n    }\n\n    /**\n     * Makes a copy of the matrix3. This is a static function and can be called\n     * from Matrix3 prototype.\n     * \n     * @param {Matrix3} matrix The matrix3 to copy.\n     */\n    static copy(matrix) {\n        return new Matrix3(matrix.m.slice(0, matrix.m.length));\n    }\n\n    /**\n     * Adds a matrix to this matrix.\n     * \n     * @param {Matrix3} m3 The matrix to add to this matrix.\n     */\n    add(m3) {\n        throw 'unimplemented';\n    }\n\n    /**\n     * Static function which returns a projection matrix converting the\n     * top left coordinates to 0, 0, and bottom right to w, h.\n     * \n     * (Converted from -1, -1 top left to 1, 1 bottom right.)\n     * \n     * @param {number} w Width of the projection.\n     * @param {number} h Height of the projection.\n     */\n    static projection(w, h) {\n        return new Matrix3([\n        2 / w, 0, 0,\n        0, -2 / h, 0,\n        -1, 1, 1]);\n    }\n\n    /**\n     * Multiplies a matrix into this matrix.\n     * \n     * @param {Matrix3} m3 The matrix to multiply to this matrix.\n     */\n    multiply(m3) {\n        let mat = new Matrix3();\n        mat.m[0] = (this.m[0] * m3.m[0]) + (this.m[3] * m3.m[1]) + (this.m[6] * m3.m[2]);\n        mat.m[1] = (this.m[1] * m3.m[0]) + (this.m[4] * m3.m[1]) + (this.m[7] * m3.m[2]);\n        mat.m[2] = (this.m[2] * m3.m[0]) + (this.m[5] * m3.m[1]) + (this.m[8] * m3.m[2]);\n\n        mat.m[3] = (this.m[0] * m3.m[3]) + (this.m[3] * m3.m[4]) + (this.m[6] * m3.m[5]);\n        mat.m[4] = (this.m[1] * m3.m[3]) + (this.m[4] * m3.m[4]) + (this.m[7] * m3.m[5]);\n        mat.m[5] = (this.m[2] * m3.m[3]) + (this.m[5] * m3.m[4]) + (this.m[8] * m3.m[5]);\n\n        mat.m[6] = (this.m[0] * m3.m[6]) + (this.m[3] * m3.m[7]) + (this.m[6] * m3.m[8]);\n        mat.m[7] = (this.m[1] * m3.m[6]) + (this.m[4] * m3.m[7]) + (this.m[7] * m3.m[8]);\n        mat.m[8] = (this.m[2] * m3.m[6]) + (this.m[5] * m3.m[7]) + (this.m[8] * m3.m[8]);\n        return mat;\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/render/WebGL/Matrix3.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 642,
    "kind": "class",
    "name": "Matrix3",
    "memberof": "src/render/WebGL/Matrix3.js",
    "static": true,
    "longname": "src/render/WebGL/Matrix3.js~Matrix3",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/render/WebGL/Matrix3.js",
    "importStyle": "Matrix3",
    "description": null,
    "lineNumber": 5,
    "undocument": true,
    "interface": false,
    "extends": [
      "src/render/WebGL/Matrix.js~Matrix"
    ]
  },
  {
    "__docId__": 643,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/render/WebGL/Matrix3.js~Matrix3",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/render/WebGL/Matrix3.js~Matrix3#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 6,
    "undocument": true
  },
  {
    "__docId__": 644,
    "kind": "member",
    "name": "m",
    "memberof": "src/render/WebGL/Matrix3.js~Matrix3",
    "static": false,
    "longname": "src/render/WebGL/Matrix3.js~Matrix3#m",
    "access": "public",
    "description": null,
    "lineNumber": 9,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 645,
    "kind": "method",
    "name": "setPosition",
    "memberof": "src/render/WebGL/Matrix3.js~Matrix3",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/render/WebGL/Matrix3.js~Matrix3#setPosition",
    "access": "public",
    "description": "Sets the translation positions of the matrix with x, y points. This overwrites the values and \ndoes not adjust the parameters to work relative to the rest of the matrix values.",
    "lineNumber": 20,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "X position."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "y",
        "description": "Y position."
      }
    ],
    "return": null
  },
  {
    "__docId__": 646,
    "kind": "method",
    "name": "setScale",
    "memberof": "src/render/WebGL/Matrix3.js~Matrix3",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/render/WebGL/Matrix3.js~Matrix3#setScale",
    "access": "public",
    "description": "Sets the scale values of the matrix with w, h values. This overwrites the values and \ndoes not adjust the parameters to work relative to the rest of the matrix values.",
    "lineNumber": 32,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "X scale."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "y",
        "description": "Y scale."
      }
    ],
    "return": null
  },
  {
    "__docId__": 647,
    "kind": "method",
    "name": "setRotation",
    "memberof": "src/render/WebGL/Matrix3.js~Matrix3",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/render/WebGL/Matrix3.js~Matrix3#setRotation",
    "access": "public",
    "description": "Sets the matrix rotation values to rotate an object around the z axis. This overwrites the values and \ndoes not adjust the parameters to work relative to the rest of the matrix values.",
    "lineNumber": 43,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "rotationDegree",
        "description": ""
      }
    ],
    "return": null
  },
  {
    "__docId__": 648,
    "kind": "method",
    "name": "copy",
    "memberof": "src/render/WebGL/Matrix3.js~Matrix3",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/render/WebGL/Matrix3.js~Matrix3.copy",
    "access": "public",
    "description": "Makes a copy of the matrix3. This is a static function and can be called\nfrom Matrix3 prototype.",
    "lineNumber": 59,
    "params": [
      {
        "nullable": null,
        "types": [
          "Matrix3"
        ],
        "spread": false,
        "optional": false,
        "name": "matrix",
        "description": "The matrix3 to copy."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 649,
    "kind": "method",
    "name": "add",
    "memberof": "src/render/WebGL/Matrix3.js~Matrix3",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/render/WebGL/Matrix3.js~Matrix3#add",
    "access": "public",
    "description": "Adds a matrix to this matrix.",
    "lineNumber": 68,
    "params": [
      {
        "nullable": null,
        "types": [
          "Matrix3"
        ],
        "spread": false,
        "optional": false,
        "name": "m3",
        "description": "The matrix to add to this matrix."
      }
    ],
    "return": null
  },
  {
    "__docId__": 650,
    "kind": "method",
    "name": "projection",
    "memberof": "src/render/WebGL/Matrix3.js~Matrix3",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/render/WebGL/Matrix3.js~Matrix3.projection",
    "access": "public",
    "description": "Static function which returns a projection matrix converting the\ntop left coordinates to 0, 0, and bottom right to w, h.\n\n(Converted from -1, -1 top left to 1, 1 bottom right.)",
    "lineNumber": 81,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "w",
        "description": "Width of the projection."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "h",
        "description": "Height of the projection."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 651,
    "kind": "method",
    "name": "multiply",
    "memberof": "src/render/WebGL/Matrix3.js~Matrix3",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/render/WebGL/Matrix3.js~Matrix3#multiply",
    "access": "public",
    "description": "Multiplies a matrix into this matrix.",
    "lineNumber": 93,
    "params": [
      {
        "nullable": null,
        "types": [
          "Matrix3"
        ],
        "spread": false,
        "optional": false,
        "name": "m3",
        "description": "The matrix to multiply to this matrix."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 652,
    "kind": "file",
    "name": "src/scene/BasicScene.js",
    "content": "import Scene from './Scene';\nimport { Viewport } from '../entry';\nimport DOMManager from '../manager/DOMManager';\n\n/**\n * A basic representation of a working scene. Scenes need a viewport to give Renderable\n * components a place to be viewed by the RenderManager.\n * \n * This scene only contains one viewport which takes up the size of the canvas element.\n */\nexport default class BasicScene extends Scene {\n    constructor() {\n        super();\n        this.registerViewport(new Viewport(0, 0, DOMManager.canvas.width, DOMManager.canvas.height));\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/scene/BasicScene.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 653,
    "kind": "class",
    "name": "BasicScene",
    "memberof": "src/scene/BasicScene.js",
    "static": true,
    "longname": "src/scene/BasicScene.js~BasicScene",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/scene/BasicScene.js",
    "importStyle": "BasicScene",
    "description": "A basic representation of a working scene. Scenes need a viewport to give Renderable\ncomponents a place to be viewed by the RenderManager.\n\nThis scene only contains one viewport which takes up the size of the canvas element.",
    "lineNumber": 11,
    "interface": false,
    "extends": [
      "src/scene/Scene.js~Scene"
    ]
  },
  {
    "__docId__": 654,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/scene/BasicScene.js~BasicScene",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/scene/BasicScene.js~BasicScene#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 12,
    "undocument": true
  },
  {
    "__docId__": 655,
    "kind": "file",
    "name": "src/scene/Scene.js",
    "content": "import Updateable from '../base/Updateable';\nimport { SceneObject } from '../entry';\n\n/**\n * Baseclass for all scenes. When creating a new scene, it should inherit this\n * class. \n * Scenes keep track of their scene objects and viewports. The scene baseclass has\n * functions for registering these with the scene.\n */\nexport default class Scene extends Updateable {\n\n    /**\n     * Builds the SceneObjects and Viewports list.\n     */\n    constructor() {\n        super();\n        this.viewportIDCounter = 0;\n        this.sceneObjects = [];\n        this.viewports = [];\n    }\n\n    /**\n     * When a SceneObject is created, it is routed through the SceneManager to the current\n     * active scene to this function. The SceneObject will register with the scene to be referenced\n     * on update/pause/destruct calls on a scene specific basis.\n     * \n     * @param {SceneObject} sceneObject A SceneObject to register.\n     */\n    registerSceneObject(sceneObject) {\n        this.sceneObjects.push(sceneObject);\n        let deregisterCallback = () => {\n            for (let i = 0; i < this.sceneObjects.length; i++) {\n                if (this.sceneObjects[i].id ==sceneObject.id)\n                    this.sceneObjects.splice(i, 1);\n                    return;\n            }\n        }\n        return deregisterCallback;\n    }\n\n    /**\n     * Registers a Renderable component with the viewport, by index.\n     * \n     * @param {Renderable} renderable A Renderable to register to the viewport.\n     * @param {number} viewportIndex The index of the viewport.\n     */\n    registerRenderableComponent(renderable, viewportIndex) {\n        if (this.viewports.length > viewportIndex)\n            return this.viewports[viewportIndex].registerRenderableComponent(renderable);\n        else {\n            throw \"This viewport doesn't exist on this scene!\";\n        }\n    }\n\n    /**\n     * When a Viewport is created, it is routed through the SceneManager to the current\n     * active scene to this function. The Viewport will register with the scene to be referenced\n     * by the RenderManager and assigned to by Renderables.\n     * \n     * @param {Viewport} viewport A Viewport to register.\n     */\n    registerViewport(viewport) {\n        viewport.viewportIndex = this.viewportIDCounter++;\n        this.viewports.push(viewport);\n        let deregisterCallback = () => {\n            for (let i = 0; i < this.viewports.length; i++) {\n                if (this.viewports[i].viewportIndex === viewport.viewportIndex) {\n                    this.viewports.splice(i, 1);\n                    return;\n                }\n            }\n        }\n        return deregisterCallback;\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/scene/Scene.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 656,
    "kind": "class",
    "name": "Scene",
    "memberof": "src/scene/Scene.js",
    "static": true,
    "longname": "src/scene/Scene.js~Scene",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/scene/Scene.js",
    "importStyle": "Scene",
    "description": "Baseclass for all scenes. When creating a new scene, it should inherit this\nclass. \nScenes keep track of their scene objects and viewports. The scene baseclass has\nfunctions for registering these with the scene.",
    "lineNumber": 10,
    "interface": false,
    "extends": [
      "src/base/Updateable.js~Updateable"
    ]
  },
  {
    "__docId__": 657,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/scene/Scene.js~Scene",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/scene/Scene.js~Scene#constructor",
    "access": "public",
    "description": "Builds the SceneObjects and Viewports list.",
    "lineNumber": 15
  },
  {
    "__docId__": 658,
    "kind": "member",
    "name": "viewportIDCounter",
    "memberof": "src/scene/Scene.js~Scene",
    "static": false,
    "longname": "src/scene/Scene.js~Scene#viewportIDCounter",
    "access": "public",
    "description": null,
    "lineNumber": 17,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 659,
    "kind": "member",
    "name": "sceneObjects",
    "memberof": "src/scene/Scene.js~Scene",
    "static": false,
    "longname": "src/scene/Scene.js~Scene#sceneObjects",
    "access": "public",
    "description": null,
    "lineNumber": 18,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 660,
    "kind": "member",
    "name": "viewports",
    "memberof": "src/scene/Scene.js~Scene",
    "static": false,
    "longname": "src/scene/Scene.js~Scene#viewports",
    "access": "public",
    "description": null,
    "lineNumber": 19,
    "undocument": true,
    "type": {
      "types": [
        "*[]"
      ]
    }
  },
  {
    "__docId__": 661,
    "kind": "method",
    "name": "registerSceneObject",
    "memberof": "src/scene/Scene.js~Scene",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/scene/Scene.js~Scene#registerSceneObject",
    "access": "public",
    "description": "When a SceneObject is created, it is routed through the SceneManager to the current\nactive scene to this function. The SceneObject will register with the scene to be referenced\non update/pause/destruct calls on a scene specific basis.",
    "lineNumber": 29,
    "params": [
      {
        "nullable": null,
        "types": [
          "SceneObject"
        ],
        "spread": false,
        "optional": false,
        "name": "sceneObject",
        "description": "A SceneObject to register."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 662,
    "kind": "method",
    "name": "registerRenderableComponent",
    "memberof": "src/scene/Scene.js~Scene",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/scene/Scene.js~Scene#registerRenderableComponent",
    "access": "public",
    "description": "Registers a Renderable component with the viewport, by index.",
    "lineNumber": 47,
    "params": [
      {
        "nullable": null,
        "types": [
          "Renderable"
        ],
        "spread": false,
        "optional": false,
        "name": "renderable",
        "description": "A Renderable to register to the viewport."
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "viewportIndex",
        "description": "The index of the viewport."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 663,
    "kind": "method",
    "name": "registerViewport",
    "memberof": "src/scene/Scene.js~Scene",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/scene/Scene.js~Scene#registerViewport",
    "access": "public",
    "description": "When a Viewport is created, it is routed through the SceneManager to the current\nactive scene to this function. The Viewport will register with the scene to be referenced\nby the RenderManager and assigned to by Renderables.",
    "lineNumber": 62,
    "params": [
      {
        "nullable": null,
        "types": [
          "Viewport"
        ],
        "spread": false,
        "optional": false,
        "name": "viewport",
        "description": "A Viewport to register."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 664,
    "kind": "file",
    "name": "src/utils/GlobalMessager.js",
    "content": "import { Messager } from \"./Messager\";\n\n/**\n * GlobalMessager is a singleton reference to a Messager class.\n * \n * Acts as an engine-wise messager that can be used for miscellaneous events.\n */\nconst GlobalMessager = new Messager();\nexport default GlobalMessager;",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/utils/GlobalMessager.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 665,
    "kind": "file",
    "name": "src/utils/Loader.js",
    "content": "/**\n * Helper class for waiting for async code to complete, before continuing with code.\n * Allows multiple async loading of different types (prmoises/async-await functions) to be organized \n * into one \"Loader\".\n */\nexport default class Loader {\n    /**\n     * Loader constructor. Requires a callback function; called when all loading elements are complete.\n     * \n     * @param {function} loadCompleteCallback Callback function once loading is complete.\n     */\n    constructor(loadCompleteCallback) {\n        this.objectsToLoad = 0;\n        this.loadCount = 0;\n        this.loadCountQueued = 0;\n        this.started = false;\n\n        this.loadCompleteCallback = loadCompleteCallback;\n    }\n\n    /**\n     * Adds a Promise to the loader. Adding a promise wraps it allow the Loader to determine when loading is done.\n     * The load complete callback is not triggered until start() is called.\n     * \n     * @param {Promise} promise A pending promise.\n     */\n    load(promise) {\n        this.objectsToLoad++;\n        promise.then(() => {\n            if (this.started)\n                this.loadCount++;\n            else\n                this.loadCountQueued++;\n\n            if (this.loadCount >= this.objectsToLoad)\n                this.loadCompleteCallback();\n        });\n    }\n\n    /**\n     * Notifies the loader that you allow the loadCompleteCallback to be triggered once\n     * all items are loaded. Items will be loading before start is called, the results are just queued\n     * until start is called.\n     */\n    start() {\n        if (this.started)\n            return;\n\n        this.started = true;\n        this.loadCount += this.loadCountQueued;\n        this.loadCountQueued = 0;\n\n        if (this.loadCount >= this.objectsToLoad)\n            this.loadCompleteCallback();\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/utils/Loader.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 666,
    "kind": "class",
    "name": "Loader",
    "memberof": "src/utils/Loader.js",
    "static": true,
    "longname": "src/utils/Loader.js~Loader",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/utils/Loader.js",
    "importStyle": "Loader",
    "description": "Helper class for waiting for async code to complete, before continuing with code.\nAllows multiple async loading of different types (prmoises/async-await functions) to be organized \ninto one \"Loader\".",
    "lineNumber": 6,
    "interface": false
  },
  {
    "__docId__": 667,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/utils/Loader.js~Loader",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/utils/Loader.js~Loader#constructor",
    "access": "public",
    "description": "Loader constructor. Requires a callback function; called when all loading elements are complete.",
    "lineNumber": 12,
    "params": [
      {
        "nullable": null,
        "types": [
          "function"
        ],
        "spread": false,
        "optional": false,
        "name": "loadCompleteCallback",
        "description": "Callback function once loading is complete."
      }
    ]
  },
  {
    "__docId__": 668,
    "kind": "member",
    "name": "objectsToLoad",
    "memberof": "src/utils/Loader.js~Loader",
    "static": false,
    "longname": "src/utils/Loader.js~Loader#objectsToLoad",
    "access": "public",
    "description": null,
    "lineNumber": 13,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 669,
    "kind": "member",
    "name": "loadCount",
    "memberof": "src/utils/Loader.js~Loader",
    "static": false,
    "longname": "src/utils/Loader.js~Loader#loadCount",
    "access": "public",
    "description": null,
    "lineNumber": 14,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 670,
    "kind": "member",
    "name": "loadCountQueued",
    "memberof": "src/utils/Loader.js~Loader",
    "static": false,
    "longname": "src/utils/Loader.js~Loader#loadCountQueued",
    "access": "public",
    "description": null,
    "lineNumber": 15,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 671,
    "kind": "member",
    "name": "started",
    "memberof": "src/utils/Loader.js~Loader",
    "static": false,
    "longname": "src/utils/Loader.js~Loader#started",
    "access": "public",
    "description": null,
    "lineNumber": 16,
    "undocument": true,
    "type": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 672,
    "kind": "member",
    "name": "loadCompleteCallback",
    "memberof": "src/utils/Loader.js~Loader",
    "static": false,
    "longname": "src/utils/Loader.js~Loader#loadCompleteCallback",
    "access": "public",
    "description": null,
    "lineNumber": 18,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 673,
    "kind": "method",
    "name": "load",
    "memberof": "src/utils/Loader.js~Loader",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/utils/Loader.js~Loader#load",
    "access": "public",
    "description": "Adds a Promise to the loader. Adding a promise wraps it allow the Loader to determine when loading is done.\nThe load complete callback is not triggered until start() is called.",
    "lineNumber": 27,
    "params": [
      {
        "nullable": null,
        "types": [
          "Promise"
        ],
        "spread": false,
        "optional": false,
        "name": "promise",
        "description": "A pending promise."
      }
    ],
    "return": null
  },
  {
    "__docId__": 674,
    "kind": "method",
    "name": "start",
    "memberof": "src/utils/Loader.js~Loader",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/utils/Loader.js~Loader#start",
    "access": "public",
    "description": "Notifies the loader that you allow the loadCompleteCallback to be triggered once\nall items are loaded. Items will be loading before start is called, the results are just queued\nuntil start is called.",
    "lineNumber": 45,
    "params": [],
    "return": null
  },
  {
    "__docId__": 678,
    "kind": "file",
    "name": "src/utils/MathUtil.js",
    "content": "/**\n * Converts degrees to radians.\n * \n * @param {number} deg A number in degrees.\n */\nexport const degToRad = (deg) => {\n    return (deg / 180) * Math.PI;\n}\n\n/**\n * Converts radians to degress.\n * \n * @param {number} rad A number in radians.\n */\nexport const radToDeg = (rad) => {\n    return (rad / Math.PI) * 180;\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/utils/MathUtil.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 679,
    "kind": "function",
    "name": "degToRad",
    "memberof": "src/utils/MathUtil.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/utils/MathUtil.js~degToRad",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/utils/MathUtil.js",
    "importStyle": "{degToRad}",
    "description": "Converts degrees to radians.",
    "lineNumber": 6,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "deg",
        "description": "A number in degrees."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 680,
    "kind": "function",
    "name": "radToDeg",
    "memberof": "src/utils/MathUtil.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/utils/MathUtil.js~radToDeg",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/utils/MathUtil.js",
    "importStyle": "{radToDeg}",
    "description": "Converts radians to degress.",
    "lineNumber": 15,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "rad",
        "description": "A number in radians."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 681,
    "kind": "file",
    "name": "src/utils/Messager.js",
    "content": "/**\n * A messager is a managed dictionary that notifies listeners when specific entries\n * in the dictionary are updated. The messager contains functions for setting, getting, listening\n * and notifying of data changes.\n */\nexport default class Messager {\n    constructor() {\n        this.listenerIDCounter = 0;\n        this.data = {};\n        this.listeners = {};\n    }\n\n    /**\n     * Updates the data at a specific location in the Messager storage dictionary.\n     * If there are listeners, notify them.\n     * \n     * @param {string} key Dictionary key name.\n     * @param {*} data Data to set.\n     */\n    set(key, data) {\n        this.data[key] = data;\n        if (this.listeners[key] == null) {\n            this.listeners[key] = [];\n        } else {\n            this.notify(key);\n        }\n    }\n\n    /**\n     * Notifies all listeners currently waiting on updates at\n     * the location of the dictionary key.\n     * \n     * @param {string} key Dictionary key name.\n     */\n    notify(key) {\n        for (let i = 0; i < this.listeners[key].length; i++) {\n            this.listeners[key][i].callback(this.data[key]);\n        }\n    }\n\n    /**\n     * Returns the data at a location in the dictionary specified by the \n     * key.\n     * \n     * @param {string} key Dictionary key name.\n     */\n    get(key) {\n        return this.data[key];\n    }\n\n    /**\n     * Listens to a position in the dictionary for updates. The callback passed to the function\n     * is called whenever the position defined by the dictionary key is updated. \n     * \n     * By default, notifies the callback of the current data upon watching.\n     * \n     * \n     * \n     * @param {string} key Dictionary key name.\n     * @param {function} callback Callback function to trigger.\n     * @param {boolean} notifyNow Default: true. Trigger the callback now.\n     * \n     * @returns {function} A callback function to de-register from watching data at the key location.\n     */\n    watch(key, callback, notifyNow = true) {\n        let id = this.listenerIDCounter++;\n        let token = {\n            id,\n            callback,\n            stop: () => {\n                for (let i = 0; i < this.listeners[key].length; i++) {\n                    if (this.listeners[key][i].id === id) {\n                        this.listeners[key].splice(i, 1);\n                    }\n                }\n            }\n        }\n        if (this.listeners[key] == null) {\n            this.listeners[key] = [];\n            notifyNow = false;\n        }\n        this.listeners[key].push(token);\n        if (notifyNow)\n            callback(this.data[key]);\n        return token;\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/src/utils/Messager.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 682,
    "kind": "class",
    "name": "Messager",
    "memberof": "src/utils/Messager.js",
    "static": true,
    "longname": "src/utils/Messager.js~Messager",
    "access": "public",
    "export": true,
    "importPath": "seed-engine/src/utils/Messager.js",
    "importStyle": "Messager",
    "description": "A messager is a managed dictionary that notifies listeners when specific entries\nin the dictionary are updated. The messager contains functions for setting, getting, listening\nand notifying of data changes.",
    "lineNumber": 6,
    "interface": false
  },
  {
    "__docId__": 683,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/utils/Messager.js~Messager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/utils/Messager.js~Messager#constructor",
    "access": "public",
    "description": null,
    "lineNumber": 7,
    "undocument": true
  },
  {
    "__docId__": 684,
    "kind": "member",
    "name": "listenerIDCounter",
    "memberof": "src/utils/Messager.js~Messager",
    "static": false,
    "longname": "src/utils/Messager.js~Messager#listenerIDCounter",
    "access": "public",
    "description": null,
    "lineNumber": 8,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 685,
    "kind": "member",
    "name": "data",
    "memberof": "src/utils/Messager.js~Messager",
    "static": false,
    "longname": "src/utils/Messager.js~Messager#data",
    "access": "public",
    "description": null,
    "lineNumber": 9,
    "undocument": true,
    "type": {
      "types": [
        "{}"
      ]
    }
  },
  {
    "__docId__": 686,
    "kind": "member",
    "name": "listeners",
    "memberof": "src/utils/Messager.js~Messager",
    "static": false,
    "longname": "src/utils/Messager.js~Messager#listeners",
    "access": "public",
    "description": null,
    "lineNumber": 10,
    "undocument": true,
    "type": {
      "types": [
        "{}"
      ]
    }
  },
  {
    "__docId__": 687,
    "kind": "method",
    "name": "set",
    "memberof": "src/utils/Messager.js~Messager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/utils/Messager.js~Messager#set",
    "access": "public",
    "description": "Updates the data at a specific location in the Messager storage dictionary.\nIf there are listeners, notify them.",
    "lineNumber": 20,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "key",
        "description": "Dictionary key name."
      },
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "data",
        "description": "Data to set."
      }
    ],
    "return": null
  },
  {
    "__docId__": 688,
    "kind": "method",
    "name": "notify",
    "memberof": "src/utils/Messager.js~Messager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/utils/Messager.js~Messager#notify",
    "access": "public",
    "description": "Notifies all listeners currently waiting on updates at\nthe location of the dictionary key.",
    "lineNumber": 35,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "key",
        "description": "Dictionary key name."
      }
    ],
    "return": null
  },
  {
    "__docId__": 689,
    "kind": "method",
    "name": "get",
    "memberof": "src/utils/Messager.js~Messager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/utils/Messager.js~Messager#get",
    "access": "public",
    "description": "Returns the data at a location in the dictionary specified by the \nkey.",
    "lineNumber": 47,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "key",
        "description": "Dictionary key name."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 690,
    "kind": "method",
    "name": "watch",
    "memberof": "src/utils/Messager.js~Messager",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/utils/Messager.js~Messager#watch",
    "access": "public",
    "description": "Listens to a position in the dictionary for updates. The callback passed to the function\nis called whenever the position defined by the dictionary key is updated. \n\nBy default, notifies the callback of the current data upon watching.",
    "lineNumber": 65,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{function} A callback function to de-register from watching data at the key location."
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "key",
        "description": "Dictionary key name."
      },
      {
        "nullable": null,
        "types": [
          "function"
        ],
        "spread": false,
        "optional": false,
        "name": "callback",
        "description": "Callback function to trigger."
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": false,
        "name": "notifyNow",
        "description": "Default: true. Trigger the callback now."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "function"
      ],
      "spread": false,
      "description": "A callback function to de-register from watching data at the key location."
    }
  },
  {
    "kind": "index",
    "content": "# Seed Engine\n\n### Welcome\nSeed Engine is a lightweight 2D game engine using WebGL2. The engine is designed on the focus of creating a bridge between creating and publishing games to the Seed Network as modules.\n\n### Installation\nThe easiest way to get started with Seed Engine is by using NPM:\n```\nnpm i seed-engine --save\n```\n\nNow you can reference the Engine like so:\n```\nimport {Engine} from 'seed-engine';\n```\n\nEach file is its own class, similar to react. Multiple imports may look something like:\n```\nimport {Engine, SceneObject, Transform, Renderable2D} from 'seed-engine';\n```\n\n### Documentation\nYou can view the docs [here](https://jaegarsarauer.github.io/SeedGameEngine/index.html).\n\n\n### Testing\nYou can run tests using the npm command:\n```\nnpm run test\n```\n\nTesting documentation can be found [here](https://jaegarsarauer.github.io/SeedGameEngine/test.html).\n\n\n### Notes\n - The engine updates all systems on a parent first, children after pattern.\n    - However, GameObjects have two functions added to their Updateable _update() for calling pre and post updates. These updates happen before and after a regular update on the parent.",
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/README.md",
    "name": "./README.md",
    "static": true,
    "access": "public"
  },
  {
    "kind": "packageJSON",
    "content": "{\n    \"name\": \"seed-engine\",\n    \"version\": \"1.1.8\",\n    \"description\": \"A Lightweight 2D game engine using WebGL2. The engine is designed on the focus of creating a bridge between creating and publishing games to the Seed Network as modules.\",\n    \"main\": \"src/entry.js\",\n    \"scripts\": {\n        \"test\": \"webpack-dev-server\",\n        \"version\": \"./node_modules/.bin/esdoc -c ./esdoc.json\"\n    },\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"git+https://github.com/JaegarSarauer/SeedGameEngine.git\"\n    },\n    \"keywords\": [\n        \"Seed\",\n        \"Game\",\n        \"Engine\"\n    ],\n    \"author\": \"Jaegar Sarauer\",\n    \"license\": \"MIT\",\n    \"bugs\": {\n        \"url\": \"https://github.com/JaegarSarauer/SeedGameEngine/issues\"\n    },\n    \"homepage\": \"https://github.com/JaegarSarauer/SeedGameEngine#readme\",\n    \"devDependencies\": {\n        \"esdoc\": \"^1.1.0\",\n        \"esdoc-standard-plugin\": \"^1.0.0\",\n        \"webpack-cli\": \"^3.0.6\"\n    },\n    \"dependencies\": {\n        \"webpack\": \"^4.12.0\",\n        \"webpack-dev-server\": \"^3.1.10\"\n    }\n}",
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/package.json",
    "name": "package.json",
    "static": true,
    "access": "public"
  },
  {
    "__docId__": 691,
    "kind": "testFile",
    "name": "test/helper/Test.js",
    "content": "import {success, error, info} from './Log';\nimport TestManager from './TestManager';\n\nexport default class Test {\n    constructor(name, totalTests) {\n        this.name = name;\n        this.tests = [];\n        this.testsRun = 0;\n        this.testFailed = false;\n        this.testStart = 0;\n        this.totalTests = totalTests;\n        this.testComplete = false;\n        TestManager.addTest(this);\n    }\n\n    run() {\n        info('[Running]: ' + this.name);\n        this.testStart = performance.now();\n        this.steps();\n        this.runSteps();\n    }\n\n    equals(num1, num2, precision = 12) {\n        return (parseFloat(num1).toFixed(precision) === parseFloat(num2).toFixed(precision));\n    }\n\n    steps() {\n        throw 'Steps must be added to the test!';\n    }\n\n    getResult(result, test) {\n        let tEnd = performance.now();\n        let time = (tEnd - test.tStart).toFixed(2);\n        if (result) {\n            success('\\t' + test.name + \" || Time: \" + (time < 1 ? '< 1' : time) + 'ms');\n        } else {\n            this.testFailed = true;\n            error('\\t' + test.name + \" || Time: \" + (time < 1 ? '< 1' : time) + 'ms');\n        }\n        this.testsRun++;\n        if (this.testsRun >= this.totalTests) {\n            if (this.testFailed) {\n                error('[Fail]: ' + this.name + \" || Time: \" + (time < 1 ? '< 1' : time) + 'ms');\n            } else {\n                success('[Success]: ' + this.name + \" || Time: \" + (time < 1 ? '< 1' : time) + 'ms');\n            }\n            this.testComplete = true;\n        }\n    }\n\n    addStep(testName, functionStep) {\n        let test = {\n            name: testName,\n            tStart: performance.now(),\n            functionStep,\n        }\n\n        this.tests.push(test);\n    }\n\n    runSteps() {\n        let interval = setInterval(() => {\n            if (this.testsRun < this.totalTests) {\n                let test = this.tests.shift();\n                if (test == null)\n                    return;\n                let result = test.functionStep();\n                if (typeof result == 'object') {\n                    result.then((r) => {\n                        this.getResult(r, test);\n                    });\n                } else {\n                    this.getResult(result, test);\n                }\n            } else {\n                this.cleanup();\n                clearTimeout(interval);\n            }\n        }, 10);\n    }\n\n    cleanup() {}\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/helper/Test.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 692,
    "kind": "testFile",
    "name": "test/tests/AnimationComponentTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport { Animation, Scene, Viewport, SceneObject, SceneManager, Point } from '../../src/entry';\n\n/**\n * Example test. Runs a few simple assertions and chains them.\n * The third one fails on purpose.\n * @test \n */\nexport default class AnimationComponentTest extends Test {\n    constructor() {\n        super('Animation Component Test', 8); \n        this.loader = null;\n    }\n    \n    steps() {\n        let scene = new Scene();\n        \n        let viewport = new Viewport(0, 0, 400, 400);\n\n        SceneManager.addScene(scene);\n\n        let deregister = scene.registerViewport(viewport);\n        let gameObject = new SceneObject(new Point(0, 0, 0), new Point(1, 1, 1), 0);\n        let animation = null;\n        // renderable.setTexture('');\n        // renderable.addToViewport(0);\n\n        this.addStep('Assign Animation Component to Scene Object', () => {\n            animation = new Animation();\n            return gameObject.addComponent(animation);\n        });\n\n        this.addStep('Animation Component on Add', () => {\n            let once = false;\n            return new Promise((res, rej) => {\n                gameObject.onUpdate = () => {\n                    if (once)\n                        return;\n                    once = true;\n\n                    this.addStep('Build Interpolation', () => {\n                        return new Promise((res, rej) => {\n                            let end = false;\n                            let clearTM = setInterval(() => {\n                                if (end) {\n                                    clearInterval(clearTM);\n\n                                    this.addStep('Interpolate Position', () => {\n                                        animation.interpolatePosition(-1, -5, 0, 4);\n                                        return new Promise((res, rej) => {\n                                            let clearTM = setInterval(() => {\n                                                if (this.equals(gameObject.transform.getPosition().x, -1) && this.equals(gameObject.transform.getPosition().y, -19)) {\n                                                    clearInterval(clearTM);\n                                                    return res(true);\n                                                }\n                                            }, 5);\n                                        });\n                                    });\n\n                                    this.addStep('Interpolate Scale', () => {\n                                        animation.interpolateScale(2, 2, 0, 2);\n                                        return new Promise((res, rej) => {\n                                            let clearTM = setInterval(() => {\n                                                if (this.equals(gameObject.transform.getScale().x, 5) && this.equals(gameObject.transform.getScale().y, 5)) {\n                                                    clearInterval(clearTM);\n                                                    return res(true);\n                                                }\n                                            }, 5);\n                                        });\n                                    });\n\n                                    this.addStep('Interpolate Rotation', () => {\n                                        animation.interpolateRotation(21, 5);\n                                        return new Promise((res, rej) => {\n                                            let clearTM = setInterval(() => {\n                                                if (this.equals(gameObject.transform.getRotation(), 105)) {\n                                                    clearInterval(clearTM);\n\n                                                    this.addStep('Clear All Animations', () => {\n                                                        animation.clearAnimations();\n                                                        deregister();\n                                                        SceneManager.removeScene();\n                                                        return true;\n                                                    });\n\n                                                    return res(true);\n                                                }\n                                            }, 5);\n                                        });\n                                    });\n                                    \n                                    return res(this.equals(gameObject.transform.getPosition().x, 3) && this.equals(gameObject.transform.getPosition().y, 1));\n                                }\n                            }, 5);\n                            animation.buildInterpolation('TestAnim', 4, () => {\n                                gameObject.transform.translate(1, 0);\n                            }, () => {\n                                gameObject.transform.translate(0, 1);\n                                end = true; \n                            });\n                        });\n                    });\n\n                    this.addStep('Clear Animation', () => {\n                        animation.buildInterpolation('TestAnim2', 4, () => {\n                            gameObject.transform.translate(1, 0);\n                        }, () => {\n                            gameObject.transform.translate(0, 1);\n                            end = true; \n                        });\n                        animation.clearAnimation('TestAnim2');\n                        return !animation.isAnimating('TestAnim2');\n                    });\n\n                    return res(true);\n                };\n            });\n        });\n    }\n}\n",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/AnimationComponentTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 693,
    "kind": "testFile",
    "name": "test/tests/AudioManagerTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport { AudioManager } from '../../src/entry';\n\n/**\n * Example test. Runs a few simple assertions and chains them.\n * The third one fails on purpose.\n * @test \n */\nexport default class AudioManagerTest extends Test {\n    constructor() {\n        super('Audio Manager Test', 4); \n        this.loader = null;\n    }\n    \n    steps() {\n        this.addStep('Add and Get Sound', () => {\n            return AudioManager.addSound('slash1', './hit.wav').then((sound) => {\n                return sound.buffer != null;\n            });\n            // getTexture(texID) {\n            // addTexture(texName, textureImageAsset, frameWidth, frameHeight, glyphInfo = null) {\n        });\n\n        this.addStep('Create Sound Buffer from Asset', () => {\n            return AudioManager._createSoundBufferFromAsset('./hit.wav').then((sInfo) =>{\n                return sInfo.buffer != null;\n            });\n        });\n\n        this.addStep('Play Sound', () => {\n            AudioManager.playSound('slash1', 1);\n            return true;\n        });\n\n        this.addStep('Remove Sound', () => {\n            AudioManager.removeSound('slash1');\n            return AudioManager.sounds.slash1 == null;\n        });\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/AudioManagerTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 694,
    "kind": "testFile",
    "name": "test/tests/BaseTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\n\nexport default class NAMETESTHERE extends Test {\n    constructor() {\n        super('namename Test', 2); \n    }\n    \n    steps() {\n        this.addStep('', () => {\n\n        });\n\n        this.addStep('', () => {\n\n        });\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/BaseTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 695,
    "kind": "testFile",
    "name": "test/tests/BoundsTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport Bounds from '../../src/internal/Bounds';\nimport Point from '../../src/internal/Point';\n\nexport default class BoundsTest extends Test {\n    constructor() {\n        super('Bounds Test', 2); \n    }\n    \n    steps() {\n        this.addStep('Bounds Set', () => {\n            let b = new Bounds(2, 2, 5, 5);\n            b.set(5, 5, 10, 10);\n            return this.equals(b.p1.x, 5, 10) && this.equals(b.p1.y, 5, 10) && this.equals(b.p2.x, 10, 10) && this.equals(b.p2.y, 10, 10);\n        });\n\n        this.addStep('Check if points in/out bounds.', () => {\n            let p1 = new Point(0, 0);\n            let p2 = new Point(-5, -5);\n            let p3 = new Point(5, 5);\n            let b = new Bounds(-3, -3, 3, 3);\n            return b.isInBounds(p1) && !b.isInBounds(p2) && !b.isInBounds(p3);\n        });\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/BoundsTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 696,
    "kind": "testFile",
    "name": "test/tests/ClickControllerComponentTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport { ClickController, Scene, Viewport, SceneObject, SceneManager, Point } from '../../src/entry';\n\n/**\n * Example test. Runs a few simple assertions and chains them.\n * The third one fails on purpose.\n * @test \n */\nexport default class ClickControllerComponentTest extends Test {\n    constructor() {\n        super('Click Controller Component Test', 8); \n        this.loader = null;\n\n        this.results = [null, null, null, null, null, null];\n    }\n    \n    steps() {\n        let scene = new Scene();\n        \n        let viewport = new Viewport(0, 0, 400, 400);\n\n        SceneManager.addScene(scene);\n\n        let deregister = scene.registerViewport(viewport);\n        let gameObject = new SceneObject(new Point(0, 0, 0), new Point(200, 200, 1), 0);\n        let clickController = null;\n        // renderable.setTexture('');\n        // renderable.addToViewport(0);\n\n        this.addStep('Assign Click Controller Component to Scene Object', () => {\n            clickController = new ClickController(0, () => {\n                this.results[0] = true;\n            }, () => {\n                this.results[1] = true;\n            }, () => {\n                this.results[2] = true;\n            }, () => {\n                this.results[3] = true;\n            }, () => {\n                this.results[4] = true;\n            }, () => {\n                this.results[5] = true;\n            });\n            return gameObject.addComponent(clickController);\n        });\n\n        this.addStep('Click Controller Component on Add', () => {\n            let once = false;\n            return new Promise((res, rej) => {\n                gameObject.onUpdate = () => {\n                    if (once)\n                        return;\n                    once = true;\n\n                    this.addStep('On Left Pressed', () => {\n                        return new Promise((res, rej) => {\n                            let clearTM = setInterval(() => {\n                                if (this.results[0] != null) {\n                                    clearInterval(clearTM);\n                                    return res(this.results[0]);\n                                }\n                            }, 5);\n                        });\n                    });\n                    this.addStep('On Left Released', () => {\n                        return new Promise((res, rej) => {\n                            let clearTM = setInterval(() => {\n                                if (this.results[2] != null) {\n                                    clearInterval(clearTM);\n                                    return res(this.results[2]);\n                                }\n                            }, 5);\n                        });\n                    });\n                    this.addStep('On Left Release Outside', () => {\n                        return new Promise((res, rej) => {\n                            let clearTM = setInterval(() => {\n                                if (this.results[4] != null) {\n                                    clearInterval(clearTM);\n                                    return res(this.results[4]);\n                                }\n                            }, 5);\n                        });\n                    });\n                    this.addStep('On Right Pressed', () => {\n                        return new Promise((res, rej) => {\n                            let clearTM = setInterval(() => {\n                                if (this.results[1] != null) {\n                                    clearInterval(clearTM);\n                                    return res(this.results[1]);\n                                }\n                            }, 5);\n                        });\n                    });\n                    this.addStep('On Right Released', () => {\n                        return new Promise((res, rej) => {\n                            let clearTM = setInterval(() => {\n                                if (this.results[3] != null) {\n                                    clearInterval(clearTM);\n                                    return res(this.results[3]);\n                                }\n                            }, 5);\n                        });\n                    });\n                    this.addStep('On Right Release Outside', () => {\n                        return new Promise((res, rej) => {\n                            let clearTM = setInterval(() => {\n                                if (this.results[5] != null) {\n                                    clearInterval(clearTM);\n                                    return res(this.results[5]);\n                                }\n                            }, 5);\n                        });\n                    });            \n\n                    return res(true);\n                };\n            });\n        });\n\n        console.info('Waiting for mouse input in top left of screen: (0,0) to (400,400).');\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/ClickControllerComponentTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 697,
    "kind": "testFile",
    "name": "test/tests/ColorTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport Color from '../../src/internal/Color';\n\nexport default class ColorTest extends Test {\n    constructor() {\n        super('Color Test', 2); \n    }\n    \n    steps() {\n        this.addStep('Build and Set Color', () => {\n            let c = new Color(.5, .5, .5, 1);\n            c.set(0.3, 0.3, 0.4, 0.8);\n            return this.equals(c.color[0], 0.3) && this.equals(c.color[1], 0.3) && this.equals(c.color[2], 0.4, 10) && this.equals(c.color[3], 0.8, 10);\n        });\n\n        this.addStep('Build and Check Out of Bounds Color', () => {\n            let c = new Color(-2.3, 2.3, 2.4, 2.8, 1);\n            return this.equals(c.color[0], 0) && this.equals(c.color[1], 1) && this.equals(c.color[2], 1) && this.equals(c.color[3], 1);\n        });\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/ColorTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 698,
    "kind": "testFile",
    "name": "test/tests/ComponentPatternTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport { Scene, SceneManager, Viewport, GameObject, Point, Renderable2D, PersistentObject, PersistentManager, SceneObject, Component } from '../../src/entry';\n\nexport default class ComponentPatternTest extends Test {\n    constructor() {\n        super('Component Pattern Test', 7); \n    }\n    \n    steps() {\n        let scene = new Scene();\n\n        SceneManager.addScene(scene);\n\n        let viewport = new Viewport(0, 0, 400, 400);\n        let deregister = scene.registerViewport(viewport);\n        let gameObject = new SceneObject(new Point(10, 10, 10), new Point(10, 10, 1), 45);\n        let component = new Component(true);\n        \n        this.addStep('On Component Add to Scene Object', () => {\n            return new Promise((res, rej) => {\n                component.onAddComponent = () => {\n                    return res(true);\n                }\n            });\n        });\n        \n        this.addStep('Add Component To Scene Object', () => {\n            gameObject.addComponent(component);\n            return gameObject.hasComponent('Component');\n        });\n\n        let component2 = new Component(true);\n\n        this.addStep('Component End By ID', () => {\n            return new Promise((res, rej) => {\n                component2.onEnd = () => {\n\n                    let isRemoved2 = !gameObject.hasComponent('Component');\n\n                    deregister();\n                    SceneManager.removeScene();\n\n                    return res(isRemoved2);\n                }\n            });\n        });\n\n        this.addStep('Component End By Name', () => {\n            return new Promise((res, rej) => {\n                component.onEnd = () => {\n\n                    let isRemoved = !gameObject.hasComponent('Component');\n                    \n                    component2.onAddComponent = () => {\n                        gameObject.removeComponent(component2.className, component2.id);\n                    }\n                    gameObject.addComponent(component2);\n\n                    return res(isRemoved);\n                }\n            });\n        });\n\n        this.addStep('Component Unpause', () => {\n            return new Promise((res, rej) => {\n                component.onUnpause = () => {\n\n                    gameObject.removeComponents('Component');\n\n                    return res(true);\n                }\n            });\n        });\n\n        this.addStep('Component Pause', () => {\n            return new Promise((res, rej) => {\n                component.onPause = () => {\n\n                    component.unpause();\n\n                    return res(true);\n                }\n            });\n        });\n\n        this.addStep('Component Update', () => {\n            return new Promise((res, rej) => {\n                component.onUpdate = () => {\n\n                    component.pause();\n\n                    return res(true);\n                }\n            });\n        })\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/ComponentPatternTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 699,
    "kind": "testFile",
    "name": "test/tests/DOMManagerTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport { DOMManager } from '../../src/entry';\n\n/**\n * Example test. Runs a few simple assertions and chains them.\n * The third one fails on purpose.\n * @test \n */\nexport default class DOMManagerTest extends Test {\n    constructor() {\n        super('DOM Manager Test', 2); \n        this.loader = null;\n    }\n    \n    steps() {\n        this.addStep('Load and Check for Canvas', () => {\n            return DOMManager.GL != null;\n        });\n\n        this.addStep('Adjust Canvas Size.', () => {\n            DOMManager.adjust();\n            return true;\n        });\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/DOMManagerTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 700,
    "kind": "testFile",
    "name": "test/tests/ExampleTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\n\n/**\n * Example test. Runs a few simple assertions and chains them.\n * The third one fails on purpose.\n * @test \n */\nexport default class ExampleTest extends Test {\n    constructor() {\n        super('Example Test', 3); \n\n        this.value = 4;\n    }\n    \n    steps() {\n        this.addStep('Simple Assert 1', () => {\n            this.value += 100;\n            return this.value < 200;\n        });\n        this.addStep('Simple Assert 2', () => {\n            this.value += 100;\n            return this.value < 222;\n        });\n        this.addStep('Simple Assert 3 (should fail)', () => {\n            this.value += 100;\n            return this.value < 222;\n        });\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/ExampleTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 701,
    "kind": "testFile",
    "name": "test/tests/GameObjectPatternTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport { Scene, SceneManager, Viewport, GameObject, Point, Renderable2D, PersistentObject, PersistentManager, SceneObject } from '../../src/entry';\n\nexport default class GameObjectPatternTest extends Test {\n    constructor() {\n        super('Game Object Pattern Test', 10); \n    }\n    \n    steps() {\n        let scene = null;\n        let viewport = null;\n        let gameObject = null;\n        let deregister = null;\n        let pObject = null;\n\n        this.addStep('Create Persistent Object', () => {\n            pObject = new PersistentObject(new Point(10, 10, 10), new Point(5, 5, 5), 0);\n            return PersistentManager.persistentObjects[pObject.id] == pObject;\n        });\n\n        this.addStep('Persistent Object End', () => {\n            return new Promise((res, rej) => {\n                pObject.onEnd = () => {\n\n                    return res(true);\n                }\n            });\n        });\n\n        this.addStep('Persistent Object Unpause', () => {\n            return new Promise((res, rej) => {\n                pObject.onUnpause = () => {\n\n                    pObject.end();\n\n                    return res(true);\n                }\n            });\n        });\n\n        this.addStep('Persistent Object Pause', () => {\n            return new Promise((res, rej) => {\n                pObject.onPause = () => {\n\n                    pObject.unpause();\n\n                    return res(true);\n                }\n            });\n        });\n\n        this.addStep('Persistent Object Update', () => {\n            return new Promise((res, rej) => {\n                pObject.onUpdate = () => {\n\n                    pObject.pause();\n\n                    return res(true);\n                };\n            });\n        });\n\n        scene = new Scene();\n        viewport = new Viewport(0, 0, 400, 400);\n        SceneManager.addScene(scene);\n        deregister = scene.registerViewport(viewport);\n        \n        this.addStep('Create Scene Object', () => {\n            gameObject = new SceneObject(new Point(10, 10, 10), new Point(10, 10, 1), 45);\n            return scene.sceneObjects[0] == gameObject;\n        });\n\n\n        this.addStep('Scene Object End', () => {\n            return new Promise((res, rej) => {\n                gameObject.onEnd = () => {\n\n                    deregister();\n                    SceneManager.removeScene();\n\n                    return res(true);\n                }\n            });\n        });\n\n        this.addStep('Scene Object Unpause', () => {\n            return new Promise((res, rej) => {\n                gameObject.onUnpause = () => {\n\n                    gameObject.end();\n\n                    return res(true);\n                }\n            });\n        });\n\n        this.addStep('Scene Object Pause', () => {\n            return new Promise((res, rej) => {\n                gameObject.onPause = () => {\n\n                    gameObject.unpause();\n\n                    return res(true);\n                }\n            });\n        });\n\n        this.addStep('Scene Object Update', () => {\n            return new Promise((res, rej) => {\n                gameObject.onUpdate = () => {\n\n                    gameObject.pause();\n\n                    return res(true);\n                }\n            });\n        })\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/GameObjectPatternTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 702,
    "kind": "testFile",
    "name": "test/tests/InputPatternTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport { InputManager } from '../../src/entry';\n\n/**\n * Example test. Runs a few simple assertions and chains them.\n * The third one fails on purpose.\n * @test \n */\nexport default class InputPatternTest extends Test {\n    constructor() {\n        super('Input Pattern Test', 8); \n        this.loader = null;\n        this.clearList = [];\n    }\n    \n    steps() {\n        this.addStep('Mouse Left Pressed', () => {\n            return new Promise((res, rej) => {\n                this.clearList.push(InputManager.events.watch(InputManager.EVENT.LEFT_PRESSED, (ev) => {\n                    return res(true);\n                }));\n            });\n        });\n        this.addStep('Mouse Left Released', () => {\n            return new Promise((res, rej) => {\n                this.clearList.push(InputManager.events.watch(InputManager.EVENT.LEFT_RELEASED, (ev) => {\n                    return res(true);\n                }));\n            });\n        });\n        this.addStep('Mouse Right Pressed', () => {\n            return new Promise((res, rej) => {\n                this.clearList.push(InputManager.events.watch(InputManager.EVENT.RIGHT_PRESSED, (ev) => {\n                    return res(true);\n                }));\n            });\n        });\n        this.addStep('Mouse Right Released', () => {\n            return new Promise((res, rej) => {\n                this.clearList.push(InputManager.events.watch(InputManager.EVENT.RIGHT_RELEASED, (ev) => {\n                    return res(true);\n                }));\n            });\n        });\n        this.addStep('Mouse Moved', () => {\n            return new Promise((res, rej) => {\n                this.clearList.push(InputManager.events.watch(InputManager.EVENT.MOUSE_MOVE, (ev) => {\n                    return res(true);\n                }));\n            });\n        });\n\n        console.info('Waiting for mouse input.');\n\n        this.addStep('Keyboard Key Pressed', () => {\n            return new Promise((res, rej) => {\n                this.clearList.push(InputManager.events.watch(InputManager.EVENT.KEY_DOWN, (ev) => {\n                    return res(true);\n                }));\n            });\n        });\n        this.addStep('Keyboard Key', () => {\n            return new Promise((res, rej) => {\n                this.clearList.push(InputManager.events.watch(InputManager.EVENT.KEY, (ev) => {\n                    return res(true);\n                }));\n            });\n        });\n        this.addStep('Keyboard Key Released', () => {\n            return new Promise((res, rej) => {\n                this.clearList.push(InputManager.events.watch(InputManager.EVENT.KEY_UP, (ev) => {\n                    return res(true);\n                }));\n            });\n        });\n\n        console.info('Waiting for keyboard input.');\n    }\n\n    cleanup() {\n        for (let i = 0; i < this.clearList.length; i++) \n            this.clearList[i].callback();\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/InputPatternTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 703,
    "kind": "testFile",
    "name": "test/tests/LoaderTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\n\n/**\n * Example test. Runs a few simple assertions and chains them.\n * The third one fails on purpose.\n * @test \n */\nexport default class LoaderTest extends Test {\n    constructor() {\n        super('Loader Test', 2); \n        this.loader = null;\n    }\n    \n    steps() {\n        \n        this.addStep('Build and await Loader', () => {\n            return new Promise((res, rej) => {\n                this.loader = new Loader(() => {\n                    return res(true);\n                });\n            });\n        });\n\n        this.addStep('Add promises (0ms and 1000ms wait) to loader & start.', () => {\n            this.loader.load(new Promise((res, rej) => {\n                return res(true);\n            }))\n            this.loader.load(new Promise((res, rej) => {\n                setTimeout(() => {\n                    return res(true);\n                }, 1000);\n            }))\n            this.loader.start();\n            return true;\n        });\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/LoaderTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 704,
    "kind": "testFile",
    "name": "test/tests/MathUtilsTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport { radToDeg, degToRad } from '../../src/utils/MathUtil';\n\nexport default class MathUtilsTest extends Test {\n    constructor() {\n        super('MathUtils Test', 2); \n    }\n    \n    steps() {\n        this.addStep('130 Degrees to Radians to Degree', () => {\n            let rad = degToRad(130);\n            return radToDeg(rad) == 130;\n        });\n\n        this.addStep('1.5 Radians to Degree to Radians', () => {\n            let deg = radToDeg(1.5);\n            return degToRad(deg) == 1.5;\n        });\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/MathUtilsTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 705,
    "kind": "testFile",
    "name": "test/tests/Matrix3Test.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport Matrix3 from '../../src/render/WebGL/Matrix3';\n\nexport default class Matrix3Test extends Test {\n    constructor() {\n        super('Matrix3 Test (Checking all indexes)', 5); \n    }\n    \n    steps() {\n        this.addStep('Set Position', () => {\n            let m = new Matrix3();\n            m.setPosition(10, 8);\n            let res = true;\n            res = res && this.equals(m.m[0], 1);\n            res = res && this.equals(m.m[1], 0);\n            res = res && this.equals(m.m[2], 0);\n            res = res && this.equals(m.m[3], 0);\n            res = res && this.equals(m.m[4], 1);\n            res = res && this.equals(m.m[5], 0);\n            res = res && this.equals(m.m[6], 10);\n            res = res && this.equals(m.m[7], 8);\n            res = res && this.equals(m.m[8], 1);\n            return res;\n        });\n\n        this.addStep('Set Scale', () => {\n            let m = new Matrix3();\n            m.setScale(10, 8);\n            let res = true;\n            res = res && this.equals(m.m[0], 10);\n            res = res && this.equals(m.m[1], 0);\n            res = res && this.equals(m.m[2], 0);\n            res = res && this.equals(m.m[3], 0);\n            res = res && this.equals(m.m[4], 8);\n            res = res && this.equals(m.m[5], 0);\n            res = res && this.equals(m.m[6], 0);\n            res = res && this.equals(m.m[7], 0);\n            res = res && this.equals(m.m[8], 1);\n            return res;\n        });\n\n        this.addStep('Set Rotation', () => {\n            let m = new Matrix3();\n            m.setRotation(100);\n            let res = true;\n            res = res && this.equals(m.m[0], -0.17364817766693);\n            res = res && this.equals(m.m[1], -0.984807753012208);\n            res = res && this.equals(m.m[2], 0);\n            res = res && this.equals(m.m[3], 0.984807753012208);\n            res = res && this.equals(m.m[4], -0.17364817766693);\n            res = res && this.equals(m.m[5], 0);\n            res = res && this.equals(m.m[6], 0);\n            res = res && this.equals(m.m[7], 0);\n            res = res && this.equals(m.m[8], 1);\n            return res;\n        });\n\n        this.addStep('Copy', () => {\n            let m = new Matrix3();\n            m.setPosition(10, 10);\n            let m2 = Matrix3.copy(m);\n            m2.setPosition(-5, -5);\n\n            let res = true;\n            res = res && this.equals(m.m[0], 1);\n            res = res && this.equals(m.m[1], 0);\n            res = res && this.equals(m.m[2], 0);\n            res = res && this.equals(m.m[3], 0);\n            res = res && this.equals(m.m[4], 1);\n            res = res && this.equals(m.m[5], 0);\n            res = res && this.equals(m.m[6], 10);\n            res = res && this.equals(m.m[7], 10);\n            res = res && this.equals(m.m[8], 1);\n            res = res && this.equals(m2.m[0], 1);\n            res = res && this.equals(m2.m[1], 0);\n            res = res && this.equals(m2.m[2], 0);\n            res = res && this.equals(m2.m[3], 0);\n            res = res && this.equals(m2.m[4], 1);\n            res = res && this.equals(m2.m[5], 0);\n            res = res && this.equals(m2.m[6], -5);\n            res = res && this.equals(m2.m[7], -5);\n            res = res && this.equals(m2.m[8], 1);\n            return res;\n        });\n\n        this.addStep('Multiply Matricies', () => {\n            let m1 = new Matrix3([4, 0, 0, 0, 3, 0, -10, 5, 1]);\n            let m2 = new Matrix3([2, 0, 0, 0, 1, 0, 40, -10, 1]);\n            let m3 = m1.multiply(m2);\n            let res = true;\n            res = res && this.equals(m3.m[0], 8);\n            res = res && this.equals(m3.m[1], 0);\n            res = res && this.equals(m3.m[2], 0);\n            res = res && this.equals(m3.m[3], 0);\n            res = res && this.equals(m3.m[4], 3);\n            res = res && this.equals(m3.m[5], 0);\n            res = res && this.equals(m3.m[6], 150);\n            res = res && this.equals(m3.m[7], -25);\n            res = res && this.equals(m3.m[8], 1);\n            return res;\n        });\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/Matrix3Test.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 706,
    "kind": "testFile",
    "name": "test/tests/MessagerTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport Messager from '../../src/utils/Messager';\n\n/**\n * Example test. Runs a few simple assertions and chains them.\n * The third one fails on purpose.\n * @test \n */\nexport default class MessagerTest extends Test {\n    constructor() {\n        super('Messager Test', 4); \n\n        this.messager = null;\n    }\n    \n    steps() {\n        this.messager = new Messager();\n        let token = null;\n        \n        this.addStep('Watch for future data', () => {\n            return new Promise((res, rej) => {\n                token = this.messager.watch('dataKey3', (data) => {\n                    return res(data == 'asd');\n                }, false);\n            });\n        });\n\n        this.addStep('Set data & get data', () => {\n            this.messager.set('dataKey2', 44);\n            this.messager.set('dataKey3', 'asd');\n            return this.messager.get('dataKey2') == 44;\n        });\n        \n        this.addStep('Watch for data, return data now', () => {\n            return new Promise((res, rej) => {\n                this.messager.watch('dataKey2', (data) => {\n                    return res(data == 44);\n                }, true);\n            });\n        });\n        \n        this.addStep('Deregister from messager', () => {\n            token.stop();\n            return this.messager['dataKey3'] == null || this.messager['dataKey3'][token.id] == null;\n        });\n\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/MessagerTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 707,
    "kind": "testFile",
    "name": "test/tests/PointTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport Point from '../../src/internal/Point';\n\nexport default class PointTest extends Test {\n    constructor() {\n        super('Point Test', 6); \n    }\n    \n    steps() {\n        this.addStep('New Point 10,10,10 add 20,20,20', () => {\n            let p = new Point(10, 10, 10);\n            p.add(20, 20, 20);\n            return p.x == 30 && p.y == 30 && p.z == 30;\n        });\n\n        this.addStep('New Point 10,10,10 subtract 20,20,20', () => {\n            let p = new Point(10, 10, 10);\n            p.subtract(20, 20, 20);\n            return p.x == -10 && p.y == -10 && p.z == -10;\n        });\n\n        this.addStep('New Point 10,10,10 divide 20,20,20', () => {\n            let p = new Point(10, 10, 10);\n            p.divide(20, 20, 20);\n            return p.x == 0.5 && p.y == 0.5 && p.z == 0.5;\n        });\n\n        this.addStep('New Point 10,10,10 multiply 20,20,20', () => {\n            let p = new Point(10, 10, 10);\n            p.multiply(20, 20, 20);\n            return p.x == 200 && p.y == 200 && p.z == 200;\n        });\n\n        this.addStep('New Point 10,10,10 and -5,-5,-5 length of', () => {\n            let p = new Point(10, 10, 10);\n            let p2 = new Point(-5, -5, -5);\n            return this.equals(p.length(), 17.320508075688775, 12) && this.equals(p2.length(), 8.660254037844387, 12);\n        });\n\n        this.addStep('New Point 10,10,10 and -5,-5,-5 normalized', () => {\n            let p = new Point(10, 10, 10);\n            let p2 = new Point(-5, -5, -5);\n            p.normalize();\n            p2.normalize();\n            return this.equals(p.x, 0.577350269189627, 12) && this.equals(p2.x, -0.577350269189627, 12);\n        });\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/PointTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 708,
    "kind": "testFile",
    "name": "test/tests/ProgramManagerTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport ProgramManager from '../../src/manager/ProgramManager';\nimport * as VertexShader from '../../src/const/VertexShader';\nimport * as FragmentShader from '../../src/const/FragmentShader';\n\n/**\n * Example test. Runs a few simple assertions and chains them.\n * The third one fails on purpose.\n * @test \n */\nexport default class ProgramManagerTest extends Test {\n    constructor() {\n        super('Program Manager Test', 4); \n        this.loader = null;\n    }\n    \n    steps() {\n        this.addStep('Add and Get Program', () => {        \n            ProgramManager.addProgram('Default2', VertexShader.DEFAULT_V, FragmentShader.DEFAULT_F, {\n                'u_color': 'uniform4fv',\n                'u_matrix': 'uniformMatrix3fv',\n                'u_depth': 'uniform1f',\n                'u_texture': 'uniform1i',\n                'u_subTexcoord': 'uniform4fv',\n            });\n            let program = ProgramManager.getProgram('Default2');\n            return program.name == 'Default2';\n        });\n\n\n        let coreProgram = null;\n        this.addStep('Create New Program.', () => {\n            coreProgram = ProgramManager._createProgram(VertexShader.DEFAULT_V, FragmentShader.DEFAULT_F);\n            return coreProgram != null;\n        });\n\n        this.addStep('Create Program Uniform Mapping', () => {\n            let uniformSetters = ProgramManager._createProgramLocationSetters(coreProgram, {\n                'u_color': 'uniform4fv',\n                'u_matrix': 'uniformMatrix3fv',\n                'u_depth': 'uniform1f',\n                'u_texture': 'uniform1i',\n                'u_subTexcoord': 'uniform4fv',\n            });\n            return uniformSetters['u_color'] != null;\n        });\n\n        this.addStep('Remove Program.', () => {\n            ProgramManager.programs['Default2'] = null;\n            try {\n                let program = ProgramManager.getProgram('Default2');\n            } catch (e) {\n                return true;\n            }\n            return false;\n        });\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/ProgramManagerTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 709,
    "kind": "testFile",
    "name": "test/tests/Renderable2DGridComponentTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport { Renderable2DGrid, Scene, Viewport, SceneObject, Point, SceneManager, TextureManager, Matrix3 } from '../../src/entry';\n\n/**\n * Example test. Runs a few simple assertions and chains them.\n * The third one fails on purpose.\n * @test \n */\nexport default class Renderable2DGridComponentTest extends Test {\n    constructor() {\n        super('Renderable2DGrid Component Test', 7); \n        this.loader = null;\n    }\n    \n    steps() {\n        let scene = new Scene();\n        let viewport = new Viewport(0, 0, 400, 400);\n\n        SceneManager.addScene(scene);\n\n        let deregister = scene.registerViewport(viewport);\n        let gameObject = new SceneObject(new Point(10, 10, 10), new Point(10, 10, 1), 45);\n        let renderable = null;\n\n        this.addStep('Assign Renderable2DGrid to Scene Object', () => {\n            renderable = new Renderable2DGrid('Characters', [1, 1, 1, 1, 2, 3, 4, 5, 6, 6, 6, 6, 5, 4, 3, 2], 4, 4, 4, 4);\n            return gameObject.addComponent(renderable);\n        });\n\n        this.addStep('Renderable2DGrid on Add', () => {\n            return new Promise((res, rej) => {\n                gameObject.onUpdate = () => {\n\n                    this.addStep('Renderable2DGrid Set Grid Data', () => {\n                        renderable.setGridData([6,6,6,6,5,4,3,2,1,1,1,1,5,4,3,2], 4, 4, 4, 4);\n                        return renderable.textures[1].name == 'CharactersData0';\n                    });\n\n                    this.addStep('Renderable2DGrid Update Grid Data', () => {\n                        renderable.updateGridData([2,3,2,3,3,4,3,4,4,5,4,5,5,6,5,6], 0, 0, 4, 4)\n                        return true;\n                    });\n\n                    this.addStep('Renderable2DGrid Set Uniform Data', () => {\n                        return renderable.setUniformData(new Matrix3().m);\n                    });\n\n                    this.addStep('Renderable2DGrid onEnd', () => {\n                        renderable.end();\n                        return viewport.renderables[renderable.id] == null;\n                    });\n\n                    this.addStep('Renderable2DGrid Remove from Viewports', () => {\n                        deregister();\n                        SceneManager.removeScene();\n                        return true;\n                    });\n\n                    return res(true);\n                };\n            });\n        });\n    }\n}\n",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/Renderable2DGridComponentTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 710,
    "kind": "testFile",
    "name": "test/tests/RenderablePatternTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport { Scene, SceneManager, Viewport, GameObject, Point, Renderable2D, PersistentObject, PersistentManager, SceneObject, TextureManager, Matrix3 } from '../../src/entry';\nimport { degToRad } from '../../src/utils/MathUtil';\n\nexport default class RenderablePatternTest extends Test {\n    constructor() {\n        super('Renderable Pattern Test', 11); \n    }\n    \n    steps() {\n        let scene = new Scene();\n        let viewport = new Viewport(0, 0, 400, 400);\n\n        SceneManager.addScene(scene);\n\n        let deregister = scene.registerViewport(viewport);\n        let gameObject = new SceneObject(new Point(10, 10, 10), new Point(10, 10, 1), 45);\n        let renderable = null;\n\n        this.addStep('Assign Renderable to Scene Object', () => {\n            renderable = new Renderable2D();\n            return gameObject.addComponent(renderable);\n        });\n\n        this.addStep('Renderable on Add', () => {\n            return new Promise((res, rej) => {\n                gameObject.onUpdate = () => {\n\n                    this.addStep('Renderable Get Matrix', () => {\n                        let m3 = renderable.getMatrix().m;\n                        return this.equals(m3[0], 7.0710678118654755) && this.equals(m3[1], -7.071067811865475) && \n                            this.equals(m3[2], 0) && this.equals(m3[3], 7.071067811865475) && this.equals(m3[4], 7.0710678118654755) &&\n                            this.equals(m3[5], 0) && this.equals(m3[6], 10) && this.equals(m3[7], 10) && this.equals(m3[8], 1);\n                    });\n\n                    this.addStep('Renderable Set Color', () => {\n                        renderable.setColor(-1, 0.3, 0.9, 2.2);\n                        return this.equals(renderable.color.color[0], 0) && this.equals(renderable.color.color[1], 0.3) && \n                            this.equals(renderable.color.color[2], 0.9) && this.equals(renderable.color.color[3], 1);\n                    });\n\n                    this.addStep('Renderable Set Texture', () => {\n                        let texture = TextureManager.getTexture('Characters');\n                        renderable.setTexture(texture);\n                        return renderable.textures[0].name == texture.name;\n                    });\n\n                    this.addStep('Renderable Set Image Sub Index', () => {\n                        renderable.setSubIndex(2);\n                        return this.equals(renderable._subSpriteData[0], -2) && this.equals(renderable._subSpriteData[1], 0) && this.equals(renderable._subSpriteData[2], 0.125) && this.equals(renderable._subSpriteData[3], 0.125);\n                    });\n\n                    this.addStep('Renderable Set Uniform Data', () => {\n                        return renderable.setUniformData(new Matrix3().m);\n                    });\n\n                    this.addStep('Renderable Set Position', () => {\n                        renderable.setPosition(new Point(-20, -15));\n                        return this.equals(renderable._matrixPosition.m[6], -20) && this.equals(renderable._matrixPosition.m[7], -15);\n                    });\n\n                    this.addStep('Renderable Set Scale', () => {\n                        renderable.setScale(new Point(2, 3));\n                        return this.equals(renderable._matrixScale.m[0], 2) && this.equals(renderable._matrixScale.m[4], 3);\n                    });\n\n                    this.addStep('Renderable Set Rotation', () => {\n                        renderable.setRotation(135);\n                        return this.equals(renderable._matrixRotation.m[0], -0.7071067811865475) && this.equals(renderable._matrixRotation.m[1], -0.7071067811865476)\n                        && this.equals(renderable._matrixRotation.m[3], 0.7071067811865476) && this.equals(renderable._matrixRotation.m[4], -0.7071067811865475);\n                    });\n\n                    this.addStep('Renderable onEnd', () => {\n                        renderable.end();\n                        return viewport.renderables[renderable.id] == null;\n                    });\n\n                    this.addStep('Renderable Remove from Viewports', () => {\n                        deregister();\n                        SceneManager.removeScene();\n                        return true;\n                    });\n\n\n\n                    let transform = gameObject.getComponent('Transform');\n                    let pos = this.equals(transform.getPosition().x, renderable._matrixPosition.m[6]) && this.equals(transform.getPosition().y, renderable._matrixPosition.m[7]);\n                    let scale = this.equals(transform.getScale().x, renderable._matrixScale.m[0]) && this.equals(transform.getScale().y, renderable._matrixScale.m[4]);\n                    let rotate = this.equals(Math.cos(degToRad(transform.getRotation())), renderable._matrixRotation.m[0]) && this.equals(Math.sin(degToRad(transform.getRotation())), renderable._matrixRotation.m[3]);\n                    return res(transform.renderable == renderable && pos && scale && rotate);\n                };\n            });\n        });\n    }\n}\n",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/RenderablePatternTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 711,
    "kind": "testFile",
    "name": "test/tests/RenderableTextComponentTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport { Scene, Viewport, SceneObject, Point, SceneManager, TextureManager, Matrix3, RenderableText } from '../../src/entry';\n\n/**\n * Example test. Runs a few simple assertions and chains them.\n * The third one fails on purpose.\n * @test \n */\nexport default class RenderableTextComponentTest extends Test {\n    constructor() {\n        super('RenderableText Component Test', 6); \n        this.loader = null;\n    }\n    \n    steps() {\n        let scene = new Scene();\n        let viewport = new Viewport(0, 0, 400, 400);\n\n        SceneManager.addScene(scene);\n\n        let deregister = scene.registerViewport(viewport);\n        let gameObject = new SceneObject(new Point(10, 10, 10), new Point(10, 10, 1), 45);\n        let renderable = null;\n\n        this.addStep('Assign RenderableText to Scene Object', () => {\n            renderable = new RenderableText(TextureManager.getTexture('DefaultFont'));\n            return gameObject.addComponent(renderable);\n        });\n\n        this.addStep('RenderableText on Add', () => {\n            return new Promise((res, rej) => {\n                gameObject.onUpdate = () => {\n\n                    this.addStep('RenderableText Set Text', () => {\n                        renderable.setText('Some test text.', 1);\n                        return renderable.textData.textPixelWidth == 137;\n                    });\n\n                    this.addStep('RenderableText Set Uniform Data', () => {\n                        return renderable.setUniformData(new Matrix3().m);\n                    });\n\n                    this.addStep('RenderableText onEnd', () => {\n                        renderable.end();\n                        return viewport.renderables[renderable.id] == null;\n                    });\n\n                    this.addStep('RenderableText Remove from Viewports', () => {\n                        deregister();\n                        SceneManager.removeScene();\n                        return true;\n                    });\n\n                    return res(true);\n                };\n            });\n        });\n    }\n}\n",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/RenderableTextComponentTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 712,
    "kind": "testFile",
    "name": "test/tests/ScenePatternTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport { Scene, SceneManager } from '../../src/entry';\n\nexport default class ScenePatternTest extends Test {\n    constructor() {\n        super('Scene Pattern Test', 6); \n    }\n    \n    steps() {\n        let scene = null;\n        let scene2 = null;\n        this.addStep('Create & Add Scene', () => {\n            scene = new Scene();\n            SceneManager.addScene(scene);\n            return true;\n        });\n\n        this.addStep('On scene update', () => {\n            return new Promise((res, rej) => {\n                scene.onUpdate = () => {\n\n                    this.addStep('Stack new scene & is scene 1 paused.', () => {\n                        scene2 = new Scene();\n                        SceneManager.addScene(scene2);\n                        return scene.hasPaused;\n                    });\n            \n                    this.addStep('On scene 2 update', () => {\n                        return new Promise((res, rej) => {\n                            scene2.onUpdate = () => {\n            \n                                this.addStep('On scene 2 remove & scene 1 unpaused.', () => {\n                                    SceneManager.removeScene();\n                                    return !scene.hasPaused;\n                                });\n            \n                                this.addStep('Ending scenes.', () => {\n                                    scene.end();\n                                    scene2.end();\n                                    return true;\n                                });\n\n                                return res(true);\n                            }\n                        });\n                    });\n\n                    return res(true);\n                }\n            });\n        });\n\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/ScenePatternTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 713,
    "kind": "testFile",
    "name": "test/tests/TextureManagerTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport { TextureManager, RenderManager } from '../../src/entry';\n\nconst GlyphInfo = {\n    height: 19,\n    'a': {\n        row: 0,\n        width: 11,\n        x: 0,\n    },\n    'b': {\n        row: 0,\n        width: 11,\n        x: 12,\n    },\n    'c': {\n        row: 0,\n        width: 11,\n        x: 24,\n    },\n    'd': {\n        row: 0,\n        width: 11,\n        x: 36,\n    },\n    'e': {\n        row: 0,\n        width: 11,\n        x: 48,\n    },\n    'f': {\n        row: 0,\n        width: 11,\n        x: 60,\n    },\n    'g': {\n        row: 0,\n        width: 11,\n        x: 72,\n    },\n    'h': {\n        row: 0,\n        width: 11,\n        x: 84,\n    },\n    'i': {\n        row: 0,\n        width: 5,\n        x: 96,\n    },\n    'j': {\n        row: 0,\n        width: 6,\n        x: 108,\n    },\n    'k': {\n        row: 0,\n        width: 11,\n        x: 120,\n    },\n    'l': {\n        row: 0,\n        width: 5,\n        x: 132,\n    },\n    'm': {\n        row: 0,\n        width: 11,\n        x: 144,\n    },\n    'n': {\n        row: 0,\n        width: 11,\n        x: 156,\n    },\n    'o': {\n        row: 0,\n        width: 11,\n        x: 168,\n    },\n    'p': {\n        row: 0,\n        width: 11,\n        x: 180,\n    },\n    'q': {\n        row: 0,\n        width: 11,\n        x: 192,\n    },\n    'r': {\n        row: 0,\n        width: 10,\n        x: 204,\n    },\n    's': {\n        row: 0,\n        width: 11,\n        x: 216,\n    },\n    't': {\n        row: 0,\n        width: 7,\n        x: 228,\n    },\n    'u': {\n        row: 0,\n        width: 11,\n        x: 240,\n    },\n    'v': {\n        row: 0,\n        width: 11,\n        x: 252,\n    },\n    'w': {\n        row: 0,\n        width: 11,\n        x: 264,\n    },\n    'x': {\n        row: 0,\n        width: 11,\n        x: 276,\n    },\n    'y': {\n        row: 0,\n        width: 11,\n        x: 288,\n    },\n    'z': {\n        row: 0,\n        width: 11,\n        x: 300,\n    },\n    ' ': {\n        row: 0,\n        width: 8,\n        x: 312,\n    },\n    'A': {\n        row: 1,\n        width: 11,\n        x: 0,\n    },\n    'B': {\n        row: 1,\n        width: 11,\n        x: 12,\n    },\n    'C': {\n        row: 1,\n        width: 11,\n        x: 24,\n    },\n    'D': {\n        row: 1,\n        width: 11,\n        x: 36,\n    },\n    'E': {\n        row: 1,\n        width: 11,\n        x: 48,\n    },\n    'F': {\n        row: 1,\n        width: 11,\n        x: 60,\n    },\n    'G': {\n        row: 1,\n        width: 11,\n        x: 72,\n    },\n    'H': {\n        row: 1,\n        width: 11,\n        x: 84,\n    },\n    'I': {\n        row: 1,\n        width: 5,\n        x: 96,\n    },\n    'J': {\n        row: 1,\n        width: 11,\n        x: 108,\n    },\n    'K': {\n        row: 1,\n        width: 11,\n        x: 120,\n    },\n    'L': {\n        row: 1,\n        width: 11,\n        x: 132,\n    },\n    'M': {\n        row: 1,\n        width: 11,\n        x: 144,\n    },\n    'N': {\n        row: 1,\n        width: 11,\n        x: 156,\n    },\n    'O': {\n        row: 1,\n        width: 11,\n        x: 168,\n    },\n    'P': {\n        row: 1,\n        width: 11,\n        x: 180,\n    },\n    'Q': {\n        row: 1,\n        width: 11,\n        x: 192,\n    },\n    'R': {\n        row: 1,\n        width: 11,\n        x: 204,\n    },\n    'S': {\n        row: 1,\n        width: 11,\n        x: 216,\n    },\n    'T': {\n        row: 1,\n        width: 11,\n        x: 228,\n    },\n    'U': {\n        row: 1,\n        width: 11,\n        x: 240,\n    },\n    'V': {\n        row: 1,\n        width: 11,\n        x: 252,\n    },\n    'W': {\n        row: 1,\n        width: 11,\n        x: 264,\n    },\n    'X': {\n        row: 1,\n        width: 11,\n        x: 276,\n    },\n    'Y': {\n        row: 1,\n        width: 11,\n        x: 288,\n    },\n    'Z': {\n        row: 1,\n        width: 11,\n        x: 300,\n    },\n    '/': {\n        row: 1,\n        width: 9,\n        x: 312,\n    },\n    '0': {\n        row: 2,\n        width: 11,\n        x: 0,\n    },\n    '1': {\n        row: 2,\n        width: 7,\n        x: 12,\n    },\n    '2': {\n        row: 2,\n        width: 11,\n        x: 24,\n    },\n    '3': {\n        row: 2,\n        width: 11,\n        x: 36,\n    },\n    '4': {\n        row: 2,\n        width: 11,\n        x: 48,\n    },\n    '5': {\n        row: 2,\n        width: 11,\n        x: 60,\n    },\n    '6': {\n        row: 2,\n        width: 11,\n        x: 72,\n    },\n    '7': {\n        row: 2,\n        width: 11,\n        x: 84,\n    },\n    '8': {\n        row: 2,\n        width: 11,\n        x: 96,\n    },\n    '9': {\n        row: 2,\n        width: 11,\n        x: 108,\n    },\n    '.': {\n        row: 2,\n        width: 5,\n        x: 120,\n    },\n    ':': {\n        row: 2,\n        width: 5,\n        x: 132,\n    },\n    ',': {\n        row: 2,\n        width: 4,\n        x: 144,\n    },\n    ';': {\n        row: 2,\n        width: 4,\n        x: 156,\n    },\n    '(': {\n        row: 2,\n        width: 5,\n        x: 169,\n    },\n    '*': {\n        row: 2,\n        width: 6,\n        x: 182,\n    },\n    '!': {\n        row: 2,\n        width: 5,\n        x: 192,\n    },\n    '?': {\n        row: 2,\n        width: 9,\n        x: 205,\n    },\n    '}': {\n        row: 2,\n        width: 6,\n        x: 216,\n    },\n    '^': {\n        row: 2,\n        width: 10,\n        x: 228,\n    },\n    ')': {\n        row: 2,\n        width: 5,\n        x: 240,\n    },\n    '#': {\n        row: 2,\n        width: 10,\n        x: 252,\n    },\n    '$': {\n        row: 2,\n        width: 10,\n        x: 264,\n    },\n    '{': {\n        row: 2,\n        width: 6,\n        x: 276,\n    },\n    '%': {\n        row: 2,\n        width: 10,\n        x: 288,\n    },\n    '&': {\n        row: 2,\n        width: 10,\n        x: 312,\n    },\n    '-': {\n        row: 2,\n        width: 10,\n        x: 324,\n    },\n    '+': {\n        row: 2,\n        width: 10,\n        x: 336,\n    },\n    '@': {\n        row: 2,\n        width: 10,\n        x: 348,\n    },\n};\n\n/**\n * Example test. Runs a few simple assertions and chains them.\n * The third one fails on purpose.\n * @test \n */\nexport default class TextureManagerTest extends Test {\n    constructor() {\n        super('Texture Manager Test', 6); \n        this.loader = null;\n    }\n    \n    steps() {\n        this.addStep('Add and Get Texture', () => {\n            return TextureManager.addTexture('Characters', './Characters.png', 64, 64, null).then((t) => {\n                let tex = TextureManager.getTexture('Characters');\n\n                this.addStep('Add Font Texture', () => {\n                    return TextureManager.addTexture('DefaultFont', './mainFont.png', 1, 19, GlyphInfo).then((t) => {\n                        let tex = TextureManager.getTexture('DefaultFont');\n        \n                        this.addStep('Get next availabe texture ID.', () => {\n                            return TextureManager._setAvailableTextureID() == 3;\n                        });\n        \n                        return tex.name == 'DefaultFont';\n                    })\n                })\n\n                return tex.name == 'Characters';\n            })\n        });\n\n        this.addStep('Add and Get Data Texture.', () => {\n            TextureManager.addDataTexture('TextData', [0,1,2,3,4,5,6,7,8], RenderManager.GL.R16UI, RenderManager.GL.RED_INTEGER, RenderManager.GL.UNSIGNED_SHORT, -1, -1, 3, 3);\n            let tex = TextureManager.getTexture('TextData');\n            return tex.name == 'TextData';\n        });\n\n        this.addStep('Update Texture Data.', () => {\n            TextureManager.updateDataTexture('TextData', [11, 12, 13, 14], 1, 1, 2, 2);                \n            let tex = TextureManager.getTexture('TextData');\n            return tex.name == 'TextData';\n        });\n\n        this.addStep('Remove Texture.', () => {\n            TextureManager.removeTexture('TextData');           \n            let tex = TextureManager.getTexture('TextData');\n            let nextID = TextureManager._setAvailableTextureID();\n            return (nextID == 1 || nextID == 2) && tex == null;\n        });\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/TextureManagerTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 714,
    "kind": "testFile",
    "name": "test/tests/TransformComponentTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport { Scene, SceneManager, Viewport, GameObject, Point, Renderable2D, PersistentObject, PersistentManager, SceneObject, Component, Transform } from '../../src/entry';\n\nexport default class TransformComponentTest extends Test {\n    constructor() {\n        super('Transform Component Test', 9); \n    }\n    \n    steps() {\n        let scene = new Scene();\n\n        SceneManager.addScene(scene);\n\n        let viewport = new Viewport(0, 0, 400, 400);\n        let deregister = scene.registerViewport(viewport);\n        let gameObject = new SceneObject(new Point(10, 10, 10), new Point(10, 10, 1), 45);\n        let component = gameObject.getComponent('Transform');\n        // gameObject.addComponent(component);\n        \n        this.addStep('Transform Set Position', () => {\n            component.setPosition(4, 5, 6);\n            return this.equals(component.getPosition().x, 4) && this.equals(component.getPosition().y, 5) && this.equals(component.getPosition().z, 6);\n        });\n\n        this.addStep('Transform Set Scale', () => {\n            component.setScale(2, 3);\n            return this.equals(component.getScale().x, 2) && this.equals(component.getScale().y, 3);\n        });\n\n        this.addStep('Transform Set Rotation', () => {\n            component.setRotation(45);\n            return this.equals(component.getRotation(), 45);\n        });\n\n        this.addStep('Transform Set Origin Offset', () => {\n            component.setOriginOffset(20, 18, 16);\n            return this.equals(component.getOriginOffset().x, 20) && this.equals(component.getOriginOffset().y, 18) && this.equals(component.getOriginOffset().z, 16);\n        });\n\n        this.addStep('Transform Center Origin', () => {\n            component.centerOrigin();\n            let isCentered = this.equals(component.getOriginOffset().x, -0.5) && this.equals(component.getOriginOffset().y, -0.5) && this.equals(component.getOriginOffset().z, -0.5)\n            component.centerOrigin(false);\n            return isCentered && this.equals(component.getOriginOffset().x, 0) && this.equals(component.getOriginOffset().y, 0) && this.equals(component.getOriginOffset().z, 0);\n        });\n        \n        this.addStep('Transform Translate', () => {\n            component.translate(-8, -10, -12);\n            return this.equals(component.getPosition().x, -4) && this.equals(component.getPosition().y, -5) && this.equals(component.getPosition().z, -6);\n        });\n\n        this.addStep('Transform Scale', () => {\n            component.scale(-4, -6);\n            return this.equals(component.getScale().x, -2) && this.equals(component.getScale().y, -3);\n        });\n\n        this.addStep('Transform Rotate', () => {\n            component.rotate(-90);\n            return this.equals(component.getRotation(), -45);\n        });\n\n        this.addStep('Transform Flip X/Y', () => {\n            component.flipX();\n            component.flipY();\n            component.flipX();\n            component.flipY();\n            return this.equals(component.getScale().x, -2) && this.equals(component.getScale().y, -3);\n        });\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/TransformComponentTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 715,
    "kind": "testFile",
    "name": "test/tests/UIManagerTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport { UIManager } from '../../src/entry';\n\n/**\n * Example test. Runs a few simple assertions and chains them.\n * The third one fails on purpose.\n * @test \n */\nexport default class UIManagerTest extends Test {\n    constructor() {\n        super('UI Manager Test', 2); \n        this.loader = null;\n    }\n    \n    steps() {\n        this.addStep('Add Style', () => {\n            UIManager.addStyle('TestUI', {testVal: 66});\n            return UIManager.getStyle('TestUI') != null;\n        });\n\n        this.addStep('Set and Get Current Style', () => {\n            UIManager.setCurrentStyle('TestUI');\n            return UIManager.getCurrentStyle().testVal == 66;\n        });\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/UIManagerTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 716,
    "kind": "testFile",
    "name": "test/tests/ViewportPatternTest.js",
    "content": "import log from '../helper/Log';\nimport Test from '../helper/Test';\nimport Loader from '../../src/utils/Loader';\nimport { Scene, SceneManager, Viewport, GameObject, Point, Renderable2D } from '../../src/entry';\n\nexport default class ViewportPatternTest extends Test {\n    constructor() {\n        super('Viewport Pattern Test', 4); \n    }\n    \n    steps() {\n        let scene = null;\n        let viewport = null;\n        let gameObject = null;\n        let renderable = null;\n        let deregister = null;\n        this.addStep('Create Scene & Add Viewport', () => {\n            scene = new Scene();\n            viewport = new Viewport(0, 0, 400, 400);\n            SceneManager.addScene(scene);\n            deregister = scene.registerViewport(viewport);\n            return scene.viewports[0] == viewport;\n        });\n        this.addStep('Add Renderable to Viewport', () => {\n            gameObject = new GameObject(new Point(10, 10, 10), new Point(10, 10, 1), 45);\n            renderable = new Renderable2D();\n            renderable.setTexture('');\n            gameObject.addComponent(renderable);\n            renderable.addToViewport(0);\n            return viewport.renderables[renderable.id] == renderable;\n        })\n        this.addStep('Remove Renderable from Viewport', () => {\n            renderable.removeFromViewports();\n            return viewport.renderables[renderable.id] == null;\n        });\n        this.addStep('Remove Viewport from Scene', () => {\n            deregister();\n            SceneManager.removeScene();\n            return scene.viewports.length == 0;\n        });\n    }\n}",
    "static": true,
    "longname": "/Users/jaegarsarauer/Documents/DATA/CajartyComputing/Seed/SeedGameEngine/test/tests/ViewportPatternTest.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  }
]