import {
|
Matrix4,
|
ModelExperimentalNode,
|
ModelRenderResources,
|
NodeRenderResources,
|
} from "../../../Source/Cesium.js";
|
|
describe("Scene/ModelExperimental/NodeRenderResources", function () {
|
var mockModel = {};
|
var mockNode = {};
|
var runtimeNode = new ModelExperimentalNode({
|
node: mockNode,
|
modelMatrix: Matrix4.IDENTITY,
|
});
|
|
function checkShaderDefines(shaderBuilder, expectedDefines) {
|
expect(shaderBuilder._fragmentShaderParts.defineLines).toEqual(
|
expectedDefines
|
);
|
}
|
it("throws for undefined modelRenderResources", function () {
|
expect(function () {
|
return new NodeRenderResources(undefined, runtimeNode);
|
}).toThrowDeveloperError();
|
});
|
|
it("throws for undefined runtimeNode", function () {
|
expect(function () {
|
var modelResources = new ModelRenderResources(mockModel);
|
return new NodeRenderResources(modelResources, undefined);
|
}).toThrowDeveloperError();
|
});
|
|
it("constructs", function () {
|
var modelResources = new ModelRenderResources(mockModel);
|
var nodeResources = new NodeRenderResources(modelResources, runtimeNode);
|
|
expect(nodeResources.runtimeNode).toBe(runtimeNode);
|
expect(nodeResources.modelMatrix).toBe(runtimeNode.modelMatrix);
|
expect(nodeResources.attributes).toEqual([]);
|
});
|
|
it("inherits from model render resources", function () {
|
var modelResources = new ModelRenderResources(mockModel);
|
modelResources.shaderBuilder.addDefine("MODEL");
|
var nodeResources = new NodeRenderResources(modelResources, runtimeNode);
|
nodeResources.shaderBuilder.addDefine("NODE");
|
|
expect(nodeResources.model).toBe(mockModel);
|
|
// The node's shader builder should be a clone of the model's
|
expect(nodeResources.shaderBuilder).not.toBe(modelResources.shaderBuilder);
|
|
// The model shader must not be modified by the node...
|
checkShaderDefines(modelResources.shaderBuilder, ["MODEL"]);
|
|
// ...but the node shader will be updated.
|
checkShaderDefines(nodeResources.shaderBuilder, ["MODEL", "NODE"]);
|
});
|
});
|