import Component from "grimoirejs/ref/Node/Component"; import IAttributeDeclaration from "grimoirejs/ref/Node/IAttributeDeclaration"; import CameraComponent from "grimoirejs-fundamental/ref/Components/CameraComponent"; import MaterialComponent from "grimoirejs-fundamental/ref/Components/MaterialComponent"; import Color4 from "grimoirejs-math/ref/Color4"; export default class SlideComponent extends Component{ public static attributes:{[key:string]:IAttributeDeclaration} = { transition:{ default:"material#default.transition", converter:"String" }, build:{ default:1, converter:"Number" }, type:{ default:"scene", converter:"String" }, camera:{ default:"camera", converter:"String" }, transitionTime:{ default:"0.1", converter:"Number" }, buildTransitionTime:{ default:"0.2", converter:"Number" }, bgColor:{ default:"#F9EFD5", converter:"Color4" } }; public build:number; public transitionMaterial:MaterialComponent; public camera:CameraComponent; public transitionTime:number; public buildTransitionTime:number; public backgroundColor:Color4; public $awake():void{ this.build = this.getAttribute("build"); this.transitionTime = this.getAttribute("transitionTime"); this.buildTransitionTime = this.getAttribute("buildTransitionTime"); this.camera = this.node.queryChildren(this.getAttribute("camera"))[0].getComponent(CameraComponent); this.transitionMaterial = this.tree(this.getAttribute("transition")).single().getComponent(MaterialComponent); this.backgroundColor = this.getAttribute("bgColor"); } public buildProgress(buildIndex:number,progress:number){ const args = { buildIndex:buildIndex, progress:progress }; this.node.broadcastMessage("buildProgress",args); this.node.emit("build-progress",args); } public slideStart():void{ this.node.broadcastMessage("slideStart"); this.node.emit("slide-start"); } public slideEnd():void{ this.node.broadcastMessage("slideEnd"); this.node.emit("slide-end"); } public buildStart(build:number):void{ this.node.broadcastMessage("buildStart", build); this.node.emit("build-start",build); } public buildEnd(build:number):void{ this.node.broadcastMessage("buildEnd", build); this.node.emit("slide-end",build); } }