lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
97 lines • 2.68 kB
JavaScript
import { Sprite as ThreeSprite, SpriteMaterial } from "three";
import { spriteDefaults, spriteSchema } from "../interface/ISprite";
import PhysicsObjectManager from "./core/PhysicsObjectManager";
import { Point } from "@lincode/math";
import { castBackBlending, castBlending } from "./utils/castBlending";
import { ssrExcludeSet } from "../collections/ssrExcludeSet";
import { configSpriteSystem } from "../systems/configSystems/configSpriteSystem";
class Sprite extends PhysicsObjectManager {
static componentName = "sprite";
static defaults = spriteDefaults;
static schema = spriteSchema;
$material;
constructor() {
const material = new SpriteMaterial({ transparent: true });
super(new ThreeSprite(material));
this.$material = material;
ssrExcludeSet.add(this.outerObject3d);
}
disposeNode() {
super.disposeNode();
ssrExcludeSet.delete(this.outerObject3d);
}
get depth() {
return 0;
}
set depth(_) { }
get scaleZ() {
return 0;
}
set scaleZ(_) { }
_texture;
get texture() {
return this._texture;
}
set texture(val) {
this._texture = val;
configSpriteSystem.add(this);
}
_alphaMap;
get alphaMap() {
return this._alphaMap;
}
set alphaMap(val) {
this._alphaMap = val;
configSpriteSystem.add(this);
}
get color() {
return ("#" + this.$material.color.getHexString());
}
set color(val) {
this.$material.color.set(val);
}
get opacity() {
return this.$material.opacity;
}
set opacity(val) {
this.$material.opacity = val;
}
_textureRepeat = new Point(1, 1);
get textureRepeat() {
return this._textureRepeat;
}
set textureRepeat(val) {
this._textureRepeat = val;
configSpriteSystem.add(this);
}
_textureFlipY = false;
get textureFlipY() {
return this._textureFlipY;
}
set textureFlipY(val) {
this._textureFlipY = val;
configSpriteSystem.add(this);
}
_textureRotation = 0;
get textureRotation() {
return this._textureRotation;
}
set textureRotation(val) {
this._textureRotation = val;
configSpriteSystem.add(this);
}
get depthTest() {
return this.$material.depthTest;
}
set depthTest(val) {
this.$material.depthTest = val;
}
get blending() {
return castBackBlending(this.$material.blending);
}
set blending(val) {
this.$material.blending = castBlending(val);
}
}
export default Sprite;
//# sourceMappingURL=Sprite.js.map