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
cjs
andesm
- Github action for automatic publishing based on version tags
- Module path to
package.json
./build
directory from the repo - this will be present in npm when published
main
property of thepackage.json
now points to thecjs
entry point
- Options for forcing the usage of the desktop or mobile gpu renderers if required
destroy
method toGPURenderer
andTextureAtlas
texture-atlas-disposal
experiment 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
GPURenderer
to 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
System
rather thanNebula
when using the library via a script tag
Huge props to contributor Michael "Manthrax" Schlachter for his awesome work on this PR!
TextureAtlas
module- Sandbox experiment for supporting a system using the GPURenderer with multiple textures
potpack
dependency for performant texture atlas packing
GPURenderer
now uses a dynamic texture atlas for all textures.- Shaders have been updated to support this
- #118
UniqueList
performance issues
- Bug in
GPURenderer
module which made it incompatible with the WebGL2 function name changes inthree@0.122.0
- Redundant sandbox experiments
- Added more stuff to ``.npmignore`
- The
fromJSONAsync
function can now take an options arg, but it was defaultingshouldAutoEmit
for 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
GPURenderer
due 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
GPURenderer
for better sprite system performance- More tests
- IE11 support
- Broken examples that used the
LegacyJSONLoader
- Tests for
utils/PUID
andrenderer/MeshRenderer
- Security vulnerabilities
- Emitters will now accept 0 as an allowed value for
totalEmitTimes
andlife
and not default toInfinity
in these cases - Behaviours will now accept 0 as an allowed value for
life
and not default toInfinity
in these cases - Security vulnerabilities
- Tests to cover this
docs-build
script which installs esdoc, builds the docs, then uninstalls it to get around the security vulns
- Moved
three
to 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
Infinity
ifnull
is supplied eg.,life
&totalEmitTimes
- Tests covering this change
- Security vulnerabilities re:
esdoc
esdoc
,esdoc-standard-plugin
,esdoc-ecmascript-proposal-plugin
dev deps
jquery
and other unused dev dependencies
- Fixed README reference to wrong name
- Restored the
canUpdate
property and the improveddestroy
method which seem to have been lost in a PR revert/restore attempt gone wrong
- Library name changed internally to
three-nebula
- The
core/Proton
class is nowcore/System
- README, docs and source code all updated to reflect this change
canUpdate
property to the core particle system class
- The
canUpdate
property is now checked within theupdate
method to ensure safe updates destroy
now toggles thecanUpdate
property 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-coveralls
dev dependency, it had security vulnerabilities
fromJSONAsync
method tocore/Proton
class for loading JSON systems asynchronously. This ensures all textures can be fully loaded before attempting to render the system.
- The
emitterBehaviours
array property to theEmitter
class - An API to facilitate interacting with this array
- An
updateEmitterBehaviours
method. This is called from within the mainupdate
method - An example to show emitter behaviours working
- Tests covering new functionality
- The
BehaviourEmitter
class. All functionality is now bundled into theEmitter
class. This is a breaking change.
- The ability to set mesh material blending mode correctly from a string via the
fromJSON
method for theBodySprite
initialiser - Unit tests covering this
setRotation
method toEmitter
classrotation
prop extraction when building emitters via thecore/fromJSON
methodisEnabled
property to both initializers and behavioursmutate
method to behaviours that perform internal logic- Test coverage for new functionalities
- The behaviour
applyBehaviour
method now checks to see if the behaviour is enabled or not before applying behaviour logic to the particle/emitter via a newmutate
method
totalEmitTimes
andlife
JSON props for emitters
initializer/Velocity
moduleVectorVelocity
,PolarVelocity
andRadialVelocity
classes to break up mixed argument typesmath/ColorSpan
class, which is to be specifically used for spans of colors that can do randomisation- Base
energize
method on theBehaviour
abstract class. Sub classes now call this method in theirapplyBehaviour
method rather than the parent'sapplyBehaviour
method core/fromJSON
which provides a way to create Proton instances from JSONfromJSON
static method to the core Proton class and all supported initializers and behaviours- An example to illustrate how to use the
fromJSON
static method types.js
file toinitializer
,behaviour
,renderer
andzone
modules which export class name types as constants- Tests to cover the new
fromJSON
functionality
- All examples which used deprecated methods/classes
- There is no longer a single
Velocity
initializer, this class is now the base class for the three kinds of velocity initializers provided math/ArraySpan
no 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
initializer
andbehaviour
tests outside ofemitter
test module into the root of thetests
module - 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
,velocity
andacceleration
- The same goes for the
old
cache object - All examples have been updated
- The
math/Integration
class is now gone and has been replaced bymath/integration
functions
- All deprecated methods and classes
initializer/Velocity.js
- Unused args from Emitter
createParticle
andsetupParticle
methods
- Unit tests covering the
emitter/Emitter
class - Better coverage for the
behaviour/Attraction
andbehaviour/Gravity
classes
- Unit tests covering the
core/Pool
class - Doc blocks for this class
- Unit tests fully covering the
core/Proton
class
- Unit tests for the
core/Particle
class - Doc blocks for this class
- Refactored the
Particle.reset
method and constructor
- The
initialize
module is nowinitializer
- All imports / exports / tests updated
Behaviour
constructor refactored to add default args. Also added more doc blocks
- Test coverage for all particle initializers
- The base
Initialize
class is nowInitializer
, will change theinitialize
module toinitializer
when some re-architecting is done
- Unit tests for the behaviour module
- Integration with coveralls
- Some esdoc doc blocks
esdoc
dev dependency as well as configuration file- Perfectly documented
Alpha
andAttraction
behaviour classes docs/api
directorybehaviours/constants.js
for defaults
Alpha
behaviour now hasalphaA
andalphaB
props rather than justa
andb
, unit tests updated accordingly
- There was a bug in the
Attraction
constructor that was causingforce
to be set toNaN
, this has been fixed
- The
customrender
example 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 bythree
or this library right now. The issue was resolved in theDebug
module by callinggeometry.clone()
from both thedrawZone
anddrawEmitter
methods. This also resolves the issues in themeshrender-emitter
andhelloword
examples that were exhibiting the same behaviour
- A
NOTES.md
to keep track of notes on the codebase as understanding of it improves - Some
esdoc
compatible doc blocks to some classes and methods. There's still a tonne of work to be done here.
- The
spriterender-pointzone
example is now working. The bug with this was caused by theutils/ColorUtil
class'sgetRGB
method
spriterender-ghost-ball
example
Gravity
class was overriding a parent method when this was unnecessary, this was breaking the behaviour- The
helloworld
example'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
Rotate
class'applyBehaviour
method was passingthis
as the first argument to thesuper
method which was breaking stuff Gravity
was extendingBehaviour
instead ofForce
Force
was calling its prototype in the constructor rather than justthis
madge
is now a dev dependency rather than a dependency- These have resolved issues with many of the examples, but some remain
examples
is nowdocs
so that GitHub pages can just use this directory
- Package name to
@rohandeshpande/three-proton
three
,uuid
dependencies- Scripts for serving examples locally and publishing to git easily
tests
directory with some basic regression tests.travis.yml
for travis integrationwebpack
,eslint
,madge
,mocha
,chai
as dev dependencies
- Entire library ported to ES6
- Build command now uses Webpack
lib
directory