mirror of https://github.com/CesiumGS/cesium.git
Added support for czml Billboard rotation and alignedAxis
This commit is contained in:
parent
eee0e9823d
commit
2db02a2edf
|
|
@ -54,6 +54,18 @@ define([
|
|||
* @default undefined
|
||||
*/
|
||||
this.scale = undefined;
|
||||
/**
|
||||
* A DynamicProperty of type CzmlNumber which determines the billboard's rotation.
|
||||
* @type {DynamicProperty}
|
||||
* @default undefined
|
||||
*/
|
||||
this.rotation = undefined;
|
||||
/**
|
||||
* A DynamicProperty of type CzmlCartesian3 which determines the billboard's aligned axis.
|
||||
* @type {DynamicProperty}
|
||||
* @default undefined
|
||||
*/
|
||||
this.alignedAxis = undefined;
|
||||
/**
|
||||
* A DynamicProperty of type CzmlHorizontalOrigin which determines the billboard's horizontal origin.
|
||||
* @type {DynamicProperty}
|
||||
|
|
@ -182,6 +194,24 @@ define([
|
|||
scale.processCzmlIntervals(billboardData.scale, interval);
|
||||
}
|
||||
|
||||
if (typeof billboardData.rotation !== 'undefined') {
|
||||
var rotation = billboard.rotation;
|
||||
if (typeof rotation === 'undefined') {
|
||||
billboard.rotation = rotation = new DynamicProperty(CzmlNumber);
|
||||
billboardUpdated = true;
|
||||
}
|
||||
rotation.processCzmlIntervals(billboardData.rotation, interval);
|
||||
}
|
||||
|
||||
if (typeof billboardData.alignedAxis !== 'undefined') {
|
||||
var alignedAxis = billboard.alignedAxis;
|
||||
if (typeof alignedAxis === 'undefined') {
|
||||
billboard.alignedAxis = alignedAxis = new DynamicProperty(CzmlCartesian3);
|
||||
billboardUpdated = true;
|
||||
}
|
||||
alignedAxis.processCzmlIntervals(billboardData.alignedAxis, interval);
|
||||
}
|
||||
|
||||
if (typeof billboardData.show !== 'undefined') {
|
||||
var show = billboard.show;
|
||||
if (typeof show === 'undefined') {
|
||||
|
|
@ -230,6 +260,8 @@ define([
|
|||
targetBillboard.image = defaultValue(targetBillboard.image, billboardToMerge.image);
|
||||
targetBillboard.pixelOffset = defaultValue(targetBillboard.pixelOffset, billboardToMerge.pixelOffset);
|
||||
targetBillboard.scale = defaultValue(targetBillboard.scale, billboardToMerge.scale);
|
||||
targetBillboard.rotation = defaultValue(targetBillboard.rotation, billboardToMerge.rotation);
|
||||
targetBillboard.alignedAxis = defaultValue(targetBillboard.alignedAxis, billboardToMerge.alignedAxis);
|
||||
targetBillboard.show = defaultValue(targetBillboard.show, billboardToMerge.show);
|
||||
targetBillboard.verticalOrigin = defaultValue(targetBillboard.verticalOrigin, billboardToMerge.verticalOrigin);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -308,6 +308,22 @@ define([
|
|||
}
|
||||
}
|
||||
|
||||
property = dynamicBillboard.rotation;
|
||||
if (typeof property !== 'undefined') {
|
||||
var rotation = property.getValue(time);
|
||||
if (typeof rotation !== 'undefined') {
|
||||
billboard.setRotation(rotation);
|
||||
}
|
||||
}
|
||||
|
||||
property = dynamicBillboard.alignedAxis;
|
||||
if (typeof property !== 'undefined') {
|
||||
var alignedAxis = property.getValue(time);
|
||||
if (typeof alignedAxis !== 'undefined') {
|
||||
billboard.setAlignedAxis(alignedAxis);
|
||||
}
|
||||
}
|
||||
|
||||
property = dynamicBillboard.horizontalOrigin;
|
||||
if (typeof property !== 'undefined') {
|
||||
var horizontalOrigin = property.getValue(time);
|
||||
|
|
@ -344,4 +360,4 @@ define([
|
|||
};
|
||||
|
||||
return DynamicBillboardVisualizer;
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -115,6 +115,8 @@ defineSuite([
|
|||
it('mergeProperties does not change a fully configured billboard', function() {
|
||||
var expectedImage = 'image';
|
||||
var expectedScale = 'scale';
|
||||
var expectedRotation = 'rotation';
|
||||
var expectedAlignedAxis = 'alignedAxis';
|
||||
var expectedHorizontalOrigin = 'horizontalOrigin';
|
||||
var expectedVerticalOrigin = 'verticalOrigin';
|
||||
var expectedColor = 'color';
|
||||
|
|
@ -126,17 +128,21 @@ defineSuite([
|
|||
objectToMerge.billboard = new DynamicBillboard();
|
||||
objectToMerge.billboard.image = 1;
|
||||
objectToMerge.billboard.scale = 2;
|
||||
objectToMerge.billboard.horizontalOrigin = 3;
|
||||
objectToMerge.billboard.verticalOrigin = 4;
|
||||
objectToMerge.billboard.color = 5;
|
||||
objectToMerge.billboard.eyeOffset = 6;
|
||||
objectToMerge.billboard.pixelOffset = 7;
|
||||
objectToMerge.billboard.show = 8;
|
||||
objectToMerge.billboard.rotation = 3;
|
||||
objectToMerge.billboard.alignedAxis = 4;
|
||||
objectToMerge.billboard.horizontalOrigin = 5;
|
||||
objectToMerge.billboard.verticalOrigin = 6;
|
||||
objectToMerge.billboard.color = 7;
|
||||
objectToMerge.billboard.eyeOffset = 8;
|
||||
objectToMerge.billboard.pixelOffset = 9;
|
||||
objectToMerge.billboard.show = 10;
|
||||
|
||||
var targetObject = new DynamicObject('targetObject');
|
||||
targetObject.billboard = new DynamicBillboard();
|
||||
targetObject.billboard.image = expectedImage;
|
||||
targetObject.billboard.scale = expectedScale;
|
||||
targetObject.billboard.rotation = expectedRotation;
|
||||
targetObject.billboard.alignedAxis = expectedAlignedAxis;
|
||||
targetObject.billboard.horizontalOrigin = expectedHorizontalOrigin;
|
||||
targetObject.billboard.verticalOrigin = expectedVerticalOrigin;
|
||||
targetObject.billboard.color = expectedColor;
|
||||
|
|
@ -148,6 +154,8 @@ defineSuite([
|
|||
|
||||
expect(targetObject.billboard.image).toEqual(expectedImage);
|
||||
expect(targetObject.billboard.scale).toEqual(expectedScale);
|
||||
expect(targetObject.billboard.rotation).toEqual(expectedRotation);
|
||||
expect(targetObject.billboard.alignedAxis).toEqual(expectedAlignedAxis);
|
||||
expect(targetObject.billboard.horizontalOrigin).toEqual(expectedHorizontalOrigin);
|
||||
expect(targetObject.billboard.verticalOrigin).toEqual(expectedVerticalOrigin);
|
||||
expect(targetObject.billboard.color).toEqual(expectedColor);
|
||||
|
|
@ -161,12 +169,14 @@ defineSuite([
|
|||
objectToMerge.billboard = new DynamicBillboard();
|
||||
objectToMerge.billboard.image = 1;
|
||||
objectToMerge.billboard.scale = 2;
|
||||
objectToMerge.billboard.horizontalOrigin = 3;
|
||||
objectToMerge.billboard.verticalOrigin = 4;
|
||||
objectToMerge.billboard.color = 5;
|
||||
objectToMerge.billboard.eyeOffset = 6;
|
||||
objectToMerge.billboard.pixelOffset = 7;
|
||||
objectToMerge.billboard.show = 8;
|
||||
objectToMerge.billboard.rotation = 3;
|
||||
objectToMerge.billboard.alignedAxis = 4;
|
||||
objectToMerge.billboard.horizontalOrigin = 5;
|
||||
objectToMerge.billboard.verticalOrigin = 6;
|
||||
objectToMerge.billboard.color = 7;
|
||||
objectToMerge.billboard.eyeOffset = 8;
|
||||
objectToMerge.billboard.pixelOffset = 9;
|
||||
objectToMerge.billboard.show = 10;
|
||||
|
||||
var targetObject = new DynamicObject('targetObject');
|
||||
|
||||
|
|
@ -174,6 +184,8 @@ defineSuite([
|
|||
|
||||
expect(targetObject.billboard.image).toEqual(objectToMerge.billboard.image);
|
||||
expect(targetObject.billboard.scale).toEqual(objectToMerge.billboard.scale);
|
||||
expect(targetObject.billboard.rotation).toEqual(objectToMerge.billboard.rotation);
|
||||
expect(targetObject.billboard.alignedAxis).toEqual(objectToMerge.billboard.alignedAxis);
|
||||
expect(targetObject.billboard.horizontalOrigin).toEqual(objectToMerge.billboard.horizontalOrigin);
|
||||
expect(targetObject.billboard.verticalOrigin).toEqual(objectToMerge.billboard.verticalOrigin);
|
||||
expect(targetObject.billboard.color).toEqual(objectToMerge.billboard.color);
|
||||
|
|
@ -185,6 +197,8 @@ defineSuite([
|
|||
it('mergeProperties does not change when used with an undefined billboard', function() {
|
||||
var expectedImage = 'image';
|
||||
var expectedScale = 'scale';
|
||||
var expectedRotation = 'rotation';
|
||||
var expectedAlignedAxis = 'alignedAxis';
|
||||
var expectedHorizontalOrigin = 'horizontalOrigin';
|
||||
var expectedVerticalOrigin = 'verticalOrigin';
|
||||
var expectedColor = 'color';
|
||||
|
|
@ -198,6 +212,8 @@ defineSuite([
|
|||
targetObject.billboard = new DynamicBillboard();
|
||||
targetObject.billboard.image = expectedImage;
|
||||
targetObject.billboard.scale = expectedScale;
|
||||
targetObject.billboard.rotation = expectedRotation;
|
||||
targetObject.billboard.alignedAxis = expectedAlignedAxis;
|
||||
targetObject.billboard.horizontalOrigin = expectedHorizontalOrigin;
|
||||
targetObject.billboard.verticalOrigin = expectedVerticalOrigin;
|
||||
targetObject.billboard.color = expectedColor;
|
||||
|
|
@ -209,6 +225,8 @@ defineSuite([
|
|||
|
||||
expect(targetObject.billboard.image).toEqual(expectedImage);
|
||||
expect(targetObject.billboard.scale).toEqual(expectedScale);
|
||||
expect(targetObject.billboard.rotation).toEqual(expectedRotation);
|
||||
expect(targetObject.billboard.alignedAxis).toEqual(expectedAlignedAxis);
|
||||
expect(targetObject.billboard.horizontalOrigin).toEqual(expectedHorizontalOrigin);
|
||||
expect(targetObject.billboard.verticalOrigin).toEqual(expectedVerticalOrigin);
|
||||
expect(targetObject.billboard.color).toEqual(expectedColor);
|
||||
|
|
@ -223,4 +241,4 @@ defineSuite([
|
|||
DynamicBillboard.undefineProperties(testObject);
|
||||
expect(testObject.billboard).toBeUndefined();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -144,6 +144,8 @@ defineSuite([
|
|||
billboard.image = new MockProperty('Data/Images/Blue.png');
|
||||
billboard.eyeOffset = new MockProperty(new Cartesian3(1.0, 2.0, 3.0));
|
||||
billboard.scale = new MockProperty(12.5);
|
||||
billboard.rotation = new MockProperty(1.5);
|
||||
billboard.alignedAxis = new MockProperty(Cartesian3.UNIT_Z);
|
||||
billboard.horizontalOrigin = new MockProperty(HorizontalOrigin.RIGHT);
|
||||
billboard.verticalOrigin = new MockProperty(VerticalOrigin.TOP);
|
||||
billboard.pixelOffset = new MockProperty(new Cartesian2(3, 2));
|
||||
|
|
@ -161,6 +163,8 @@ defineSuite([
|
|||
expect(bb.getColor()).toEqual(testObject.billboard.color.getValue(time));
|
||||
expect(bb.getEyeOffset()).toEqual(testObject.billboard.eyeOffset.getValue(time));
|
||||
expect(bb.getScale()).toEqual(testObject.billboard.scale.getValue(time));
|
||||
expect(bb.getRotation()).toEqual(testObject.billboard.rotation.getValue(time));
|
||||
expect(bb.getAlignedAxis()).toEqual(testObject.billboard.alignedAxis.getValue(time));
|
||||
expect(bb.getHorizontalOrigin()).toEqual(testObject.billboard.horizontalOrigin.getValue(time));
|
||||
expect(bb.getVerticalOrigin()).toEqual(testObject.billboard.verticalOrigin.getValue(time));
|
||||
expect(bb.getPixelOffset()).toEqual(testObject.billboard.pixelOffset.getValue(time));
|
||||
|
|
@ -176,6 +180,8 @@ defineSuite([
|
|||
billboard.image = new MockProperty('Data/Images/Green.png');
|
||||
billboard.eyeOffset = new MockProperty(new Cartesian3(2.0, 3.0, 1.0));
|
||||
billboard.scale = new MockProperty(2.5);
|
||||
billboard.rotation = new MockProperty(2.9);
|
||||
billboard.alignedAxis = new MockProperty(Cartesian3.UNIT_Y);
|
||||
billboard.horizontalOrigin = new MockProperty(HorizontalOrigin.LEFT);
|
||||
billboard.verticalOrigin = new MockProperty(VerticalOrigin.BOTTOM);
|
||||
billboard.pixelOffset = new MockProperty(new Cartesian2(2, 3));
|
||||
|
|
@ -188,6 +194,8 @@ defineSuite([
|
|||
expect(bb.getColor()).toEqual(testObject.billboard.color.getValue(time));
|
||||
expect(bb.getEyeOffset()).toEqual(testObject.billboard.eyeOffset.getValue(time));
|
||||
expect(bb.getScale()).toEqual(testObject.billboard.scale.getValue(time));
|
||||
expect(bb.getRotation()).toEqual(testObject.billboard.rotation.getValue(time));
|
||||
expect(bb.getAlignedAxis()).toEqual(testObject.billboard.alignedAxis.getValue(time));
|
||||
expect(bb.getHorizontalOrigin()).toEqual(testObject.billboard.horizontalOrigin.getValue(time));
|
||||
expect(bb.getVerticalOrigin()).toEqual(testObject.billboard.verticalOrigin.getValue(time));
|
||||
expect(bb.getPixelOffset()).toEqual(testObject.billboard.pixelOffset.getValue(time));
|
||||
|
|
@ -290,4 +298,4 @@ defineSuite([
|
|||
bb = billboardCollection.get(0);
|
||||
expect(bb.dynamicObject).toEqual(testObject2);
|
||||
});
|
||||
}, 'WebGL');
|
||||
}, 'WebGL');
|
||||
|
|
|
|||
Loading…
Reference in New Issue