50 lines
1.5 KiB
JavaScript
50 lines
1.5 KiB
JavaScript
defineSuite([
|
|
'Scene/ConeEmitter',
|
|
'Core/Cartesian3',
|
|
'Core/Math',
|
|
'Scene/Particle'
|
|
], function(
|
|
ConeEmitter,
|
|
Cartesian3,
|
|
CesiumMath,
|
|
Particle) {
|
|
'use strict';
|
|
|
|
it('default constructor', function() {
|
|
var emitter = new ConeEmitter();
|
|
expect(emitter.angle).toEqual(CesiumMath.toRadians(30.0));
|
|
});
|
|
|
|
it('constructor', function() {
|
|
var emitter = new ConeEmitter(CesiumMath.PI_OVER_SIX);
|
|
expect(emitter.angle).toEqual(CesiumMath.PI_OVER_SIX);
|
|
});
|
|
|
|
it('angle setter', function() {
|
|
var emitter = new ConeEmitter();
|
|
emitter.angle = CesiumMath.PI_OVER_SIX;
|
|
expect(emitter.angle).toEqual(CesiumMath.PI_OVER_SIX);
|
|
});
|
|
|
|
it('angle setter throws with invalid value', function() {
|
|
var emitter = new ConeEmitter();
|
|
expect(function() {
|
|
emitter.angle = undefined;
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it('emits', function() {
|
|
var emitter = new ConeEmitter(CesiumMath.PI_OVER_SIX);
|
|
var particle = new Particle();
|
|
|
|
for (var i = 0; i < 1000; ++i) {
|
|
emitter.emit(particle);
|
|
expect(particle.position).toEqual(Cartesian3.ZERO);
|
|
expect(Cartesian3.magnitude(particle.velocity)).toEqualEpsilon(1.0, CesiumMath.EPSILON14);
|
|
|
|
// acos(dot(unit v, unit z)) <= angle
|
|
expect(Math.acos(particle.velocity.z)).toBeLessThanOrEqualTo(emitter.angle);
|
|
}
|
|
});
|
|
});
|