const Event = require('r3-event'); const Utils = require('r3-utils'); const R3Object = require('r3-r3-object.js'); /** OPTIONS_START isPublic=true applicationMode=Project.APPLICATION_MODE_EDIT OPTIONS_END INSTANCE_OPTIONS_MAPPING_START INSTANCE_OPTIONS_MAPPING_END LINKED_OBJECTS_START entities=[Entity] controls=[Control] images=[Image] code=[CustomCode] LINKED_OBJECTS_END EXCLUDED_FROM_INSTANCE_OPTIONS_START EXCLUDED_FROM_INSTANCE_OPTIONS_END **/ class Project extends R3Object { //CONSTRUCTOR_EXTENDS_TEMPLATE_START constructor(options) { if (Utils.UndefinedOrNull(options)) { options = {}; } super(options); this.emit(Event.OBJECT_CREATED, this); //OPTIONS_INIT_START if (typeof options === 'undefined') { options = {}; } if (Utils.UndefinedOrNull(options.isPublic)) { options.isPublic = true; } if (Utils.UndefinedOrNull(options.applicationMode)) { options.applicationMode = Project.APPLICATION_MODE_EDIT; } //OPTIONS_INIT_END //CUSTOM_OPTIONS_INIT_START //CUSTOM_OPTIONS_INIT_END Object.assign(this, options); //CUSTOM_BEFORE_INIT_START //CUSTOM_BEFORE_INIT_END this.emit(Event.OBJECT_INITIALIZED, this); } //CONSTRUCTOR_EXTENDS_TEMPLATE_END //CREATE_INSTANCE_TEMPLATE_START createInstance() { //CREATE_INSTANCE_BEFORE_START this.emit(Event.CREATE_INSTANCE_BEFORE, this); //CREATE_INSTANCE_BEFORE_END //CUSTOM_CREATE_INSTANCE_START //CUSTOM_CREATE_INSTANCE_END //CREATE_INSTANCE_AFTER_START this[this.runtime].createInstance( this, { //CREATE_INSTANCE_OPTIONS_START 'isPublic': this.isPublic, 'applicationMode': this.applicationMode //CREATE_INSTANCE_OPTIONS_END } ) this.emit(Event.INSTANCE_CREATED, this); //CREATE_INSTANCE_AFTER_END } //CREATE_INSTANCE_TEMPLATE_END //UPDATE_INSTANCE_TEMPLATE_START updateInstance(property) { //UPDATE_INSTANCE_BEFORE_START this.emit(Event.UPDATE_INSTANCE_BEFORE, this); //UPDATE_INSTANCE_BEFORE_END //UPDATE_INSTANCE_OPTIONS_START if (property === 'isPublic') { this.instance.isPublic = this.isPublic; return; } if (property === 'applicationMode') { this.instance.applicationMode = this.applicationMode; return; } //UPDATE_INSTANCE_OPTIONS_END //CUSTOM_UPDATE_INSTANCE_START //CUSTOM_UPDATE_INSTANCE_END //UPDATE_INSTANCE_AFTER_START this.emit(Event.UPDATE_INSTANCE_AFTER, this); //UPDATE_INSTANCE_AFTER_END } //UPDATE_INSTANCE_TEMPLATE_END //UPDATE_FROM_INSTANCE_TEMPLATE_START updateFromInstance(property) { //UPDATE_FROM_INSTANCE_BEFORE_START this.emit(Event.UPDATE_FROM_INSTANCE_BEFORE, this); //UPDATE_FROM_INSTANCE_BEFORE_END //UPDATE_FROM_INSTANCE_OPTIONS_START if (property === 'isPublic' || property === 'all') { this.isPublic = this.instance.isPublic; if (property !== 'all') { return; } } if (property === 'applicationMode' || property === 'all') { this.applicationMode = this.instance.applicationMode; if (property !== 'all') { return; } } //UPDATE_FROM_INSTANCE_OPTIONS_END //CUSTOM_UPDATE_FROM_INSTANCE_START //CUSTOM_UPDATE_FROM_INSTANCE_END //UPDATE_FROM_INSTANCE_AFTER_START this.emit(Event.UPDATE_FROM_INSTANCE_AFTER, this); //UPDATE_FROM_INSTANCE_AFTER_END } //UPDATE_FROM_INSTANCE_TEMPLATE_END //DISPOSE_TEMPLATE_START dispose() { //DISPOSE_BEFORE_START this.subscribe( Event.INSTANCE_DISPOSED, function(object) { if (object === this) { this.emit(Event.DISPOSE_OBJECT, this); } } ); //DISPOSE_BEFORE_END //CUSTOM_DISPOSE_START //CUSTOM_DISPOSE_END //DISPOSE_AFTER_START this.disposeInstance(); //DISPOSE_AFTER_END } //DISPOSE_TEMPLATE_END //DISPOSE_INSTANCE_TEMPLATE_START disposeInstance() { //DISPOSE_INSTANCE_BEFORE_START console.log('Disposing instance of ' + this.name); //DISPOSE_INSTANCE_BEFORE_END //CUSTOM_DISPOSE_INSTANCE_START //CUSTOM_DISPOSE_INSTANCE_END //DISPOSE_INSTANCE_AFTER_START this.emit(Event.DISPOSE_INSTANCE, this); //DISPOSE_INSTANCE_AFTER_END } //DISPOSE_INSTANCE_TEMPLATE_END //CUSTOM_IMPLEMENTATION_START //CUSTOM_IMPLEMENTATION_END } //CUSTOM_OUT_OF_CLASS_IMPLEMENTATION_START Project.CAMERA_INDEX_EDIT = 0x0; Project.CAMERA_INDEX_RUN = 0x1; Project.APPLICATION_MODE_EDIT = Project.CAMERA_INDEX_EDIT; Project.APPLICATION_MODE_RUN = Project.CAMERA_INDEX_RUN; Project.RENDERER_INDEX_MAIN = 0x0; Project.RENDER_TARGET_INDEX_NONE = -0x1; //CUSTOM_OUT_OF_CLASS_IMPLEMENTATION_END module.exports = Project;