All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- All current security vulnerabilities in dependencies have been resolved
- Node v10 support dropped in dev due to webpack / babel upgrades, this version has been removed from CI
- Security vulnerabilities in dependencies
- #66 (thanks to MasatoMakino for their contribution!)
- #167 (thanks to MasatoMakino and bendxr for their contribution!)
- Security vulnerabilities in dependencies
- #61 (thanks to MasatoMakino for their contribution!)
- Separate build scripts for
cjsandesm - Github action for automatic publishing based on version tags
- Module path to
package.json
./builddirectory from the repo - this will be present in npm when published
mainproperty of thepackage.jsonnow points to thecjsentry point
- Options for forcing the usage of the desktop or mobile gpu renderers if required
destroymethod toGPURendererandTextureAtlastexture-atlas-disposalexperiment to sandbox to test out the new functionality
System.destroy()will now call through to its renderers' destroy methods if they exist
- Bug where moving between pages in the website caused the
GPURendererto break
- Desktop and mobile GPU renderers as floating point textures are not supported on many mobile devices
- Docs that incorrectly listed the object placed on the window as
Systemrather thanNebulawhen using the library via a script tag
Huge props to contributor Michael "Manthrax" Schlachter for his awesome work on this PR!
TextureAtlasmodule- Sandbox experiment for supporting a system using the GPURenderer with multiple textures
potpackdependency for performant texture atlas packing
GPURenderernow uses a dynamic texture atlas for all textures.- Shaders have been updated to support this
- #118
UniqueListperformance issues
- Bug in
GPURenderermodule which made it incompatible with the WebGL2 function name changes inthree@0.122.0
- Redundant sandbox experiments
- Added more stuff to ``.npmignore`
- The
fromJSONAsyncfunction can now take an options arg, but it was defaultingshouldAutoEmitfor the system tofalse. This was actually a mistake, it should have been defaulting it totrue.
- Sandbox HTML has been locked to request three r112 as a newer version breaks the
GPURendererdue to issue #117
- Website sitemap and sitemap generator script
- Robots.txt
- Unused 3D gfx files
- Spectrum logo in nav, removed in favour of chat text link
- Site should now be indexed
- Website homepage features spacing on mobile and tablet
- Links to feature sections on website homepage
- All links to the website from docs and internally now point to production URL
- Website, logo and documentation
GPURendererfor better sprite system performance- More tests
- IE11 support
- Broken examples that used the
LegacyJSONLoader
- Tests for
utils/PUIDandrenderer/MeshRenderer
- Security vulnerabilities
- Emitters will now accept 0 as an allowed value for
totalEmitTimesandlifeand not default toInfinityin these cases - Behaviours will now accept 0 as an allowed value for
lifeand not default toInfinityin these cases - Security vulnerabilities
- Tests to cover this
docs-buildscript which installs esdoc, builds the docs, then uninstalls it to get around the security vulns
- Moved
threeto a peer/dev dependency - Have copied core math classes which are absolutely needed internally, other dependencies are now passed in to functions/constructors as arguments
- Tests and examples all updated to be working
- Updated to webpack 4
- Updated to babel 7
- Bundle size is now ~103kb
- Emitters and behaviours will now ensure that non-nullable properties which can be either a number or infinite will default to
Infinityifnullis supplied eg.,life&totalEmitTimes
- Tests covering this change
- Security vulnerabilities re:
esdoc
esdoc,esdoc-standard-plugin,esdoc-ecmascript-proposal-plugindev deps
jqueryand other unused dev dependencies
- Fixed README reference to wrong name
- Restored the
canUpdateproperty and the improveddestroymethod which seem to have been lost in a PR revert/restore attempt gone wrong
- Library name changed internally to
three-nebula - The
core/Protonclass is nowcore/System - README, docs and source code all updated to reflect this change
canUpdateproperty to the core particle system class
- The
canUpdateproperty is now checked within theupdatemethod to ensure safe updates destroynow toggles thecanUpdateproperty internally to ensure that emitter updates are blocked while destroying to prevent errors occurring when destroying a system that is animating
- Security vulnerabilities in node modules
istanbull-coverallsdev dependency, it had security vulnerabilities
fromJSONAsyncmethod tocore/Protonclass for loading JSON systems asynchronously. This ensures all textures can be fully loaded before attempting to render the system.
- The
emitterBehavioursarray property to theEmitterclass - An API to facilitate interacting with this array
- An
updateEmitterBehavioursmethod. This is called from within the mainupdatemethod - An example to show emitter behaviours working
- Tests covering new functionality
- The
BehaviourEmitterclass. All functionality is now bundled into theEmitterclass. This is a breaking change.
- The ability to set mesh material blending mode correctly from a string via the
fromJSONmethod for theBodySpriteinitialiser - Unit tests covering this
setRotationmethod toEmitterclassrotationprop extraction when building emitters via thecore/fromJSONmethodisEnabledproperty to both initializers and behavioursmutatemethod to behaviours that perform internal logic- Test coverage for new functionalities
- The behaviour
applyBehaviourmethod now checks to see if the behaviour is enabled or not before applying behaviour logic to the particle/emitter via a newmutatemethod
totalEmitTimesandlifeJSON props for emitters
initializer/VelocitymoduleVectorVelocity,PolarVelocityandRadialVelocityclasses to break up mixed argument typesmath/ColorSpanclass, which is to be specifically used for spans of colors that can do randomisation- Base
energizemethod on theBehaviourabstract class. Sub classes now call this method in theirapplyBehaviourmethod rather than the parent'sapplyBehaviourmethod core/fromJSONwhich provides a way to create Proton instances from JSONfromJSONstatic method to the core Proton class and all supported initializers and behaviours- An example to illustrate how to use the
fromJSONstatic method types.jsfile toinitializer,behaviour,rendererandzonemodules which export class name types as constants- Tests to cover the new
fromJSONfunctionality
- All examples which used deprecated methods/classes
- There is no longer a single
Velocityinitializer, this class is now the base class for the three kinds of velocity initializers provided math/ArraySpanno longer takes the string'random'as an argument to the constructor and will no longer be able to return random colors fromgetValue- Tests updated
- Moved
initializerandbehaviourtests outside ofemittertest module into the root of thetestsmodule - Pool now throws an error if it can neither instantiate or clone the object passed
- Particles and Emitters no longer have
p,v, anda, props, rather, these are now explicitly spelled out asposition,velocityandacceleration - The same goes for the
oldcache object - All examples have been updated
- The
math/Integrationclass is now gone and has been replaced bymath/integrationfunctions
- All deprecated methods and classes
initializer/Velocity.js- Unused args from Emitter
createParticleandsetupParticlemethods
- Unit tests covering the
emitter/Emitterclass - Better coverage for the
behaviour/Attractionandbehaviour/Gravityclasses
- Unit tests covering the
core/Poolclass - Doc blocks for this class
- Unit tests fully covering the
core/Protonclass
- Unit tests for the
core/Particleclass - Doc blocks for this class
- Refactored the
Particle.resetmethod and constructor
- The
initializemodule is nowinitializer - All imports / exports / tests updated
Behaviourconstructor refactored to add default args. Also added more doc blocks
- Test coverage for all particle initializers
- The base
Initializeclass is nowInitializer, will change theinitializemodule toinitializerwhen some re-architecting is done
- Unit tests for the behaviour module
- Integration with coveralls
- Some esdoc doc blocks
esdocdev dependency as well as configuration file- Perfectly documented
AlphaandAttractionbehaviour classes docs/apidirectorybehaviours/constants.jsfor defaults
Alphabehaviour now hasalphaAandalphaBprops rather than justaandb, unit tests updated accordingly
- There was a bug in the
Attractionconstructor that was causingforceto be set toNaN, this has been fixed
- The
customrenderexample is now working. The bug was caused by a mysterious error which I'm unsure about right now. It is related to geometry mutations or assignments... I'm not sure if it's being caused bythreeor this library right now. The issue was resolved in theDebugmodule by callinggeometry.clone()from both thedrawZoneanddrawEmittermethods. This also resolves the issues in themeshrender-emitterandhellowordexamples that were exhibiting the same behaviour
- A
NOTES.mdto keep track of notes on the codebase as understanding of it improves - Some
esdoccompatible doc blocks to some classes and methods. There's still a tonne of work to be done here.
- The
spriterender-pointzoneexample is now working. The bug with this was caused by theutils/ColorUtilclass'sgetRGBmethod
spriterender-ghost-ballexample
Gravityclass was overriding a parent method when this was unnecessary, this was breaking the behaviour- The
helloworldexample's box meshes were being mutated by the debugger util somehow, I've commented that out for now
- Particle ids will no longer have NaNs in them
- The
Rotateclass'applyBehaviourmethod was passingthisas the first argument to thesupermethod which was breaking stuff Gravitywas extendingBehaviourinstead ofForceForcewas calling its prototype in the constructor rather than justthismadgeis now a dev dependency rather than a dependency- These have resolved issues with many of the examples, but some remain
examplesis nowdocsso that GitHub pages can just use this directory
- Package name to
@rohandeshpande/three-proton
three,uuiddependencies- Scripts for serving examples locally and publishing to git easily
testsdirectory with some basic regression tests.travis.ymlfor travis integrationwebpack,eslint,madge,mocha,chaias dev dependencies
- Entire library ported to ES6
- Build command now uses Webpack
libdirectory