Skip to content

Instantly share code, notes, and snippets.

@fernandojsg
Last active June 21, 2019 18:58
Show Gist options
  • Save fernandojsg/8340afa23bd61ceb1d6778883372e083 to your computer and use it in GitHub Desktop.
Save fernandojsg/8340afa23bd61ceb1d6778883372e083 to your computer and use it in GitHub Desktop.
ECSY code snippets for VSCode
{
"ECSY System": {
"scope": "javascript",
"prefix": "sys",
"body": [
"export class ${1:SystemName} extends System {",
" init() {",
" return {",
" queries: {",
" ${2:entities}: { components: [${3:Component}] }",
" }",
" };",
" }",
"",
" execute(delta, time) {",
" var ${2:entities} = this.queries.${2:entities};",
"",
" //Queries"
" for (let i = 0; i < ${2:entities}.length; i++) {"
" var entity = ${2:entities}[i];",
" var component = entity.getComponent(${3:Component});",
" }",
" }",
"}"
],
"description": "Create an ECSY system"
},
"ECSY Complex System": {
"scope": "javascript",
"prefix": "csys",
"body": [
"export class ${1:SystemName} extends System {",
" init() {",
" return {",
" queries: {",
" ${2:entities}: {",
" components: [${3:Component}],",
" events: {",
" ${4:added}: {",
" event: \"EntityAdded\"",
" },",
" ${5:removed}: {",
" event: \"EntityRemoved\"",
" },",
" ${6:changed}: {",
" event: \"EntityChanged\"",
" },",
" ${7:componentChanged}: {",
" event: \"ComponentChanged\",",
" components: [${3:Component}]",
" }",
" }",
" }",
" },",
" events: {",
" ${8:onEventName}: \"${9:DemoEvent}\"",
" }",
" };",
" }",
"",
" execute(delta, time) {",
" var ${2:entities} = this.queries.${2:entities};",
"",
" //Queries"
" for (let i = 0; i < ${2:entities}.length; i++) {"
" var entity = ${2:entities}[i];",
" var component = entity.getComponent(${3:Component});",
" }",
"",
" //Queries events"
" var ${2:entities}Events = this.events.${2:entities};",
" for (let i = 0; i < ${2:entities}Events.${4:added}.length; i++) {}",
" for (let i = 0; i < ${2:entities}Events.${5:removed}.length; i++) {}",
" for (let i = 0; i < ${2:entities}Events.${6:changed}.length; i++) {}",
" for (let i = 0; i < ${2:entities}Events.${7:componentChanged}.length; i++) {}",
"",
" //Events"
" for (let i = 0; i < this.events.${8:onEventName}.length; i++) {",
" var event = this.events.${8:onEventName}[i];"
" }",
" }",
"}"
],
"description": "Create a complete ECSY system"
},
"ECSY Component": {
"scope": "javascript",
"prefix": "com",
"body": [
"class ${1:ComponentName} {"
" constructor() {",
" this.${2:attribute} = ${3:0};",
" }",
"",
" copy(src) {",
" this.${2:attribute} = src.${2:attribute};"
" }",
"}"
],
"description": "Create an ECSY system"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment