code editor in again

beta.r3js.org
cybafelo 2019-10-24 09:27:43 +02:00
parent d13e4fb350
commit b9c87ca33f
58 changed files with 1853 additions and 1093 deletions

View File

@ -18,13 +18,24 @@ code += '\t\tapiComponent.parent,\n';
code += '\t\tapiComponent.id,\n';
code += '\t\tapiComponent.name,\n';
code += '\t\tapiComponent.register,\n';
code += '\t\tapiComponent.selected\n';
code += '\t)';
code += '\t\tapiComponent.selected,\n';
code += '\t\tapiComponent.isPublic\n';
code += '\t)\n';
code += '\n';
code += '\tif (R3.Utils.UndefinedOrNull(apiComponent.guiInfo)) {\n';
code += '\t\tapiComponent.guiInfo = {};\n';
code += '\t}\n';
code += '\tthis.guiInfo = apiComponent.guiInfo;\n';
//__DEFINE_API_COMPONENT__
var code1 = 'if (R3.Utils.UndefinedOrNull(apiComponent)) {\n';
code1 += '\t\tapiComponent = {};\n';
code1 += '\t}\n';
code1 += '\n';
code1 += '\tif (R3.Utils.UndefinedOrNull(apiComponent.guiInfo)) {\n';
code1 += '\t\tapiComponent.guiInfo = {};\n';
code1 += '\t}\n';
code1 += '\tthis.guiInfo = apiComponent.guiInfo;\n';
var code2 = 'R3.D3.API.Geometry.Buffer.call(\n';
code2 += '\t\tthis,\n';

View File

