eac92aab7a0e8e91df81d21433ccdee55531efaf1803b916684393c176a00d6d.json 23 KB

1
  1. {"ast":null,"code":"import { Tools } from \"../Misc/tools.js\";\nimport { Color4 } from \"../Maths/math.color.js\";\nimport { Texture } from \"../Materials/Textures/texture.js\";\nimport { EngineStore } from \"../Engines/engineStore.js\";\nimport { GPUParticleSystem } from \"./gpuParticleSystem.js\";\nimport { ParticleSystemSet } from \"./particleSystemSet.js\";\nimport { ParticleSystem } from \"./particleSystem.js\";\nimport { WebRequest } from \"../Misc/webRequest.js\";\n\n/**\n * This class is made for on one-liner static method to help creating particle system set.\n */\nexport class ParticleHelper {\n /**\n * Create a default particle system that you can tweak\n * @param emitter defines the emitter to use\n * @param capacity defines the system capacity (default is 500 particles)\n * @param scene defines the hosting scene\n * @param useGPU defines if a GPUParticleSystem must be created (default is false)\n * @returns the new Particle system\n */\n static CreateDefault(emitter, capacity = 500, scene, useGPU = false) {\n let system;\n if (useGPU) {\n system = new GPUParticleSystem(\"default system\", {\n capacity: capacity\n }, scene);\n } else {\n system = new ParticleSystem(\"default system\", capacity, scene);\n }\n system.emitter = emitter;\n system.particleTexture = new Texture(\"https://assets.babylonjs.com/textures/flare.png\", system.getScene());\n system.createConeEmitter(0.1, Math.PI / 4);\n // Particle color\n system.color1 = new Color4(1.0, 1.0, 1.0, 1.0);\n system.color2 = new Color4(1.0, 1.0, 1.0, 1.0);\n system.colorDead = new Color4(1.0, 1.0, 1.0, 0.0);\n // Particle Size\n system.minSize = 0.1;\n system.maxSize = 0.1;\n // Emission speed\n system.minEmitPower = 2;\n system.maxEmitPower = 2;\n // Update speed\n system.updateSpeed = 1 / 60;\n system.emitRate = 30;\n return system;\n }\n /**\n * This is the main static method (one-liner) of this helper to create different particle systems\n * @param type This string represents the type to the particle system to create\n * @param scene The scene where the particle system should live\n * @param gpu If the system will use gpu\n * @param capacity defines the system capacity (if null or undefined the sotred capacity will be used)\n * @returns the ParticleSystemSet created\n */\n static CreateAsync(type, scene, gpu = false, capacity) {\n if (!scene) {\n scene = EngineStore.LastCreatedScene;\n }\n const token = {};\n scene.addPendingData(token);\n return new Promise((resolve, reject) => {\n if (gpu && !GPUParticleSystem.IsSupported) {\n scene.removePendingData(token);\n return reject(\"Particle system with GPU is not supported.\");\n }\n Tools.LoadFile(`${ParticleHelper.BaseAssetsUrl}/systems/${type}.json`, data => {\n scene.removePendingData(token);\n const newData = JSON.parse(data.toString());\n return resolve(ParticleSystemSet.Parse(newData, scene, gpu, capacity));\n }, undefined, undefined, undefined, () => {\n scene.removePendingData(token);\n return reject(`An error occurred with the creation of your particle system. Check if your type '${type}' exists.`);\n });\n });\n }\n /**\n * Static function used to export a particle system to a ParticleSystemSet variable.\n * Please note that the emitter shape is not exported\n * @param systems defines the particle systems to export\n * @returns the created particle system set\n */\n static ExportSet(systems) {\n const set = new ParticleSystemSet();\n for (const system of systems) {\n set.systems.push(system);\n }\n return set;\n }\n /**\n * Creates a particle system from a snippet saved in a remote file\n * @param name defines the name of the particle system to create (can be null or empty to use the one from the json data)\n * @param url defines the url to load from\n * @param scene defines the hosting scene\n * @param gpu If the system will use gpu\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\n * @param capacity defines the system capacity (if null or undefined the sotred capacity will be used)\n * @returns a promise that will resolve to the new particle system\n */\n static ParseFromFileAsync(name, url, scene, gpu = false, rootUrl = \"\", capacity) {\n return new Promise((resolve, reject) => {\n const request = new WebRequest();\n request.addEventListener(\"readystatechange\", () => {\n if (request.readyState == 4) {\n if (request.status == 200) {\n const serializationObject = JSON.parse(request.responseText);\n let output;\n if (gpu) {\n output = GPUParticleSystem.Parse(serializationObject, scene, rootUrl, false, capacity);\n } else {\n output = ParticleSystem.Parse(serializationObject, scene, rootUrl, false, capacity);\n }\n if (name) {\n output.name = name;\n }\n resolve(output);\n } else {\n reject(\"Unable to load the particle system\");\n }\n }\n });\n request.open(\"GET\", url);\n request.send();\n });\n }\n /**\n * Creates a particle system from a snippet saved by the particle system editor\n * @param snippetId defines the snippet to load (can be set to _BLANK to create a default one)\n * @param scene defines the hosting scene\n * @param gpu If the system will use gpu\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\n * @param capacity defines the system capacity (if null or undefined the sotred capacity will be used)\n * @returns a promise that will resolve to the new particle system\n */\n static ParseFromSnippetAsync(snippetId, scene, gpu = false, rootUrl = \"\", capacity) {\n if (snippetId === \"_BLANK\") {\n const system = this.CreateDefault(null);\n system.start();\n return Promise.resolve(system);\n }\n return new Promise((resolve, reject) => {\n const request = new WebRequest();\n request.addEventListener(\"readystatechange\", () => {\n if (request.readyState == 4) {\n if (request.status == 200) {\n const snippet = JSON.parse(JSON.parse(request.responseText).jsonPayload);\n const serializationObject = JSON.parse(snippet.particleSystem);\n let output;\n if (gpu) {\n output = GPUParticleSystem.Parse(serializationObject, scene, rootUrl, false, capacity);\n } else {\n output = ParticleSystem.Parse(serializationObject, scene, rootUrl, false, capacity);\n }\n output.snippetId = snippetId;\n resolve(output);\n } else {\n reject(\"Unable to load the snippet \" + snippetId);\n }\n }\n });\n request.open(\"GET\", this.SnippetUrl + \"/\" + snippetId.replace(/#/g, \"/\"));\n request.send();\n });\n }\n}\n/**\n * Gets or sets base Assets URL\n */\nParticleHelper.BaseAssetsUrl = ParticleSystemSet.BaseAssetsUrl;\n/** Define the Url to load snippets */\nParticleHelper.SnippetUrl = `https://snippet.babylonjs.com`;\n/**\n * Creates a particle system from a snippet saved by the particle system editor\n * @deprecated Please use ParseFromSnippetAsync instead\n * @param snippetId defines the snippet to load (can be set to _BLANK to create a default one)\n * @param scene defines the hosting scene\n * @param gpu If the system will use gpu\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\n * @param capacity defines the system capacity (if null or undefined the sotred capacity will be used)\n * @returns a promise that will resolve to the new particle system\n */\nParticleHelper.CreateFromSnippetAsync = ParticleHelper.ParseFromSnippetAsync;","map":{"version":3,"names":["Tools","Color4","Texture","EngineStore","GPUParticleSystem","ParticleSystemSet","ParticleSystem","WebRequest","ParticleHelper","CreateDefault","emitter","capacity","scene","useGPU","system","particleTexture","getScene","createConeEmitter","Math","PI","color1","color2","colorDead","minSize","maxSize","minEmitPower","maxEmitPower","updateSpeed","emitRate","CreateAsync","type","gpu","LastCreatedScene","token","addPendingData","Promise","resolve","reject","IsSupported","removePendingData","LoadFile","BaseAssetsUrl","data","newData","JSON","parse","toString","Parse","undefined","ExportSet","systems","set","push","ParseFromFileAsync","name","url","rootUrl","request","addEventListener","readyState","status","serializationObject","responseText","output","open","send","ParseFromSnippetAsync","snippetId","start","snippet","jsonPayload","particleSystem","SnippetUrl","replace","CreateFromSnippetAsync"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Particles/particleHelper.js"],"sourcesContent":["import { Tools } from \"../Misc/tools.js\";\nimport { Color4 } from \"../Maths/math.color.js\";\nimport { Texture } from \"../Materials/Textures/texture.js\";\nimport { EngineStore } from \"../Engines/engineStore.js\";\nimport { GPUParticleSystem } from \"./gpuParticleSystem.js\";\nimport { ParticleSystemSet } from \"./particleSystemSet.js\";\nimport { ParticleSystem } from \"./particleSystem.js\";\nimport { WebRequest } from \"../Misc/webRequest.js\";\n\n/**\n * This class is made for on one-liner static method to help creating particle system set.\n */\nexport class ParticleHelper {\n /**\n * Create a default particle system that you can tweak\n * @param emitter defines the emitter to use\n * @param capacity defines the system capacity (default is 500 particles)\n * @param scene defines the hosting scene\n * @param useGPU defines if a GPUParticleSystem must be created (default is false)\n * @returns the new Particle system\n */\n static CreateDefault(emitter, capacity = 500, scene, useGPU = false) {\n let system;\n if (useGPU) {\n system = new GPUParticleSystem(\"default system\", { capacity: capacity }, scene);\n }\n else {\n system = new ParticleSystem(\"default system\", capacity, scene);\n }\n system.emitter = emitter;\n system.particleTexture = new Texture(\"https://assets.babylonjs.com/textures/flare.png\", system.getScene());\n system.createConeEmitter(0.1, Math.PI / 4);\n // Particle color\n system.color1 = new Color4(1.0, 1.0, 1.0, 1.0);\n system.color2 = new Color4(1.0, 1.0, 1.0, 1.0);\n system.colorDead = new Color4(1.0, 1.0, 1.0, 0.0);\n // Particle Size\n system.minSize = 0.1;\n system.maxSize = 0.1;\n // Emission speed\n system.minEmitPower = 2;\n system.maxEmitPower = 2;\n // Update speed\n system.updateSpeed = 1 / 60;\n system.emitRate = 30;\n return system;\n }\n /**\n * This is the main static method (one-liner) of this helper to create different particle systems\n * @param type This string represents the type to the particle system to create\n * @param scene The scene where the particle system should live\n * @param gpu If the system will use gpu\n * @param capacity defines the system capacity (if null or undefined the sotred capacity will be used)\n * @returns the ParticleSystemSet created\n */\n static CreateAsync(type, scene, gpu = false, capacity) {\n if (!scene) {\n scene = EngineStore.LastCreatedScene;\n }\n const token = {};\n scene.addPendingData(token);\n return new Promise((resolve, reject) => {\n if (gpu && !GPUParticleSystem.IsSupported) {\n scene.removePendingData(token);\n return reject(\"Particle system with GPU is not supported.\");\n }\n Tools.LoadFile(`${ParticleHelper.BaseAssetsUrl}/systems/${type}.json`, (data) => {\n scene.removePendingData(token);\n const newData = JSON.parse(data.toString());\n return resolve(ParticleSystemSet.Parse(newData, scene, gpu, capacity));\n }, undefined, undefined, undefined, () => {\n scene.removePendingData(token);\n return reject(`An error occurred with the creation of your particle system. Check if your type '${type}' exists.`);\n });\n });\n }\n /**\n * Static function used to export a particle system to a ParticleSystemSet variable.\n * Please note that the emitter shape is not exported\n * @param systems defines the particle systems to export\n * @returns the created particle system set\n */\n static ExportSet(systems) {\n const set = new ParticleSystemSet();\n for (const system of systems) {\n set.systems.push(system);\n }\n return set;\n }\n /**\n * Creates a particle system from a snippet saved in a remote file\n * @param name defines the name of the particle system to create (can be null or empty to use the one from the json data)\n * @param url defines the url to load from\n * @param scene defines the hosting scene\n * @param gpu If the system will use gpu\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\n * @param capacity defines the system capacity (if null or undefined the sotred capacity will be used)\n * @returns a promise that will resolve to the new particle system\n */\n static ParseFromFileAsync(name, url, scene, gpu = false, rootUrl = \"\", capacity) {\n return new Promise((resolve, reject) => {\n const request = new WebRequest();\n request.addEventListener(\"readystatechange\", () => {\n if (request.readyState == 4) {\n if (request.status == 200) {\n const serializationObject = JSON.parse(request.responseText);\n let output;\n if (gpu) {\n output = GPUParticleSystem.Parse(serializationObject, scene, rootUrl, false, capacity);\n }\n else {\n output = ParticleSystem.Parse(serializationObject, scene, rootUrl, false, capacity);\n }\n if (name) {\n output.name = name;\n }\n resolve(output);\n }\n else {\n reject(\"Unable to load the particle system\");\n }\n }\n });\n request.open(\"GET\", url);\n request.send();\n });\n }\n /**\n * Creates a particle system from a snippet saved by the particle system editor\n * @param snippetId defines the snippet to load (can be set to _BLANK to create a default one)\n * @param scene defines the hosting scene\n * @param gpu If the system will use gpu\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\n * @param capacity defines the system capacity (if null or undefined the sotred capacity will be used)\n * @returns a promise that will resolve to the new particle system\n */\n static ParseFromSnippetAsync(snippetId, scene, gpu = false, rootUrl = \"\", capacity) {\n if (snippetId === \"_BLANK\") {\n const system = this.CreateDefault(null);\n system.start();\n return Promise.resolve(system);\n }\n return new Promise((resolve, reject) => {\n const request = new WebRequest();\n request.addEventListener(\"readystatechange\", () => {\n if (request.readyState == 4) {\n if (request.status == 200) {\n const snippet = JSON.parse(JSON.parse(request.responseText).jsonPayload);\n const serializationObject = JSON.parse(snippet.particleSystem);\n let output;\n if (gpu) {\n output = GPUParticleSystem.Parse(serializationObject, scene, rootUrl, false, capacity);\n }\n else {\n output = ParticleSystem.Parse(serializationObject, scene, rootUrl, false, capacity);\n }\n output.snippetId = snippetId;\n resolve(output);\n }\n else {\n reject(\"Unable to load the snippet \" + snippetId);\n }\n }\n });\n request.open(\"GET\", this.SnippetUrl + \"/\" + snippetId.replace(/#/g, \"/\"));\n request.send();\n });\n }\n}\n/**\n * Gets or sets base Assets URL\n */\nParticleHelper.BaseAssetsUrl = ParticleSystemSet.BaseAssetsUrl;\n/** Define the Url to load snippets */\nParticleHelper.SnippetUrl = `https://snippet.babylonjs.com`;\n/**\n * Creates a particle system from a snippet saved by the particle system editor\n * @deprecated Please use ParseFromSnippetAsync instead\n * @param snippetId defines the snippet to load (can be set to _BLANK to create a default one)\n * @param scene defines the hosting scene\n * @param gpu If the system will use gpu\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\n * @param capacity defines the system capacity (if null or undefined the sotred capacity will be used)\n * @returns a promise that will resolve to the new particle system\n */\nParticleHelper.CreateFromSnippetAsync = ParticleHelper.ParseFromSnippetAsync;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}