cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
81 lines (80 loc) • 2.27 kB
JavaScript
import Node3D from "./Node.mjs";
import glenum from "./core/glenum.mjs";
var Renderable = Node3D.extend(
{
material: null,
geometry: null,
mode: glenum.TRIANGLES,
_renderInfo: null
},
{
__program: null,
lightGroup: 0,
renderOrder: 0,
culling: true,
cullFace: glenum.BACK,
frontFace: glenum.CCW,
frustumCulling: true,
receiveShadow: true,
castShadow: true,
ignorePicking: false,
ignorePreZ: false,
ignoreGBuffer: false,
isRenderable: function() {
return this.geometry && this.material && this.material.shader && !this.invisible && this.geometry.vertexCount > 0;
},
beforeRender: function(_gl) {
},
afterRender: function(_gl, renderStat) {
},
getBoundingBox: function(filter, out) {
out = Node3D.prototype.getBoundingBox.call(this, filter, out);
if (this.geometry && this.geometry.boundingBox) {
out.union(this.geometry.boundingBox);
}
return out;
},
clone: function() {
var properties = [
"castShadow",
"receiveShadow",
"mode",
"culling",
"cullFace",
"frontFace",
"frustumCulling",
"renderOrder",
"lineWidth",
"ignorePicking",
"ignorePreZ",
"ignoreGBuffer"
];
return function() {
var renderable = Node3D.prototype.clone.call(this);
renderable.geometry = this.geometry;
renderable.material = this.material;
for (var i = 0; i < properties.length; i++) {
var name = properties[i];
if (renderable[name] !== this[name]) {
renderable[name] = this[name];
}
}
return renderable;
};
}()
}
);
Renderable.POINTS = glenum.POINTS;
Renderable.LINES = glenum.LINES;
Renderable.LINE_LOOP = glenum.LINE_LOOP;
Renderable.LINE_STRIP = glenum.LINE_STRIP;
Renderable.TRIANGLES = glenum.TRIANGLES;
Renderable.TRIANGLE_STRIP = glenum.TRIANGLE_STRIP;
Renderable.TRIANGLE_FAN = glenum.TRIANGLE_FAN;
Renderable.BACK = glenum.BACK;
Renderable.FRONT = glenum.FRONT;
Renderable.FRONT_AND_BACK = glenum.FRONT_AND_BACK;
Renderable.CW = glenum.CW;
Renderable.CCW = glenum.CCW;
var Renderable$1 = Renderable;
export { Renderable$1 as default };