@ -15,191 +15,192 @@ R3.COMPONENT_RENDERER_D3_CANVAS = 0xe;
R3.COMPONENT_RENDERER_D3 = 0xf;
R3.COMPONENT_RENDERER_D2 = 0x10;
R3.COMPONENT_RENDERER = 0x11;
R3.COMPONENT_QUERY_LOGINS_VPN = 0x12;
R3.COMPONENT_QUERY_LOGINS_DEVICES = 0x13;
R3.COMPONENT_QUERY_LOGINS_APPLICATIONS = 0x14;
R3.COMPONENT_QUERY_LOGINS = 0x15;
R3.COMPONENT_QUERY_DEVICES_UNKNOWN = 0x16;
R3.COMPONENT_QUERY_DEVICES_KNOWN = 0x17;
R3.COMPONENT_QUERY_DEVICES = 0x18;
R3.COMPONENT_QUERY_ALERTS_TIMESERIES = 0x19;
R3.COMPONENT_QUERY_ALERTS_SUMMARY = 0x1a;
R3.COMPONENT_QUERY_ALERTS_LIST = 0x1b;
R3.COMPONENT_QUERY_ALERTS_FIRSTTIMELOGIN_VPN = 0x1c;
R3.COMPONENT_QUERY_ALERTS_FIRSTTIMELOGIN_DEVICES = 0x1d;
R3.COMPONENT_QUERY_ALERTS_FIRSTTIMELOGIN_APPLICATIONS = 0x1e;
R3.COMPONENT_QUERY_ALERTS_FIRSTTIMELOGIN = 0x1f;
R3.COMPONENT_QUERY_ALERTS_BUCKETS = 0x20;
R3.COMPONENT_QUERY_ALERTS = 0x21;
R3.COMPONENT_QUERY = 0x22;
R3.COMPONENT_QUATERNION_POINTS = 0x23;
R3.COMPONENT_QUATERNION = 0x24;
R3.COMPONENT_PROJECT_D3_VR = 0x25;
R3.COMPONENT_PROJECT_D3 = 0x26;
R3.COMPONENT_PROJECT_D2 = 0x27;
R3.COMPONENT_PROJECT = 0x28;
R3.COMPONENT_PLANE = 0x29;
R3.COMPONENT_MOUSE = 0x2a;
R3.COMPONENT_MATRIX4 = 0x2b;
R3.COMPONENT_IMAGE = 0x2c;
R3.COMPONENT_GROUP = 0x2d;
R3.COMPONENT_GRAPH_TABLE = 0x2e;
R3.COMPONENT_GRAPH_METRIC = 0x2f;
R3.COMPONENT_GRAPH_BARCHART_STACKED = 0x30;
R3.COMPONENT_GRAPH_BARCHART = 0x31;
R3.COMPONENT_GRAPH = 0x32;
R3.COMPONENT_FONT = 0x33;
R3.COMPONENT_ENTITY = 0x34;
R3.COMPONENT_DRAWRANGE = 0x35;
R3.COMPONENT_DOMELEMENT = 0x36;
R3.COMPONENT_D3_VIEWPORT_ZOOMEDASPECT = 0x37;
R3.COMPONENT_D3_VIEWPORT_FIXEDASPECT_VR = 0x38;
R3.COMPONENT_D3_VIEWPORT_FIXEDASPECT = 0x39;
R3.COMPONENT_D3_VIEWPORT = 0x3a;
R3.COMPONENT_D3_VERTEX = 0x3b;
R3.COMPONENT_D3_TEXTURE_IMAGE = 0x3c;
R3.COMPONENT_D3_TEXTURE_CUBE = 0x3d;
R3.COMPONENT_D3_TEXTURE_CANVAS = 0x3e;
R3.COMPONENT_D3_TEXTURE = 0x3f;
R3.COMPONENT_D3_TEXT = 0x40;
R3.COMPONENT_D3_SPLINE = 0x41;
R3.COMPONENT_D3_SOLVER = 0x42;
R3.COMPONENT_D3_SKELETON = 0x43;
R3.COMPONENT_D3_SHAPE_TRIMESH = 0x44;
R3.COMPONENT_D3_SHAPE_SPHERE = 0x45;
R3.COMPONENT_D3_SHAPE_PLANE = 0x46;
R3.COMPONENT_D3_SHAPE_HEIGHTMAP = 0x47;
R3.COMPONENT_D3_SHAPE_CONVEXHULL_CYLINDER = 0x48;
R3.COMPONENT_D3_SHAPE_CONVEXHULL = 0x49;
R3.COMPONENT_D3_SHAPE_BOX = 0x4a;
R3.COMPONENT_D3_SHAPE = 0x4b;
R3.COMPONENT_D3_SHADOW_SPOT = 0x4c;
R3.COMPONENT_D3_SHADOW_DIRECTIONAL = 0x4d;
R3.COMPONENT_D3_SHADOW = 0x4e;
R3.COMPONENT_D3_SHADER_VERTEX = 0x4f;
R3.COMPONENT_D3_SHADER_FRAGMENT = 0x50;
R3.COMPONENT_D3_SHADER = 0x51;
R3.COMPONENT_D3_SCENE = 0x52;
R3.COMPONENT_D3_RIGIDBODY = 0x53;
R3.COMPONENT_D3_RENDERTARGET_CUBE = 0x54;
R3.COMPONENT_D3_RENDERTARGET = 0x55;
R3.COMPONENT_D3_RAYCASTER = 0x56;
R3.COMPONENT_D3_RAYCASTWHEEL = 0x57;
R3.COMPONENT_D3_RAYCASTVEHICLE = 0x58;
R3.COMPONENT_D3_PHYSICSWORLD = 0x59;
R3.COMPONENT_D3_PASS_RENDER_SSAO = 0x5a;
R3.COMPONENT_D3_PASS_RENDER = 0x5b;
R3.COMPONENT_D3_PASS_FXAA = 0x5c;
R3.COMPONENT_D3_PASS_COPY = 0x5d;
R3.COMPONENT_D3_PASS_BLOOM = 0x5e;
R3.COMPONENT_D3_PASS = 0x5f;
R3.COMPONENT_D3_MESH_SKELETON = 0x60;
R3.COMPONENT_D3_MESH_PARTICLE_ENGINE = 0x61;
R3.COMPONENT_D3_MESH_PARTICLE = 0x62;
R3.COMPONENT_D3_MESH = 0x63;
R3.COMPONENT_D3_MATERIAL_STANDARD = 0x64;
R3.COMPONENT_D3_MATERIAL_SHADER_RAW = 0x65;
R3.COMPONENT_D3_MATERIAL_SHADER = 0x66;
R3.COMPONENT_D3_MATERIAL_POINTS = 0x67;
R3.COMPONENT_D3_MATERIAL_PHONG = 0x68;
R3.COMPONENT_D3_MATERIAL_BASIC = 0x69;
R3.COMPONENT_D3_MATERIAL = 0x6a;
R3.COMPONENT_D3_LIGHT_SPOT = 0x6b;
R3.COMPONENT_D3_LIGHT_RECTAREA = 0x6c;
R3.COMPONENT_D3_LIGHT_POINT = 0x6d;
R3.COMPONENT_D3_LIGHT_HEMISPHERE = 0x6e;
R3.COMPONENT_D3_LIGHT_DIRECTIONAL = 0x6f;
R3.COMPONENT_D3_LIGHT_AMBIENT = 0x70;
R3.COMPONENT_D3_LIGHT = 0x71;
R3.COMPONENT_D3_HELPER = 0x72;
R3.COMPONENT_D3_GEOMETRY_NORMAL_WIREFRAME = 0x73;
R3.COMPONENT_D3_GEOMETRY_NORMAL_TUBE = 0x74;
R3.COMPONENT_D3_GEOMETRY_NORMAL_TORUSKNOT = 0x75;
R3.COMPONENT_D3_GEOMETRY_NORMAL_TORUS = 0x76;
R3.COMPONENT_D3_GEOMETRY_NORMAL_TEXT = 0x77;
R3.COMPONENT_D3_GEOMETRY_NORMAL_TETRAHEDRON = 0x78;
R3.COMPONENT_D3_GEOMETRY_NORMAL_SPHERE = 0x79;
R3.COMPONENT_D3_GEOMETRY_NORMAL_SHAPE = 0x7a;
R3.COMPONENT_D3_GEOMETRY_NORMAL_RING = 0x7b;
R3.COMPONENT_D3_GEOMETRY_NORMAL_POLYHEDRON = 0x7c;
R3.COMPONENT_D3_GEOMETRY_NORMAL_PLANE = 0x7d;
R3.COMPONENT_D3_GEOMETRY_NORMAL_PARAMETRIC = 0x7e;
R3.COMPONENT_D3_GEOMETRY_NORMAL_OCTAHEDRON = 0x7f;
R3.COMPONENT_D3_GEOMETRY_NORMAL_LATHE = 0x80;
R3.COMPONENT_D3_GEOMETRY_NORMAL_ICOSAHEDRON = 0x81;
R3.COMPONENT_D3_GEOMETRY_NORMAL_EXTRUDE = 0x82;
R3.COMPONENT_D3_GEOMETRY_NORMAL_EDGES = 0x83;
R3.COMPONENT_D3_GEOMETRY_NORMAL_DODECAHEDRON = 0x84;
R3.COMPONENT_D3_GEOMETRY_NORMAL_CYLINDER = 0x85;
R3.COMPONENT_D3_GEOMETRY_NORMAL_CONE = 0x86;
R3.COMPONENT_D3_GEOMETRY_NORMAL_CIRCLE = 0x87;
R3.COMPONENT_D3_GEOMETRY_NORMAL_BOX = 0x88;
R3.COMPONENT_D3_GEOMETRY_NORMAL = 0x89;
R3.COMPONENT_D3_GEOMETRY_BUFFER_TUBE = 0x8a;
R3.COMPONENT_D3_GEOMETRY_BUFFER_TORUSKNOT = 0x8b;
R3.COMPONENT_D3_GEOMETRY_BUFFER_TORUS = 0x8c;
R3.COMPONENT_D3_GEOMETRY_BUFFER_TEXT = 0x8d;
R3.COMPONENT_D3_GEOMETRY_BUFFER_TETRAHEDRON = 0x8e;
R3.COMPONENT_D3_GEOMETRY_BUFFER_SPHERE = 0x8f;
R3.COMPONENT_D3_GEOMETRY_BUFFER_SHAPE = 0x90;
R3.COMPONENT_D3_GEOMETRY_BUFFER_RING = 0x91;
R3.COMPONENT_D3_GEOMETRY_BUFFER_POLYHEDRON = 0x92;
R3.COMPONENT_D3_GEOMETRY_BUFFER_PLANE = 0x93;
R3.COMPONENT_D3_GEOMETRY_BUFFER_PARAMETRIC = 0x94;
R3.COMPONENT_D3_GEOMETRY_BUFFER_OCTAHEDRON = 0x95;
R3.COMPONENT_D3_GEOMETRY_BUFFER_LATHE = 0x96;
R3.COMPONENT_D3_GEOMETRY_BUFFER_INSTANCED = 0x97;
R3.COMPONENT_D3_GEOMETRY_BUFFER_ICOSAHEDRON = 0x98;
R3.COMPONENT_D3_GEOMETRY_BUFFER_EXTRUDE = 0x99;
R3.COMPONENT_D3_GEOMETRY_BUFFER_DODECAHEDRON = 0x9a;
R3.COMPONENT_D3_GEOMETRY_BUFFER_CYLINDER = 0x9b;
R3.COMPONENT_D3_GEOMETRY_BUFFER_CONE = 0x9c;
R3.COMPONENT_D3_GEOMETRY_BUFFER_CIRCLE = 0x9d;
R3.COMPONENT_D3_GEOMETRY_BUFFER_BOX = 0x9e;
R3.COMPONENT_D3_GEOMETRY_BUFFER = 0x9f;
R3.COMPONENT_D3_GEOMETRY = 0xa0;
R3.COMPONENT_D3_FRICTIONMATERIAL = 0xa1;
R3.COMPONENT_D3_FRICTIONCONTACTMATERIAL = 0xa2;
R3.COMPONENT_D3_FOG_NORMAL = 0xa3;
R3.COMPONENT_D3_FOG_EXP = 0xa4;
R3.COMPONENT_D3_FOG = 0xa5;
R3.COMPONENT_D3_FACE_GRAPHICS = 0xa6;
R3.COMPONENT_D3_FACE = 0xa7;
R3.COMPONENT_D3_EFFECT_STEREO = 0xa8;
R3.COMPONENT_D3_EFFECT_PARALLAX = 0xa9;
R3.COMPONENT_D3_EFFECT_ANAGLYPH = 0xaa;
R3.COMPONENT_D3_EFFECT = 0xab;
R3.COMPONENT_D3_COMPOSER = 0xac;
R3.COMPONENT_D3_CAMERA_PERSPECTIVE_STEREO = 0xad;
R3.COMPONENT_D3_CAMERA_PERSPECTIVE = 0xae;
R3.COMPONENT_D3_CAMERA_ORTHOGRAPHIC_SCALEDASPECT = 0xaf;
R3.COMPONENT_D3_CAMERA_ORTHOGRAPHIC_FIXEDASPECT = 0xb0;
R3.COMPONENT_D3_CAMERA_ORTHOGRAPHIC = 0xb1;
R3.COMPONENT_D3_CAMERA_CUBE = 0xb2;
R3.COMPONENT_D3_CAMERA = 0xb3;
R3.COMPONENT_D3_BROADPHASE = 0xb4;
R3.COMPONENT_D3_BONEWEIGHT = 0xb5;
R3.COMPONENT_D3_BONE = 0xb6;
R3.COMPONENT_D3_AUDIO = 0xb7;
R3.COMPONENT_D3_ANIMATION = 0xb8;
R3.COMPONENT_D3_OBJECT = 0xb9;
R3.COMPONENT_CUSTOMCODE = 0xba;
R3.COMPONENT_CURVE_PATH_D2_SHAPE = 0xbb;
R3.COMPONENT_CURVE_PATH_D2 = 0xbc;
R3.COMPONENT_CURVE_PATH = 0xbd;
R3.COMPONENT_CURVE = 0xbe;
R3.COMPONENT_CONTROLS_TOUCH = 0xbf;
R3.COMPONENT_CONTROLS_MOUSE = 0xc0;
R3.COMPONENT_CONTROLS_KEYBOARD = 0xc1;
R3.COMPONENT_CONTROLS_D3_ORBIT = 0xc2;
R3.COMPONENT_CONTROLS_D3_FIRSTPERSON = 0xc3;
R3.COMPONENT_CONTROLS_D3 = 0xc4;
R3.COMPONENT_CONTROLS = 0xc5;
R3.COMPONENT_COLOR = 0xc6;
R3.COMPONENT_CLOCK = 0xc7;
R3.COMPONENT_CANVAS = 0xc8;
R3.COMPONENT_BOX3 = 0xc9;
R3.MAX_COMPONENTS = 0xca;
R3.COMPONENT_QUERY_USERDEVICES = 0x12;
R3.COMPONENT_QUERY_LOGINS_VPN = 0x13;
R3.COMPONENT_QUERY_LOGINS_DEVICES = 0x14;
R3.COMPONENT_QUERY_LOGINS_APPLICATIONS = 0x15;
R3.COMPONENT_QUERY_LOGINS = 0x16;
R3.COMPONENT_QUERY_DEVICES_UNKNOWN = 0x17;
R3.COMPONENT_QUERY_DEVICES_KNOWN = 0x18;
R3.COMPONENT_QUERY_DEVICES = 0x19;
R3.COMPONENT_QUERY_ALERTS_TIMESERIES = 0x1a;
R3.COMPONENT_QUERY_ALERTS_SUMMARY = 0x1b;
R3.COMPONENT_QUERY_ALERTS_LIST = 0x1c;
R3.COMPONENT_QUERY_ALERTS_FIRSTTIMELOGIN_VPN = 0x1d;
R3.COMPONENT_QUERY_ALERTS_FIRSTTIMELOGIN_DEVICES = 0x1e;
R3.COMPONENT_QUERY_ALERTS_FIRSTTIMELOGIN_APPLICATIONS = 0x1f;
R3.COMPONENT_QUERY_ALERTS_FIRSTTIMELOGIN = 0x20;
R3.COMPONENT_QUERY_ALERTS_BUCKETS = 0x21;
R3.COMPONENT_QUERY_ALERTS = 0x22;
R3.COMPONENT_QUERY = 0x23;
R3.COMPONENT_QUATERNION_POINTS = 0x24;
R3.COMPONENT_QUATERNION = 0x25;
R3.COMPONENT_PROJECT_D3_VR = 0x26;
R3.COMPONENT_PROJECT_D3 = 0x27;
R3.COMPONENT_PROJECT_D2 = 0x28;
R3.COMPONENT_PROJECT = 0x29;
R3.COMPONENT_PLANE = 0x2a;
R3.COMPONENT_MOUSE = 0x2b;
R3.COMPONENT_MATRIX4 = 0x2c;
R3.COMPONENT_IMAGE = 0x2d;
R3.COMPONENT_GROUP = 0x2e;
R3.COMPONENT_GRAPH_TABLE = 0x2f;
R3.COMPONENT_GRAPH_METRIC = 0x30;
R3.COMPONENT_GRAPH_BARCHART_STACKED = 0x31;
R3.COMPONENT_GRAPH_BARCHART = 0x32;
R3.COMPONENT_GRAPH = 0x33;
R3.COMPONENT_FONT = 0x34;
R3.COMPONENT_ENTITY = 0x35;
R3.COMPONENT_DRAWRANGE = 0x36;
R3.COMPONENT_DOMELEMENT = 0x37;
R3.COMPONENT_D3_VIEWPORT_ZOOMEDASPECT = 0x38;
R3.COMPONENT_D3_VIEWPORT_FIXEDASPECT_VR = 0x39;
R3.COMPONENT_D3_VIEWPORT_FIXEDASPECT = 0x3a;
R3.COMPONENT_D3_VIEWPORT = 0x3b;
R3.COMPONENT_D3_VERTEX = 0x3c;
R3.COMPONENT_D3_TEXTURE_IMAGE = 0x3d;
R3.COMPONENT_D3_TEXTURE_CUBE = 0x3e;
R3.COMPONENT_D3_TEXTURE_CANVAS = 0x3f;
R3.COMPONENT_D3_TEXTURE = 0x40;
R3.COMPONENT_D3_TEXT = 0x41;
R3.COMPONENT_D3_SPLINE = 0x42;
R3.COMPONENT_D3_SOLVER = 0x43;
R3.COMPONENT_D3_SKELETON = 0x44;
R3.COMPONENT_D3_SHAPE_TRIMESH = 0x45;
R3.COMPONENT_D3_SHAPE_SPHERE = 0x46;
R3.COMPONENT_D3_SHAPE_PLANE = 0x47;
R3.COMPONENT_D3_SHAPE_HEIGHTMAP = 0x48;
R3.COMPONENT_D3_SHAPE_CONVEXHULL_CYLINDER = 0x49;
R3.COMPONENT_D3_SHAPE_CONVEXHULL = 0x4a;
R3.COMPONENT_D3_SHAPE_BOX = 0x4b;
R3.COMPONENT_D3_SHAPE = 0x4c;
R3.COMPONENT_D3_SHADOW_SPOT = 0x4d;
R3.COMPONENT_D3_SHADOW_DIRECTIONAL = 0x4e;
R3.COMPONENT_D3_SHADOW = 0x4f;
R3.COMPONENT_D3_SHADER_VERTEX = 0x50;
R3.COMPONENT_D3_SHADER_FRAGMENT = 0x51;
R3.COMPONENT_D3_SHADER = 0x52;
R3.COMPONENT_D3_SCENE = 0x53;
R3.COMPONENT_D3_RIGIDBODY = 0x54;
R3.COMPONENT_D3_RENDERTARGET_CUBE = 0x55;
R3.COMPONENT_D3_RENDERTARGET = 0x56;
R3.COMPONENT_D3_RAYCASTER = 0x57;
R3.COMPONENT_D3_RAYCASTWHEEL = 0x58;
R3.COMPONENT_D3_RAYCASTVEHICLE = 0x59;
R3.COMPONENT_D3_PHYSICSWORLD = 0x5a;
R3.COMPONENT_D3_PASS_RENDER_SSAO = 0x5b;
R3.COMPONENT_D3_PASS_RENDER = 0x5c;
R3.COMPONENT_D3_PASS_FXAA = 0x5d;
R3.COMPONENT_D3_PASS_COPY = 0x5e;
R3.COMPONENT_D3_PASS_BLOOM = 0x5f;
R3.COMPONENT_D3_PASS = 0x60;
R3.COMPONENT_D3_MESH_SKELETON = 0x61;
R3.COMPONENT_D3_MESH_PARTICLE_ENGINE = 0x62;
R3.COMPONENT_D3_MESH_PARTICLE = 0x63;
R3.COMPONENT_D3_MESH = 0x64;
R3.COMPONENT_D3_MATERIAL_STANDARD = 0x65;
R3.COMPONENT_D3_MATERIAL_SHADER_RAW = 0x66;
R3.COMPONENT_D3_MATERIAL_SHADER = 0x67;
R3.COMPONENT_D3_MATERIAL_POINTS = 0x68;
R3.COMPONENT_D3_MATERIAL_PHONG = 0x69;
R3.COMPONENT_D3_MATERIAL_BASIC = 0x6a;
R3.COMPONENT_D3_MATERIAL = 0x6b;
R3.COMPONENT_D3_LIGHT_SPOT = 0x6c;
R3.COMPONENT_D3_LIGHT_RECTAREA = 0x6d;
R3.COMPONENT_D3_LIGHT_POINT = 0x6e;
R3.COMPONENT_D3_LIGHT_HEMISPHERE = 0x6f;
R3.COMPONENT_D3_LIGHT_DIRECTIONAL = 0x70;
R3.COMPONENT_D3_LIGHT_AMBIENT = 0x71;
R3.COMPONENT_D3_LIGHT = 0x72;
R3.COMPONENT_D3_HELPER = 0x73;
R3.COMPONENT_D3_GEOMETRY_NORMAL_WIREFRAME = 0x74;
R3.COMPONENT_D3_GEOMETRY_NORMAL_TUBE = 0x75;
R3.COMPONENT_D3_GEOMETRY_NORMAL_TORUSKNOT = 0x76;
R3.COMPONENT_D3_GEOMETRY_NORMAL_TORUS = 0x77;
R3.COMPONENT_D3_GEOMETRY_NORMAL_TEXT = 0x78;
R3.COMPONENT_D3_GEOMETRY_NORMAL_TETRAHEDRON = 0x79;
R3.COMPONENT_D3_GEOMETRY_NORMAL_SPHERE = 0x7a;
R3.COMPONENT_D3_GEOMETRY_NORMAL_SHAPE = 0x7b;
R3.COMPONENT_D3_GEOMETRY_NORMAL_RING = 0x7c;
R3.COMPONENT_D3_GEOMETRY_NORMAL_POLYHEDRON = 0x7d;
R3.COMPONENT_D3_GEOMETRY_NORMAL_PLANE = 0x7e;
R3.COMPONENT_D3_GEOMETRY_NORMAL_PARAMETRIC = 0x7f;
R3.COMPONENT_D3_GEOMETRY_NORMAL_OCTAHEDRON = 0x80;
R3.COMPONENT_D3_GEOMETRY_NORMAL_LATHE = 0x81;
R3.COMPONENT_D3_GEOMETRY_NORMAL_ICOSAHEDRON = 0x82;
R3.COMPONENT_D3_GEOMETRY_NORMAL_EXTRUDE = 0x83;
R3.COMPONENT_D3_GEOMETRY_NORMAL_EDGES = 0x84;
R3.COMPONENT_D3_GEOMETRY_NORMAL_DODECAHEDRON = 0x85;
R3.COMPONENT_D3_GEOMETRY_NORMAL_CYLINDER = 0x86;
R3.COMPONENT_D3_GEOMETRY_NORMAL_CONE = 0x87;
R3.COMPONENT_D3_GEOMETRY_NORMAL_CIRCLE = 0x88;
R3.COMPONENT_D3_GEOMETRY_NORMAL_BOX = 0x89;
R3.COMPONENT_D3_GEOMETRY_NORMAL = 0x8a;
R3.COMPONENT_D3_GEOMETRY_BUFFER_TUBE = 0x8b;
R3.COMPONENT_D3_GEOMETRY_BUFFER_TORUSKNOT = 0x8c;
R3.COMPONENT_D3_GEOMETRY_BUFFER_TORUS = 0x8d;
R3.COMPONENT_D3_GEOMETRY_BUFFER_TEXT = 0x8e;
R3.COMPONENT_D3_GEOMETRY_BUFFER_TETRAHEDRON = 0x8f;
R3.COMPONENT_D3_GEOMETRY_BUFFER_SPHERE = 0x90;
R3.COMPONENT_D3_GEOMETRY_BUFFER_SHAPE = 0x91;
R3.COMPONENT_D3_GEOMETRY_BUFFER_RING = 0x92;
R3.COMPONENT_D3_GEOMETRY_BUFFER_POLYHEDRON = 0x93;
R3.COMPONENT_D3_GEOMETRY_BUFFER_PLANE = 0x94;
R3.COMPONENT_D3_GEOMETRY_BUFFER_PARAMETRIC = 0x95;
R3.COMPONENT_D3_GEOMETRY_BUFFER_OCTAHEDRON = 0x96;
R3.COMPONENT_D3_GEOMETRY_BUFFER_LATHE = 0x97;
R3.COMPONENT_D3_GEOMETRY_BUFFER_INSTANCED = 0x98;
R3.COMPONENT_D3_GEOMETRY_BUFFER_ICOSAHEDRON = 0x99;
R3.COMPONENT_D3_GEOMETRY_BUFFER_EXTRUDE = 0x9a;
R3.COMPONENT_D3_GEOMETRY_BUFFER_DODECAHEDRON = 0x9b;
R3.COMPONENT_D3_GEOMETRY_BUFFER_CYLINDER = 0x9c;
R3.COMPONENT_D3_GEOMETRY_BUFFER_CONE = 0x9d;
R3.COMPONENT_D3_GEOMETRY_BUFFER_CIRCLE = 0x9e;
R3.COMPONENT_D3_GEOMETRY_BUFFER_BOX = 0x9f;
R3.COMPONENT_D3_GEOMETRY_BUFFER = 0xa0;
R3.COMPONENT_D3_GEOMETRY = 0xa1;
R3.COMPONENT_D3_FRICTIONMATERIAL = 0xa2;
R3.COMPONENT_D3_FRICTIONCONTACTMATERIAL = 0xa3;
R3.COMPONENT_D3_FOG_NORMAL = 0xa4;
R3.COMPONENT_D3_FOG_EXP = 0xa5;
R3.COMPONENT_D3_FOG = 0xa6;
R3.COMPONENT_D3_FACE_GRAPHICS = 0xa7;
R3.COMPONENT_D3_FACE = 0xa8;
R3.COMPONENT_D3_EFFECT_STEREO = 0xa9;
R3.COMPONENT_D3_EFFECT_PARALLAX = 0xaa;
R3.COMPONENT_D3_EFFECT_ANAGLYPH = 0xab;
R3.COMPONENT_D3_EFFECT = 0xac;
R3.COMPONENT_D3_COMPOSER = 0xad;
R3.COMPONENT_D3_CAMERA_PERSPECTIVE_STEREO = 0xae;
R3.COMPONENT_D3_CAMERA_PERSPECTIVE = 0xaf;
R3.COMPONENT_D3_CAMERA_ORTHOGRAPHIC_SCALEDASPECT = 0xb0;
R3.COMPONENT_D3_CAMERA_ORTHOGRAPHIC_FIXEDASPECT = 0xb1;
R3.COMPONENT_D3_CAMERA_ORTHOGRAPHIC = 0xb2;
R3.COMPONENT_D3_CAMERA_CUBE = 0xb3;
R3.COMPONENT_D3_CAMERA = 0xb4;
R3.COMPONENT_D3_BROADPHASE = 0xb5;
R3.COMPONENT_D3_BONEWEIGHT = 0xb6;
R3.COMPONENT_D3_BONE = 0xb7;
R3.COMPONENT_D3_AUDIO = 0xb8;
R3.COMPONENT_D3_ANIMATION = 0xb9;
R3.COMPONENT_D3_OBJECT = 0xba;
R3.COMPONENT_CUSTOMCODE = 0xbb;
R3.COMPONENT_CURVE_PATH_D2_SHAPE = 0xbc;
R3.COMPONENT_CURVE_PATH_D2 = 0xbd;
R3.COMPONENT_CURVE_PATH = 0xbe;
R3.COMPONENT_CURVE = 0xbf;
R3.COMPONENT_CONTROLS_TOUCH = 0xc0;
R3.COMPONENT_CONTROLS_MOUSE = 0xc1;
R3.COMPONENT_CONTROLS_KEYBOARD = 0xc2;
R3.COMPONENT_CONTROLS_D3_ORBIT = 0xc3;
R3.COMPONENT_CONTROLS_D3_FIRSTPERSON = 0xc4;
R3.COMPONENT_CONTROLS_D3 = 0xc5;
R3.COMPONENT_CONTROLS = 0xc6;
R3.COMPONENT_COLOR = 0xc7;
R3.COMPONENT_CLOCK = 0xc8;
R3.COMPONENT_CANVAS = 0xc9;
R3.COMPONENT_BOX3 = 0xca;
R3.MAX_COMPONENTS = 0xcb;
/**
* R3.GetComponentType
@ -276,6 +277,10 @@ R3.GetComponentType = function(component) {
return R3.COMPONENT_RENDERER;
}
if (component instanceof R3.Query.UserDevices) {
return R3.COMPONENT_QUERY_USERDEVICES;
}
if (component instanceof R3.Query.Logins.VPN) {
return R3.COMPONENT_QUERY_LOGINS_VPN;
}
@ -1604,6 +1609,10 @@ R3.GetComponentType = function(component) {
return R3.COMPONENT_RENDERER;
}
if (component instanceof R3.API.Query.UserDevices) {
return R3.COMPONENT_QUERY_USERDEVICES;
}
if (component instanceof R3.API.Query.Logins.VPN) {
return R3.COMPONENT_QUERY_LOGINS_VPN;
}
@ -1924,6 +1933,12 @@ R3.GetComponentInfo = function(componentType) {
apiConstructor : R3.API.Renderer,
runtime: R3.Runtime.GRAPHICS
};
case R3.COMPONENT_QUERY_USERDEVICES : return {
name : 'R3.Query.UserDevices',
constructor : R3.Query.UserDevices,
apiConstructor : R3.API.Query.UserDevices,
runtime: R3.Runtime.DEFAULT
};
case R3.COMPONENT_QUERY_LOGINS_VPN : return {
name : 'R3.Query.Logins.VPN',
constructor : R3.Query.Logins.VPN,
@ -3092,6 +3107,9 @@ R3.GetAPIConstructor = function(runtimeComponent) {
if (runtimeComponent instanceof R3.Renderer){
return R3.API.Renderer;
}
if (runtimeComponent instanceof R3.Query.UserDevices){
return R3.API.Query.UserDevices;
}
if (runtimeComponent instanceof R3.Query.Logins.VPN){
return R3.API.Query.Logins.VPN;
}
@ -3706,6 +3724,9 @@ R3.GetConstructor = function(apiComponent) {
if (apiComponent instanceof R3.API.Renderer){
return R3.Renderer;
}
if (apiComponent instanceof R3.API.Query.UserDevices){
return R3.Query.UserDevices;
}
if (apiComponent instanceof R3.API.Query.Logins.VPN){
return R3.Query.Logins.VPN;
}
@ -4288,6 +4309,7 @@ R3.GetConstructorFromComponentType = function(componentType) {
case R3.COMPONENT_RENDERER_D3: return R3.Renderer.D3;
case R3.COMPONENT_RENDERER_D2: return R3.Renderer.D2;
case R3.COMPONENT_RENDERER: return R3.Renderer;
case R3.COMPONENT_QUERY_USERDEVICES: return R3.Query.UserDevices;
case R3.COMPONENT_QUERY_LOGINS_VPN: return R3.Query.Logins.VPN;
case R3.COMPONENT_QUERY_LOGINS_DEVICES: return R3.Query.Logins.Devices;
case R3.COMPONENT_QUERY_LOGINS_APPLICATIONS: return R3.Query.Logins.Applications;
@ -4536,6 +4558,9 @@ R3.GetComponentName = function(runtimeComponent) {
if (runtimeComponent instanceof R3.Renderer){
return 'R3.Renderer';
}
if (runtimeComponent instanceof R3.Query.UserDevices){
return 'R3.Query.UserDevices';
}
if (runtimeComponent instanceof R3.Query.Logins.VPN){
return 'R3.Query.Logins.VPN';
}

View File

@ -12,7 +12,8 @@ R3.API.Component = function(
id,
name,
register,
selected
selected,
isPublic
) {
if (R3.Utils.UndefinedOrNull(parent)) {
@ -42,6 +43,11 @@ R3.API.Component = function(
}
this.selected = selected;
if (R3.Utils.UndefinedOrNull(isPublic)) {
isPublic = true;
}
this.isPublic = isPublic;
};
R3.API.Component.prototype.constructor = R3.API.Component;

View File

@ -243,6 +243,20 @@ R3.Utils.Unloaded = function(component) {
return false;
};
/**
*
* @param component
* @returns {boolean}
* @constructor
*/
R3.Utils.Loaded = function(component) {
if (component && component.instance) {
return true;
}
return false;
};
R3.Utils.BuildVectorSource = function(result, name, dimension) {
if (dimension === 2) {

View File

@ -116,6 +116,7 @@ R3.Component.prototype.removeComponent = function(data) {
*/
if (
component instanceof R3.Color ||
component instanceof R3.Scalar ||
component instanceof R3.Vector2 ||
component instanceof R3.Vector3 ||
component instanceof R3.Vector4 ||
@ -256,6 +257,7 @@ R3.Component.prototype.buildVectoredComponents = function() {
}
if (
this[property] instanceof R3.API.Scalar ||
this[property] instanceof R3.API.Vector2 ||
this[property] instanceof R3.API.Vector3 ||
this[property] instanceof R3.API.Vector4 ||
@ -265,6 +267,29 @@ R3.Component.prototype.buildVectoredComponents = function() {
) {
var constructor = R3.GetConstructor(this[property]);
this[property] = new constructor(this[property]);
// if (this[property] instanceof R3.Scalar) {
// this['scalar' + property] = this[property];
// //this.__defineGetter__(property, function(_property){return function() { return this['scalar' + _property].value; }}(property).bind(this));
//
// Object.defineProperty(
// this,
// property,
// {
// get: function(_property) {
// return function() {
// return this['scalar' + _property].value;
// };
// }(property),
// set: function(_property) {
// return function(_value) {
// this['scalar' + _property].value = _value;
// };
// }(property)
// }
// );
//
// }
}
}
}
@ -577,24 +602,8 @@ R3.Component.prototype.performInstanceCreation = function() {
};
/**
* This function goes through all children objects of this component, updates the 'parent' property to
* be the newly constructed runtime component (and not the old API component)
* The mother of all createInstance.
*/
R3.Component.prototype.updateParentsToRuntime = function() {
Object.keys(this.idToObject).map(
function(id) {
var child = this.idToObject[id];
if (child.parent) {
if (child.parent.id === this.id) {
child.parent = this;
}
}
}.bind(this)
);
};
R3.Component.prototype.createInstance = function() {
if (R3.Utils.UndefinedOrNull(this.instance)) {
@ -611,7 +620,6 @@ R3.Component.prototype.createInstance = function() {
/**
* idToObject can now be trusted
*/
//this.updateParentsToRuntime();
this.loaded = true;
@ -842,7 +850,7 @@ R3.Component.prototype.getPropertyValue = function(item) {
* If we get to this point and we still have an Object - we throw an error
*/
if (R3.Utils.IsObject(item)) {
throw new Error('We still have an object here which is trying to get saved: ' + item);
return JSON.stringify(item);
}
return item;
@ -879,6 +887,7 @@ R3.Component.prototype.toApiObject = function() {
var apiObject = new apiConstructor();
for (var property in apiObject) {
if (apiObject.hasOwnProperty(property)) {
/**
@ -945,26 +954,28 @@ R3.Component.prototype.toApiObject = function() {
}
}
}
return apiObject;
};
/**
* Gets all children components of this Object (all linked objects only - no object references i.e. string ids)
* @returns {Array}
*/
R3.Component.prototype.getChildrenComponents = function() {
var components = [];
Object.keys(this.idToObject).map(
function(objectId) {
if (this.id !== objectId) {
components.push(this.idToObject[objectId]);
}
}.bind(this)
);
return components;
};
// R3.Component.prototype.getChildrenComponents = function() {
//
// var components = [];
//
// Object.keys(this.idToObject).map(
// function(objectId) {
// if (this.id !== objectId) {
// components.push(this.idToObject[objectId]);
// }
// }.bind(this)
// );
//
// return components;
// };
//
// R3.Component.prototype.processComponent = function(object) {
// if (object instanceof R3.Component) {
@ -1103,84 +1114,84 @@ R3.Component.prototype.generateNewIds = function() {
};
//
//
// R3.Component.prototype.replace = function(componentType) {
//
// var replacement = R3.Component.Construct(componentType);
//
// R3.Event.Emit(
// R3.Event.REPLACE_COMPONENT,
// {
// current : this,
// replacement : replacement
// }
// );
//
// if (this.parent && this.parent.loaded) {
// this.parent.addComponent(replacement);
// }
//
// this.remove();
//
// R3.Event.Emit(
// R3.Event.COMPONENT_REPLACED
// );
// };
R3.Component.prototype.replace = function(componentType) {
var replacement = R3.Component.Construct(componentType);
R3.Event.Emit(
R3.Event.REPLACE_COMPONENT,
{
current : this,
replacement : replacement
}
);
if (this.parent && this.parent.loaded) {
this.parent.addComponent(replacement);
}
this.remove();
R3.Event.Emit(
R3.Event.COMPONENT_REPLACED
);
};
R3.Component.prototype.clone = function() {
var apiObject = this.toApiObject();
this.cloneNumber += 1;
apiObject.id = R3.Utils.RandomId();
apiObject.name = this.name + ' Clone (' + this.cloneNumber + ')';
var runtimeComponent = R3.Component.ConstructFromObject(apiObject);
runtimeComponent.isClone = true;
R3.Event.Emit(
R3.Event.COMPONENT_CLONED,
{
parent : this,
component : runtimeComponent
}
);
runtimeComponent.parent = null;
return runtimeComponent;
};
/**
* Clones only the instance
*/
R3.Component.prototype.cloneInstance = function() {
var clone = null;
if (
this.instance &&
this.instance.clone &&
typeof (this.instance.clone === 'function')) {
clone = this.instance.clone();
R3.Event.Emit(
R3.Event.INSTANCE_CLONED,
{
component : this,
instance : clone
}
)
}
return clone;
};
//
// R3.Component.prototype.clone = function() {
//
// var apiObject = this.toApiObject();
//
// this.cloneNumber += 1;
//
// apiObject.id = R3.Utils.RandomId();
//
// apiObject.name = this.name + ' Clone (' + this.cloneNumber + ')';
//
// var runtimeComponent = R3.Component.ConstructFromObject(apiObject);
//
// runtimeComponent.isClone = true;
//
// R3.Event.Emit(
// R3.Event.COMPONENT_CLONED,
// {
// parent : this,
// component : runtimeComponent
// }
// );
//
// runtimeComponent.parent = null;
//
// return runtimeComponent;
// };
//
// /**
// * Clones only the instance
// */
// R3.Component.prototype.cloneInstance = function() {
//
// var clone = null;
//
// if (
// this.instance &&
// this.instance.clone &&
// typeof (this.instance.clone === 'function')) {
//
// clone = this.instance.clone();
//
// R3.Event.Emit(
// R3.Event.INSTANCE_CLONED,
// {
// component : this,
// instance : clone
// }
// )
// }
//
// return clone;
// };
R3.Component.prototype.saveToRemoteAPI = function() {
this.save(true);
@ -1188,210 +1199,108 @@ R3.Component.prototype.saveToRemoteAPI = function() {
R3.Component.prototype.save = function(remote) {
var toSave = [];
var saved = [];
var failed = [];
if (this.saveSubscription || this.saveErrorSubscription) {
console.warn('another save is in progress');
return;
}
R3.Event.Emit(
R3.Event.SAVING,
R3.Event.SAVE_COMPONENT,
{
component: this
component : this,
remote : remote
},
function success(result) {
console.log(result);
},
function error(error) {
console.log(error);
}
);
this.saveSubscription = R3.Event.Subscribe(
R3.Event.COMPONENT_SAVED,
function(data) {
saved.push(data.component);
if (failed.length + saved.length === toSave.length) {
this.saveSubscription.remove();
this.saveSubscription = null;
this.saveErrorSubscription.remove();
this.saveErrorSubscription = null;
R3.Event.Emit(
R3.Event.DONE_SAVING,
{
failed: failed,
saved: saved
}
)
}
}.bind(this)
);
this.saveErrorSubscription = R3.Event.Subscribe(
R3.Event.SAVE_COMPONENT_ERROR,
function(data) {
failed.push(data.component);
if (failed.length + saved.length === toSave.length) {
this.saveSubscription.remove();
this.saveSubscription = null;
this.saveErrorSubscription.remove();
this.saveErrorSubscription = null;
R3.Event.Emit(
R3.Event.DONE_SAVING,
{
failed: failed,
saved: saved
}
)
}
}.bind(this)
);
Object.keys(this.idToObject).map(
function(componentId) {
var component = this.idToObject[componentId];
if (this instanceof R3.Entity) {
/**
* We don't store children objects of entities which are not explicitly defined as children of this entity.
*/
if (
this.components.indexOf(component) === -1 &&
this !== component
) {
/**
* We don't want to store this component - but other components may depend on it
*/
console.warn(component.name + ' is being stored because a component depends on it - even though it was not explicitly added to this entity.');
}
}
var apiObject = component.toApiObject();
toSave.push(apiObject);
this.emit(
R3.Event.SAVE_COMPONENT,
{
apiObject: apiObject,
remote: remote
},
function success(result) {
console.log(result);
},
function error(error) {
console.log(error);
}
);
}.bind(this)
);
};
/**
* @return {null|Object}
*/
R3.Component.GetRuntimeObject = function(info) {
// R3.Component.GetRuntimeObject = function(info) {
//
// var runtime = null;
//
// R3.Event.Emit(
// R3.Event.GET_RUNTIME,
// null,
// function(runtimeObject) {
// runtime = runtimeObject;
// }
// );
//
// if (info.runtime instanceof R3.Runtime.Graphics) {
//
// if (R3.Utils.UndefinedOrNull(runtime.graphics)) {
// console.warn('no runtime graphics: ', info);
// return null;
// }
//
// return runtime.graphics;
//
// } else if (info.runtime === R3.Runtime.PHYSICS) {
//
// if (R3.Utils.UndefinedOrNull(runtime.physics)) {
// console.warn('no runtime physics ', info);
// return null;
// }
//
// return runtime.physics;
//
// } else if (info.runtime === R3.Runtime.GUI) {
//
// if (R3.Utils.UndefinedOrNull(runtime.gui)) {
// console.warn('no runtime gui ', info);
// return null;
// }
//
// return runtime.gui;
//
// } else if (info.runtime === R3.Runtime.SOCKETS) {
//
// if (R3.Utils.UndefinedOrNull(runtime.sockets)) {
// console.warn('no runtime sockets ', info);
// return null;
// }
//
// return runtime.sockets;
//
// } else if (info.runtime === R3.Runtime.STATISTICS) {
//
// if (R3.Utils.UndefinedOrNull(runtime.statistics)) {
// console.warn('no runtime statistics ', info);
// return null;
// }
//
// return runtime.statistics;
//
// } else if (info.runtime === R3.Runtime.DEFAULT) {
//
// return null;
//
// } else {
// throw new Error('unknown runtime object found: ' + info);
// }
//
// return null;
// };
var runtime = null;
R3.Event.Emit(
R3.Event.GET_RUNTIME,
null,
function(runtimeObject) {
runtime = runtimeObject;
}
);
if (info.runtime instanceof R3.Runtime.Graphics) {
if (R3.Utils.UndefinedOrNull(runtime.graphics)) {
console.warn('no runtime graphics: ', info);
return null;
}
return runtime.graphics;
} else if (info.runtime === R3.Runtime.PHYSICS) {
if (R3.Utils.UndefinedOrNull(runtime.physics)) {
console.warn('no runtime physics ', info);
return null;
}
return runtime.physics;
} else if (info.runtime === R3.Runtime.GUI) {
if (R3.Utils.UndefinedOrNull(runtime.gui)) {
console.warn('no runtime gui ', info);
return null;
}
return runtime.gui;
} else if (info.runtime === R3.Runtime.SOCKETS) {
if (R3.Utils.UndefinedOrNull(runtime.sockets)) {
console.warn('no runtime sockets ', info);
return null;
}
return runtime.sockets;
} else if (info.runtime === R3.Runtime.STATISTICS) {
if (R3.Utils.UndefinedOrNull(runtime.statistics)) {
console.warn('no runtime statistics ', info);
return null;
}
return runtime.statistics;
} else if (info.runtime === R3.Runtime.DEFAULT) {
return null;
} else {
throw new Error('unknown runtime object found: ' + info);
}
return null;
};
R3.Component.Construct = function(componentType) {
var info = R3.GetComponentInfo(componentType);
var componentClass = info.constructor;
var runtime = R3.Component.GetRuntimeObject(info);
if (runtime) {
return new componentClass(runtime);
} else {
return new componentClass();
}
};
// R3.Component.Construct = function(componentType) {
//
// var info = R3.GetComponentInfo(componentType);
//
// var componentClass = info.constructor;
//
// var runtime = R3.Component.GetRuntimeObject(info);
//
// if (runtime) {
// return new componentClass(runtime);
// } else {
// return new componentClass();
// }
//
// };
R3.Component.ConstructFromObject = function(rawComponentObject) {

View File

@ -18,29 +18,31 @@ R3.API.Canvas = function(
apiComponent.width = 450;
}
this.width = apiComponent.width;
this.guiInfo.width = {
range: [0, 5120],
step: 1,
dp: 0
};
if (R3.Utils.UndefinedOrNull(apiComponent.height)) {
apiComponent.height = 450;
}
this.height = apiComponent.height;
if (R3.Utils.UndefinedOrNull(apiComponent.offset)) {
apiComponent.offset = new R3.API.Vector2(
{
parent : this,
register : true,
name : this.name + ' - Offset',
x : 0,
y : 0
}
);
}
this.offset = apiComponent.offset;
this.guiInfo.height = {
range: [0, 5120],
step: 1,
dp: 0
};
if (R3.Utils.UndefinedOrNull(apiComponent.tabIndex)) {
apiComponent.tabIndex = 1;
}
this.tabIndex = apiComponent.tabIndex;
this.guiInfo.tabIndex = {
range: [0, 100],
step: 1,
dp: 0
};
if (R3.Utils.UndefinedOrNull(apiComponent.texts)) {
apiComponent.texts = [];

View File

@ -9,6 +9,11 @@ R3.API.Clock = function(
__API_COMPONENT__;
if (R3.Utils.UndefinedOrNull(apiComponent.delta)) {
apiComponent.delta = 0;
}
this.delta = apiComponent.delta;
};
R3.API.Clock.prototype = Object.create(R3.API.Component.prototype);

View File

@ -18,11 +18,6 @@ R3.API.Project = function(
__DEFINE_API_COMPONENT__
if (R3.Utils.UndefinedOrNull(apiComponent.isPublic)) {
apiComponent.isPublic = true;
}
this.isPublic = apiComponent.isPublic;
if (R3.Utils.UndefinedOrNull(apiComponent.entities)) {
apiComponent.entities = [];
}
@ -111,6 +106,7 @@ R3.API.Project = function(
apiComponent.applicationMode = R3.API.Project.APPLICATION_MODE_EDIT;
}
this.applicationMode = apiComponent.applicationMode;
};
R3.API.Project.prototype = Object.create(R3.API.Component.prototype);

View File

@ -57,8 +57,6 @@ R3.API.Project.D2 = function(
apiComponent
);
};
R3.API.Project.D2.prototype = Object.create(R3.API.Project.prototype);

View File

@ -121,6 +121,23 @@ R3.API.Project.D3 = function(
];
}
if (R3.Utils.UndefinedOrNull(apiComponent.composer)) {
apiComponent.composer = new R3.D3.API.Composer(
{
parent : this,
name : this.name + ' - Composer',
renderer : this.renderers[0],
camera : this.cameras[0]
}
);
}
this.composer = apiComponent.composer;
if (R3.Utils.UndefinedOrNull(apiComponent.effect)) {
apiComponent.effect = null;
}
this.effect = apiComponent.effect;
if (R3.Utils.UndefinedOrNull(apiComponent.renderTargets)) {
apiComponent.renderTargets = [];
}

View File

@ -53,14 +53,14 @@ R3.API.Project.D3.VR = function(
new R3.D3.API.Viewport.FixedAspect.VR(
{
parent : this,
name : this.name + ' - FA VR Left Viewport',
name : this.name + ' - Fixed Aspect VR Left Viewport',
side : R3.D3.API.Viewport.FixedAspect.VR.VIEWPORT_LEFT
}
),
new R3.D3.API.Viewport.FixedAspect.VR(
{
parent : this,
name : this.name + ' - FA VR Right Viewport',
name : this.name + ' - Fixed Aspect VR Right Viewport',
side : R3.D3.API.Viewport.FixedAspect.VR.VIEWPORT_RIGHT
}
)

View File

@ -47,6 +47,11 @@ R3.API.Query = function(
}
this.text = apiComponent.text;
if (R3.Utils.UndefinedOrNull(apiComponent.httpMethod)) {
apiComponent.httpMethod = 'POST';
}
this.httpMethod = apiComponent.httpMethod;
};
R3.API.Query.prototype = Object.create(R3.API.Component.prototype);

View File

@ -0,0 +1,34 @@
/**
* R3.API.Query.UserDevices
* @param apiComponent
* @constructor
*/
R3.API.Query.UserDevices = function(
apiComponent
) {
__DEFINE_API_COMPONENT__
if (R3.Utils.UndefinedOrNull(apiComponent.path)) {
apiComponent.path = '/crud/user_devices.json';
}
this.path = apiComponent.path;
if (R3.Utils.UndefinedOrNull(apiComponent.httpMethod)) {
apiComponent.httpMethod = 'GET';
}
this.httpMethod = apiComponent.httpMethod;
if (R3.Utils.UndefinedOrNull(apiComponent.text)) {
apiComponent.text = '';
}
this.text = apiComponent.text;
R3.API.Query.call(
this,
apiComponent
);
};
R3.API.Query.UserDevices.prototype = Object.create(R3.API.Query.prototype);
R3.API.Query.UserDevices.prototype.constructor = R3.API.Query.UserDevices;

View File

@ -20,7 +20,9 @@ R3.API.Renderer.SHADOW_MAP_TYPE_BASIC = 0;
R3.API.Renderer.SHADOW_MAP_TYPE_PCF = 1;
R3.API.Renderer.SHADOW_MAP_TYPE_PCF_SOFT = 2;
R3.API.Renderer.TONE_MAPPING_NONE = 0;
R3.API.Renderer.TONE_MAPPING_LINEAR = 1;
R3.API.Renderer.TONE_MAPPING_REINHARD = 2;
R3.API.Renderer.TONE_MAPPING_UNCHARTED_2 = 3;
R3.API.Renderer.TONE_MAPPING_CINEON = 4;
R3.API.Renderer.TONE_MAPPING_ACES_FILMIC = 5;

View File

@ -123,16 +123,54 @@ R3.API.Renderer.D3 = function(
apiComponent.toneMapping = R3.API.Renderer.TONE_MAPPING_LINEAR;
}
this.toneMapping = apiComponent.toneMapping;
this.guiInfo.toneMapping = {
options : [
{
name : 'none',
value : R3.API.Renderer.TONE_MAPPING_NONE
},
{
name : 'linear',
value : R3.API.Renderer.TONE_MAPPING_LINEAR
},
{
name : 'reinhard',
value : R3.API.Renderer.TONE_MAPPING_REINHARD
},
{
name : 'uncharted 2',
value : R3.API.Renderer.TONE_MAPPING_UNCHARTED_2
},
{
name : 'cineon',
value : R3.API.Renderer.TONE_MAPPING_CINEON
},
{
name : 'filmic',
value : R3.API.Renderer.TONE_MAPPING_ACES_FILMIC
},
]
};
if (R3.Utils.UndefinedOrNull(apiComponent.toneMappingExposure)) {
apiComponent.toneMappingExposure = 1;
}
this.toneMappingExposure = apiComponent.toneMappingExposure;
this.guiInfo.toneMappingExposure = {
range: [0, 16],
step: 0.001,
dp: 3
};
if (R3.Utils.UndefinedOrNull(apiComponent.toneMappingWhitePoint)) {
apiComponent.toneMappingWhitePoint = 1;
}
this.toneMappingWhitePoint = apiComponent.toneMappingWhitePoint;
this.guiInfo.toneMappingWhitePoint = {
range: [0, 16],
step: 0.001,
dp: 3
};
if (R3.Utils.UndefinedOrNull(apiComponent.premultipliedAlpha)) {
apiComponent.premultipliedAlpha = true;
@ -180,9 +218,9 @@ R3.API.Renderer.D3 = function(
parent : this,
register : true,
name : this.name + ' - Clear Color',
r : 0.11,
g : 0.11,
b : 0.11
r : 0,
g : 0.129,
b : 0.184
}
);
}
@ -193,7 +231,7 @@ R3.API.Renderer.D3 = function(
new R3.D3.API.Viewport.FixedAspect(
{
parent : this,
name : this.name + ' - FA Viewport'
name : this.name + ' - Fixed Aspect Viewport'
}
)
];
@ -220,11 +258,31 @@ R3.API.Renderer.D3 = function(
apiComponent.opacity = 1;
}
this.opacity = apiComponent.opacity;
this.guiInfo.opacity = {
range: [0, 1],
step: 0.001,
dp: 3
};
if (R3.Utils.UndefinedOrNull(apiComponent.pixelRatio)) {
apiComponent.pixelRatio = window.devicePixelRatio;
}
this.pixelRatio = apiComponent.pixelRatio;
this.guiInfo.pixelRatio = {
range: [0, 4],
step: 0.001,
dp: 3
};
if (R3.Utils.UndefinedOrNull(apiComponent.enableComposer)) {
apiComponent.enableComposer = true;
}
this.enableComposer = apiComponent.enableComposer;
if (R3.Utils.UndefinedOrNull(apiComponent.enableEffect)) {
apiComponent.enableEffect = false;
}
this.enableEffect = apiComponent.enableEffect;
R3.API.Renderer.call(
this,

View File

@ -20,6 +20,21 @@ R3.API.Scalar = function(
}
this.value = apiComponent.value;
if (R3.Utils.UndefinedOrNull(apiComponent.range)) {
apiComponent.range = [-1, 1];
}
this.range = apiComponent.range;
if (R3.Utils.UndefinedOrNull(apiComponent.step)) {
apiComponent.step = 0.01;
}
this.step = apiComponent.step;
if (R3.Utils.UndefinedOrNull(apiComponent.dp)) {
apiComponent.dp = 2;
}
this.dp = apiComponent.dp;
};
R3.API.Scalar.prototype = Object.create(R3.API.Component.prototype);

View File

@ -43,12 +43,6 @@ R3.Canvas.prototype.updateInstance = function(property) {
return;
}
if (property === 'offset') {
this.instance.style.left = this.offset.x + 'px';
this.instance.style.top = this.offset.y + 'px';
return;
}
if (property === 'tabIndex') {
this.instance.setAttribute('tabIndex', this.tabIndex);
return;
@ -56,7 +50,7 @@ R3.Canvas.prototype.updateInstance = function(property) {
if (property === 'width') {
this.instance.setAttribute('width', this.width);
this.instance.setAttribute('style', 'left: ' + this.offset.x + 'px;top: ' + this.offset.y + 'px;width:' + this.width + 'px;height:' + this.height + 'px');
this.instance.setAttribute('style', 'width:' + this.width + 'px;height:' + this.height + 'px');
R3.Event.Emit(
R3.Event.CANVAS_RESIZE,
this
@ -66,7 +60,7 @@ R3.Canvas.prototype.updateInstance = function(property) {
if (property === 'height') {
this.instance.setAttribute('height', this.height);
this.instance.setAttribute('style', 'left: ' + this.offset.x + 'px;top: ' + this.offset.y + 'px;width:' + this.width + 'px;height:' + this.height + 'px');
this.instance.setAttribute('style', 'width:' + this.width + 'px;height:' + this.height + 'px');
R3.Event.Emit(
R3.Event.CANVAS_RESIZE,
this

View File

@ -38,6 +38,8 @@ R3.Clock.prototype.updateInstance = function(property) {
R3.Clock.prototype.getDelta = function() {
return this.instance.getDelta();
this.delta = this.instance.getDelta();
return this.delta;
};

View File

@ -116,6 +116,7 @@ R3.CustomCode.prototype.launchEditor = function(){
{
value: this.code,
mode: 'javascript',
theme : 'darcula',
lineNumbers: true,
scrollbarStyle: 'overlay',
indentWithTabs: true,
@ -124,6 +125,13 @@ R3.CustomCode.prototype.launchEditor = function(){
);
}
this.editor.setOption("extraKeys", {
'Ctrl-/': function() {
this.editor.execCommand('toggleComment')
}.bind(this)
}
);
this.editor.on('change', function(){
this.code = this.editor.getValue();

View File

@ -16,6 +16,11 @@ R3.D3.API.Camera = function(
apiComponent.aspectRatio = R3.D3.API.Camera.ASPECT_RATIO_1_1;
}
this.aspectRatio = apiComponent.aspectRatio;
this.guiInfo.aspectRatio = {
range: [0, 4],
step: 0.0001,
dp: 4
};
R3.D3.API.Object.call(
this,

View File

@ -39,36 +39,71 @@ R3.D3.API.Camera.Perspective = function(
apiComponent.near = 0.1;
}
this.near = apiComponent.near;
this.guiInfo.near = {
range: [0, 100],
step: 0.01,
dp: 2
};
if (R3.Utils.UndefinedOrNull(apiComponent.far)) {
apiComponent.far = 2000;
}
this.far = apiComponent.far;
this.guiInfo.far = {
range: [0, 2000],
step: 2,
dp: 0
};
if (R3.Utils.UndefinedOrNull(apiComponent.fov)) {
apiComponent.fov = 50;
}
this.fov = apiComponent.fov;
this.guiInfo.fov = {
range: [0, 150],
step: 1,
dp: 0
};
if (R3.Utils.UndefinedOrNull(apiComponent.filmGauge)) {
apiComponent.filmGauge = 35;
}
this.filmGauge = apiComponent.filmGauge;
this.guiInfo.filmGauge = {
range: [0, 35],
step: 1,
dp: 0
};
if (R3.Utils.UndefinedOrNull(apiComponent.filmOffset)) {
apiComponent.filmOffset = 0;
}
this.filmOffset = apiComponent.filmOffset;
this.guiInfo.filmGauge = {
range: [0, 1],
step: 0.01,
dp: 2
};
if (R3.Utils.UndefinedOrNull(apiComponent.focus)) {
apiComponent.focus = 10;
}
this.focus = apiComponent.focus;
this.guiInfo.focus = {
range: [0.1, 25],
step: 0.001,
dp:3
};
if (R3.Utils.UndefinedOrNull(apiComponent.zoom)) {
apiComponent.zoom = 1;
}
this.zoom = apiComponent.zoom;
this.guiInfo.zoom = {
range: [0, 100],
step: 0.1,
dp: 1
};
R3.D3.API.Camera.call(
this,

View File

@ -13,6 +13,11 @@ R3.D3.API.Camera.Perspective.Stereo = function(
apiComponent.eyeSeperation = 0.064;
}
this.eyeSeperation = apiComponent.eyeSeperation;
this.guiInfo.eyeSeperation = {
range: [0, 0.3],
step: 0.0001,
dp: 4
};
R3.D3.API.Camera.Perspective.call(
this,

View File

@ -4,9 +4,9 @@
*
* @property size
* @property renderer
* @property viewport
* @property renderTargetA
* @property renderTargetB
* @property renderTarget - Specify this to render to target instead
* @property renderTargetA - Used internally during render process
* @property renderTargetB - Used internally during render process
* @property passes
*
* @constructor
@ -22,6 +22,7 @@ R3.D3.API.Composer = function(
{
parent : this,
register : true,
name : this.name + ' - Size',
x : 512,
y : 512
}
@ -30,35 +31,72 @@ R3.D3.API.Composer = function(
this.size = apiComponent.size;
if (R3.Utils.UndefinedOrNull(apiComponent.renderer)) {
apiComponent.renderer = this.getFirstParent(R3.API.Renderer.D3);
apiComponent.renderer = null;
}
this.renderer = apiComponent.renderer;
if (R3.Utils.UndefinedOrNull(apiComponent.viewport)) {
apiComponent.viewport = this.getFirstParent(R3.D3.API.Viewport);
if (R3.Utils.UndefinedOrNull(apiComponent.camera)) {
apiComponent.camera = null;
}
this.viewport = apiComponent.viewport;
this.camera = apiComponent.camera;
if (R3.Utils.UndefinedOrNull(apiComponent.rendererTarget)) {
apiComponent.rendererTarget = null;
}
this.rendererTarget = apiComponent.rendererTarget;
if (R3.Utils.UndefinedOrNull(apiComponent.rendererTargetA)) {
apiComponent.rendererTargetA = new R3.D3.API.RenderTarget(
{
parent : this
}
)
apiComponent.rendererTargetA = null;
}
this.rendererTargetA = apiComponent.rendererTargetA;
if (R3.Utils.UndefinedOrNull(apiComponent.renderTargetB)) {
apiComponent.renderTargetB = new R3.D3.API.RenderTarget(
{
parent : this
}
)
apiComponent.renderTargetB = null;
}
this.renderTargetB = apiComponent.renderTargetB;
if (R3.Utils.UndefinedOrNull(apiComponent.passes)) {
apiComponent.passes = [];
apiComponent.passes = this.renderer.scenes.reduce(
function(result, scene) {
result.push(
new R3.D3.API.Pass.Render(
{
parent : this,
scene : scene,
name : this.name + ' - Render Pass',
camera : this.camera
}
)
);
return result;
}.bind(this),
[]
);
apiComponent.passes.push(
new R3.D3.API.Pass.Bloom(
{
parent : this,
name : this.name + ' - Bloom Pass',
renderer : this.renderer
}
)
)
apiComponent.passes.push(
new R3.D3.API.Pass.FXAA(
{
parent : this,
name : this.name + ' - FXAA Pass',
renderer : this.renderer
}
)
);
}
this.passes = apiComponent.passes;

View File

@ -10,22 +10,21 @@ R3.D3.API.Fog = function(
apiComponent
) {
__API_COMPONENT__;
__DEFINE_API_COMPONENT__;
if (R3.Utils.UndefinedOrNull(apiComponent.color)) {
apiComponent.color = new R3.API.Color(
apiComponent.fogColor = new R3.API.Color(
{
parent : this,
register : true,
name : this.name + ' - Color',
r : 1,
g : 1,
b : 1,
a : 1
r : 0,
g : 0.129,
b : 0.184
}
);
}
this.color = apiComponent.color;
this.fogColor = apiComponent.fogColor;
};

View File

@ -10,16 +10,22 @@ R3.D3.API.Fog.Exp = function(
apiComponent
) {
R3.D3.API.Fog.call(
this,
apiComponent
);
__API_COMPONENT__;
if (R3.Utils.UndefinedOrNull(apiComponent.density)) {
apiComponent.density = 0.00025;
}
this.density = apiComponent.density;
this.guiInfo.density = {
range: [0, 0.001],
step: 0.00001,
dp: 5
};
R3.D3.API.Fog.call(
this,
apiComponent
);
};
R3.D3.API.Fog.Exp.prototype = Object.create(R3.D3.API.Fog.prototype);

View File

@ -11,20 +11,32 @@ R3.D3.API.Fog.Normal = function(
apiComponent
) {
R3.D3.API.Fog.call(
this,
apiComponent
);
__API_COMPONENT__
if (R3.Utils.UndefinedOrNull(apiComponent.near)) {
apiComponent.near = 1;
}
this.near = apiComponent.near;
this.guiInfo.near = {
range: [0, 100],
step: 0.1,
dp: 1
};
if (R3.Utils.UndefinedOrNull(apiComponent.far)) {
apiComponent.far = 1000;
apiComponent.far = 50;
}
this.far = apiComponent.far;
this.guiInfo.far = {
range: [0, 1000],
step: 1,
dp: 0
};
R3.D3.API.Fog.call(
this,
apiComponent
);
};

View File

@ -13,7 +13,7 @@ R3.D3.API.Pass = function(
apiComponent
) {
__API_COMPONENT__;
__DEFINE_API_COMPONENT__;
if (R3.Utils.UndefinedOrNull(apiComponent.enabled)) {
apiComponent.enabled = true;

View File

@ -4,7 +4,6 @@
*
* @property autoUpdateSize
* @property renderer
* @property viewport
* @property size
* @property strength
* @property radius
@ -16,10 +15,7 @@ R3.D3.API.Pass.Bloom = function(
apiComponent
) {
R3.D3.API.Pass.call(
this,
apiComponent
);
__API_COMPONENT__;
if (R3.Utils.UndefinedOrNull(apiComponent.autoUpdateSize)) {
apiComponent.autoUpdateSize = true;
@ -27,15 +23,10 @@ R3.D3.API.Pass.Bloom = function(
this.autoUpdateSize = apiComponent.autoUpdateSize;
if (R3.Utils.UndefinedOrNull(apiComponent.renderer)) {
apiComponent.renderer = this.getFirstParent(R3.API.Renderer.D3);
apiComponent.renderer = null;
}
this.renderer = apiComponent.renderer;
if (R3.Utils.UndefinedOrNull(apiComponent.viewport)) {
apiComponent.viewport = this.getFirstParent(R3.D3.API.Viewport);
}
this.viewport = apiComponent.viewport;
/**
* We don't update the size of this component if autoUpdateSize is set until runtime - since the components
* could still be loading
@ -54,19 +45,40 @@ R3.D3.API.Pass.Bloom = function(
this.size = apiComponent.size;
if (R3.Utils.UndefinedOrNull(apiComponent.strength)) {
apiComponent.strength = 1.5;
apiComponent.strength = 1.097;
}
this.strength = apiComponent.strength;
this.guiInfo.strength = {
range: [0, 5],
step: 0.001,
dp: 3
};
if (R3.Utils.UndefinedOrNull(apiComponent.radius)) {
apiComponent.radius = 0.4;
apiComponent.radius = 1.817;
}
this.radius = apiComponent.radius;
this.guiInfo.radius = {
range: [0, 5],
step: 0.001,
dp: 3
};
if (R3.Utils.UndefinedOrNull(apiComponent.threshold)) {
apiComponent.threshold = 0.85;
apiComponent.threshold = 0.5;
}
this.threshold = apiComponent.threshold;
this.guiInfo.threshold = {
range: [0, 1],
step: 0.0001,
dp: 4
};
R3.D3.API.Pass.call(
this,
apiComponent
);
};

View File

@ -7,13 +7,7 @@ R3.D3.API.Pass.Copy = function(
apiComponent
) {
/**
* Normally - copy pass is the last pass to be in a composer pass list and renders to the canvas (if renderTargetA
* is current render target)
*/
if (R3.Utils.UndefinedOrNull(apiComponent)) {
apiComponent = {};
}
__API_COMPONENT__;
if (R3.Utils.UndefinedOrNull(apiComponent.renderToScreen)) {
apiComponent.renderToScreen = true;

View File

@ -4,7 +4,6 @@
*
* @property autoUpdateSize
* @property renderer - we need a handle on the renderer to get the size of this pass (if autoUpdateSize is enabled)
* @property viewport
* @property width
* @property height
*
@ -14,10 +13,7 @@ R3.D3.API.Pass.FXAA = function(
apiComponent
) {
R3.D3.API.Pass.call(
this,
apiComponent
);
__API_COMPONENT__;
if (R3.Utils.UndefinedOrNull(apiComponent.autoUpdateSize)) {
apiComponent.autoUpdateSize = true;
@ -25,15 +21,10 @@ R3.D3.API.Pass.FXAA = function(
this.autoUpdateSize = apiComponent.autoUpdateSize;
if (R3.Utils.UndefinedOrNull(apiComponent.renderer)) {
apiComponent.renderer = this.getFirstParent(R3.API.Renderer.D3);
apiComponent.renderer = null;
}
this.renderer = apiComponent.renderer;
if (R3.Utils.UndefinedOrNull(apiComponent.viewport)) {
apiComponent.viewport = this.getFirstParent(R3.D3.API.Viewport);
}
this.viewport = apiComponent.viewport;
/**
* We don't update the size of this component if autoUpdateSize is set until runtime - since the components
* could still be loading
@ -49,6 +40,11 @@ R3.D3.API.Pass.FXAA = function(
}
this.height = apiComponent.height;
R3.D3.API.Pass.call(
this,
apiComponent
);
};
R3.D3.API.Pass.FXAA.prototype = Object.create(R3.D3.API.Pass.prototype);

View File

@ -11,32 +11,29 @@ R3.D3.API.Pass.Render = function(
apiComponent
) {
__API_COMPONENT__;
if (R3.Utils.UndefinedOrNull(apiComponent.scene)) {
apiComponent.scene = null;
}
this.scene = apiComponent.scene;
if (R3.Utils.UndefinedOrNull(apiComponent.camera)) {
apiComponent.camera = null;
}
this.camera = apiComponent.camera;
if (R3.Utils.UndefinedOrNull(apiComponent.clear)) {
apiComponent.clear = true;
}
this.clear = apiComponent.clear;
R3.D3.API.Pass.call(
this,
apiComponent
);
if (R3.Utils.UndefinedOrNull(apiComponent.scene)) {
apiComponent.scene = this.getFirstParent(R3.D3.API.Scene);
}
this.scene = apiComponent.scene;
if (R3.Utils.UndefinedOrNull(apiComponent.camera)) {
R3.Event.Emit(
R3.Event.GET_PROJECT,
null,
function(project){
apiComponent.camera = project.cameras[project.applicationMode];
}
);
if (R3.Utils.UndefinedOrNull(apiComponent.camera)) {
throw new Error('could not get valid camera');
}
}
this.camera = apiComponent.camera;
};
R3.D3.API.Pass.Render.prototype = Object.create(R3.D3.API.Pass.prototype);

View File

@ -17,10 +17,7 @@ R3.D3.API.Pass.Render.SSAO = function(
apiComponent
) {
R3.D3.API.Pass.Render.call(
this,
apiComponent
);
__API_COMPONENT__;
if (R3.Utils.UndefinedOrNull(apiComponent.autoUpdateSize)) {
apiComponent.autoUpdateSize = true;
@ -32,11 +29,6 @@ R3.D3.API.Pass.Render.SSAO = function(
}
this.renderer = apiComponent.renderer;
if (R3.Utils.UndefinedOrNull(apiComponent.viewport)) {
apiComponent.viewport = this.getFirstParent(R3.D3.API.Viewport);
}
this.viewport = apiComponent.viewport;
/**
* We don't update the size of this component if autoUpdateSize is set until runtime - since the components
* could still be loading
@ -73,6 +65,12 @@ R3.D3.API.Pass.Render.SSAO = function(
apiComponent.lumInfluence = 0.7;
}
this.lumInfluence = apiComponent.lumInfluence;
R3.D3.API.Pass.Render.call(
this,
apiComponent
);
};
R3.D3.API.Pass.Render.SSAO.prototype = Object.create(R3.D3.API.Pass.Render.prototype);

View File

@ -38,16 +38,6 @@ R3.D3.API.Scene = function(
}
this.lights = apiComponent.lights;
if (R3.Utils.UndefinedOrNull(apiComponent.textures)) {
apiComponent.textures = [];
}
this.textures = apiComponent.textures;
if (R3.Utils.UndefinedOrNull(apiComponent.materials)) {
apiComponent.materials = [];
}
this.materials = apiComponent.materials;
if (R3.Utils.UndefinedOrNull(apiComponent.fog)) {
apiComponent.fog = new R3.D3.API.Fog.Normal(
{
@ -69,9 +59,14 @@ R3.D3.API.Scene = function(
this.showAxis = apiComponent.showAxis;
if (R3.Utils.UndefinedOrNull(apiComponent.gridSize)) {
apiComponent.gridSize = 10;
apiComponent.gridSize = 45;
}
this.gridSize = apiComponent.gridSize;
this.guiInfo.gridSize = {
range: [0, 100],
step: 1,
dp: 0
};
if (R3.Utils.UndefinedOrNull(apiComponent.gridColor)) {
apiComponent.gridColor = new R3.API.Color({
@ -100,36 +95,6 @@ R3.D3.API.Scene = function(
}
this.cubeCameras = apiComponent.cubeCameras;
if (R3.Utils.UndefinedOrNull(apiComponent.composer)) {
apiComponent.composer = new R3.D3.API.Composer(
{
parent : this,
name : this.name + ' - Composer'
}
);
}
this.composer = apiComponent.composer;
if (R3.Utils.UndefinedOrNull(apiComponent.effect)) {
apiComponent.effect = new R3.D3.API.Effect(
{
parent : this,
name : this.name + ' - Effect'
}
);
}
this.effect = apiComponent.effect;
if (R3.Utils.UndefinedOrNull(apiComponent.enableComposer)) {
apiComponent.enableComposer = false;
}
this.enableComposer = apiComponent.enableComposer;
if (R3.Utils.UndefinedOrNull(apiComponent.enableEffect)) {
apiComponent.enableEffect = false;
}
this.enableEffect = apiComponent.enableEffect;
/**
* By default scenes have no viewport so they are able to render outside of viewports (svg rendering, rendertargets, etc)
* But if they do the renderer system will pick it up and render them in their appropriate viewport

View File

@ -24,34 +24,41 @@ R3.D3.API.Viewport = function(
apiComponent.x = 0;
}
this.x = apiComponent.x;
this.guiInfo.x = {
range: [-1, 1],
step: 0.0001,
dp: 4
};
if (R3.Utils.UndefinedOrNull(apiComponent.y)) {
apiComponent.y = 0;
}
this.y = apiComponent.y;
this.guiInfo.y = {
range: [-1, 1],
step: 0.0001,
dp: 4
};
if (R3.Utils.UndefinedOrNull(apiComponent.width)) {
apiComponent.width = 1;
}
this.width = apiComponent.width;
this.guiInfo.width = {
range: [0, 1],
step: 0.0001,
dp: 4
};
if (R3.Utils.UndefinedOrNull(apiComponent.height)) {
apiComponent.height = 1;
}
this.height = apiComponent.height;
if (R3.Utils.UndefinedOrNull(apiComponent.offset)) {
apiComponent.offset = new R3.API.Vector2(
{
name : this.name + 'Offset',
parent : this,
register : true,
x : 0,
y : 0
}
);
}
this.offset = apiComponent.offset;
this.guiInfo.height = {
range: [0, 1],
step: 0.0001,
dp: 4
};
};

View File

@ -21,6 +21,11 @@ R3.D3.API.Viewport.FixedAspect = function(
apiComponent.aspectRatio = R3.D3.API.Viewport.ASPECT_RATIO_1_1;
}
this.aspectRatio = apiComponent.aspectRatio;
this.guiInfo.aspectRatio = {
range: [0, 4],
step: 0.0001,
dp: 4
};
R3.D3.API.Viewport.call(
this,

View File

@ -9,6 +9,13 @@ R3.D3.Composer = function(
__RUNTIME_COMPONENT__;
this.linkedComponents.renderer = R3.Renderer.D3;
this.linkedComponents.rendererTarget = R3.D3.RenderTarget;
this.linkedComponents.rendererTargetA = R3.D3.RenderTarget;
this.linkedComponents.rendererTargetB = R3.D3.RenderTarget;
this.linkedComponents.passes = [R3.D3.Pass];
this.linkedComponents.camera = R3.D3.Camera;
__UPGRADE_TO_RUNTIME__;
};
@ -17,20 +24,10 @@ R3.D3.Composer.prototype.constructor = R3.D3.Composer;
R3.D3.Composer.prototype.createInstance = function() {
this.setSize();
/**
* Right - now we should have the right size of the composer - we can continue
*/
this.instance = this.graphics.Composer(
renderer,
null,
this.passes,
{
width : size.width,
height : size.height
}
);
this.instance = this.graphics.Composer(this);
__CREATE_INSTANCE__;
};
@ -41,12 +38,11 @@ R3.D3.Composer.prototype.createInstance = function() {
*/
R3.D3.Composer.prototype.updateInstance = function(property) {
if (
property === 'width' ||
property === 'height'
) {
this.graphics.updateInstance(this, 'size');
if (property === 'size') {
this.instance.setSize(
this.size.x,
this.size.y
);
return;
}
@ -73,26 +69,6 @@ R3.D3.Composer.prototype.updateInstance = function(property) {
__UPDATE_INSTANCE__;
};
/**
* Convenience function to set size
*/
R3.D3.Composer.prototype.setSize = function() {
if (R3.Utils.Unloaded(this.renderer)) {
throw new Error('R3.D3.Composer.prototype.renderer not loaded at time of R3.D3.Composer.prototype.setSize');
}
if (R3.Utils.Unloaded(this.viewport)) {
throw new Error('R3.D3.Composer.prototype.viewport not loaded at time of R3.D3.Composer.prototype.setSize');
}
var size = this.renderer.getSize(this.viewport);
this.width = size.width;
this.height = size.height;
};
/**
* Convenience function to render
*/

View File

@ -17,7 +17,7 @@ R3.D3.Fog.prototype.constructor = R3.D3.Fog;
R3.D3.Fog.prototype.updateInstance = function(property) {
if (property === 'color') {
if (property === 'fogColor') {
this.graphics.updateInstance(this, property);
return;
}

View File

@ -396,38 +396,38 @@ R3.D3.Mesh.prototype.applyPositionRotationScale = function() {
* Gets all children components of this Mesh (all linked objects only - no object references i.e. string ids)
* @returns {Array}
*/
R3.D3.Mesh.prototype.getChildrenComponents = function() {
var children = R3.Component.prototype.getChildrenComponents.call(this);
/**
* Push RigidBodies
*/
R3.EntityManager.Instance.queryComponents(R3.Component.RIGID_BODY).map(
function(rigidBody) {
if (rigidBody.parentMesh === this) {
R3.Utils.PushUnique(children, rigidBody);
}
}.bind(this)
);
/**
* Push Shapes
*/
R3.EntityManager.Instance.queryComponents(R3.Component.SHAPE).map(
function(shape) {
if (shape.parentMesh === this) {
R3.Utils.PushUnique(children, shape);
}
}.bind(this)
);
return children;
};
// R3.D3.Mesh.prototype.getChildrenComponents = function() {
//
// var children = R3.Component.prototype.getChildrenComponents.call(this);
//
// /**
// * Push RigidBodies
// */
// R3.EntityManager.Instance.queryComponents(R3.Component.RIGID_BODY).map(
// function(rigidBody) {
//
// if (rigidBody.parentMesh === this) {
// R3.Utils.PushUnique(children, rigidBody);
// }
//
// }.bind(this)
// );
//
// /**
// * Push Shapes
// */
// R3.EntityManager.Instance.queryComponents(R3.Component.SHAPE).map(
// function(shape) {
//
// if (shape.parentMesh === this) {
// R3.Utils.PushUnique(children, shape);
// }
//
// }.bind(this)
// );
//
// return children;
// };
/**
* Convenience function for creating a helper for this Mesh - should be called from Systems only

View File

@ -7,12 +7,7 @@ R3.D3.Pass = function(
inherited
) {
/**
* This class is intended to be inherited only
*/
if (R3.Utils.UndefinedOrNull(inherited)) {
throw new Error('This class can only be inherited');
}
__INHERIT_ONLY__;
__UPGRADE_TO_RUNTIME__;

View File

@ -9,6 +9,8 @@ R3.D3.Pass.Bloom = function(
__RUNTIME_COMPONENT__;
this.linkedComponents.renderer = R3.Renderer.D3;
R3.D3.Pass.call(this, true);
};
@ -21,27 +23,7 @@ R3.D3.Pass.Bloom.prototype.constructor = R3.D3.Pass.Bloom;
*/
R3.D3.Pass.Bloom.prototype.createInstance = function() {
if (this.autoUpdateSize) {
if (R3.Utils.Unloaded(this.renderer)) {
throw new Error('Renderer not loaded but R3.D3.Pass.Bloom.prototype.autoUpdateSize is set - problem with storage or linking system');
}
if (R3.Utils.Unloaded(this.viewport)) {
throw new Error('Viewport not loaded but R3.D3.Pass.Bloom.prototype.autoUpdateSize is set - problem with storage or linking system');
}
this.setSize();
}
this.instance = new this.graphics.PassBloom(
this.size,
this.strength,
this.radius,
this.threshold
);
this.instance = new this.graphics.PassBloom(this);
R3.D3.Pass.prototype.createInstance.call(this);
@ -51,36 +33,41 @@ R3.D3.Pass.Bloom.prototype.createInstance = function() {
* Update Pass.Bloom instance
*/
R3.D3.Pass.Bloom.prototype.updateInstance = function(property) {
if (
property === 'autoUpdateSize' ||
property === 'renderer' ||
property === 'viewport'
) {
if (this.autoUpdateSize) {
this.setSize();
this.graphics.updateInstance(this, 'size');
return;
}
return;
}
//
// if (
// property === 'autoUpdateSize' ||
// property === 'renderer' ||
// property === 'viewport'
//
// ) {
//
// if (this.autoUpdateSize) {
//
// this.setSize();
//
// this.graphics.updateInstance(this, 'size');
//
// return;
//
// }
//
// return;
//
// }
if (property === 'size') {
if (this.autoUpdateSize) {
console.warn('Modifying the width and height while R3.D3.Pass.Bloom.prototype.autoUpdateSize is set has no effect');
return;
}
// if (this.autoUpdateSize) {
// console.warn('Modifying the width and height while R3.D3.Pass.Bloom.prototype.autoUpdateSize is set has no effect');
// return;
// }
this.graphics.updateInstance(this, 'size');
//this.graphics.updateInstance(this, 'size');
this.instance.setSize(
this.size.x,
this.size.y
);
return;
}
@ -101,21 +88,21 @@ R3.D3.Pass.Bloom.prototype.updateInstance = function(property) {
/**
* Convenience function to set size
*/
R3.D3.Pass.Bloom.prototype.setSize = function() {
if (R3.Utils.Unloaded(this.renderer)) {
console.warn('R3.D3.Pass.Render.Bloom.prototype.renderer unloaded');
return;
}
if (R3.Utils.Unloaded(this.viewport)) {
console.warn('R3.D3.Pass.Render.Bloom.prototype.viewport unloaded');
return;
}
var size = this.renderer.getSize(this.viewport);
this.size.x = size.width;
this.size.y = size.height;
};
// R3.D3.Pass.Bloom.prototype.setSize = function() {
//
// if (R3.Utils.Unloaded(this.renderer)) {
// console.warn('R3.D3.Pass.Render.Bloom.prototype.renderer unloaded');
// return;
// }
//
// if (R3.Utils.Unloaded(this.viewport)) {
// console.warn('R3.D3.Pass.Render.Bloom.prototype.viewport unloaded');
// return;
// }
//
// var size = this.renderer.getSize(this.viewport);
//
// this.size.x = size.width;
// this.size.y = size.height;
//
// };

View File

@ -22,6 +22,8 @@ R3.D3.Pass.Copy.prototype.constructor = R3.D3.Pass.Copy;
*/
R3.D3.Pass.Copy.prototype.createInstance = function() {
this.instance = this.graphics.PassCopy();
R3.D3.Pass.prototype.createInstance.call(this);
};

View File

@ -9,6 +9,8 @@ R3.D3.Pass.FXAA = function(
__RUNTIME_COMPONENT__;
this.linkedComponents.renderer = R3.Renderer.D3;
R3.D3.Pass.call(this, true);
};
@ -22,16 +24,13 @@ R3.D3.Pass.FXAA.prototype.constructor = R3.D3.Pass.FXAA;
*/
R3.D3.Pass.FXAA.prototype.createInstance = function() {
if (this.autoUpdateSize) {
// if (this.autoUpdateSize) {
//
// this.setSize();
//
// }
this.setSize();
}
this.instance = this.graphics.PassFXAA(
this.width,
this.height
);
this.instance = this.graphics.PassFXAA(this);
R3.D3.Pass.prototype.createInstance.call(this);
@ -42,38 +41,44 @@ R3.D3.Pass.FXAA.prototype.createInstance = function() {
*/
R3.D3.Pass.FXAA.prototype.updateInstance = function(property) {
if (
property === 'autoUpdateSize' ||
property === 'renderer' ||
property === 'viewport'
) {
if (this.autoUpdateSize) {
this.setSize();
this.graphics.updateInstance(this, 'size');
return;
}
return;
}
// if (
// property === 'autoUpdateSize' ||
// property === 'renderer' ||
// property === 'viewport'
//
// ) {
//
// if (this.autoUpdateSize) {
//
// this.setSize();
//
// this.graphics.updateInstance(this, 'size');
//
// return;
//
// }
//
// return;
//
// }
if (
property === 'width' ||
property === 'height'
property === 'height' ||
property === 'size'
) {
if (this.autoUpdateSize) {
console.warn('Modifying the width and height while R3.D3.Pass.FXAA.prototype.autoUpdateSize is set has no effect');
return;
}
// if (this.autoUpdateSize) {
// console.warn('Modifying the width and height while R3.D3.Pass.FXAA.prototype.autoUpdateSize is set has no effect');
// return;
// }
this.graphics.updateInstance(this, 'size');
this.instance.uniforms['resolution'].value.set(
1 / this.width,
1 / this.height
);
//this.graphics.updateInstance(this, 'size');
return;
}
@ -85,22 +90,22 @@ R3.D3.Pass.FXAA.prototype.updateInstance = function(property) {
/**
* Convenience function to set size
*/
R3.D3.Pass.FXAA.prototype.setSize = function() {
if (R3.Utils.Unloaded(this.renderer)) {
console.warn('R3.D3.Pass.Render.FXAA.prototype.renderer unloaded');
return;
}
if (R3.Utils.Unloaded(this.viewport)) {
console.warn('R3.D3.Pass.Render.FXAA.prototype.viewport unloaded');
return;
}
var size = this.renderer.getSize(this.viewport);
this.width = size.width;
this.height = size.height;
};
// R3.D3.Pass.FXAA.prototype.setSize = function() {
//
// // if (R3.Utils.Unloaded(this.renderer)) {
// // console.warn('R3.D3.Pass.Render.FXAA.prototype.renderer unloaded');
// // return;
// // }
// //
// // if (R3.Utils.Unloaded(this.viewport)) {
// // console.warn('R3.D3.Pass.Render.FXAA.prototype.viewport unloaded');
// // return;
// // }
// //
// // var size = this.renderer.getSize(this.viewport);
//
// this.width = size.width;
// this.height = size.height;
//
// };
//

View File

@ -9,13 +9,15 @@ R3.D3.Pass.Render = function(
inherited
) {
if (R3.Utils.UndefinedOrNull(inherited)) {
__INHERIT_AND_INSTANTIATE__;
__RUNTIME_COMPONENT__;
this.linkedComponents.scene = R3.D3.Scene;
this.linkedComponents.camera = R3.D3.Camera;
}
R3.D3.Pass.call(this, true);
R3.D3.Pass.call(
this,
true
);
};
@ -36,10 +38,7 @@ R3.D3.Pass.Render.prototype.createInstance = function() {
throw new Error('R3.D3.Pass.Render.prototype.camera not ready - loading or linking error');
}
this.instance = this.graphics.PassRender(
this.scene,
this.camera
);
this.instance = this.graphics.PassRender(this);
R3.D3.Pass.prototype.createInstance.call(this);
};

View File

@ -11,11 +11,8 @@ R3.D3.Scene = function(
this.linkedComponents.meshes = [R3.D3.Mesh];
this.linkedComponents.lights = [R3.D3.Light];
this.linkedComponents.textures = [R3.D3.Texture];
this.linkedComponents.materials = [R3.D3.Material];
this.linkedComponents.fog = R3.D3.Fog;
this.linkedComponents.viewports = [R3.D3.Viewport];
this.linkedComponents.camera = R3.D3.Camera;
this.linkedComponents.fog = R3.D3.Fog;
this.helpers = [];
@ -286,6 +283,10 @@ R3.D3.Scene.prototype.drawGrid = function() {
for (var y = -this.gridSize; y <= this.gridSize; y += 1) {
if (y === 0) {
continue;
}
var Xgeometry = new THREE.Geometry();
Xgeometry.vertices.push(
new THREE.Vector3( y, 0, this.gridSize * -1 ),
@ -328,6 +329,10 @@ R3.D3.Scene.prototype.drawAxis = function() {
color: 0xff0000,
linewidth: 2
});
var Xmaterial2 = new THREE.LineBasicMaterial({
color: 0x440000,
linewidth: 2
});
var Xgeometry = new THREE.Geometry();
Xgeometry.vertices.push(
@ -335,33 +340,56 @@ R3.D3.Scene.prototype.drawAxis = function() {
new THREE.Vector3( 100, 0, 0 )
);
var Xgeometry2 = new THREE.Geometry();
Xgeometry2.vertices.push(
new THREE.Vector3( 0, 0, 0 ),
new THREE.Vector3( -100, 0, 0 )
);
var lineX = new THREE.Line(Xgeometry, Xmaterial);
this.instance.add(lineX);
this.axis.push(lineX);
lineX = new THREE.Line(Xgeometry2, Xmaterial2);
this.instance.add(lineX);
this.axis.push(lineX);
var Ymaterial = new THREE.LineBasicMaterial({
color: 0x00ff00,
linewidth: 2
});
// var Ymaterial2 = new THREE.LineBasicMaterial({
// color: 0x008800,
// linewidth: 2
// });
var Ygeometry = new THREE.Geometry();
Ygeometry.vertices.push(
new THREE.Vector3( 0, 0, 0 ),
new THREE.Vector3( 0, 100, 0 )
);
// var Ygeometry2 = new THREE.Geometry();
// Ygeometry2.vertices.push(
// new THREE.Vector3( 0, 0, 0 ),
// new THREE.Vector3( 0, -100, 0 )
// );
var lineY = new THREE.Line(Ygeometry, Ymaterial);
this.instance.add(lineY);
this.axis.push(lineY);
// lineY = new THREE.Line(Ygeometry2, Ymaterial2);
// this.instance.add(lineY);
// this.axis.push(lineY);
var Zmaterial = new THREE.LineBasicMaterial({
color: 0x0000ff,
linewidth: 2
});
var Zmaterial2 = new THREE.LineBasicMaterial({
color: 0x000044,
linewidth: 2
});
var Zgeometry = new THREE.Geometry();
Zgeometry.vertices.push(
@ -369,10 +397,18 @@ R3.D3.Scene.prototype.drawAxis = function() {
new THREE.Vector3( 0, 0, 100 )
);
var Zgeometry2 = new THREE.Geometry();
Zgeometry2.vertices.push(
new THREE.Vector3( 0, 0, 0 ),
new THREE.Vector3( 0, 0, -100 )
);
var lineZ = new THREE.Line(Zgeometry, Zmaterial);
this.instance.add(lineZ);
this.axis.push(lineZ);
lineZ = new THREE.Line(Zgeometry2, Zmaterial2);
this.instance.add(lineZ);
this.axis.push(lineZ);
};

View File

@ -25,16 +25,12 @@ R3.D3.Viewport.prototype.constructor = R3.D3.Viewport;
R3.D3.Viewport.prototype.updateInstance = function(property) {
if (property === 'x') {
this.instance.x = this.x + this.offset.x;
this.instance.x = this.x;
return;
}
if (property === 'y') {
this.instance.y = this.y + this.offset.y;
return;
}
if (property === 'offset') {
this.instance.y = this.y;
return;
}

View File

@ -25,6 +25,7 @@ R3.D3.Viewport.FixedAspect = function(
R3.D3.Viewport.FixedAspect.prototype = Object.create(R3.D3.Viewport.prototype);
R3.D3.Viewport.FixedAspect.prototype.constructor = R3.D3.Viewport.FixedAspect;
R3.D3.Viewport.FixedAspect.prototype.createInstance = function() {
this.calculateDimensions();
@ -196,7 +197,4 @@ R3.D3.Viewport.FixedAspect.prototype.calculateDimensions = function() {
this.x = 0;
}
this.x += this.offset.x;
this.y += this.offset.y;
};

View File

@ -177,18 +177,11 @@ R3.D3.Viewport.FixedAspect.VR.prototype.calculateDimensions = function() {
}
if (this.side === R3.D3.API.Viewport.FixedAspect.VR.VIEWPORT_RIGHT) {
this.offset.x = this.width / 2;
this.x += this.width / 2;
}
if (this.side === R3.D3.API.Viewport.FixedAspect.VR.VIEWPORT_LEFT) {
this.offset.x = -1 * (this.width / 2);
this.x -= this.width / 2;
}
this.x = this.x + this.offset.x;
this.y = this.y + this.offset.y;
/**
* Now we need to modify the x and width dimensions of this viewport
*/
console.log('vr viewport update');
};

View File

@ -108,7 +108,6 @@ R3.GUI.prototype.addPanel = function(component) {
return this.gui.addPanel(this, component);
};
R3.GUI.prototype.addNumber = function(panel, component, property) {
return this.gui.addNumber(this, panel, component, property);
};
@ -121,10 +120,19 @@ R3.GUI.prototype.addButton = function(panel, component, property) {
return this.gui.addButton(this, panel, component, property);
};
R3.GUI.prototype.addRange = function(panel, component, property) {
return this.gui.addRange(this, panel);
R3.GUI.prototype.addColor = function(panel, component, property) {
return this.gui.addColor(this, panel, component, property);
};
R3.GUI.prototype.addCheckbox = function(panel, component, property) {
return this.gui.addCheckbox(this, panel, component, property);
};
R3.GUI.prototype.addSelect = function(panel, component, property) {
return this.gui.addSelect(this, panel, component, property);
};
R3.GUI.prototype.addComponent = function(component) {
this.gui.addComponent(this, component);
};

View File

@ -27,6 +27,8 @@ R3.Project.D3 = function(
this.linkedComponents.mouse = R3.Mouse;
this.linkedComponents.raycaster = R3.D3.Raycaster;
this.linkedComponents.clock = R3.Clock;
this.linkedComponents.composer = R3.D3.Composer;
this.linkedComponents.effect = R3.D3.Effect;
R3.Project.call(
this,

View File

@ -0,0 +1,85 @@
/**
* R3.Query.UserDevices
* @param apiComponent
* @param inherited
* @constructor
*/
R3.Query.UserDevices = function(
apiComponent,
inherited
) {
__RUNTIME_COMPONENT__
R3.Query.call(
this,
true
);
};
R3.Query.UserDevices.prototype = Object.create(R3.Query.prototype);
R3.Query.UserDevices.prototype.constructor = R3.Query.UserDevices;
/**
* Updates the instance with the current state
*/
R3.Query.UserDevices.prototype.createInstance = function() {
this.instance = true;
__CREATE_INSTANCE__;
};
/**
* Updates the instance with the current state
*/
R3.Query.UserDevices.prototype.updateInstance = function(property) {
R3.Query.prototype.updateInstance.call(this, property);
};
R3.Query.UserDevices.prototype.parse = function(data) {
this.columns = [
{
type: 'string',
name: 'Name'
},
{
type: 'string',
name: 'Family Name'
},
{
type: 'string',
name: 'Host'
},
{
type: 'string',
name: 'DNS Suffix'
},
{
type: 'datetime',
name: 'Created'
},
];
this.rows = data.userDevices.reduce(
function(result, userDevice){
result.push(
[
userDevice.user.given_name,
userDevice.user.family_name,
userDevice.device.hostname,
userDevice.device.dns_suffix,
userDevice.created
]
)
return result;
},
[]
)
};

View File

@ -8,6 +8,8 @@ R3.Runtime.Coder.CodeMirror = function() {
this
);
this.editor = null;
this.createInstance();
};
@ -17,3 +19,17 @@ R3.Runtime.Coder.CodeMirror.prototype.constructor = R3.Runtime.Coder.CodeMirror;
R3.Runtime.Coder.CodeMirror.prototype.createInstance = function() {
this.instance = CodeMirror;
};
R3.Runtime.Coder.CodeMirror.prototype.launchEditor = function(
runtimeComponent,
property
) {
this.editor = CodeMirror.fromTextArea(myTextarea, {
lineNumbers: true
});
};
R3.Runtime.Coder.CodeMirror.prototype.closeEditor = function() {
this.editor.close();
};

View File

@ -34,7 +34,7 @@ R3.Runtime.Graphics.Pixi.prototype.Canvas = function(runtimeObject) {
instance.setAttribute('height', runtimeObject.height);
instance.setAttribute('style', 'left: ' + runtimeObject.offset.x + 'px;top: ' + runtimeObject.offset.y + 'px;width:' + runtimeObject.width + 'px;height:' + runtimeObject.height + 'px');
instance.setAttribute('style', 'width:' + runtimeObject.width + 'px;height:' + runtimeObject.height + 'px');
return instance;
};

View File

@ -34,7 +34,7 @@ R3.Runtime.Graphics.Three.prototype.Canvas = function(runtimeObject) {
instance.setAttribute('height', runtimeObject.height);
instance.setAttribute('style', 'left: ' + runtimeObject.offset.x + 'px;top: ' + runtimeObject.offset.y + 'px;width:' + runtimeObject.width + 'px;height:' + runtimeObject.height + 'px');
instance.setAttribute('style', 'width:' + runtimeObject.width + 'px;height:' + runtimeObject.height + 'px');
if (this.autoUpdateSize) {
/**
@ -595,41 +595,35 @@ R3.Runtime.Graphics.Three.prototype.RenderTarget = function(
};
R3.Runtime.Graphics.Three.prototype.Composer = function(
renderer,
renderTarget,
passes,
size
runtimeObject
) {
if (!renderer.instance) {
if (R3.Utils.Unloaded(runtimeObject.renderer)) {
throw new Error('no renderer instance');
}
var renderTargetInstance = undefined;
if (renderTarget && renderTarget.instance) {
renderTargetInstance;
if (R3.Utils.Loaded(runtimeObject.renderTarget)) {
renderTargetInstance = runtimeObject.renderTarget.instance;
}
var composer = new THREE.EffectComposer(
renderer.instance,
runtimeObject.renderer.instance,
renderTargetInstance
);
passes.map(
runtimeObject.passes.map(
function(pass) {
if (!pass.instance) {
throw new Error('Pass instance not set');
if (R3.Utils.Unloaded(pass)) {
throw new Error('Pass not loaded yet.');
}
composer.addPass(pass.instance);
}
);
composer.setSize(
size.width,
size.height
);
return composer;
};
R3.Runtime.Graphics.Three.prototype.Renderer3D = function(runtimeObject){
@ -714,14 +708,14 @@ R3.Runtime.Graphics.Three.prototype.Face = function(
R3.Runtime.Graphics.Three.prototype.FogExp = function(runtimeObject) {
return new THREE.FogExp2(
runtimeObject.color.toHex(),
runtimeObject.fogColor.toHex(),
runtimeObject.density
);
};
R3.Runtime.Graphics.Three.prototype.Fog = function(runtimeObject) {
return new THREE.Fog(
runtimeObject.color.toHex(),
runtimeObject.fogColor.toHex(),
runtimeObject.near,
runtimeObject.far
);
@ -760,31 +754,32 @@ R3.Runtime.Graphics.Three.prototype.Sphere = function(
);
};
R3.Runtime.Graphics.Three.prototype.PassFXAA = function (
width,
height
) {
R3.Runtime.Graphics.Three.prototype.PassFXAA = function (runtimeObject) {
var instance = new THREE.ShaderPass(THREE.FXAAShader);
instance.uniforms['resolution'].value.set(
1 / width,
1 / height
1 / runtimeObject.width,
1 / runtimeObject.height
);
// instance.renderToScreen = this.renderToScreen;
//
// instance.enabled = this.enabled;
//
// instance.clear = this.clear;
//
// instance.needsSwap = this.needsSwap;
return instance;
};
R3.Runtime.Graphics.Three.prototype.PassBloom = function (
size,
strength,
radius,
threshold
) {
return new THREE.BloomPass(
size.instance,
strength,
radius,
threshold
R3.Runtime.Graphics.Three.prototype.PassBloom = function (runtimeObject) {
return new THREE.UnrealBloomPass(
runtimeObject.size.instance,
runtimeObject.strength,
runtimeObject.radius,
runtimeObject.threshold
);
};
@ -793,13 +788,10 @@ R3.Runtime.Graphics.Three.prototype.PassCopy = function () {
return new THREE.ShaderPass(THREE.CopyShader);
};
R3.Runtime.Graphics.Three.prototype.PassRender = function (
scene,
camera
) {
R3.Runtime.Graphics.Three.prototype.PassRender = function (runtimeObject) {
return new THREE.RenderPass(
scene.instance,
camera.instance
runtimeObject.scene.instance,
runtimeObject.camera.instance
);
};
@ -1813,14 +1805,14 @@ R3.Runtime.Graphics.Three.prototype.updateInstance = function (runtimeObject, pr
if (runtimeObject instanceof R3.D3.Fog) {
if (
property === 'color'
property === 'fogColor'
) {
runtimeObject.color.instance.setRGB(
runtimeObject.color.r,
runtimeObject.color.g,
runtimeObject.color.b
runtimeObject.fogColor.instance.setRGB(
runtimeObject.fogColor.r,
runtimeObject.fogColor.g,
runtimeObject.fogColor.b
);
instance.color = runtimeObject.color.instance;
instance.color = runtimeObject.fogColor.instance;
return;
}
@ -1907,8 +1899,8 @@ R3.Runtime.Graphics.Three.prototype.updateInstance = function (runtimeObject, pr
if (property === 'size') {
instance.setSize(
runtimeObject.width,
runtimeObject.height
runtimeObject.size.x,
runtimeObject.size.y
);
return;

View File

@ -17,7 +17,9 @@ R3.Runtime.GUI.ControlKit.prototype = Object.create(R3.Runtime.GUI.prototype);
R3.Runtime.GUI.ControlKit.prototype.constructor = R3.Runtime.GUI.ControlKit;
R3.Runtime.GUI.ControlKit.prototype.createInstance = function() {
return new ControlKit();
return new ControlKit({
panelsClosable : true
});
};
R3.Runtime.GUI.ControlKit.prototype.addComponent = function(gui, component) {
@ -46,7 +48,9 @@ R3.Runtime.GUI.ControlKit.prototype.addPanel = function(gui, name) {
return gui.instance.addPanel({
label : name,
width : 600,
fixed : false
fixed : false,
position : [0, 57],
align : 'right'
});
};
@ -54,8 +58,26 @@ R3.Runtime.GUI.ControlKit.prototype.addRamge = function(gui, panel) {
};
R3.Runtime.GUI.ControlKit.prototype.componentUpdate = function(component, property) {
return function() {
R3.Runtime.GUI.ControlKit.prototype.componentUpdate = function(obj, component, property) {
return function(index) {
if (obj.options && R3.Utils.Defined(index)) {
component[property] = obj.values[index];
} else if (component[property] instanceof R3.Color) {
component[property].fromHex(obj.color);
} else {
component[property] = obj.value;
}
/**
* The instance could have been destroyed already
*/
if (R3.Utils.UndefinedOrNull(component.instance)) {
console.warn('This GUI should be closed - the instance has alread been destroyed');
return;
}
/**
* Here we update the property that changed of the component
*/
@ -83,32 +105,123 @@ R3.Runtime.GUI.ControlKit.prototype.componentUpdate = function(component, proper
}
};
R3.Runtime.GUI.ControlKit.prototype.addColor = function(gui, panel, component, property) {
var obj = {
color : component[property].toHex()
};
var name = property.replace('Color','');
name = name.replace('color','');
panel.addColor(
obj,
'color',
{
colorMode : 'hex',
onChange : this.componentUpdate(obj, component, property),
label : name + ' color'
}
)
};
R3.Runtime.GUI.ControlKit.prototype.addSelect = function(gui, panel, component, property) {
var values = component.guiInfo[property].options.reduce(
function(result, option) {
result.push(option.value);
return result;
},
[]
);
var options = component.guiInfo[property].options.reduce(
function(result, option) {
result.push(option.name);
return result;
},
[]
);
var obj = {
options : options,
values : values,
value : options[values.indexOf(component[property])]
};
panel.addSelect(
obj,
'options',
{
onChange : this.componentUpdate(obj, component, property),
label : property,
target : 'value'
}
)
};
R3.Runtime.GUI.ControlKit.prototype.addNumber = function(gui, panel, component, property) {
component.range = this.range;
// component.range = this.range;
panel.addRange(
component,
'range'
);
panel.addSlider(
component,
property,
'range',
{
dp : 4,
onChange : this.componentUpdate(component, property),
onFinish : this.componentUpdate(component, property)
}
);
// var subgroup = null;
if (component.guiInfo && component.guiInfo[property]) {
//
// subgroup = panel.addSubGroup(
// {
// label : property
// }
// );
panel.addRange(
component.guiInfo[property],
'range',
{
label : property + ' range'
}
);
var obj = {
value : component[property],
range : component.guiInfo[property].range
};
panel.addSlider(
obj,
'value',
'range',
{
dp: component.guiInfo[property].dp,
onChange: this.componentUpdate(obj, component, property),
onFinish: this.componentUpdate(obj, component, property)
}
);
}
// var group = null;
//
// if (subgroup) {
// group = subgroup;
// } else {
// group = panel.getGroups()[panel.getGroups().length - 1];
// }
panel.addNumberOutput(
component,
property,
{
label : property + ' (read-only)',
dp : 4
}
);
};
R3.Runtime.GUI.ControlKit.prototype.addString = function(gui, panel, component, property) {
@ -118,10 +231,25 @@ R3.Runtime.GUI.ControlKit.prototype.addString = function(gui, panel, component,
);
};
R3.Runtime.GUI.ControlKit.prototype.addCheckbox = function(gui, panel, component, property) {
var obj = {
value : component[property]
};
panel.addCheckbox(
obj,
'value', {
onChange: this.componentUpdate(obj, component, property),
label : property
}
);
};
R3.Runtime.GUI.ControlKit.prototype.addButton = function(gui, panel, component, property) {
panel.addButton(
component,
property
property,
component[property].bind(component)
);
};

View File

@ -30,6 +30,7 @@ R3.System.GUI = function(options) {
this.beforeRenderSubscription = null;
this.removeComponentSubscription = null;
// this.faces = [];
//
@ -61,7 +62,6 @@ R3.System.GUI = function(options) {
R3.System.GUI.prototype = Object.create(R3.System.prototype);
R3.System.GUI.prototype.constructor = R3.System.GUI;
R3.System.GUI.prototype.start = function() {
this.guiCreatedSubscription = R3.Event.Subscribe(
@ -89,6 +89,11 @@ R3.System.GUI.prototype.start = function() {
this.beforeRender.bind(this)
);
this.removeComponentSubscription = R3.Event.Subscribe(
R3.Event.REMOVE_COMPONENT,
this.removeComponent.bind(this)
);
R3.System.prototype.start.call(this);
@ -151,7 +156,6 @@ R3.System.GUI.prototype.start = function() {
// };
R3.System.GUI.prototype.beforeRender = function() {
this.guis.map(
function(gui) {
if (typeof gui.instance.update === 'function') {
@ -159,6 +163,21 @@ R3.System.GUI.prototype.beforeRender = function() {
}
}
);
};
R3.System.GUI.prototype.removeComponent = function(data) {
this.guis.map(
function(gui) {
gui.instance._panels.map(
function(panel) {
if (panel._label === data.component.name) {
panel.getNode().getElement().parentElement.removeChild(panel.getNode().getElement())
}
}
)
}
);
};
@ -257,6 +276,9 @@ R3.System.GUI.prototype.guiRemoved = function(gui) {
*
* @param data
*/
/**
* clear GUI
*/
R3.System.GUI.prototype.clearGUI = function() {
this.guis.map(
function(gui) {
@ -265,7 +287,7 @@ R3.System.GUI.prototype.clearGUI = function() {
);
};
R3.System.GUI.prototype.buildGUI = function(__component) {
R3.System.GUI.prototype.buildGUI = function(component) {
this.guis.map(
function(gui) {
@ -275,44 +297,221 @@ R3.System.GUI.prototype.buildGUI = function(__component) {
*/
gui.clear();
var panel = gui.addPanel(__component.name);
var addComponent = function(group, component, property) {
if (
component.hasOwnProperty(property) ||
typeof component[property] === 'function'
) {
Object.keys(__component.idToObject).map(
function(id) {
if (
property === 'componentType' ||
property === 'register' ||
property === 'linked' ||
property === 'loaded' ||
property === 'selected'
) {
return;
}
var component = R3.EntityManager.Instance.findComponentById(id);
if (component.guiInfo && component.guiInfo[property] && component.guiInfo[property].options) {
gui.addSelect(group, component, property);
return;
}
var group = gui.addGroup(panel, component.name);
if (component[property] instanceof R3.Color) {
gui.addColor(group, component, property);
return;
}
Object.keys(component).map(
function(property) {
if (typeof component[property] === 'boolean') {
gui.addCheckbox(group, component, property);
return;
}
if (
property === 'id' ||
property === 'componentType'
) {
return;
if (typeof component[property] === 'number') {
gui.addNumber(group, component, property);
return;
}
if (typeof component[property] === 'string') {
gui.addString(group, component, property);
return;
}
if (typeof component[property] === 'function') {
gui.addButton(group, component, property);
return;
}
}
};
var panel = gui.addPanel(component.name);
gui.addGroup(panel, 'Main');
var traverseComponent = function(component) {
var properties = Object.keys(component);
properties.sort();
properties.splice(properties.indexOf('id'), 1);
properties.splice(properties.indexOf('name'), 1);
properties.unshift('name');
properties.unshift('id');
properties.map(
function(property) {
if (component.hasOwnProperty(property)) {
if (component.guiInfo && component.guiInfo.hasOwnProperty(property)) {
/**
* Skip properties in guiInfos - they need to go into subgroups
*/
return;
}
if (component.hasOwnProperty(property)) {
addComponent(panel, component, property);
}
}
);
if (typeof component[property] === 'number') {
gui.addNumber(group, component, property)
properties.map(
function(property) {
if (component.hasOwnProperty(property)) {
if (!(component.guiInfo && component.guiInfo.hasOwnProperty(property))) {
/**
* Skip properties *NOT* in guiInfos
*/
return;
}
var group = panel.addSubGroup(
{
label : property
}
);
addComponent(group, component, property);
}
}
);
};
if (typeof component[property] === 'string') {
gui.addString(group, component, property)
}
traverseComponent(component);
if (typeof component[property] === 'function') {
gui.addButton(group, component, property)
}
}
}
)
Object.keys(component.idToObject).map(
function(id) {
}
);
var _component = R3.EntityManager.Instance.findComponentById(id);
if (_component.id === component.id) {
return;
}
if (_component instanceof R3.Color) {
return;
}
gui.addGroup(panel, _component.name);
traverseComponent(_component);
}
);
var functions = [];
for (var fn in component) {
if (
typeof component[fn] === 'function') {
if (
// fn === 'clone' ||
fn === 'remove' ||
fn === 'save'
// fn === 'saveToRemoteAPI'
) {
functions.push(fn);
}
}
}
functions.sort();
var actions = gui.addGroup(panel, 'Actions');
functions.map(
function(fn) {
addComponent(actions, component, fn);
}
)
// var guiInfos = Object.keys(__component.guiInfo);
//
// var linkedObjects = Object.keys(__component.idToObject);
//
//
//
//
// .reduce(
// function(result, key) {
//
// var
//
// result.push(key);
// return result;
// },
// []
// );
//
// var numberGroup = panel.addGroup(
// {
// label : 'Numbers'
// }
// );
//
// var stringGroup = panel.addGroup(
// {
// label : 'Strings'
// }
// );
//
//
// var addComponent = function(group, component) {
// return function(property) {
// if (component.hasOwnProperty(property)) {
//
// if (typeof component[property] === 'number') {
// gui.addNumber(numberGroup, component, property)
// }
//
// if (typeof component[property] === 'string') {
// gui.addString(stringGroup, component, property)
// }
//
// if (typeof component[property] === 'function') {
// gui.addButton(group, component, property)
// }
// }
// };
// };
//
// Object.keys(__component).map(addComponent(panel, __component));
//
// Object.keys(__component.idToObject).map(
// function(id) {
//
// if (id === __component.id) {
// return;
// }
//
// var component = R3.EntityManager.Instance.findComponentById(id);
//
// var group = gui.addGroup(panel, component.name);
//
// Object.keys(component).map(addComponent(group, component));
// }
// );
}.bind(this)
);
@ -778,6 +977,8 @@ R3.System.GUI.prototype.stop = function() {
this.beforeRenderSubscription.remove();
this.removeComponentSubscription.remove();
R3.System.prototype.stop.call(this);
};

View File

@ -89,7 +89,7 @@ R3.System.Query.prototype.query = function(data) {
var xhr = new XMLHttpRequest();
xhr.open(
'POST',
query.httpMethod,
data.queryApiUrl + query.path
);

View File

@ -175,11 +175,13 @@ R3.System.Render.prototype.canvasResize = function(canvas) {
project.renderers.map(
function(renderer) {
if (renderer.canvas === canvas) {
renderer.viewports.map(
function(viewport) {
viewport.updateInstance('size');
}
)
if (renderer.viewports) {
renderer.viewports.map(
function (viewport) {
viewport.updateInstance('size');
}
)
}
}
}
)
@ -611,12 +613,19 @@ R3.System.Render.prototype.render = function() {
if (renderer.autoClear) {
resetAutoClear = true;
renderer.clear();
}
renderer.autoClear = false;
renderer.updateInstance('autoClear');
renderer.clear();
} else {
if (renderer.autoClear) {
renderer.clear();
}
}
renderer.viewports.map(
@ -628,11 +637,16 @@ R3.System.Render.prototype.render = function() {
return;
}
var actualSize = {
width : viewport.width * size.width,
height : viewport.height * size.height
};
renderer.instance.setViewport(
viewport.x * size.width,
viewport.y * size.height,
viewport.width * size.width,
viewport.height * size.height
actualSize.width,
actualSize.height
);
scenes.map(
@ -722,7 +736,6 @@ R3.System.Render.prototype.render = function() {
if (camera instanceof R3.D3.Camera.Perspective.Stereo) {
if (!viewport instanceof R3.D3.Viewport.FixedAspect.VR) {
console.warn('stereo cameras should work with VR viewports');
} else {
@ -781,22 +794,56 @@ R3.System.Render.prototype.render = function() {
//
// }
// if (scene.enableComposer) {
//
// if (!scene.composer) {
// console.warn('enabling a composer when no composer is specified on the scene has no effect');
// return;
// }
//
// if (!scene.composer.ready()) {
// console.warn('the composer is not ready yet: ' + scene.composer.name);
// }
//
// scene.composer.render();
//
// console.warn('todo: check if have to return from composer render here');
// //return;
// }
if (renderer.enableComposer) {
if (!project.composer) {
console.warn('enabling a composer when no composer is specified has no effect');
return;
}
if (!project.composer.ready()) {
console.warn('the composer is not ready yet: ' + project.composer.name);
}
// renderer.instance.setSize(
// actualSize.width,
// actualSize.height
// )
//
// project.composer.instance.setSize(
// actualSize.width,
// actualSize.height
// )
project.composer.size.x = actualSize.width;
project.composer.size.y = actualSize.height;
project.composer.updateInstance('size');
project.composer.passes.map(
function(pass) {
if (pass instanceof R3.D3.Pass.Render) {
pass.instance.camera = cameraInstance;
}
if (pass instanceof R3.D3.Pass.FXAA) {
pass.width = actualSize.width;
pass.height = actualSize.height;
pass.updateInstance('size');
}
if (pass instanceof R3.D3.Pass.Bloom) {
pass.size.x = actualSize.width;
pass.size.y = actualSize.height;
pass.updateInstance('size');
}
}
);
project.composer.render();
return;
}
if (renderer.target) {

View File

@ -16,11 +16,14 @@ R3.System.Storage = function() {
this.loadSubscription = null;
this.signInSubscription = null;
this.signOutSubscription = null;
this.saveSubscription = null;
this.savedSubscription = null;
this.savedErrorSubscription = null;
// this.otherDependencies = [];
// this.saveSubscription = null;
// this.loadImageSubscription = null;
// this.loadImageSubscription = null;
// this.blenderDataSubscription = null;
// this.imageUploadCompleteSubscription = null;
//
@ -48,10 +51,11 @@ R3.System.Storage.prototype.start = function() {
this.load.bind(this)
);
// this.saveSubscription = this.subscribe(
// R3.Event.SAVE_COMPONENT,
// this.save
// );
this.saveSubscription = R3.Event.Subscribe(
R3.Event.SAVE_COMPONENT,
this.save.bind(this)
);
//
// this.loadSubscription = this.subscribe(
// R3.Event.LOAD_COMPONENT,
@ -263,7 +267,89 @@ R3.System.Storage.prototype.delete = function(data) {
/**
* 'Saves' data to somewhere
*/
R3.System.Storage.prototype.save = function(data) {
R3.System.Storage.prototype.save = function(data, callback, errorCallback) {
var toSave = [];
var saved = [];
var failed = [];
if (this.savedSubscription || this.savedErrorSubscription) {
console.warn('another save is in progress');
return;
}
R3.Event.Emit(
R3.Event.SAVING,
{
component: this
}
);
this.savedSubscription = R3.Event.Subscribe(
R3.Event.COMPONENT_SAVED,
function(data) {
saved.push(data.component);
if (failed.length + saved.length === toSave.length) {
this.savedSubscription.remove();
this.savedSubscription = null;
this.savedErrorSubscription.remove();
this.savedErrorSubscription = null;
R3.Event.Emit(
R3.Event.DONE_SAVING,
{
failed: failed,
saved: saved
}
);
if (callback) {
callback(data);
}
}
}.bind(this)
);
this.savedErrorSubscription = R3.Event.Subscribe(
R3.Event.SAVE_COMPONENT_ERROR,
function(data) {
failed.push(data.component);
if (errorCallback) {
errorCallback(data);
}
if (failed.length + saved.length === toSave.length) {
this.savedSubscription.remove();
this.savedSubscription = null;
this.savedErrorSubscription.remove();
this.savedErrorSubscription = null;
R3.Event.Emit(
R3.Event.DONE_SAVING,
{
failed: failed,
saved: saved
}
)
}
}.bind(this)
);
var apiUrl = null;
var event = R3.Event.GET_API_URL;
@ -271,70 +357,103 @@ R3.System.Storage.prototype.save = function(data) {
event = R3.Event.GET_REMOTE_API_URL
}
this.emit(
R3.Event.Emit(
event,
null,
function(urlData) {
if (typeof XMLHttpRequest === 'undefined') {
console.log('Implement server side save here');
return;
}
apiUrl = urlData.apiUrl
}
);
var apiObjects = Object.keys(data.component.idToObject).reduce(
function(result, componentId) {
var component = R3.EntityManager.Instance.findComponentById(componentId);
var apiObject = component.toApiObject();
result.push(apiObject);
return result;
}.bind(this),
[]
);
if (typeof XMLHttpRequest === 'undefined') {
console.log('Implement server side save here');
return;
}
apiObjects.map(
function(apiObject) {
var xhr = new XMLHttpRequest();
xhr.open(
'POST',
urlData.apiUrl + '/component/create'
apiUrl + '/component/create'
);
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("x-authorization", urlData.passwoid);
xhr.setRequestHeader("x-api-authorization", apiAuthorization);
xhr.setRequestHeader('x-api-user-token', this.apiUserToken);
xhr.onreadystatechange = function() {
if (this.readyState === 4) {
try {
var response = JSON.parse(this.responseText)
} catch (error) {
R3.Event.Emit(
R3.Event.SAVE_COMPONENT_ERROR,
{
message: this.responseText,
component : data.apiObject
}
)
}
xhr.onload = function() {
try {
var response = JSON.parse(xhr.responseText);
} catch (error) {
R3.Event.Emit(
R3.Event.SAVE_COMPONENT_ERROR,
{
message: this.responseText,
component : apiObject
}
);
if (response.result === 'success') {
R3.Event.Emit(
R3.Event.COMPONENT_SAVED,
{
message: response.message || 'Successfully saved the component',
component : data.apiObject
}
)
} else {
R3.Event.Emit(
R3.Event.SAVE_COMPONENT_ERROR,
{
message: response.message || 'The server responded but failed to save the component',
component : data.apiObject
}
)
}
}
if (response.result === 'success') {
R3.Event.Emit(
R3.Event.COMPONENT_SAVED,
{
message: response.message || 'Successfully saved the component',
component : apiObject
}
);
} else {
R3.Event.Emit(
R3.Event.SAVE_COMPONENT_ERROR,
{
message: response.message || 'The server responded but failed to save the component',
component : apiObject
}
)
}
};
xhr.send(JSON.stringify({
component : data.apiObject,
session : this.token
}));
},
function error(error){
console.error(error);
var data = JSON.stringify(apiObject);
xhr.send(
{
component : data
}
);
}
);
};
R3.System.Storage.prototype.createRuntimeObject = function(responseText, clientErrorCallback) {
@ -1048,6 +1167,7 @@ R3.System.Storage.prototype.stop = function() {
this.signInSubscription.remove();
this.loadSubscription.remove();
this.signOutSubscription.remove();
this.saveSubscription.remove();
this.loaded = [];
this.failed = [];
@ -1055,13 +1175,12 @@ R3.System.Storage.prototype.stop = function() {
R3.System.prototype.stop.call(this);
// this.saveSubscription.remove();
// this.loadImageSubscription.remove();
// this.loadFontSubscription.remove();
// this.blenderDataSubscription.remove();
// this.imageUploadCompleteSubscription.remove();
// this.deleteSubscription.remove();
// this.fetchComponentTypesSubscription.remove();
// this.fetchComponentsSubscription.remove();
// this.blenderDataSubscription.remove();
// this.imageUploadCompleteSubscription.remove();
// this.deleteSubscription.remove();
// this.fetchComponentTypesSubscription.remove();
// this.fetchComponentsSubscription.remove();
};