Files
P42_UI/app/views/editors/KeyframeView.js
T
2025-10-21 08:37:47 +00:00

98 lines
3.2 KiB
JavaScript

class KeyframeView extends WindozDomContent {
constructor() {
super()
Object.assign(this, app.helpers.activeAttributes)
Object.assign(this, app.helpers.formBuilder)
}
DOMContentFocused(options) {
if(this.wasBlured){ // Avoid 2nd refesh on DomContentLoaded
//this.refreshyoustuff()
}
this.wasBlured = false
}
DOMContentBlured(options) { this.wasBlured = true }
async DOMContentLoaded(options) {
this.windowPrefsId = `editors.keyframeview`
this.models = options.models
const components = ui.eicfy(this.el)
this.setupTriggers(components)
this.setupRefs(components)
const [sprites, types] = await Promise.all([
this.models.agents.getSprites('Basic 3D'),
this.models.agents.getTypes('Test agents')
])
this.agentSprites = sprites
this.agentTypes = types
this.outputs.agentsSelector.fillOptions( this.agentTypes.map(item => {
return({ markup: `<i class="icon-${item.atp_hascode ? 'bug' : 'atom1'}"></i>${item.atp_name}`, value: item.atp_id})
}))
this.outputs.agentsSelector.addEventListener('change',this.onChangeAgent.bind(this))
this.agentPreview = new app.LoadedModules.AgentPreview(this.outputs.agentSampleCanvas, this.agentSprites)
this.onChangeAgent()
this.agentPreview.startRendering()
this.agentPreview.animation = true
}
async onChangeAgent(event){
if(this.outputs.agentsSelector.value) this.agentPreview.setAgent(this.outputs.agentsSelector.value)
if(!this.outputs.agentsSelector.value) return
console.log('onChangeAgent',this.outputs.agentsSelector.value)
const agent = await this.models.agents.getProperties(this.outputs.agentsSelector.value)
this.fillAgentProperties(agent.atp_props)
}
fillAgentProperties(agentProps){ console.log('fillAgentProperties', agentProps)
this.outputs.agentProperties.innerHTML=''
this.outputs.agentProperties.append(...this.fieldsFromJSON(agentProps, 'Internal properties'))
this.outputs.agentProperties.append(...this.fieldsFromJSON({
"position.x": {
label: "Position X",
type: "number",
default: "0"
},
"position.y": {
label: "Position Y",
type: "number",
default: "0"
},
"position.z": {
label: "Position Z",
type: "number",
default: "0"
},
}, 'Coordinates'))
this.outputs.agentProperties.append(...this.fieldsFromJSON({
"speed.x": {
label: "Speed X",
type: "number",
default: "0"
},
"speed.y": {
label: "Speed Y",
type: "number",
default: "0"
},
"speed.z": {
label: "Speed Z",
type: "number",
default: "0"
},
}, 'Speed vector'))
}
}
app.registerClass('KeyframeView', KeyframeView)