index.d.ts 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443
  1. declare module 'babylonjs/solidParticles' {
  2. class SolidParticle {
  3. idx: number;
  4. color: Nullable<Color4>;
  5. position: Vector3;
  6. rotation: Vector3;
  7. rotationQuaternion: Nullable<Quaternion>;
  8. scaling: Vector3;
  9. uvs: Vector4;
  10. velocity: Vector3;
  11. pivot: Vector3;
  12. alive: boolean;
  13. isVisible: boolean;
  14. _pos: number;
  15. _ind: number;
  16. _model: ModelShape;
  17. shapeId: number;
  18. idxInShape: number;
  19. _modelBoundingInfo: BoundingInfo;
  20. _boundingInfo: BoundingInfo;
  21. _sps: SolidParticleSystem;
  22. _stillInvisible: boolean;
  23. /**
  24. * Creates a Solid Particle object.
  25. * Don't create particles manually, use instead the Solid Particle System internal tools like _addParticle()
  26. * `particleIndex` (integer) is the particle index in the Solid Particle System pool. It's also the particle identifier.
  27. * `positionIndex` (integer) is the starting index of the particle vertices in the SPS "positions" array.
  28. * `indiceIndex` (integer) is the starting index of the particle indices in the SPS "indices" array.
  29. * `model` (ModelShape) is a reference to the model shape on what the particle is designed.
  30. * `shapeId` (integer) is the model shape identifier in the SPS.
  31. * `idxInShape` (integer) is the index of the particle in the current model (ex: the 10th box of addShape(box, 30))
  32. * `modelBoundingInfo` is the reference to the model BoundingInfo used for intersection computations.
  33. */
  34. constructor(particleIndex: number, positionIndex: number, indiceIndex: number, model: Nullable<ModelShape>, shapeId: number, idxInShape: number, sps: SolidParticleSystem, modelBoundingInfo?: Nullable<BoundingInfo>);
  35. /**
  36. * legacy support, changed scale to scaling
  37. */
  38. scale: Vector3;
  39. /**
  40. * legacy support, changed quaternion to rotationQuaternion
  41. */
  42. quaternion: Nullable<Quaternion>;
  43. /**
  44. * Returns a boolean. True if the particle intersects another particle or another mesh, else false.
  45. * The intersection is computed on the particle bounding sphere and Axis Aligned Bounding Box (AABB)
  46. * `target` is the object (solid particle or mesh) what the intersection is computed against.
  47. */
  48. intersectsMesh(target: Mesh | SolidParticle): boolean;
  49. }
  50. class ModelShape {
  51. shapeID: number;
  52. _shape: Vector3[];
  53. _shapeUV: number[];
  54. _indicesLength: number;
  55. _positionFunction: Nullable<(particle: SolidParticle, i: number, s: number) => void>;
  56. _vertexFunction: Nullable<(particle: SolidParticle, vertex: Vector3, i: number) => void>;
  57. /**
  58. * Creates a ModelShape object. This is an internal simplified reference to a mesh used as for a model to replicate particles from by the SPS.
  59. * SPS internal tool, don't use it manually.
  60. */
  61. constructor(id: number, shape: Vector3[], indicesLength: number, shapeUV: number[], posFunction: Nullable<(particle: SolidParticle, i: number, s: number) => void>, vtxFunction: Nullable<(particle: SolidParticle, vertex: Vector3, i: number) => void>);
  62. }
  63. class DepthSortedParticle {
  64. ind: number;
  65. indicesLength: number;
  66. sqDistance: number;
  67. }
  68. }
  69. declare module 'babylonjs/solidParticles' {
  70. /**
  71. * Full documentation here : http://doc.babylonjs.com/overviews/Solid_Particle_System
  72. */
  73. class SolidParticleSystem implements IDisposable {
  74. /**
  75. * The SPS array of Solid Particle objects. Just access each particle as with any classic array.
  76. * Example : var p = SPS.particles[i];
  77. */
  78. particles: SolidParticle[];
  79. /**
  80. * The SPS total number of particles. Read only. Use SPS.counter instead if you need to set your own value.
  81. */
  82. nbParticles: number;
  83. /**
  84. * If the particles must ever face the camera (default false). Useful for planar particles.
  85. */
  86. billboard: boolean;
  87. /**
  88. * Recompute normals when adding a shape
  89. */
  90. recomputeNormals: boolean;
  91. /**
  92. * This a counter ofr your own usage. It's not set by any SPS functions.
  93. */
  94. counter: number;
  95. /**
  96. * The SPS name. This name is also given to the underlying mesh.
  97. */
  98. name: string;
  99. /**
  100. * The SPS mesh. It's a standard BJS Mesh, so all the methods from the Mesh class are avalaible.
  101. */
  102. mesh: Mesh;
  103. /**
  104. * This empty object is intended to store some SPS specific or temporary values in order to lower the Garbage Collector activity.
  105. * Please read : http://doc.babylonjs.com/overviews/Solid_Particle_System#garbage-collector-concerns
  106. */
  107. vars: any;
  108. /**
  109. * This array is populated when the SPS is set as 'pickable'.
  110. * Each key of this array is a `faceId` value that you can get from a pickResult object.
  111. * Each element of this array is an object `{idx: int, faceId: int}`.
  112. * `idx` is the picked particle index in the `SPS.particles` array
  113. * `faceId` is the picked face index counted within this particle.
  114. * Please read : http://doc.babylonjs.com/overviews/Solid_Particle_System#pickable-particles
  115. */
  116. pickedParticles: {
  117. idx: number;
  118. faceId: number;
  119. }[];
  120. /**
  121. * This array is populated when `enableDepthSort` is set to true.
  122. * Each element of this array is an instance of the class DepthSortedParticle.
  123. */
  124. depthSortedParticles: DepthSortedParticle[];
  125. private _scene;
  126. private _positions;
  127. private _indices;
  128. private _normals;
  129. private _colors;
  130. private _uvs;
  131. private _indices32;
  132. private _positions32;
  133. private _normals32;
  134. private _fixedNormal32;
  135. private _colors32;
  136. private _uvs32;
  137. private _index;
  138. private _updatable;
  139. private _pickable;
  140. private _isVisibilityBoxLocked;
  141. private _alwaysVisible;
  142. private _depthSort;
  143. private _shapeCounter;
  144. private _copy;
  145. private _shape;
  146. private _shapeUV;
  147. private _color;
  148. private _computeParticleColor;
  149. private _computeParticleTexture;
  150. private _computeParticleRotation;
  151. private _computeParticleVertex;
  152. private _computeBoundingBox;
  153. private _depthSortParticles;
  154. private _cam_axisZ;
  155. private _cam_axisY;
  156. private _cam_axisX;
  157. private _axisZ;
  158. private _camera;
  159. private _particle;
  160. private _camDir;
  161. private _camInvertedPosition;
  162. private _rotMatrix;
  163. private _invertMatrix;
  164. private _rotated;
  165. private _quaternion;
  166. private _vertex;
  167. private _normal;
  168. private _yaw;
  169. private _pitch;
  170. private _roll;
  171. private _halfroll;
  172. private _halfpitch;
  173. private _halfyaw;
  174. private _sinRoll;
  175. private _cosRoll;
  176. private _sinPitch;
  177. private _cosPitch;
  178. private _sinYaw;
  179. private _cosYaw;
  180. private _mustUnrotateFixedNormals;
  181. private _minimum;
  182. private _maximum;
  183. private _minBbox;
  184. private _maxBbox;
  185. private _particlesIntersect;
  186. private _depthSortFunction;
  187. private _needs32Bits;
  188. _bSphereOnly: boolean;
  189. _bSphereRadiusFactor: number;
  190. /**
  191. * Creates a SPS (Solid Particle System) object.
  192. * `name` (String) is the SPS name, this will be the underlying mesh name.
  193. * `scene` (Scene) is the scene in which the SPS is added.
  194. * `updatable` (optional boolean, default true) : if the SPS must be updatable or immutable.
  195. * `isPickable` (optional boolean, default false) : if the solid particles must be pickable.
  196. * `enableDepthSort` (optional boolean, default false) : if the solid particles must be sorted in the geometry according to their distance to the camera.
  197. * `particleIntersection` (optional boolean, default false) : if the solid particle intersections must be computed.
  198. * `boundingSphereOnly` (optional boolean, default false) : if the particle intersection must be computed only with the bounding sphere (no bounding box computation, so faster).
  199. * `bSphereRadiusFactor` (optional float, default 1.0) : a number to multiply the boundind sphere radius by in order to reduce it for instance.
  200. * Example : bSphereRadiusFactor = 1.0 / Math.sqrt(3.0) => the bounding sphere exactly matches a spherical mesh.
  201. */
  202. constructor(name: string, scene: Scene, options?: {
  203. updatable?: boolean;
  204. isPickable?: boolean;
  205. enableDepthSort?: boolean;
  206. particleIntersection?: boolean;
  207. boundingSphereOnly?: boolean;
  208. bSphereRadiusFactor?: number;
  209. });
  210. /**
  211. * Builds the SPS underlying mesh. Returns a standard Mesh.
  212. * If no model shape was added to the SPS, the returned mesh is just a single triangular plane.
  213. */
  214. buildMesh(): Mesh;
  215. /**
  216. * Digests the mesh and generates as many solid particles in the system as wanted. Returns the SPS.
  217. * These particles will have the same geometry than the mesh parts and will be positioned at the same localisation than the mesh original places.
  218. * Thus the particles generated from `digest()` have their property `position` set yet.
  219. * `mesh` ( Mesh ) is the mesh to be digested
  220. * `facetNb` (optional integer, default 1) is the number of mesh facets per particle, this parameter is overriden by the parameter `number` if any
  221. * `delta` (optional integer, default 0) is the random extra number of facets per particle , each particle will have between `facetNb` and `facetNb + delta` facets
  222. * `number` (optional positive integer) is the wanted number of particles : each particle is built with `mesh_total_facets / number` facets
  223. */
  224. digest(mesh: Mesh, options?: {
  225. facetNb?: number;
  226. number?: number;
  227. delta?: number;
  228. }): SolidParticleSystem;
  229. private _unrotateFixedNormals();
  230. private _resetCopy();
  231. private _meshBuilder(p, shape, positions, meshInd, indices, meshUV, uvs, meshCol, colors, meshNor, normals, idx, idxInShape, options);
  232. private _posToShape(positions);
  233. private _uvsToShapeUV(uvs);
  234. private _addParticle(idx, idxpos, idxind, model, shapeId, idxInShape, bInfo?);
  235. /**
  236. * Adds some particles to the SPS from the model shape. Returns the shape id.
  237. * Please read the doc : http://doc.babylonjs.com/overviews/Solid_Particle_System#create-an-immutable-sps
  238. * `mesh` is any Mesh object that will be used as a model for the solid particles.
  239. * `nb` (positive integer) the number of particles to be created from this model
  240. * `positionFunction` is an optional javascript function to called for each particle on SPS creation.
  241. * `vertexFunction` is an optional javascript function to called for each vertex of each particle on SPS creation
  242. */
  243. addShape(mesh: Mesh, nb: number, options?: {
  244. positionFunction?: any;
  245. vertexFunction?: any;
  246. }): number;
  247. private _rebuildParticle(particle);
  248. /**
  249. * Rebuilds the whole mesh and updates the VBO : custom positions and vertices are recomputed if needed.
  250. * Returns the SPS.
  251. */
  252. rebuildMesh(): SolidParticleSystem;
  253. /**
  254. * Sets all the particles : this method actually really updates the mesh according to the particle positions, rotations, colors, textures, etc.
  255. * This method calls `updateParticle()` for each particle of the SPS.
  256. * For an animated SPS, it is usually called within the render loop.
  257. * @param start The particle index in the particle array where to start to compute the particle property values _(default 0)_
  258. * @param end The particle index in the particle array where to stop to compute the particle property values _(default nbParticle - 1)_
  259. * @param update If the mesh must be finally updated on this call after all the particle computations _(default true)_
  260. * Returns the SPS.
  261. */
  262. setParticles(start?: number, end?: number, update?: boolean): SolidParticleSystem;
  263. private _quaternionRotationYPR();
  264. private _quaternionToRotationMatrix();
  265. /**
  266. * Disposes the SPS.
  267. * Returns nothing.
  268. */
  269. dispose(): void;
  270. /**
  271. * Visibilty helper : Recomputes the visible size according to the mesh bounding box
  272. * doc : http://doc.babylonjs.com/overviews/Solid_Particle_System#sps-visibility
  273. * Returns the SPS.
  274. */
  275. refreshVisibleSize(): SolidParticleSystem;
  276. /**
  277. * Visibility helper : Sets the size of a visibility box, this sets the underlying mesh bounding box.
  278. * @param size the size (float) of the visibility box
  279. * note : this doesn't lock the SPS mesh bounding box.
  280. * doc : http://doc.babylonjs.com/overviews/Solid_Particle_System#sps-visibility
  281. */
  282. setVisibilityBox(size: number): void;
  283. /**
  284. * Sets the SPS as always visible or not
  285. * doc : http://doc.babylonjs.com/overviews/Solid_Particle_System#sps-visibility
  286. */
  287. isAlwaysVisible: boolean;
  288. /**
  289. * Sets the SPS visibility box as locked or not. This enables/disables the underlying mesh bounding box updates.
  290. * doc : http://doc.babylonjs.com/overviews/Solid_Particle_System#sps-visibility
  291. */
  292. isVisibilityBoxLocked: boolean;
  293. /**
  294. * Tells to `setParticles()` to compute the particle rotations or not.
  295. * Default value : true. The SPS is faster when it's set to false.
  296. * Note : the particle rotations aren't stored values, so setting `computeParticleRotation` to false will prevents the particle to rotate.
  297. */
  298. computeParticleRotation: boolean;
  299. /**
  300. * Tells to `setParticles()` to compute the particle colors or not.
  301. * Default value : true. The SPS is faster when it's set to false.
  302. * Note : the particle colors are stored values, so setting `computeParticleColor` to false will keep yet the last colors set.
  303. */
  304. computeParticleColor: boolean;
  305. /**
  306. * Tells to `setParticles()` to compute the particle textures or not.
  307. * Default value : true. The SPS is faster when it's set to false.
  308. * Note : the particle textures are stored values, so setting `computeParticleTexture` to false will keep yet the last colors set.
  309. */
  310. computeParticleTexture: boolean;
  311. /**
  312. * Tells to `setParticles()` to call the vertex function for each vertex of each particle, or not.
  313. * Default value : false. The SPS is faster when it's set to false.
  314. * Note : the particle custom vertex positions aren't stored values.
  315. */
  316. computeParticleVertex: boolean;
  317. /**
  318. * Tells to `setParticles()` to compute or not the mesh bounding box when computing the particle positions.
  319. */
  320. computeBoundingBox: boolean;
  321. /**
  322. * Tells to `setParticles()` to sort or not the distance between each particle and the camera.
  323. * Skipped when `enableDepthSort` is set to `false` (default) at construction time.
  324. * Default : `true`
  325. */
  326. depthSortParticles: boolean;
  327. /**
  328. * This function does nothing. It may be overwritten to set all the particle first values.
  329. * The SPS doesn't call this function, you may have to call it by your own.
  330. * doc : http://doc.babylonjs.com/overviews/Solid_Particle_System#particle-management
  331. */
  332. initParticles(): void;
  333. /**
  334. * This function does nothing. It may be overwritten to recycle a particle.
  335. * The SPS doesn't call this function, you may have to call it by your own.
  336. * doc : http://doc.babylonjs.com/overviews/Solid_Particle_System#particle-management
  337. */
  338. recycleParticle(particle: SolidParticle): SolidParticle;
  339. /**
  340. * Updates a particle : this function should be overwritten by the user.
  341. * It is called on each particle by `setParticles()`. This is the place to code each particle behavior.
  342. * doc : http://doc.babylonjs.com/overviews/Solid_Particle_System#particle-management
  343. * ex : just set a particle position or velocity and recycle conditions
  344. */
  345. updateParticle(particle: SolidParticle): SolidParticle;
  346. /**
  347. * Updates a vertex of a particle : it can be overwritten by the user.
  348. * This will be called on each vertex particle by `setParticles()` if `computeParticleVertex` is set to true only.
  349. * @param particle the current particle
  350. * @param vertex the current index of the current particle
  351. * @param pt the index of the current vertex in the particle shape
  352. * doc : http://doc.babylonjs.com/overviews/Solid_Particle_System#update-each-particle-shape
  353. * ex : just set a vertex particle position
  354. */
  355. updateParticleVertex(particle: SolidParticle, vertex: Vector3, pt: number): Vector3;
  356. /**
  357. * This will be called before any other treatment by `setParticles()` and will be passed three parameters.
  358. * This does nothing and may be overwritten by the user.
  359. * @param start the particle index in the particle array where to stop to iterate, same than the value passed to setParticle()
  360. * @param stop the particle index in the particle array where to stop to iterate, same than the value passed to setParticle()
  361. * @param update the boolean update value actually passed to setParticles()
  362. */
  363. beforeUpdateParticles(start?: number, stop?: number, update?: boolean): void;
  364. /**
  365. * This will be called by `setParticles()` after all the other treatments and just before the actual mesh update.
  366. * This will be passed three parameters.
  367. * This does nothing and may be overwritten by the user.
  368. * @param start the particle index in the particle array where to stop to iterate, same than the value passed to setParticle()
  369. * @param stop the particle index in the particle array where to stop to iterate, same than the value passed to setParticle()
  370. * @param update the boolean update value actually passed to setParticles()
  371. */
  372. afterUpdateParticles(start?: number, stop?: number, update?: boolean): void;
  373. }
  374. }
  375. import {EffectFallbacks,EffectCreationOptions,Effect,Nullable,float,double,int,FloatArray,IndicesArray,KeyboardEventTypes,KeyboardInfo,KeyboardInfoPre,PointerEventTypes,PointerInfoBase,PointerInfoPre,PointerInfo,ToGammaSpace,ToLinearSpace,Epsilon,Color3,Color4,Vector2,Vector3,Vector4,ISize,Size,Quaternion,Matrix,Plane,Viewport,Frustum,Space,Axis,BezierCurve,Orientation,Angle,Arc2,Path2,Path3D,Curve3,PositionNormalVertex,PositionNormalTextureVertex,Tmp,Scalar,expandToProperty,serialize,serializeAsTexture,serializeAsColor3,serializeAsFresnelParameters,serializeAsVector2,serializeAsVector3,serializeAsMeshReference,serializeAsColorCurves,serializeAsColor4,serializeAsImageProcessingConfiguration,serializeAsQuaternion,SerializationHelper,EventState,Observer,MultiObserver,Observable,SmartArray,SmartArrayNoDuplicate,IAnimatable,LoadFileError,RetryStrategy,IFileRequest,Tools,PerfCounter,className,AsyncLoop,_AlphaState,_DepthCullingState,_StencilState,InstancingAttributeInfo,RenderTargetCreationOptions,EngineCapabilities,EngineOptions,IDisplayChangedEventArgs,Engine,Node,BoundingSphere,BoundingBox,ICullable,BoundingInfo,TransformNode,AbstractMesh,Light,Camera,RenderingManager,RenderingGroup,IDisposable,IActiveMeshCandidateProvider,RenderingGroupInfo,Scene,Buffer,VertexBuffer,InternalTexture,BaseTexture,Texture,_InstancesBatch,Mesh,BaseSubMesh,SubMesh,MaterialDefines,Material,UniformBuffer,IGetSetVerticesData,VertexData,Geometry,_PrimitiveGeometry,RibbonGeometry,BoxGeometry,SphereGeometry,DiscGeometry,CylinderGeometry,TorusGeometry,GroundGeometry,TiledGroundGeometry,PlaneGeometry,TorusKnotGeometry,PostProcessManager,PerformanceMonitor,RollingAverage,IImageProcessingConfigurationDefines,ImageProcessingConfiguration,ColorGradingTexture,ColorCurves,Behavior,MaterialHelper,PushMaterial,StandardMaterialDefines,StandardMaterial} from 'babylonjs/core';
  376. import {EngineInstrumentation,SceneInstrumentation,_TimeToken} from 'babylonjs/instrumentation';
  377. import {Particle,IParticleSystem,ParticleSystem,BoxParticleEmitter,ConeParticleEmitter,SphereParticleEmitter,SphereDirectedParticleEmitter,IParticleEmitterType} from 'babylonjs/particles';
  378. import {GPUParticleSystem} from 'babylonjs/gpuParticles';
  379. import {FramingBehavior,BouncingBehavior,AutoRotationBehavior} from 'babylonjs/cameraBehaviors';
  380. import {NullEngineOptions,NullEngine} from 'babylonjs/nullEngine';
  381. import {TextureTools} from 'babylonjs/textureTools';
  382. import {Collider,CollisionWorker,ICollisionCoordinator,SerializedMesh,SerializedSubMesh,SerializedGeometry,BabylonMessage,SerializedColliderToWorker,WorkerTaskType,WorkerReply,CollisionReplyPayload,InitPayload,CollidePayload,UpdatePayload,WorkerReplyType,CollisionCoordinatorWorker,CollisionCoordinatorLegacy} from 'babylonjs/collisions';
  383. import {IntersectionInfo,PickingInfo,Ray} from 'babylonjs/picking';
  384. import {SpriteManager,Sprite} from 'babylonjs/sprites';
  385. import {AnimationRange,AnimationEvent,PathCursor,Animation,TargetedAnimation,AnimationGroup,RuntimeAnimation,Animatable,IEasingFunction,EasingFunction,CircleEase,BackEase,BounceEase,CubicEase,ElasticEase,ExponentialEase,PowerEase,QuadraticEase,QuarticEase,QuinticEase,SineEase,BezierCurveEase} from 'babylonjs/animations';
  386. import {Condition,ValueCondition,PredicateCondition,StateCondition,Action,ActionEvent,ActionManager,InterpolateValueAction,SwitchBooleanAction,SetStateAction,SetValueAction,IncrementValueAction,PlayAnimationAction,StopAnimationAction,DoNothingAction,CombineAction,ExecuteCodeAction,SetParentAction,PlaySoundAction,StopSoundAction} from 'babylonjs/actions';
  387. import {GroundMesh,InstancedMesh,LinesMesh} from 'babylonjs/additionalMeshes';
  388. import {ShaderMaterial} from 'babylonjs/shaderMaterial';
  389. import {MeshBuilder} from 'babylonjs/meshBuilder';
  390. import {PBRBaseMaterial,PBRBaseSimpleMaterial,PBRMaterial,PBRMetallicRoughnessMaterial,PBRSpecularGlossinessMaterial} from 'babylonjs/pbrMaterial';
  391. import {CameraInputTypes,ICameraInput,CameraInputsMap,CameraInputsManager,TargetCamera} from 'babylonjs/targetCamera';
  392. import {ArcRotateCameraKeyboardMoveInput,ArcRotateCameraMouseWheelInput,ArcRotateCameraPointersInput,ArcRotateCameraInputsManager,ArcRotateCamera} from 'babylonjs/arcRotateCamera';
  393. import {FreeCameraMouseInput,FreeCameraKeyboardMoveInput,FreeCameraInputsManager,FreeCamera} from 'babylonjs/freeCamera';
  394. import {HemisphericLight} from 'babylonjs/hemisphericLight';
  395. import {IShadowLight,ShadowLight,PointLight} from 'babylonjs/pointLight';
  396. import {DirectionalLight} from 'babylonjs/directionalLight';
  397. import {SpotLight} from 'babylonjs/spotLight';
  398. import {CubeTexture,RenderTargetTexture,IMultiRenderTargetOptions,MultiRenderTarget,MirrorTexture,RefractionTexture,DynamicTexture,VideoTexture,RawTexture} from 'babylonjs/additionalTextures';
  399. import {AudioEngine,Sound,SoundTrack,Analyser} from 'babylonjs/audio';
  400. import {ILoadingScreen,DefaultLoadingScreen,SceneLoaderProgressEvent,ISceneLoaderPluginExtensions,ISceneLoaderPluginFactory,ISceneLoaderPlugin,ISceneLoaderPluginAsync,SceneLoader,FilesInput} from 'babylonjs/loader';
  401. import {IShadowGenerator,ShadowGenerator} from 'babylonjs/shadows';
  402. import {StringDictionary} from 'babylonjs/stringDictionary';
  403. import {Tags,AndOrNotEvaluator} from 'babylonjs/userData';
  404. import {FresnelParameters} from 'babylonjs/fresnel';
  405. import {MultiMaterial} from 'babylonjs/multiMaterial';
  406. import {Database} from 'babylonjs/offline';
  407. import {FreeCameraTouchInput,TouchCamera} from 'babylonjs/touchCamera';
  408. import {ProceduralTexture,CustomProceduralTexture} from 'babylonjs/procedural';
  409. import {FreeCameraGamepadInput,ArcRotateCameraGamepadInput,GamepadManager,StickValues,GamepadButtonChanges,Gamepad,GenericPad,Xbox360Button,Xbox360Dpad,Xbox360Pad,PoseEnabledControllerType,MutableGamepadButton,ExtendedGamepadButton,PoseEnabledControllerHelper,PoseEnabledController,WebVRController,OculusTouchController,ViveController,GenericController,WindowsMotionController} from 'babylonjs/gamepad';
  410. import {FollowCamera,ArcFollowCamera,UniversalCamera,GamepadCamera} from 'babylonjs/additionalCameras';
  411. import {DepthRenderer} from 'babylonjs/depthRenderer';
  412. import {GeometryBufferRenderer} from 'babylonjs/geometryBufferRenderer';
  413. import {PostProcessOptions,PostProcess,PassPostProcess} from 'babylonjs/postProcesses';
  414. import {BlurPostProcess} from 'babylonjs/additionalPostProcess_blur';
  415. import {FxaaPostProcess} from 'babylonjs/additionalPostProcess_fxaa';
  416. import {HighlightsPostProcess} from 'babylonjs/additionalPostProcess_highlights';
  417. import {RefractionPostProcess,BlackAndWhitePostProcess,ConvolutionPostProcess,FilterPostProcess,VolumetricLightScatteringPostProcess,ColorCorrectionPostProcess,TonemappingOperator,TonemapPostProcess,DisplayPassPostProcess,ImageProcessingPostProcess} from 'babylonjs/additionalPostProcesses';
  418. import {PostProcessRenderPipelineManager,PostProcessRenderPass,PostProcessRenderEffect,PostProcessRenderPipeline} from 'babylonjs/renderingPipeline';
  419. import {SSAORenderingPipeline,SSAO2RenderingPipeline,LensRenderingPipeline,StandardRenderingPipeline} from 'babylonjs/additionalRenderingPipeline';
  420. import {DefaultRenderingPipeline} from 'babylonjs/defaultRenderingPipeline';
  421. import {Bone,BoneIKController,BoneLookController,Skeleton} from 'babylonjs/bones';
  422. import {SphericalPolynomial,SphericalHarmonics,CubeMapToSphericalPolynomialTools,CubeMapInfo,PanoramaToCubeMapTools,HDRInfo,HDRTools,HDRCubeTexture} from 'babylonjs/hdr';
  423. import {CSG} from 'babylonjs/csg';
  424. import {Polygon,PolygonMeshBuilder} from 'babylonjs/polygonMesh';
  425. import {LensFlare,LensFlareSystem} from 'babylonjs/lensFlares';
  426. import {PhysicsJointData,PhysicsJoint,DistanceJoint,MotorEnabledJoint,HingeJoint,Hinge2Joint,IMotorEnabledJoint,DistanceJointData,SpringJointData,PhysicsImpostorParameters,IPhysicsEnabledObject,PhysicsImpostor,PhysicsImpostorJoint,PhysicsEngine,IPhysicsEnginePlugin,PhysicsHelper,PhysicsRadialExplosionEvent,PhysicsGravitationalFieldEvent,PhysicsUpdraftEvent,PhysicsVortexEvent,PhysicsRadialImpulseFalloff,PhysicsUpdraftMode,PhysicsForceAndContactPoint,PhysicsRadialExplosionEventData,PhysicsGravitationalFieldEventData,PhysicsUpdraftEventData,PhysicsVortexEventData,CannonJSPlugin,OimoJSPlugin} from 'babylonjs/physics';
  427. import {TGATools,DDSInfo,DDSTools,KhronosTextureContainer} from 'babylonjs/textureFormats';
  428. import {Debug,RayHelper,DebugLayer,BoundingBoxRenderer} from 'babylonjs/debug';
  429. import {MorphTarget,MorphTargetManager} from 'babylonjs/morphTargets';
  430. import {IOctreeContainer,Octree,OctreeBlock} from 'babylonjs/octrees';
  431. import {SIMDHelper} from 'babylonjs/simd';
  432. import {VRDistortionCorrectionPostProcess,AnaglyphPostProcess,StereoscopicInterlacePostProcess,FreeCameraDeviceOrientationInput,ArcRotateCameraVRDeviceOrientationInput,VRCameraMetrics,DevicePose,PoseControlled,WebVROptions,WebVRFreeCamera,DeviceOrientationCamera,VRDeviceOrientationFreeCamera,VRDeviceOrientationGamepadCamera,VRDeviceOrientationArcRotateCamera,AnaglyphFreeCamera,AnaglyphArcRotateCamera,AnaglyphGamepadCamera,AnaglyphUniversalCamera,StereoscopicFreeCamera,StereoscopicArcRotateCamera,StereoscopicGamepadCamera,StereoscopicUniversalCamera,VRTeleportationOptions,VRExperienceHelperOptions,VRExperienceHelper} from 'babylonjs/vr';
  433. import {JoystickAxis,VirtualJoystick,VirtualJoysticksCamera,FreeCameraVirtualJoystickInput} from 'babylonjs/virtualJoystick';
  434. import {ISimplifier,ISimplificationSettings,SimplificationSettings,ISimplificationTask,SimplificationQueue,SimplificationType,DecimationTriangle,DecimationVertex,QuadraticMatrix,Reference,QuadraticErrorSimplification,MeshLODLevel,SceneOptimization,TextureOptimization,HardwareScalingOptimization,ShadowsOptimization,PostProcessesOptimization,LensFlaresOptimization,ParticlesOptimization,RenderTargetsOptimization,MergeMeshesOptimization,SceneOptimizerOptions,SceneOptimizer} from 'babylonjs/optimizations';
  435. import {OutlineRenderer,EdgesRenderer,IHighlightLayerOptions,HighlightLayer} from 'babylonjs/highlights';
  436. import {SceneSerializer} from 'babylonjs/serialization';
  437. import {AssetTaskState,AbstractAssetTask,IAssetsProgressEvent,AssetsProgressEvent,MeshAssetTask,TextFileAssetTask,BinaryFileAssetTask,ImageAssetTask,ITextureAssetTask,TextureAssetTask,CubeTextureAssetTask,HDRCubeTextureAssetTask,AssetsManager} from 'babylonjs/assetsManager';
  438. import {ReflectionProbe} from 'babylonjs/probes';
  439. import {BackgroundMaterial} from 'babylonjs/backgroundMaterial';
  440. import {Layer} from 'babylonjs/layer';
  441. import {IEnvironmentHelperOptions,EnvironmentHelper} from 'babylonjs/environmentHelper';