├── .gitignore
├── .settings
├── launch.json
└── tasks.json
├── Gruntfile.js
├── LICENSE
├── README.md
├── car.png
├── compiled
├── parts-server
│ ├── file-fetcher.js
│ ├── file-fetcher.js.map
│ ├── parts-server.js
│ └── parts-server.js.map
├── scripts
│ ├── ldraw-visualizer.js
│ ├── ldraw-visualizer.js.map
│ ├── parser
│ │ ├── Color.js
│ │ ├── Color.js.map
│ │ ├── Coordinates.js
│ │ ├── Coordinates.js.map
│ │ ├── FileParser.js
│ │ ├── FileParser.js.map
│ │ ├── FileService.js
│ │ ├── FileService.js.map
│ │ ├── LdrawFile.js
│ │ ├── LdrawFile.js.map
│ │ └── lines
│ │ │ ├── CommentLine.js
│ │ │ ├── CommentLine.js.map
│ │ │ ├── LdrawFileLine.js
│ │ │ ├── LdrawFileLine.js.map
│ │ │ ├── LineLine.js
│ │ │ ├── LineLine.js.map
│ │ │ ├── LineTypes.js
│ │ │ ├── LineTypes.js.map
│ │ │ ├── OptionalLineLine.js
│ │ │ ├── OptionalLineLine.js.map
│ │ │ ├── QuadrilateralLine.js
│ │ │ ├── QuadrilateralLine.js.map
│ │ │ ├── SubFileReferenceLine.js
│ │ │ ├── SubFileReferenceLine.js.map
│ │ │ ├── TriangleLine.js
│ │ │ ├── TriangleLine.js.map
│ │ │ └── meta-lines
│ │ │ ├── AuthorMETALine.js
│ │ │ ├── AuthorMETALine.js.map
│ │ │ ├── ColourMETALine.js
│ │ │ ├── ColourMETALine.js.map
│ │ │ ├── FileMETALine.js
│ │ │ ├── FileMETALine.js.map
│ │ │ ├── LdrawOrgMETALine.js
│ │ │ ├── LdrawOrgMETALine.js.map
│ │ │ ├── METALine.js
│ │ │ ├── METALine.js.map
│ │ │ ├── NameMETALine.js
│ │ │ ├── NameMETALine.js.map
│ │ │ ├── NoFileMETALine.js
│ │ │ ├── NoFileMETALine.js.map
│ │ │ ├── PartDescription.js
│ │ │ ├── PartDescription.js.map
│ │ │ ├── RotationCenterMETALine.js
│ │ │ ├── RotationCenterMETALine.js.map
│ │ │ ├── RotationConfigMETALine.js
│ │ │ ├── RotationConfigMETALine.js.map
│ │ │ ├── RotationStepMETALine.js
│ │ │ ├── RotationStepMETALine.js.map
│ │ │ ├── StepMETALine.js
│ │ │ └── StepMETALine.js.map
│ ├── renderer
│ │ ├── ColorLookup.js
│ │ ├── ColorLookup.js.map
│ │ ├── EdgeMap.js
│ │ ├── EdgeMap.js.map
│ │ ├── LdrawFileRenderer.js
│ │ ├── LdrawFileRenderer.js.map
│ │ ├── Smoother.js
│ │ ├── Smoother.js.map
│ │ ├── VertexMapBase.js
│ │ ├── VertexMapBase.js.map
│ │ ├── VertexToFaceMap.js
│ │ ├── VertexToFaceMap.js.map
│ │ ├── VertexToLineMap.js
│ │ └── VertexToLineMap.js.map
│ ├── utility.js
│ └── utility.js.map
└── typings
│ ├── references.js
│ └── references.js.map
├── dist
├── favicon.ico
├── images
│ ├── Thumbs.db
│ ├── studlogo-old.png
│ └── studlogo.png
├── index.html
├── ldraw-visualizer-0.2.0.min.css
├── ldraw-visualizer-0.2.0.min.js
├── models
│ ├── 1st Place Robot Design Round 1.ldr
│ ├── 31018.mpd
│ ├── CAR.DAT
│ ├── Gearbox.ldr
│ └── Thumbs.db
└── server
│ └── parts-server
│ ├── file-fetcher.js
│ ├── file-fetcher.js.map
│ ├── parts-server.js
│ └── parts-server.js.map
├── favicon.ico
├── fll.png
├── gearbox.png
├── images
├── Thumbs.db
├── studlogo-old.png
└── studlogo.png
├── index.html
├── lib
├── jquery
│ └── jquery-2.1.4.min.js
└── threejs
│ ├── Detector.js
│ ├── OrbitControls.js
│ └── three.min.js
├── models
├── 1st Place Robot Design Round 1.ldr
├── 31018.mpd
├── CAR.DAT
├── Gearbox.ldr
├── Thumbs.db
├── test.ldr
└── test2.ldr
├── motorcycle.png
├── package.json
├── parts-server
├── file-fetcher.ts
└── parts-server.ts
├── scripts
├── ldraw-visualizer.ts
├── parser
│ ├── Color.ts
│ ├── Coordinates.ts
│ ├── FileParser.ts
│ ├── FileService.ts
│ ├── LdrawFile.ts
│ └── lines
│ │ ├── CommentLine.ts
│ │ ├── LdrawFileLine.ts
│ │ ├── LineLine.ts
│ │ ├── LineTypes.ts
│ │ ├── OptionalLineLine.ts
│ │ ├── QuadrilateralLine.ts
│ │ ├── SubFileReferenceLine.ts
│ │ ├── TriangleLine.ts
│ │ └── meta-lines
│ │ ├── AuthorMETALine.ts
│ │ ├── ColourMETALine.ts
│ │ ├── FileMETALine.ts
│ │ ├── LdrawOrgMETALine.ts
│ │ ├── NameMETALine.ts
│ │ ├── NoFileMETALine.ts
│ │ ├── PartDescription.ts
│ │ ├── RotationCenterMETALine.ts
│ │ ├── RotationConfigMETALine.ts
│ │ ├── RotationStepMETALine.ts
│ │ └── StepMETALine.ts
├── renderer
│ ├── ColorLookup.ts
│ ├── EdgeMap.ts
│ ├── LdrawFileRenderer.ts
│ ├── Smoother.ts
│ ├── VertexToFaceMap.ts
│ └── VertexToLineMap.ts
└── utility.ts
├── styles
├── ldraw-visualizer.css
├── ldraw-visualizer.css.map
└── ldraw-visualizer.less
├── test.html
├── tsconfig.json
└── typings
├── jquery
└── jquery.d.ts
├── node
└── node-0.11.d.ts
├── references.js
├── references.js.map
├── references.ts
├── threejs
├── detector.d.ts
├── three-canvasrenderer.d.ts
├── three-copyshader.d.ts
├── three-css3drenderer.d.ts
├── three-effectcomposer.d.ts
├── three-maskpass.d.ts
├── three-orbitcontrols.d.ts
├── three-projector.d.ts
├── three-renderpass.d.ts
├── three-shaderpass.d.ts
├── three-trackballcontrols.d.ts
└── three.d.ts
└── webrtc
├── MediaStream.d.ts
└── RTCPeerConnection.d.ts
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | LDraw
--------------------------------------------------------------------------------
/.settings/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "0.1.0",
3 | // List of configurations. Add new configurations or edit existing ones.
4 | // ONLY "node" and "mono" are supported, change "type" to switch.
5 | "configurations": [
6 | {
7 | // Name of configuration; appears in the launch configuration drop down menu.
8 | "name": "Launch parts-server",
9 | // Type of configuration. Possible values: "node", "mono".
10 | "type": "node",
11 | // Workspace relative or absolute path to the program.
12 | "program": "compiled/parts-server/parts-server.js",
13 | // Automatically stop program after launch.
14 | "stopOnEntry": true,
15 | // Command line arguments passed to the program.
16 | "args": [],
17 | // Workspace relative or absolute path to the working directory of the program being debugged. Default is the current workspace.
18 | "cwd": ".",
19 | // Workspace relative or absolute path to the runtime executable to be used. Default is the runtime executable on the PATH.
20 | "runtimeExecutable": null,
21 | // Optional arguments passed to the runtime executable.
22 | "runtimeArguments": [],
23 | // Environment variables passed to the program.
24 | "env": { },
25 | // Use JavaScript source maps (if they exist).
26 | "sourceMaps": false
27 | },
28 | {
29 | "name": "Attach",
30 | "type": "node",
31 | // TCP/IP address. Default is "localhost".
32 | "address": "localhost",
33 | // Port to attach to.
34 | "port": 5858,
35 | "sourceMaps": false
36 | }
37 | ]
38 | }
39 |
--------------------------------------------------------------------------------
/Gruntfile.js:
--------------------------------------------------------------------------------
1 | module.exports = function (grunt) {
2 |
3 | grunt.initConfig({
4 | pkg: grunt.file.readJSON('package.json'),
5 | dom_munger: {
6 | main: {
7 | options: {
8 | read: [
9 | { selector: 'link:not(.dom_munger-ignore)', attribute: 'href', writeto: 'cssRefs', isPath: true },
10 | { selector: 'script:not(.dom_munger-ignore)', attribute: 'src', writeto: 'jsRefs', isPath: true }
11 | ],
12 | remove: ['link:not(.dom_munger-ignore)', 'script:not(.dom_munger-ignore)', 'script.dom_munger-remove'],
13 | append: [
14 | { selector: 'head', html: '' },
15 | { selector: 'body', html: '' }
16 | ]
17 | },
18 | src: './index.html',
19 | dest: './dist/index.html'
20 | },
21 | },
22 | clean: ['./dist'],
23 | cssmin: {
24 | options: {
25 | shorthandCompacting: false,
26 | roundingPrecision: -1
27 | },
28 | target: {
29 | files: {
30 | './dist/ldraw-visualizer-<%= pkg.version %>.min.css': './styles/ldraw-visualizer.css'
31 | }
32 | }
33 | },
34 | htmlmin: {
35 | options: {
36 | removeComments: true,
37 | collapseWhitespace: true
38 | },
39 | files: {
40 | './dist/index.html': './dist/index.html'
41 | }
42 | },
43 | uglify: {
44 | options: {
45 | mangle: true
46 | },
47 | main: {
48 | src: '<%= dom_munger.data.jsRefs %>',
49 | dest: './dist/ldraw-visualizer-<%= pkg.version %>.min.js'
50 | }
51 | },
52 | less: {
53 | development: {
54 | options: {
55 | compress: true,
56 | optimization: 2,
57 | sourceMap: true,
58 | sourceMapFilename: "./styles/ldraw-visualizer.css.map",
59 | sourceMapBasepath: "./styles/"
60 | },
61 | files: {
62 | './styles/ldraw-visualizer.css': './styles/ldraw-visualizer.less'
63 | }
64 | }
65 | },
66 | copy: {
67 | main: {
68 | files: [
69 | {
70 | expand: true,
71 | src: ['./favicon.ico'],
72 | dest: './dist',
73 | filter: 'isFile'
74 | },
75 | {
76 | expand: true,
77 | src: ['./images/**'],
78 | dest: './dist'
79 | },
80 | {
81 | expand: true,
82 | src: ['./models/**'],
83 | dest: './dist'
84 | },
85 | {
86 | expand: true,
87 | src: ['./parts-server/**'],
88 | cwd: './compiled',
89 | dest: './dist/server/'
90 | }
91 | ]
92 | }
93 | },
94 | connect: {
95 | server: {
96 | options: {
97 | useAvailablePort: true,
98 | base: '.',
99 | open: true,
100 | appName: 'open'
101 | }
102 | }
103 | },
104 | watch: {
105 | options: {
106 | livereload: true
107 | },
108 | js: {
109 | files: ['./scripts/**/*.js', './styles/**/*.less', './**/*.html']
110 | }
111 | }
112 | });
113 |
114 | grunt.loadNpmTasks('grunt-contrib-less');
115 | grunt.loadNpmTasks('grunt-contrib-connect');
116 | grunt.loadNpmTasks('grunt-contrib-watch');
117 | grunt.loadNpmTasks('grunt-contrib-uglify');
118 | grunt.loadNpmTasks('grunt-contrib-cssmin');
119 | grunt.loadNpmTasks('grunt-contrib-htmlmin');
120 | grunt.loadNpmTasks('grunt-contrib-clean');
121 | grunt.loadNpmTasks('grunt-contrib-copy');
122 | grunt.loadNpmTasks('grunt-dom-munger');
123 |
124 | grunt.registerTask('dist', ['clean', 'dom_munger', 'less', 'cssmin', 'htmlmin', 'uglify', 'copy']);
125 |
126 | grunt.registerTask('default', ['less', 'connect', 'watch']);
127 | };
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Nathan Friend
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ldraw-visualizer
2 | A in-browser LEGO model viewer, built using three.js and LDraw part files.
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/car.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nfriend/ldraw-visualizer/a4bb31b598066e29d94dc1d3c224daadbc6ad3b0/car.png
--------------------------------------------------------------------------------
/compiled/parts-server/parts-server.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | // to set up node and apache to run on the same server: http://stackoverflow.com/a/18604082/1063392
4 | var express = require('express');
5 | var bodyParser = require('body-parser');
6 | var fileFetcher = require('./file-fetcher');
7 | var domain = require('domain');
8 | var app = express();
9 | app.use(bodyParser.urlencoded({ extended: false, limit: 1048576 }));
10 | app.post('/', function (req, res) {
11 | var d = domain.create();
12 | var responseHasBeenSent = false;
13 | d.on('error', function (er) {
14 | if (!responseHasBeenSent) {
15 | responseHasBeenSent = true;
16 | console.log(er);
17 | res.status(500).send(er);
18 | }
19 | });
20 | d.run(function () {
21 | var start = Date.now();
22 | fileFetcher.fetchFiles(req.body.file, function (allFiles) {
23 | console.log('request took ' + (Date.now() - start) + ' ms to complete');
24 | res.status(200).send(allFiles);
25 | });
26 | });
27 | });
28 | var server = app.listen(17352);
29 | //# sourceMappingURL=parts-server.js.map
--------------------------------------------------------------------------------
/compiled/parts-server/parts-server.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"parts-server.js","sourceRoot":"","sources":["../../parts-server/parts-server.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,0CAA0C;AAE1C,mGAAmG;AAEnG,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACjC,IAAI,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACxC,IAAI,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC5C,IAAI,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC/B,IAAI,GAAG,GAAG,OAAO,EAAE,CAAC;AACpB,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAEpE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,UAAC,GAAG,EAAE,GAAG;IACtB,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;IACxB,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAChC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAS,EAAE;QACxB,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC1B,mBAAmB,GAAG,IAAI,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;IACF,CAAC,CAAC,CAAC;IACH,CAAC,CAAC,GAAG,CAAC;QACL,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,UAAC,QAAkB;YACxD,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,iBAAiB,CAAC,CAAC;YACxE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/Color.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | var LdrawVisualizer;
4 | (function (LdrawVisualizer) {
5 | var Parser;
6 | (function (Parser) {
7 | var Color = (function () {
8 | function Color(hexValue) {
9 | this.HexValue = hexValue;
10 | }
11 | Color.prototype.IsValid = function () {
12 | return LdrawVisualizer.Utility.isValidColorHexString(this.HexValue);
13 | };
14 | return Color;
15 | })();
16 | Parser.Color = Color;
17 | })(Parser = LdrawVisualizer.Parser || (LdrawVisualizer.Parser = {}));
18 | })(LdrawVisualizer || (LdrawVisualizer = {}));
19 | //# sourceMappingURL=Color.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/Color.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"Color.js","sourceRoot":"","sources":["../../../scripts/parser/Color.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Color","LdrawVisualizer.Parser.Color.constructor","LdrawVisualizer.Parser.Color.IsValid"],"mappings":"AAAA,oDAAoD;AACpD,sCAAsC;AAEtC,IAAO,eAAe,CAYrB;AAZD,WAAO,eAAe;IAACA,IAAAA,MAAMA,CAY5BA;IAZsBA,WAAAA,MAAMA,EAACA,CAACA;QAC9BC;YACCC,eAAYA,QAAgBA;gBAC3BC,IAAIA,CAACA,QAAQA,GAAGA,QAAQA,CAACA;YAC1BA,CAACA;YAIDD,uBAAOA,GAAPA;gBACCE,MAAMA,CAACA,uBAAOA,CAACA,qBAAqBA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;YACrDA,CAACA;YACFF,YAACA;QAADA,CAACA,AAVDD,IAUCA;QAVYA,YAAKA,QAUjBA,CAAAA;IACFA,CAACA,EAZsBD,MAAMA,GAANA,sBAAMA,KAANA,sBAAMA,QAY5BA;AAADA,CAACA,EAZM,eAAe,KAAf,eAAe,QAYrB"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/Coordinates.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | var LdrawVisualizer;
4 | (function (LdrawVisualizer) {
5 | var Parser;
6 | (function (Parser) {
7 | var Coordinates = (function () {
8 | function Coordinates(x, y, z) {
9 | this.X = x;
10 | this.Y = y;
11 | this.Z = z;
12 | }
13 | Coordinates.prototype.IsValid = function () {
14 | return LdrawVisualizer.Utility.isNumber(this.X)
15 | && LdrawVisualizer.Utility.isNumber(this.Y)
16 | && LdrawVisualizer.Utility.isNumber(this.Z);
17 | };
18 | return Coordinates;
19 | })();
20 | Parser.Coordinates = Coordinates;
21 | })(Parser = LdrawVisualizer.Parser || (LdrawVisualizer.Parser = {}));
22 | })(LdrawVisualizer || (LdrawVisualizer = {}));
23 | //# sourceMappingURL=Coordinates.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/Coordinates.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"Coordinates.js","sourceRoot":"","sources":["../../../scripts/parser/Coordinates.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Coordinates","LdrawVisualizer.Parser.Coordinates.constructor","LdrawVisualizer.Parser.Coordinates.IsValid"],"mappings":"AAAA,oDAAoD;AACpD,sCAAsC;AAEtC,IAAO,eAAe,CAmBrB;AAnBD,WAAO,eAAe;IAACA,IAAAA,MAAMA,CAmB5BA;IAnBsBA,WAAAA,MAAMA,EAACA,CAACA;QAC9BC;YAECC,qBAAYA,CAASA,EAAEA,CAASA,EAAEA,CAASA;gBAC1CC,IAAIA,CAACA,CAACA,GAAGA,CAACA,CAACA;gBACXA,IAAIA,CAACA,CAACA,GAAGA,CAACA,CAACA;gBACXA,IAAIA,CAACA,CAACA,GAAGA,CAACA,CAACA;YACZA,CAACA;YAMDD,6BAAOA,GAAPA;gBACCE,MAAMA,CAACA,uBAAOA,CAACA,QAAQA,CAACA,IAAIA,CAACA,CAACA,CAACA;uBAC3BA,uBAAOA,CAACA,QAAQA,CAACA,IAAIA,CAACA,CAACA,CAACA;uBACxBA,uBAAOA,CAACA,QAAQA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;YAC9BA,CAACA;YACFF,kBAACA;QAADA,CAACA,AAjBDD,IAiBCA;QAjBYA,kBAAWA,cAiBvBA,CAAAA;IACFA,CAACA,EAnBsBD,MAAMA,GAANA,sBAAMA,KAANA,sBAAMA,QAmB5BA;AAADA,CAACA,EAnBM,eAAe,KAAf,eAAe,QAmBrB"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/FileService.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | var SubFileReferenceLine = LdrawVisualizer.Parser.Lines.SubFileReferenceLine;
6 | var LdrawFileLineType = LdrawVisualizer.Parser.Lines.LdrawFileLineType;
7 | var LdrawVisualizer;
8 | (function (LdrawVisualizer) {
9 | var FileService = (function () {
10 | function FileService() {
11 | }
12 | FileService.GetLdrawFile = function (ldrawFile, callback, isDev) {
13 | if (isDev === void 0) { isDev = true; }
14 | var returnFile, url = isDev ? 'http://localhost:17352/' : './parts-server';
15 | $.ajax({
16 | type: 'POST',
17 | url: url,
18 | data: { file: ldrawFile },
19 | success: function (files) {
20 | var parsedFiles = {};
21 | // parse each line into a LdrawFile object
22 | for (var prop in files) {
23 | if (files.hasOwnProperty(prop)) {
24 | parsedFiles[prop] = (LdrawVisualizer.Parser.FileParser.Parse(files[prop]));
25 | }
26 | }
27 | var rootFile = parsedFiles['$rootfile$'], ldConfig = parsedFiles['LDConfig.ldr'];
28 | // break any .mpd subparts into their own "parts"
29 | var mpdSubFiles = rootFile.Lines.filter(function (l) { return l.LineType === LdrawFileLineType.File; });
30 | for (var i = mpdSubFiles.length - 1; i > 0; i--) {
31 | var mpdLine = mpdSubFiles[i], originalIndex = rootFile.Lines.indexOf(mpdLine);
32 | console.log('found subpart number ' + i + ', chopping off starting at ' + originalIndex);
33 | var newSubpartLdrawFile = new LdrawVisualizer.LdrawFile();
34 | newSubpartLdrawFile.Lines = rootFile.Lines.splice(originalIndex, rootFile.Lines.length /* to the end of the array */);
35 | parsedFiles[LdrawVisualizer.Utility.fixFilePath(mpdLine.Filename)] = newSubpartLdrawFile;
36 | }
37 | // console.log(rootFile);
38 | // console.log(parsedFiles['Core.ldr']);
39 | // console.log('hello');
40 | // link up subfile references lines to their SubFileReferenceLine instances
41 | for (var prop in parsedFiles) {
42 | if (parsedFiles.hasOwnProperty(prop)) {
43 | parsedFiles[prop].Lines.filter(function (l) { return l.LineType === LdrawFileLineType.SubFileReference; }).forEach(function (l) {
44 | var subfile = l;
45 | subfile.File = parsedFiles[LdrawVisualizer.Utility.fixFilePath(subfile.Filename)];
46 | });
47 | }
48 | }
49 | callback(rootFile, ldConfig);
50 | },
51 | dataType: 'JSON'
52 | });
53 | };
54 | return FileService;
55 | })();
56 | LdrawVisualizer.FileService = FileService;
57 | })(LdrawVisualizer || (LdrawVisualizer = {}));
58 | //# sourceMappingURL=FileService.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/FileService.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"FileService.js","sourceRoot":"","sources":["../../../scripts/parser/FileService.ts"],"names":["LdrawVisualizer","LdrawVisualizer.FileService","LdrawVisualizer.FileService.constructor","LdrawVisualizer.FileService.GetLdrawFile"],"mappings":"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"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/LdrawFile.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | var LdrawVisualizer;
5 | (function (LdrawVisualizer) {
6 | var LdrawFile = (function () {
7 | function LdrawFile() {
8 | this.Lines = [];
9 | }
10 | LdrawFile.prototype.IsValid = function () {
11 | return this.Lines.every(function (l) { return l.IsValid(); });
12 | };
13 | return LdrawFile;
14 | })();
15 | LdrawVisualizer.LdrawFile = LdrawFile;
16 | })(LdrawVisualizer || (LdrawVisualizer = {}));
17 | //# sourceMappingURL=LdrawFile.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/LdrawFile.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"LdrawFile.js","sourceRoot":"","sources":["../../../scripts/parser/LdrawFile.ts"],"names":["LdrawVisualizer","LdrawVisualizer.LdrawFile","LdrawVisualizer.LdrawFile.constructor","LdrawVisualizer.LdrawFile.IsValid"],"mappings":"AAAA,oDAAoD;AACpD,sCAAsC;AACtC,iDAAiD;AAEjD,IAAO,eAAe,CAQrB;AARD,WAAO,eAAe,EAAC,CAAC;IACvBA;QAAAC;YACCC,UAAKA,GAAiCA,EAAEA,CAACA;QAK1CA,CAACA;QAHAD,2BAAOA,GAAPA;YACCE,MAAMA,CAACA,IAAIA,CAACA,KAAKA,CAACA,KAAKA,CAACA,UAAAA,CAACA,IAAIA,OAAAA,CAACA,CAACA,OAAOA,EAAEA,EAAXA,CAAWA,CAACA,CAACA;QAC3CA,CAACA;QACFF,gBAACA;IAADA,CAACA,AANDD,IAMCA;IANYA,yBAASA,YAMrBA,CAAAA;AACFA,CAACA,EARM,eAAe,KAAf,eAAe,QAQrB"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/CommentLine.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 | var __extends = this.__extends || function (d, b) {
7 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
8 | function __() { this.constructor = d; }
9 | __.prototype = b.prototype;
10 | d.prototype = new __();
11 | };
12 | var LdrawVisualizer;
13 | (function (LdrawVisualizer) {
14 | var Parser;
15 | (function (Parser) {
16 | var Lines;
17 | (function (Lines) {
18 | var CommentLine = (function (_super) {
19 | __extends(CommentLine, _super);
20 | function CommentLine(lineContent) {
21 | _super.call(this, Lines.LdrawFileLineType.Comment);
22 | this.LineContent = lineContent;
23 | }
24 | CommentLine.prototype.IsValid = function () {
25 | return true;
26 | };
27 | CommentLine.Parse = function (line, splitLine, lineNumber) {
28 | return new Lines.CommentLine(line.substring(line.indexOf('0') + 2));
29 | };
30 | return CommentLine;
31 | })(Lines.LdrawFileLine);
32 | Lines.CommentLine = CommentLine;
33 | })(Lines = Parser.Lines || (Parser.Lines = {}));
34 | })(Parser = LdrawVisualizer.Parser || (LdrawVisualizer.Parser = {}));
35 | })(LdrawVisualizer || (LdrawVisualizer = {}));
36 | //# sourceMappingURL=CommentLine.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/CommentLine.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"CommentLine.js","sourceRoot":"","sources":["../../../../scripts/parser/lines/CommentLine.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Lines","LdrawVisualizer.Parser.Lines.CommentLine","LdrawVisualizer.Parser.Lines.CommentLine.constructor","LdrawVisualizer.Parser.Lines.CommentLine.IsValid","LdrawVisualizer.Parser.Lines.CommentLine.Parse"],"mappings":"AAAA,uDAAuD;AACvD,wCAAwC;AACxC,2CAA2C;AAC3C,yCAAyC;AACzC,uCAAuC;;;;;;;AAEvC,IAAO,eAAe,CAkBrB;AAlBD,WAAO,eAAe;IAACA,IAAAA,MAAMA,CAkB5BA;IAlBsBA,WAAAA,MAAMA;QAACC,IAAAA,KAAKA,CAkBlCA;QAlB6BA,WAAAA,KAAKA,EAACA,CAACA;YACpCC;gBAAiCC,+BAAaA;gBAC7CA,qBAAYA,WAAmBA;oBAC9BC,kBAAMA,uBAAiBA,CAACA,OAAOA,CAACA,CAAAA;oBAEhCA,IAAIA,CAACA,WAAWA,GAAGA,WAAWA,CAACA;gBAChCA,CAACA;gBAIDD,6BAAOA,GAAPA;oBACCE,MAAMA,CAACA,IAAIA,CAACA;gBACbA,CAACA;gBAEMF,iBAAKA,GAAZA,UAAaA,IAAYA,EAAEA,SAAmBA,EAAEA,UAAkBA;oBACjEG,MAAMA,CAACA,IAAIA,KAAKA,CAACA,WAAWA,CAACA,IAAIA,CAACA,SAASA,CAACA,IAAIA,CAACA,OAAOA,CAACA,GAAGA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA;gBACrEA,CAACA;gBACFH,kBAACA;YAADA,CAACA,AAhBDD,EAAiCA,mBAAaA,EAgB7CA;YAhBYA,iBAAWA,cAgBvBA,CAAAA;QACFA,CAACA,EAlB6BD,KAAKA,GAALA,YAAKA,KAALA,YAAKA,QAkBlCA;IAADA,CAACA,EAlBsBD,MAAMA,GAANA,sBAAMA,KAANA,sBAAMA,QAkB5BA;AAADA,CAACA,EAlBM,eAAe,KAAf,eAAe,QAkBrB"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/LdrawFileLine.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | var LdrawVisualizer;
6 | (function (LdrawVisualizer) {
7 | var Parser;
8 | (function (Parser) {
9 | var Lines;
10 | (function (Lines) {
11 | var LdrawFileLine = (function () {
12 | function LdrawFileLine(lineType) {
13 | this.LineType = lineType;
14 | }
15 | LdrawFileLine.prototype.IsValid = function () {
16 | throw 'This method is abstract and should be overriden in a derived class - it should not be called directly';
17 | };
18 | LdrawFileLine.Parse = function (line, splitLine, lineNumber) {
19 | throw 'This method is abstract and should be overriden in a derived class - it should not be called directly';
20 | };
21 | return LdrawFileLine;
22 | })();
23 | Lines.LdrawFileLine = LdrawFileLine;
24 | })(Lines = Parser.Lines || (Parser.Lines = {}));
25 | })(Parser = LdrawVisualizer.Parser || (LdrawVisualizer.Parser = {}));
26 | })(LdrawVisualizer || (LdrawVisualizer = {}));
27 | //# sourceMappingURL=LdrawFileLine.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/LdrawFileLine.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"LdrawFileLine.js","sourceRoot":"","sources":["../../../../scripts/parser/lines/LdrawFileLine.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Lines","LdrawVisualizer.Parser.Lines.LdrawFileLine","LdrawVisualizer.Parser.Lines.LdrawFileLine.constructor","LdrawVisualizer.Parser.Lines.LdrawFileLine.IsValid","LdrawVisualizer.Parser.Lines.LdrawFileLine.Parse"],"mappings":"AAAA,uDAAuD;AACvD,wCAAwC;AACxC,yCAAyC;AACzC,uCAAuC;AAEvC,IAAO,eAAe,CAgBrB;AAhBD,WAAO,eAAe;IAACA,IAAAA,MAAMA,CAgB5BA;IAhBsBA,WAAAA,MAAMA;QAACC,IAAAA,KAAKA,CAgBlCA;QAhB6BA,WAAAA,KAAKA,EAACA,CAACA;YACpCC;gBACCC,uBAAYA,QAA2BA;oBACtCC,IAAIA,CAACA,QAAQA,GAAGA,QAAQA,CAACA;gBAC1BA,CAACA;gBAIDD,+BAAOA,GAAPA;oBACCE,MAAMA,uGAAuGA,CAACA;gBAC/GA,CAACA;gBAEMF,mBAAKA,GAAZA,UAAaA,IAAYA,EAAEA,SAAmBA,EAAEA,UAAkBA;oBACjEG,MAAMA,uGAAuGA,CAACA;gBAC/GA,CAACA;gBACFH,oBAACA;YAADA,CAACA,AAdDD,IAcCA;YAdYA,mBAAaA,gBAczBA,CAAAA;QACFA,CAACA,EAhB6BD,KAAKA,GAALA,YAAKA,KAALA,YAAKA,QAgBlCA;IAADA,CAACA,EAhBsBD,MAAMA,GAANA,sBAAMA,KAANA,sBAAMA,QAgB5BA;AAADA,CAACA,EAhBM,eAAe,KAAf,eAAe,QAgBrB"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/LineLine.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 | var __extends = this.__extends || function (d, b) {
7 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
8 | function __() { this.constructor = d; }
9 | __.prototype = b.prototype;
10 | d.prototype = new __();
11 | };
12 | var LdrawVisualizer;
13 | (function (LdrawVisualizer) {
14 | var Parser;
15 | (function (Parser) {
16 | var Lines;
17 | (function (Lines) {
18 | var LineLine = (function (_super) {
19 | __extends(LineLine, _super);
20 | function LineLine(color, point1, point2) {
21 | _super.call(this, Lines.LdrawFileLineType.Line);
22 | this.Point1 = point1;
23 | this.Point2 = point2;
24 | }
25 | LineLine.prototype.IsValid = function () {
26 | return this.Point1.IsValid()
27 | && this.Point2.IsValid();
28 | };
29 | LineLine.Parse = function (line, splitLine, lineNumber) {
30 | var point1Coords = new Parser.Coordinates(parseFloat(splitLine[2]), parseFloat(splitLine[3]), parseFloat(splitLine[4])), point2Coords = new Parser.Coordinates(parseFloat(splitLine[5]), parseFloat(splitLine[6]), parseFloat(splitLine[7])), lineLine = new Lines.LineLine(parseInt(splitLine[1], 10), point1Coords, point2Coords);
31 | if (!lineLine.IsValid()) {
32 | throw 'Unable to parse line line: Invalid line arguments on line ' + lineNumber;
33 | }
34 | return lineLine;
35 | };
36 | return LineLine;
37 | })(Lines.LdrawFileLine);
38 | Lines.LineLine = LineLine;
39 | })(Lines = Parser.Lines || (Parser.Lines = {}));
40 | })(Parser = LdrawVisualizer.Parser || (LdrawVisualizer.Parser = {}));
41 | })(LdrawVisualizer || (LdrawVisualizer = {}));
42 | //# sourceMappingURL=LineLine.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/LineLine.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"LineLine.js","sourceRoot":"","sources":["../../../../scripts/parser/lines/LineLine.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Lines","LdrawVisualizer.Parser.Lines.LineLine","LdrawVisualizer.Parser.Lines.LineLine.constructor","LdrawVisualizer.Parser.Lines.LineLine.IsValid","LdrawVisualizer.Parser.Lines.LineLine.Parse"],"mappings":"AAAA,uDAAuD;AACvD,yCAAyC;AACzC,2CAA2C;AAC3C,0CAA0C;AAC1C,uCAAuC;;;;;;;AAEvC,IAAO,eAAe,CA6BrB;AA7BD,WAAO,eAAe;IAACA,IAAAA,MAAMA,CA6B5BA;IA7BsBA,WAAAA,MAAMA;QAACC,IAAAA,KAAKA,CA6BlCA;QA7B6BA,WAAAA,KAAKA,EAACA,CAACA;YACpCC;gBAA8BC,4BAAaA;gBAC1CA,kBAAYA,KAAaA,EAAEA,MAAmBA,EAAEA,MAAmBA;oBAClEC,kBAAMA,uBAAiBA,CAACA,IAAIA,CAACA,CAACA;oBAE9BA,IAAIA,CAACA,MAAMA,GAAGA,MAAMA,CAACA;oBACrBA,IAAIA,CAACA,MAAMA,GAAGA,MAAMA,CAACA;gBACtBA,CAACA;gBAKDD,0BAAOA,GAAPA;oBACCE,MAAMA,CAACA,IAAIA,CAACA,MAAMA,CAACA,OAAOA,EAAEA;2BACxBA,IAAIA,CAACA,MAAMA,CAACA,OAAOA,EAAEA,CAACA;gBAC3BA,CAACA;gBAEMF,cAAKA,GAAZA,UAAaA,IAAYA,EAAEA,SAAmBA,EAAEA,UAAkBA;oBACjEG,IAAIA,YAAYA,GAAGA,IAAIA,kBAAWA,CAACA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,EAAEA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,EAAEA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,CAACA,EAC/GA,YAAYA,GAAGA,IAAIA,kBAAWA,CAACA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,EAAEA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,EAAEA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,CAACA,EAC5GA,QAAQA,GAAGA,IAAIA,KAAKA,CAACA,QAAQA,CAACA,QAAQA,CAACA,SAASA,CAACA,CAACA,CAACA,EAAEA,EAAEA,CAACA,EAAEA,YAAYA,EAAEA,YAAYA,CAACA,CAACA;oBAEvFA,EAAEA,CAACA,CAACA,CAACA,QAAQA,CAACA,OAAOA,EAAEA,CAACA,CAACA,CAACA;wBACzBA,MAAMA,4DAA4DA,GAAGA,UAAUA,CAACA;oBACjFA,CAACA;oBAEDA,MAAMA,CAACA,QAAQA,CAACA;gBACjBA,CAACA;gBACFH,eAACA;YAADA,CAACA,AA3BDD,EAA8BA,mBAAaA,EA2B1CA;YA3BYA,cAAQA,WA2BpBA,CAAAA;QACFA,CAACA,EA7B6BD,KAAKA,GAALA,YAAKA,KAALA,YAAKA,QA6BlCA;IAADA,CAACA,EA7BsBD,MAAMA,GAANA,sBAAMA,KAANA,sBAAMA,QA6B5BA;AAADA,CAACA,EA7BM,eAAe,KAAf,eAAe,QA6BrB"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/LineTypes.js:
--------------------------------------------------------------------------------
1 | var LdrawVisualizer;
2 | (function (LdrawVisualizer) {
3 | var Parser;
4 | (function (Parser) {
5 | var Lines;
6 | (function (Lines) {
7 | (function (LdrawFileLineType) {
8 | LdrawFileLineType[LdrawFileLineType["Comment"] = 0] = "Comment";
9 | LdrawFileLineType[LdrawFileLineType["SubFileReference"] = 1] = "SubFileReference";
10 | LdrawFileLineType[LdrawFileLineType["Line"] = 2] = "Line";
11 | LdrawFileLineType[LdrawFileLineType["Triangle"] = 3] = "Triangle";
12 | LdrawFileLineType[LdrawFileLineType["Quadrilateral"] = 4] = "Quadrilateral";
13 | LdrawFileLineType[LdrawFileLineType["OptionalLine"] = 5] = "OptionalLine";
14 | LdrawFileLineType[LdrawFileLineType["Colour"] = 6] = "Colour";
15 | LdrawFileLineType[LdrawFileLineType["Step"] = 7] = "Step";
16 | LdrawFileLineType[LdrawFileLineType["Name"] = 8] = "Name";
17 | LdrawFileLineType[LdrawFileLineType["Author"] = 9] = "Author";
18 | LdrawFileLineType[LdrawFileLineType["RotationCenter"] = 10] = "RotationCenter";
19 | LdrawFileLineType[LdrawFileLineType["RotationConfig"] = 11] = "RotationConfig";
20 | LdrawFileLineType[LdrawFileLineType["RotationStep"] = 12] = "RotationStep";
21 | LdrawFileLineType[LdrawFileLineType["LDrawOrg"] = 13] = "LDrawOrg";
22 | LdrawFileLineType[LdrawFileLineType["File"] = 14] = "File";
23 | LdrawFileLineType[LdrawFileLineType["NoFile"] = 15] = "NoFile";
24 | })(Lines.LdrawFileLineType || (Lines.LdrawFileLineType = {}));
25 | var LdrawFileLineType = Lines.LdrawFileLineType;
26 | })(Lines = Parser.Lines || (Parser.Lines = {}));
27 | })(Parser = LdrawVisualizer.Parser || (LdrawVisualizer.Parser = {}));
28 | })(LdrawVisualizer || (LdrawVisualizer = {}));
29 | //# sourceMappingURL=LineTypes.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/LineTypes.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"LineTypes.js","sourceRoot":"","sources":["../../../../scripts/parser/lines/LineTypes.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Lines","LdrawVisualizer.Parser.Lines.LdrawFileLineType"],"mappings":"AAAA,IAAO,eAAe,CAmBrB;AAnBD,WAAO,eAAe;IAACA,IAAAA,MAAMA,CAmB5BA;IAnBsBA,WAAAA,MAAMA;QAACC,IAAAA,KAAKA,CAmBlCA;QAnB6BA,WAAAA,KAAKA,EAACA,CAACA;YACpCC,WAAYA,iBAAiBA;gBAC5BC,+DAAWA,CAAAA;gBACXA,iFAAoBA,CAAAA;gBACpBA,yDAAQA,CAAAA;gBACRA,iEAAYA,CAAAA;gBACZA,2EAAiBA,CAAAA;gBACjBA,yEAAgBA,CAAAA;gBAChBA,6DAAUA,CAAAA;gBACVA,yDAAQA,CAAAA;gBACRA,yDAAQA,CAAAA;gBACRA,6DAAUA,CAAAA;gBACVA,8EAAmBA,CAAAA;gBACnBA,8EAAmBA,CAAAA;gBACnBA,0EAAiBA,CAAAA;gBACjBA,kEAAaA,CAAAA;gBACbA,0DAASA,CAAAA;gBACTA,8DAAWA,CAAAA;YACZA,CAACA,EAjBWD,uBAAiBA,KAAjBA,uBAAiBA,QAiB5BA;YAjBDA,IAAYA,iBAAiBA,GAAjBA,uBAiBXA,CAAAA;QACFA,CAACA,EAnB6BD,KAAKA,GAALA,YAAKA,KAALA,YAAKA,QAmBlCA;IAADA,CAACA,EAnBsBD,MAAMA,GAANA,sBAAMA,KAANA,sBAAMA,QAmB5BA;AAADA,CAACA,EAnBM,eAAe,KAAf,eAAe,QAmBrB"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/OptionalLineLine.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 | ///
7 | var __extends = this.__extends || function (d, b) {
8 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
9 | function __() { this.constructor = d; }
10 | __.prototype = b.prototype;
11 | d.prototype = new __();
12 | };
13 | var LdrawVisualizer;
14 | (function (LdrawVisualizer) {
15 | var Parser;
16 | (function (Parser) {
17 | var Lines;
18 | (function (Lines) {
19 | var OptionalLineLine = (function (_super) {
20 | __extends(OptionalLineLine, _super);
21 | function OptionalLineLine(color, point1, point2, controlPoint1, controlPoint2) {
22 | _super.call(this, Lines.LdrawFileLineType.OptionalLine);
23 | this.Color = color;
24 | this.Point1 = point1;
25 | this.Point2 = point2;
26 | this.ControlPoint1 = controlPoint1;
27 | this.ControlPoint2 = controlPoint2;
28 | }
29 | OptionalLineLine.prototype.IsValid = function () {
30 | return LdrawVisualizer.Utility.isValidColorCode(this.Color)
31 | && this.Point1.IsValid()
32 | && this.Point2.IsValid()
33 | && this.ControlPoint1.IsValid()
34 | && this.ControlPoint2.IsValid();
35 | };
36 | OptionalLineLine.Parse = function (line, splitLine, lineNumber) {
37 | var point1Coords = new Parser.Coordinates(parseFloat(splitLine[2]), parseFloat(splitLine[3]), parseFloat(splitLine[4])), point2Coords = new Parser.Coordinates(parseFloat(splitLine[5]), parseFloat(splitLine[6]), parseFloat(splitLine[7])), controlPoint1Coords = new Parser.Coordinates(parseFloat(splitLine[8]), parseFloat(splitLine[9]), parseFloat(splitLine[10])), controlPoint2Coords = new Parser.Coordinates(parseFloat(splitLine[11]), parseFloat(splitLine[12]), parseFloat(splitLine[13])), optLine = new Lines.OptionalLineLine(parseInt(splitLine[1], 10), point1Coords, point2Coords, controlPoint1Coords, controlPoint2Coords);
38 | if (!optLine.IsValid()) {
39 | throw 'Unable to parse optional line: Invalid line arguments on line ' + lineNumber;
40 | }
41 | return optLine;
42 | };
43 | return OptionalLineLine;
44 | })(Lines.LdrawFileLine);
45 | Lines.OptionalLineLine = OptionalLineLine;
46 | })(Lines = Parser.Lines || (Parser.Lines = {}));
47 | })(Parser = LdrawVisualizer.Parser || (LdrawVisualizer.Parser = {}));
48 | })(LdrawVisualizer || (LdrawVisualizer = {}));
49 | //# sourceMappingURL=OptionalLineLine.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/OptionalLineLine.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"OptionalLineLine.js","sourceRoot":"","sources":["../../../../scripts/parser/lines/OptionalLineLine.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Lines","LdrawVisualizer.Parser.Lines.OptionalLineLine","LdrawVisualizer.Parser.Lines.OptionalLineLine.constructor","LdrawVisualizer.Parser.Lines.OptionalLineLine.IsValid","LdrawVisualizer.Parser.Lines.OptionalLineLine.Parse"],"mappings":"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"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/QuadrilateralLine.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 | var __extends = this.__extends || function (d, b) {
7 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
8 | function __() { this.constructor = d; }
9 | __.prototype = b.prototype;
10 | d.prototype = new __();
11 | };
12 | var LdrawVisualizer;
13 | (function (LdrawVisualizer) {
14 | var Parser;
15 | (function (Parser) {
16 | var Lines;
17 | (function (Lines) {
18 | var QuadrilateralLine = (function (_super) {
19 | __extends(QuadrilateralLine, _super);
20 | function QuadrilateralLine(color, point1, point2, point3, point4) {
21 | _super.call(this, Lines.LdrawFileLineType.Quadrilateral);
22 | this.Color = color;
23 | this.Point1 = point1;
24 | this.Point2 = point2;
25 | this.Point3 = point3;
26 | this.Point4 = point4;
27 | }
28 | QuadrilateralLine.prototype.IsValid = function () {
29 | return LdrawVisualizer.Utility.isValidColorCode(this.Color)
30 | && this.Point1.IsValid()
31 | && this.Point2.IsValid()
32 | && this.Point3.IsValid()
33 | && this.Point4.IsValid();
34 | };
35 | QuadrilateralLine.Parse = function (line, splitLine, lineNumber) {
36 | var point1Coords = new Parser.Coordinates(parseFloat(splitLine[2]), parseFloat(splitLine[3]), parseFloat(splitLine[4])), point2Coords = new Parser.Coordinates(parseFloat(splitLine[5]), parseFloat(splitLine[6]), parseFloat(splitLine[7])), point3Coords = new Parser.Coordinates(parseFloat(splitLine[8]), parseFloat(splitLine[9]), parseFloat(splitLine[10])), point4Coords = new Parser.Coordinates(parseFloat(splitLine[11]), parseFloat(splitLine[12]), parseFloat(splitLine[13])), quadLine = new Lines.QuadrilateralLine(parseInt(splitLine[1], 10), point1Coords, point2Coords, point3Coords, point4Coords);
37 | if (!quadLine.IsValid()) {
38 | throw 'Unable to parse quadrilateral line: Invalid line arguments on line ' + lineNumber;
39 | }
40 | return quadLine;
41 | };
42 | return QuadrilateralLine;
43 | })(Lines.LdrawFileLine);
44 | Lines.QuadrilateralLine = QuadrilateralLine;
45 | })(Lines = Parser.Lines || (Parser.Lines = {}));
46 | })(Parser = LdrawVisualizer.Parser || (LdrawVisualizer.Parser = {}));
47 | })(LdrawVisualizer || (LdrawVisualizer = {}));
48 | //# sourceMappingURL=QuadrilateralLine.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/QuadrilateralLine.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"QuadrilateralLine.js","sourceRoot":"","sources":["../../../../scripts/parser/lines/QuadrilateralLine.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Lines","LdrawVisualizer.Parser.Lines.QuadrilateralLine","LdrawVisualizer.Parser.Lines.QuadrilateralLine.constructor","LdrawVisualizer.Parser.Lines.QuadrilateralLine.IsValid","LdrawVisualizer.Parser.Lines.QuadrilateralLine.Parse"],"mappings":"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"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/SubFileReferenceLine.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 | var __extends = this.__extends || function (d, b) {
7 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
8 | function __() { this.constructor = d; }
9 | __.prototype = b.prototype;
10 | d.prototype = new __();
11 | };
12 | var LdrawVisualizer;
13 | (function (LdrawVisualizer) {
14 | var Parser;
15 | (function (Parser) {
16 | var Lines;
17 | (function (Lines) {
18 | var SubFileReferenceLine = (function (_super) {
19 | __extends(SubFileReferenceLine, _super);
20 | function SubFileReferenceLine(color, coordinates, transformMatrix, filename) {
21 | _super.call(this, Lines.LdrawFileLineType.SubFileReference);
22 | this.Color = color;
23 | this.Coordinates = coordinates;
24 | this.TransformMatrix = transformMatrix;
25 | this.Filename = filename;
26 | }
27 | SubFileReferenceLine.prototype.IsValid = function () {
28 | var transformMatrixIsValid = this.TransformMatrix && this.TransformMatrix.length === 3;
29 | if (transformMatrixIsValid) {
30 | outer: for (var i = 0; i < 3; i++) {
31 | if (LdrawVisualizer.Utility.isArray(this.TransformMatrix[i]) && this.TransformMatrix[i].length === 3) {
32 | for (var j = 0; j < 3; j++) {
33 | if (!LdrawVisualizer.Utility.isNumber(this.TransformMatrix[i][j])) {
34 | transformMatrixIsValid = false;
35 | break outer;
36 | }
37 | }
38 | }
39 | else {
40 | transformMatrixIsValid = false;
41 | break;
42 | }
43 | }
44 | }
45 | return (LdrawVisualizer.Utility.isValidColorCode(this.Color)
46 | && this.Coordinates.IsValid()
47 | && transformMatrixIsValid
48 | && LdrawVisualizer.Utility.hasAtLeastOneNonWhitespaceCharacter(this.Filename));
49 | };
50 | SubFileReferenceLine.Parse = function (line, splitLine, lineNumber) {
51 | var coords = new Parser.Coordinates(parseFloat(splitLine[2]), parseFloat(splitLine[3]), parseFloat(splitLine[4])), matrix = [
52 | [parseFloat(splitLine[5]), parseFloat(splitLine[6]), parseFloat(splitLine[7])],
53 | [parseFloat(splitLine[8]), parseFloat(splitLine[9]), parseFloat(splitLine[10])],
54 | [parseFloat(splitLine[11]), parseFloat(splitLine[12]), parseFloat(splitLine[13])]
55 | ], refLine = new Lines.SubFileReferenceLine(parseInt(splitLine[1], 10), coords, matrix, line.substring(line.indexOf(splitLine[14])).trim());
56 | if (!refLine.IsValid()) {
57 | throw 'Unable to parse subfile reference line: Invalid line arguments on line ' + lineNumber;
58 | }
59 | return refLine;
60 | };
61 | return SubFileReferenceLine;
62 | })(Lines.LdrawFileLine);
63 | Lines.SubFileReferenceLine = SubFileReferenceLine;
64 | })(Lines = Parser.Lines || (Parser.Lines = {}));
65 | })(Parser = LdrawVisualizer.Parser || (LdrawVisualizer.Parser = {}));
66 | })(LdrawVisualizer || (LdrawVisualizer = {}));
67 | //# sourceMappingURL=SubFileReferenceLine.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/SubFileReferenceLine.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"SubFileReferenceLine.js","sourceRoot":"","sources":["../../../../scripts/parser/lines/SubFileReferenceLine.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Lines","LdrawVisualizer.Parser.Lines.SubFileReferenceLine","LdrawVisualizer.Parser.Lines.SubFileReferenceLine.constructor","LdrawVisualizer.Parser.Lines.SubFileReferenceLine.IsValid","LdrawVisualizer.Parser.Lines.SubFileReferenceLine.Parse"],"mappings":"AAAA,uDAAuD;AACvD,yCAAyC;AACzC,2CAA2C;AAC3C,0CAA0C;AAC1C,uCAAuC;;;;;;;AAEvC,IAAO,eAAe,CAyDrB;AAzDD,WAAO,eAAe;IAACA,IAAAA,MAAMA,CAyD5BA;IAzDsBA,WAAAA,MAAMA;QAACC,IAAAA,KAAKA,CAyDlCA;QAzD6BA,WAAAA,KAAKA,EAACA,CAACA;YACpCC;gBAA0CC,wCAAaA;gBACtDA,8BAAYA,KAAaA,EAAEA,WAAwBA,EAAEA,eAA2BA,EAAEA,QAAgBA;oBACjGC,kBAAMA,uBAAiBA,CAACA,gBAAgBA,CAACA,CAACA;oBAE1CA,IAAIA,CAACA,KAAKA,GAAGA,KAAKA,CAACA;oBACnBA,IAAIA,CAACA,WAAWA,GAAGA,WAAWA,CAACA;oBAC/BA,IAAIA,CAACA,eAAeA,GAAGA,eAAeA,CAACA;oBACvCA,IAAIA,CAACA,QAAQA,GAAGA,QAAQA,CAACA;gBAC1BA,CAACA;gBAQDD,sCAAOA,GAAPA;oBACCE,IAAIA,sBAAsBA,GAAGA,IAAIA,CAACA,eAAeA,IAAIA,IAAIA,CAACA,eAAeA,CAACA,MAAMA,KAAKA,CAACA,CAAAA;oBACtFA,EAAEA,CAACA,CAACA,sBAAsBA,CAACA,CAACA,CAACA;wBAC5BA,KAAKA,EAAEA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;4BACnCA,EAAEA,CAACA,CAACA,uBAAOA,CAACA,OAAOA,CAACA,IAAIA,CAACA,eAAeA,CAACA,CAACA,CAACA,CAACA,IAAIA,IAAIA,CAACA,eAAeA,CAACA,CAACA,CAACA,CAACA,MAAMA,KAAKA,CAACA,CAACA,CAACA,CAACA;gCACtFA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oCAC5BA,EAAEA,CAACA,CAACA,CAACA,uBAAOA,CAACA,QAAQA,CAACA,IAAIA,CAACA,eAAeA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;wCACnDA,sBAAsBA,GAAGA,KAAKA,CAACA;wCAC/BA,KAAKA,CAACA,KAAKA,CAACA;oCACbA,CAACA;gCACFA,CAACA;4BACFA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACPA,sBAAsBA,GAAGA,KAAKA,CAACA;gCAC/BA,KAAKA,CAACA;4BACPA,CAACA;wBACFA,CAACA;oBACFA,CAACA;oBAEDA,MAAMA,CAACA,CAACA,uBAAOA,CAACA,gBAAgBA,CAACA,IAAIA,CAACA,KAAKA,CAACA;2BACxCA,IAAIA,CAACA,WAAWA,CAACA,OAAOA,EAAEA;2BAC1BA,sBAAsBA;2BACtBA,uBAAOA,CAACA,mCAAmCA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA,CAACA;gBACjEA,CAACA;gBAEMF,0BAAKA,GAAZA,UAAaA,IAAYA,EAAEA,SAAmBA,EAAEA,UAAkBA;oBACjEG,IAAIA,MAAMA,GAAGA,IAAIA,kBAAWA,CAACA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,EAAEA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,EAAEA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,CAACA,EACzGA,MAAMA,GAAGA;wBACRA,CAACA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,EAAEA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,EAAEA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,CAACA;wBAC9EA,CAACA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,EAAEA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,EAAEA,UAAUA,CAACA,SAASA,CAACA,EAAEA,CAACA,CAACA,CAACA;wBAC/EA,CAACA,UAAUA,CAACA,SAASA,CAACA,EAAEA,CAACA,CAACA,EAAEA,UAAUA,CAACA,SAASA,CAACA,EAAEA,CAACA,CAACA,EAAEA,UAAUA,CAACA,SAASA,CAACA,EAAEA,CAACA,CAACA,CAACA;qBACjFA,EACDA,OAAOA,GAAGA,IAAIA,KAAKA,CAACA,oBAAoBA,CAACA,QAAQA,CAACA,SAASA,CAACA,CAACA,CAACA,EAAEA,EAAEA,CAACA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,IAAIA,CAACA,SAASA,CAACA,IAAIA,CAACA,OAAOA,CAACA,SAASA,CAACA,EAAEA,CAACA,CAACA,CAACA,CAACA,IAAIA,EAAEA,CAACA,CAACA;oBAE1IA,EAAEA,CAACA,CAACA,CAACA,OAAOA,CAACA,OAAOA,EAAEA,CAACA,CAACA,CAACA;wBACxBA,MAAMA,yEAAyEA,GAAGA,UAAUA,CAACA;oBAC9FA,CAACA;oBAEDA,MAAMA,CAACA,OAAOA,CAACA;gBAChBA,CAACA;gBACFH,2BAACA;YAADA,CAACA,AAvDDD,EAA0CA,mBAAaA,EAuDtDA;YAvDYA,0BAAoBA,uBAuDhCA,CAAAA;QACFA,CAACA,EAzD6BD,KAAKA,GAALA,YAAKA,KAALA,YAAKA,QAyDlCA;IAADA,CAACA,EAzDsBD,MAAMA,GAANA,sBAAMA,KAANA,sBAAMA,QAyD5BA;AAADA,CAACA,EAzDM,eAAe,KAAf,eAAe,QAyDrB"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/TriangleLine.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 | var __extends = this.__extends || function (d, b) {
7 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
8 | function __() { this.constructor = d; }
9 | __.prototype = b.prototype;
10 | d.prototype = new __();
11 | };
12 | var LdrawVisualizer;
13 | (function (LdrawVisualizer) {
14 | var Parser;
15 | (function (Parser) {
16 | var Lines;
17 | (function (Lines) {
18 | var TriangleLine = (function (_super) {
19 | __extends(TriangleLine, _super);
20 | function TriangleLine(color, point1, point2, point3) {
21 | _super.call(this, Lines.LdrawFileLineType.Triangle);
22 | this.Color = color;
23 | this.Point1 = point1;
24 | this.Point2 = point2;
25 | this.Point3 = point3;
26 | }
27 | TriangleLine.prototype.IsValid = function () {
28 | return LdrawVisualizer.Utility.isValidColorCode(this.Color)
29 | && this.Point1.IsValid()
30 | && this.Point2.IsValid()
31 | && this.Point3.IsValid();
32 | };
33 | TriangleLine.Parse = function (line, splitLine, lineNumber) {
34 | var point1Coords = new Parser.Coordinates(parseFloat(splitLine[2]), parseFloat(splitLine[3]), parseFloat(splitLine[4])), point2Coords = new Parser.Coordinates(parseFloat(splitLine[5]), parseFloat(splitLine[6]), parseFloat(splitLine[7])), point3Coords = new Parser.Coordinates(parseFloat(splitLine[8]), parseFloat(splitLine[9]), parseFloat(splitLine[10])), triangleLine = new Lines.TriangleLine(parseInt(splitLine[1], 10), point1Coords, point2Coords, point3Coords);
35 | if (!triangleLine.IsValid()) {
36 | throw 'Unable to parse triangle line: Invalid line arguments on line ' + lineNumber;
37 | }
38 | return triangleLine;
39 | };
40 | return TriangleLine;
41 | })(Lines.LdrawFileLine);
42 | Lines.TriangleLine = TriangleLine;
43 | })(Lines = Parser.Lines || (Parser.Lines = {}));
44 | })(Parser = LdrawVisualizer.Parser || (LdrawVisualizer.Parser = {}));
45 | })(LdrawVisualizer || (LdrawVisualizer = {}));
46 | //# sourceMappingURL=TriangleLine.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/TriangleLine.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"TriangleLine.js","sourceRoot":"","sources":["../../../../scripts/parser/lines/TriangleLine.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Lines","LdrawVisualizer.Parser.Lines.TriangleLine","LdrawVisualizer.Parser.Lines.TriangleLine.constructor","LdrawVisualizer.Parser.Lines.TriangleLine.IsValid","LdrawVisualizer.Parser.Lines.TriangleLine.Parse"],"mappings":"AAAA,uDAAuD;AACvD,yCAAyC;AACzC,2CAA2C;AAC3C,0CAA0C;AAC1C,uCAAuC;;;;;;;AAEvC,IAAO,eAAe,CAoCrB;AApCD,WAAO,eAAe;IAACA,IAAAA,MAAMA,CAoC5BA;IApCsBA,WAAAA,MAAMA;QAACC,IAAAA,KAAKA,CAoClCA;QApC6BA,WAAAA,KAAKA,EAACA,CAACA;YACpCC;gBAAkCC,gCAAaA;gBAC9CA,sBAAYA,KAAaA,EAAEA,MAAmBA,EAAEA,MAAmBA,EAAEA,MAAmBA;oBACvFC,kBAAMA,uBAAiBA,CAACA,QAAQA,CAACA,CAACA;oBAElCA,IAAIA,CAACA,KAAKA,GAAGA,KAAKA,CAACA;oBACnBA,IAAIA,CAACA,MAAMA,GAAGA,MAAMA,CAACA;oBACrBA,IAAIA,CAACA,MAAMA,GAAGA,MAAMA,CAACA;oBACrBA,IAAIA,CAACA,MAAMA,GAAGA,MAAMA,CAACA;gBACtBA,CAACA;gBAODD,8BAAOA,GAAPA;oBACCE,MAAMA,CAACA,uBAAOA,CAACA,gBAAgBA,CAACA,IAAIA,CAACA,KAAKA,CAACA;2BACvCA,IAAIA,CAACA,MAAMA,CAACA,OAAOA,EAAEA;2BACrBA,IAAIA,CAACA,MAAMA,CAACA,OAAOA,EAAEA;2BACrBA,IAAIA,CAACA,MAAMA,CAACA,OAAOA,EAAEA,CAACA;gBAC3BA,CAACA;gBAEMF,kBAAKA,GAAZA,UAAaA,IAAYA,EAAEA,SAAmBA,EAAEA,UAAkBA;oBACjEG,IAAIA,YAAYA,GAAGA,IAAIA,kBAAWA,CAACA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,EAAEA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,EAAEA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,CAACA,EAC/GA,YAAYA,GAAGA,IAAIA,kBAAWA,CAACA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,EAAEA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,EAAEA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,CAACA,EAC5GA,YAAYA,GAAGA,IAAIA,kBAAWA,CAACA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,EAAEA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,EAAEA,UAAUA,CAACA,SAASA,CAACA,EAAEA,CAACA,CAACA,CAACA,EAC7GA,YAAYA,GAAGA,IAAIA,KAAKA,CAACA,YAAYA,CAACA,QAAQA,CAACA,SAASA,CAACA,CAACA,CAACA,EAAEA,EAAEA,CAACA,EAAEA,YAAYA,EAAEA,YAAYA,EAAEA,YAAYA,CAACA,CAACA;oBAE7GA,EAAEA,CAACA,CAACA,CAACA,YAAYA,CAACA,OAAOA,EAAEA,CAACA,CAACA,CAACA;wBAC7BA,MAAMA,gEAAgEA,GAAGA,UAAUA,CAACA;oBACrFA,CAACA;oBAEDA,MAAMA,CAACA,YAAYA,CAACA;gBACrBA,CAACA;gBACFH,mBAACA;YAADA,CAACA,AAlCDD,EAAkCA,mBAAaA,EAkC9CA;YAlCYA,kBAAYA,eAkCxBA,CAAAA;QACFA,CAACA,EApC6BD,KAAKA,GAALA,YAAKA,KAALA,YAAKA,QAoClCA;IAADA,CAACA,EApCsBD,MAAMA,GAANA,sBAAMA,KAANA,sBAAMA,QAoC5BA;AAADA,CAACA,EApCM,eAAe,KAAf,eAAe,QAoCrB"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/AuthorMETALine.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | var __extends = this.__extends || function (d, b) {
4 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
5 | function __() { this.constructor = d; }
6 | __.prototype = b.prototype;
7 | d.prototype = new __();
8 | };
9 | var LdrawVisualizer;
10 | (function (LdrawVisualizer) {
11 | var Parser;
12 | (function (Parser) {
13 | var Lines;
14 | (function (Lines) {
15 | var AuthorMETALine = (function (_super) {
16 | __extends(AuthorMETALine, _super);
17 | function AuthorMETALine(author) {
18 | _super.call(this, Lines.LdrawFileLineType.Author);
19 | this.Author = author;
20 | }
21 | AuthorMETALine.prototype.IsValid = function () {
22 | return LdrawVisualizer.Utility.hasAtLeastOneNonWhitespaceCharacter(this.Author);
23 | };
24 | AuthorMETALine.Parse = function (line, splitLine, lineNumber) {
25 | var authorLine = new AuthorMETALine(splitLine[2]);
26 | if (!authorLine.IsValid()) {
27 | throw 'Unable to parse author META line: Invalid line arguments on line ' + lineNumber;
28 | }
29 | return authorLine;
30 | };
31 | return AuthorMETALine;
32 | })(Lines.LdrawFileLine);
33 | Lines.AuthorMETALine = AuthorMETALine;
34 | })(Lines = Parser.Lines || (Parser.Lines = {}));
35 | })(Parser = LdrawVisualizer.Parser || (LdrawVisualizer.Parser = {}));
36 | })(LdrawVisualizer || (LdrawVisualizer = {}));
37 | //# sourceMappingURL=AuthorMETALine.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/AuthorMETALine.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"AuthorMETALine.js","sourceRoot":"","sources":["../../../../../scripts/parser/lines/meta-lines/AuthorMETALine.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Lines","LdrawVisualizer.Parser.Lines.AuthorMETALine","LdrawVisualizer.Parser.Lines.AuthorMETALine.constructor","LdrawVisualizer.Parser.Lines.AuthorMETALine.IsValid","LdrawVisualizer.Parser.Lines.AuthorMETALine.Parse"],"mappings":"AAAA,0DAA0D;AAC1D,wCAAwC;;;;;;;AAExC,IAAO,eAAe,CAuBrB;AAvBD,WAAO,eAAe;IAACA,IAAAA,MAAMA,CAuB5BA;IAvBsBA,WAAAA,MAAMA;QAACC,IAAAA,KAAKA,CAuBlCA;QAvB6BA,WAAAA,KAAKA,EAACA,CAACA;YACpCC;gBAAoCC,kCAAaA;gBAChDA,wBAAYA,MAAcA;oBACzBC,kBAAMA,uBAAiBA,CAACA,MAAMA,CAACA,CAACA;oBAChCA,IAAIA,CAACA,MAAMA,GAAGA,MAAMA,CAACA;gBACtBA,CAACA;gBAIDD,gCAAOA,GAAPA;oBACCE,MAAMA,CAACA,uBAAOA,CAACA,mCAAmCA,CAACA,IAAIA,CAACA,MAAMA,CAACA,CAACA;gBACjEA,CAACA;gBAEMF,oBAAKA,GAAZA,UAAaA,IAAYA,EAAEA,SAAmBA,EAAEA,UAAkBA;oBACjEG,IAAIA,UAAUA,GAAGA,IAAIA,cAAcA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAElDA,EAAEA,CAACA,CAACA,CAACA,UAAUA,CAACA,OAAOA,EAAEA,CAACA,CAACA,CAACA;wBAC3BA,MAAMA,mEAAmEA,GAAGA,UAAUA,CAACA;oBACxFA,CAACA;oBAEDA,MAAMA,CAACA,UAAUA,CAACA;gBACnBA,CAACA;gBACFH,qBAACA;YAADA,CAACA,AArBDD,EAAoCA,mBAAaA,EAqBhDA;YArBYA,oBAAcA,iBAqB1BA,CAAAA;QACFA,CAACA,EAvB6BD,KAAKA,GAALA,YAAKA,KAALA,YAAKA,QAuBlCA;IAADA,CAACA,EAvBsBD,MAAMA,GAANA,sBAAMA,KAANA,sBAAMA,QAuB5BA;AAADA,CAACA,EAvBM,eAAe,KAAf,eAAe,QAuBrB"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/FileMETALine.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | var __extends = this.__extends || function (d, b) {
4 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
5 | function __() { this.constructor = d; }
6 | __.prototype = b.prototype;
7 | d.prototype = new __();
8 | };
9 | var LdrawVisualizer;
10 | (function (LdrawVisualizer) {
11 | var Parser;
12 | (function (Parser) {
13 | var Lines;
14 | (function (Lines) {
15 | var FileMETALine = (function (_super) {
16 | __extends(FileMETALine, _super);
17 | function FileMETALine(filename) {
18 | _super.call(this, Lines.LdrawFileLineType.File);
19 | this.Filename = filename;
20 | }
21 | FileMETALine.prototype.IsValid = function () {
22 | return LdrawVisualizer.Utility.hasAtLeastOneNonWhitespaceCharacter(this.Filename);
23 | };
24 | FileMETALine.Parse = function (line, splitLine, lineNumber) {
25 | var fileLine = new FileMETALine(line.substring(line.indexOf(splitLine[2])));
26 | if (!fileLine.IsValid()) {
27 | throw 'Unable to parse file META line: Invalid line arguments on line ' + lineNumber;
28 | }
29 | return fileLine;
30 | };
31 | return FileMETALine;
32 | })(Lines.LdrawFileLine);
33 | Lines.FileMETALine = FileMETALine;
34 | })(Lines = Parser.Lines || (Parser.Lines = {}));
35 | })(Parser = LdrawVisualizer.Parser || (LdrawVisualizer.Parser = {}));
36 | })(LdrawVisualizer || (LdrawVisualizer = {}));
37 | //# sourceMappingURL=FileMETALine.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/FileMETALine.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"FileMETALine.js","sourceRoot":"","sources":["../../../../../scripts/parser/lines/meta-lines/FileMETALine.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Lines","LdrawVisualizer.Parser.Lines.FileMETALine","LdrawVisualizer.Parser.Lines.FileMETALine.constructor","LdrawVisualizer.Parser.Lines.FileMETALine.IsValid","LdrawVisualizer.Parser.Lines.FileMETALine.Parse"],"mappings":"AAAA,0DAA0D;AAC1D,wCAAwC;;;;;;;AAExC,IAAO,eAAe,CAwBrB;AAxBD,WAAO,eAAe;IAACA,IAAAA,MAAMA,CAwB5BA;IAxBsBA,WAAAA,MAAMA;QAACC,IAAAA,KAAKA,CAwBlCA;QAxB6BA,WAAAA,KAAKA,EAACA,CAACA;YACpCC;gBAAkCC,gCAAaA;gBAC9CA,sBAAYA,QAAgBA;oBAC3BC,kBAAMA,uBAAiBA,CAACA,IAAIA,CAACA,CAACA;oBAE9BA,IAAIA,CAACA,QAAQA,GAAGA,QAAQA,CAACA;gBAC1BA,CAACA;gBAIDD,8BAAOA,GAAPA;oBACCE,MAAMA,CAACA,uBAAOA,CAACA,mCAAmCA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;gBACnEA,CAACA;gBAEMF,kBAAKA,GAAZA,UAAaA,IAAYA,EAAEA,SAAmBA,EAAEA,UAAkBA;oBACjEG,IAAIA,QAAQA,GAAGA,IAAIA,YAAYA,CAACA,IAAIA,CAACA,SAASA,CAACA,IAAIA,CAACA,OAAOA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAE5EA,EAAEA,CAACA,CAACA,CAACA,QAAQA,CAACA,OAAOA,EAAEA,CAACA,CAACA,CAACA;wBACzBA,MAAMA,iEAAiEA,GAAGA,UAAUA,CAACA;oBACtFA,CAACA;oBAEDA,MAAMA,CAACA,QAAQA,CAACA;gBACjBA,CAACA;gBACFH,mBAACA;YAADA,CAACA,AAtBDD,EAAkCA,mBAAaA,EAsB9CA;YAtBYA,kBAAYA,eAsBxBA,CAAAA;QACFA,CAACA,EAxB6BD,KAAKA,GAALA,YAAKA,KAALA,YAAKA,QAwBlCA;IAADA,CAACA,EAxBsBD,MAAMA,GAANA,sBAAMA,KAANA,sBAAMA,QAwB5BA;AAADA,CAACA,EAxBM,eAAe,KAAf,eAAe,QAwBrB"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/LdrawOrgMETALine.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"LdrawOrgMETALine.js","sourceRoot":"","sources":["../../../../../scripts/parser/lines/meta-lines/LdrawOrgMETALine.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Lines","LdrawVisualizer.Parser.Lines.LdrawOrgMETALine","LdrawVisualizer.Parser.Lines.LdrawOrgMETALine.constructor","LdrawVisualizer.Parser.Lines.LdrawOrgMETALine.IsValid","LdrawVisualizer.Parser.Lines.LdrawOrgMETALine.Parse","LdrawVisualizer.Parser.Lines.LdrawOrgPartType"],"mappings":"AAAA,0DAA0D;AAC1D,4CAA4C;AAC5C,wCAAwC;;;;;;;AAExC,IAAO,eAAe,CAsErB;AAtED,WAAO,eAAe;IAACA,IAAAA,MAAMA,CAsE5BA;IAtEsBA,WAAAA,MAAMA;QAACC,IAAAA,KAAKA,CAsElCA;QAtE6BA,WAAAA,KAAKA,EAACA,CAACA;YACpCC;gBAAsCC,oCAAaA;gBAClDA,0BAAYA,QAA0BA;oBACrCC,kBAAMA,uBAAiBA,CAACA,QAAQA,CAACA,CAACA;oBAElCA,IAAIA,CAACA,QAAQA,GAAGA,QAAQA,CAACA;gBAC1BA,CAACA;gBAIDD,kCAAOA,GAAPA;oBACCE,MAAMA,CAACA,CAACA,uBAAOA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;gBAClDA,CAACA;gBAEMF,sBAAKA,GAAZA,UAAaA,IAAYA,EAAEA,SAAmBA,EAAEA,UAAkBA;oBAEjEG,IAAIA,cAAcA,GAAGA,CAACA,SAASA,CAACA,CAACA,CAACA,IAAIA,+BAA+BA,CAACA,CAACA,IAAIA,EAAEA,CAACA,WAAWA,EAAEA,CAACA;oBAC5FA,IAAIA,MAAwBA,CAACA;oBAE7BA,MAAMA,CAACA,CAACA,cAAcA,CAACA,CAACA,CAACA;wBACxBA,KAAKA,MAAMA;4BACVA,MAAMA,GAAGA,IAAIA,gBAAgBA,CAACA,gBAAgBA,CAACA,IAAIA,CAACA,CAACA;4BACrDA,KAAKA,CAACA;wBACPA,KAAKA,SAASA;4BACbA,MAAMA,GAAGA,IAAIA,gBAAgBA,CAACA,gBAAgBA,CAACA,OAAOA,CAACA,CAACA;4BACxDA,KAAKA,CAACA;wBACPA,KAAKA,WAAWA;4BACfA,MAAMA,GAAGA,IAAIA,gBAAgBA,CAACA,gBAAgBA,CAACA,SAASA,CAACA,CAACA;4BAC1DA,KAAKA,CAACA;wBACPA,KAAKA,cAAcA;4BAClBA,MAAMA,GAAGA,IAAIA,gBAAgBA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,CAACA;4BAC7DA,KAAKA,CAACA;wBACPA,KAAKA,UAAUA;4BACdA,MAAMA,GAAGA,IAAIA,gBAAgBA,CAACA,gBAAgBA,CAACA,QAAQA,CAACA,CAACA;4BACzDA,KAAKA,CAACA;wBACPA,KAAKA,iBAAiBA;4BACrBA,MAAMA,GAAGA,IAAIA,gBAAgBA,CAACA,gBAAgBA,CAACA,eAAeA,CAACA,CAACA;4BAChEA,KAAKA,CAACA;wBACPA,KAAKA,oBAAoBA;4BACxBA,MAAMA,GAAGA,IAAIA,gBAAgBA,CAACA,gBAAgBA,CAACA,kBAAkBA,CAACA,CAACA;4BACnEA,KAAKA,CAACA;wBACPA,KAAKA,sBAAsBA;4BAC1BA,MAAMA,GAAGA,IAAIA,gBAAgBA,CAACA,gBAAgBA,CAACA,oBAAoBA,CAACA,CAACA;4BACrEA,KAAKA,CAACA;wBACPA,KAAKA,yBAAyBA;4BAC7BA,MAAMA,GAAGA,IAAIA,gBAAgBA,CAACA,gBAAgBA,CAACA,uBAAuBA,CAACA,CAACA;4BACxEA,KAAKA,CAACA;wBACPA,KAAKA,qBAAqBA;4BACzBA,MAAMA,GAAGA,IAAIA,gBAAgBA,CAACA,gBAAgBA,CAACA,mBAAmBA,CAACA,CAACA;4BACpEA,KAAKA,CAACA;wBACPA,KAAKA,eAAeA;4BACnBA,MAAMA,GAAGA,IAAIA,gBAAgBA,CAACA,gBAAgBA,CAACA,aAAaA,CAACA,CAACA;4BAC9DA,KAAKA,CAACA;wBACPA;4BACCA,MAAMA,GAAGA,IAAIA,gBAAgBA,CAACA,gBAAgBA,CAACA,KAAKA,CAACA,CAACA;oBACxDA,CAACA;oBAEDA,EAAEA,CAACA,CAACA,CAACA,MAAMA,CAACA,OAAOA,EAAEA,CAACA,CAACA,CAACA;wBACvBA,MAAMA,sEAAsEA,GAAGA,UAAUA,CAACA;oBAC3FA,CAACA;oBAEDA,MAAMA,CAACA,MAAMA,CAACA;gBACfA,CAACA;gBACFH,uBAACA;YAADA,CAACA,AA9DDD,EAAsCA,mBAAaA,EA8DlDA;YA9DYA,sBAAgBA,mBA8D5BA,CAAAA;YAEDA,WAAYA,gBAAgBA;gBAC3BK,uDAAIA,CAAAA;gBAAEA,6DAAOA,CAAAA;gBAAEA,iEAASA,CAAAA;gBAAEA,uEAAYA,CAAAA;gBAAEA,+DAAQA,CAAAA;gBAChDA,6EAAeA,CAAAA;gBAAEA,mFAAkBA,CAAAA;gBAAEA,uFAAoBA,CAAAA;gBAAEA,6FAAuBA,CAAAA;gBAAEA,qFAAmBA,CAAAA;gBACvGA,0EAAaA,CAAAA;gBAAEA,0DAAKA,CAAAA;YACrBA,CAACA,EAJWL,sBAAgBA,KAAhBA,sBAAgBA,QAI3BA;YAJDA,IAAYA,gBAAgBA,GAAhBA,sBAIXA,CAAAA;QACFA,CAACA,EAtE6BD,KAAKA,GAALA,YAAKA,KAALA,YAAKA,QAsElCA;IAADA,CAACA,EAtEsBD,MAAMA,GAANA,sBAAMA,KAANA,sBAAMA,QAsE5BA;AAADA,CAACA,EAtEM,eAAe,KAAf,eAAe,QAsErB"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/METALine.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | var __extends = this.__extends || function (d, b) {
5 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
6 | function __() { this.constructor = d; }
7 | __.prototype = b.prototype;
8 | d.prototype = new __();
9 | };
10 | var LdrawVisualizer;
11 | (function (LdrawVisualizer) {
12 | var Parser;
13 | (function (Parser) {
14 | var Lines;
15 | (function (Lines) {
16 | var METALine = (function (_super) {
17 | __extends(METALine, _super);
18 | function METALine(metaLineType) {
19 | _super.call(this, Lines.LdrawFileLineType.CommentOrMETA);
20 | this.METALineType = metaLineType;
21 | }
22 | // attempts to parse the line as a META line. If no matching META declaration is found,
23 | // this function returns null
24 | METALine.Parse = function (line, splitLine, lineNumber) {
25 | if (LdrawVisualizer.Utility.isNullOrUndefined(splitLine[1])) {
26 | return null;
27 | }
28 | var metaTag = splitLine[1].replace('!', '').toUpperCase().trim();
29 | // test for a standard comment line
30 | if (/^\/\//.test(metaTag)) {
31 | return null;
32 | }
33 | if (metaTag === 'COLOUR') {
34 | return Lines.ColourMETALine.Parse(line, splitLine, lineNumber);
35 | }
36 | else if (metaTag === 'STEP') {
37 | return Lines.StepMETALine.Parse(line, splitLine, lineNumber);
38 | }
39 | else if (metaTag === 'ROTSTEP') {
40 | return Lines.RotationStepMETALine.Parse(line, splitLine, lineNumber);
41 | }
42 | else if (/^Name:?$/i.test(metaTag)) {
43 | return Lines.NameMETALine.Parse(line, splitLine, lineNumber);
44 | }
45 | else if (/^Author:?$/i.test(metaTag)) {
46 | return Lines.AuthorMETALine.Parse(line, splitLine, lineNumber);
47 | }
48 | else if (metaTag === 'ROTATION') {
49 | if (splitLine[2] && splitLine[2].toUpperCase().trim() === 'CENTER') {
50 | return Lines.RotationCenterMETALine.Parse(line, splitLine, lineNumber);
51 | }
52 | else if (splitLine[2] && splitLine[2].toUpperCase().trim() === 'CONFIG') {
53 | return Lines.RotationConfigMETALine.Parse(line, splitLine, lineNumber);
54 | }
55 | else {
56 | console.log('Unknown ROTATION META tag subtype on line ' + lineNumber);
57 | return null;
58 | }
59 | }
60 | else if (/!?LDRAW_ORG/.test(metaTag)) {
61 | return Lines.LdrawOrgMETALine.Parse(line, splitLine, lineNumber);
62 | }
63 | else {
64 | //console.log('Unknown or unimplemented META tag on line ' + lineNumber + ': "' + metaTag + '"');
65 | return null;
66 | }
67 | };
68 | return METALine;
69 | })(Lines.LdrawFileLine);
70 | Lines.METALine = METALine;
71 | })(Lines = Parser.Lines || (Parser.Lines = {}));
72 | })(Parser = LdrawVisualizer.Parser || (LdrawVisualizer.Parser = {}));
73 | })(LdrawVisualizer || (LdrawVisualizer = {}));
74 | //# sourceMappingURL=METALine.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/METALine.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"METALine.js","sourceRoot":"","sources":["../../../../../scripts/parser/lines/meta-lines/METALine.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Lines","LdrawVisualizer.Parser.Lines.METALine","LdrawVisualizer.Parser.Lines.METALine.constructor","LdrawVisualizer.Parser.Lines.METALine.Parse"],"mappings":"AAAA,0DAA0D;AAC1D,4CAA4C;AAC5C,wCAAwC;;;;;;;AAExC,IAAO,eAAe,CAkDrB;AAlDD,WAAO,eAAe;IAACA,IAAAA,MAAMA,CAkD5BA;IAlDsBA,WAAAA,MAAMA;QAACC,IAAAA,KAAKA,CAkDlCA;QAlD6BA,WAAAA,KAAKA,EAACA,CAACA;YACpCC;gBAA8BC,4BAAaA;gBAC1CA,kBAAYA,YAAmCA;oBAC9CC,kBAAMA,uBAAiBA,CAACA,aAAaA,CAACA,CAACA;oBACvCA,IAAIA,CAACA,YAAYA,GAAGA,YAAYA,CAACA;gBAClCA,CAACA;gBAIDD,wFAAwFA;gBACxFA,6BAA6BA;gBACtBA,cAAKA,GAAZA,UAAaA,IAAYA,EAAEA,SAAmBA,EAAEA,UAAkBA;oBACjEE,EAAEA,CAACA,CAACA,uBAAOA,CAACA,iBAAiBA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;wBAC7CA,MAAMA,CAACA,IAAIA,CAACA;oBACbA,CAACA;oBAEDA,IAAIA,OAAOA,GAAGA,SAASA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,GAAGA,EAAEA,EAAEA,CAACA,CAACA,WAAWA,EAAEA,CAACA,IAAIA,EAAEA,CAACA;oBAEjEA,mCAAmCA;oBACnCA,EAAEA,CAACA,CAACA,OAAOA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA;wBAC3BA,MAAMA,CAACA,IAAIA,CAACA;oBACbA,CAACA;oBAEDA,EAAEA,CAACA,CAACA,OAAOA,KAAKA,QAAQA,CAACA,CAACA,CAACA;wBAC1BA,MAAMA,CAACA,oBAAcA,CAACA,KAAKA,CAACA,IAAIA,EAAEA,SAASA,EAAEA,UAAUA,CAACA,CAACA;oBAC1DA,CAACA;oBAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,OAAOA,KAAKA,MAAMA,CAACA,CAACA,CAACA;wBAC/BA,MAAMA,CAACA,kBAAYA,CAACA,KAAKA,CAACA,IAAIA,EAAEA,SAASA,EAAEA,UAAUA,CAACA,CAACA;oBACxDA,CAACA;oBAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,OAAOA,KAAKA,SAASA,CAACA,CAACA,CAACA;wBAClCA,MAAMA,CAACA,0BAAoBA,CAACA,KAAKA,CAACA,IAAIA,EAAEA,SAASA,EAAEA,UAAUA,CAACA,CAACA;oBAChEA,CAACA;oBAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,WAAWA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA;wBACtCA,MAAMA,CAACA,kBAAYA,CAACA,KAAKA,CAACA,IAAIA,EAAEA,SAASA,EAAEA,UAAUA,CAACA,CAACA;oBACxDA,CAACA;oBAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,aAAaA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA;wBACxCA,MAAMA,CAACA,oBAAcA,CAACA,KAAKA,CAACA,IAAIA,EAAEA,SAASA,EAAEA,UAAUA,CAACA,CAACA;oBAC1DA,CAACA;oBAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,OAAOA,KAAKA,UAAUA,CAACA,CAACA,CAACA;wBACnCA,EAAEA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA,IAAIA,SAASA,CAACA,CAACA,CAACA,CAACA,WAAWA,EAAEA,CAACA,IAAIA,EAAEA,KAAKA,QAAQA,CAACA,CAACA,CAACA;4BACpEA,MAAMA,CAACA,4BAAsBA,CAACA,KAAKA,CAACA,IAAIA,EAAEA,SAASA,EAAEA,UAAUA,CAACA,CAACA;wBAClEA,CAACA;wBAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA,IAAIA,SAASA,CAACA,CAACA,CAACA,CAACA,WAAWA,EAAEA,CAACA,IAAIA,EAAEA,KAAKA,QAAQA,CAACA,CAACA,CAACA;4BAC3EA,MAAMA,CAACA,4BAAsBA,CAACA,KAAKA,CAACA,IAAIA,EAAEA,SAASA,EAAEA,UAAUA,CAACA,CAACA;wBAClEA,CAACA;wBAACA,IAAIA,CAACA,CAACA;4BACPA,OAAOA,CAACA,GAAGA,CAACA,4CAA4CA,GAAGA,UAAUA,CAACA,CAACA;4BACvEA,MAAMA,CAACA,IAAIA,CAACA;wBACbA,CAACA;oBACFA,CAACA;oBAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,aAAaA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA;wBACxCA,MAAMA,CAACA,sBAAgBA,CAACA,KAAKA,CAACA,IAAIA,EAAEA,SAASA,EAAEA,UAAUA,CAACA,CAACA;oBAC5DA,CAACA;oBAACA,IAAIA,CAACA,CAACA;wBACPA,iGAAiGA;wBACjGA,MAAMA,CAACA,IAAIA,CAACA;oBACbA,CAACA;gBACFA,CAACA;gBACFF,eAACA;YAADA,CAACA,AAhDDD,EAA8BA,mBAAaA,EAgD1CA;YAhDYA,cAAQA,WAgDpBA,CAAAA;QACFA,CAACA,EAlD6BD,KAAKA,GAALA,YAAKA,KAALA,YAAKA,QAkDlCA;IAADA,CAACA,EAlDsBD,MAAMA,GAANA,sBAAMA,KAANA,sBAAMA,QAkD5BA;AAADA,CAACA,EAlDM,eAAe,KAAf,eAAe,QAkDrB"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/NameMETALine.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | var __extends = this.__extends || function (d, b) {
4 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
5 | function __() { this.constructor = d; }
6 | __.prototype = b.prototype;
7 | d.prototype = new __();
8 | };
9 | var LdrawVisualizer;
10 | (function (LdrawVisualizer) {
11 | var Parser;
12 | (function (Parser) {
13 | var Lines;
14 | (function (Lines) {
15 | var NameMETALine = (function (_super) {
16 | __extends(NameMETALine, _super);
17 | function NameMETALine(name) {
18 | _super.call(this, Lines.LdrawFileLineType.Name);
19 | this.Name = name;
20 | }
21 | NameMETALine.prototype.IsValid = function () {
22 | return LdrawVisualizer.Utility.hasAtLeastOneNonWhitespaceCharacter(this.Name);
23 | };
24 | NameMETALine.Parse = function (line, splitLine, lineNumber) {
25 | var nameLine = new NameMETALine(line.substring(line.indexOf(splitLine[2])));
26 | if (!nameLine.IsValid()) {
27 | throw 'Unable to parse name META line: Invalid line arguments on line ' + lineNumber;
28 | }
29 | return nameLine;
30 | };
31 | return NameMETALine;
32 | })(Lines.LdrawFileLine);
33 | Lines.NameMETALine = NameMETALine;
34 | })(Lines = Parser.Lines || (Parser.Lines = {}));
35 | })(Parser = LdrawVisualizer.Parser || (LdrawVisualizer.Parser = {}));
36 | })(LdrawVisualizer || (LdrawVisualizer = {}));
37 | //# sourceMappingURL=NameMETALine.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/NameMETALine.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"NameMETALine.js","sourceRoot":"","sources":["../../../../../scripts/parser/lines/meta-lines/NameMETALine.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Lines","LdrawVisualizer.Parser.Lines.NameMETALine","LdrawVisualizer.Parser.Lines.NameMETALine.constructor","LdrawVisualizer.Parser.Lines.NameMETALine.IsValid","LdrawVisualizer.Parser.Lines.NameMETALine.Parse"],"mappings":"AAAA,0DAA0D;AAC1D,wCAAwC;;;;;;;AAExC,IAAO,eAAe,CAwBrB;AAxBD,WAAO,eAAe;IAACA,IAAAA,MAAMA,CAwB5BA;IAxBsBA,WAAAA,MAAMA;QAACC,IAAAA,KAAKA,CAwBlCA;QAxB6BA,WAAAA,KAAKA,EAACA,CAACA;YACpCC;gBAAkCC,gCAAaA;gBAC9CA,sBAAYA,IAAYA;oBACvBC,kBAAMA,uBAAiBA,CAACA,IAAIA,CAACA,CAACA;oBAE9BA,IAAIA,CAACA,IAAIA,GAAGA,IAAIA,CAACA;gBAClBA,CAACA;gBAIDD,8BAAOA,GAAPA;oBACCE,MAAMA,CAACA,uBAAOA,CAACA,mCAAmCA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA;gBAC/DA,CAACA;gBAEMF,kBAAKA,GAAZA,UAAaA,IAAYA,EAAEA,SAAmBA,EAAEA,UAAkBA;oBACjEG,IAAIA,QAAQA,GAAGA,IAAIA,YAAYA,CAACA,IAAIA,CAACA,SAASA,CAACA,IAAIA,CAACA,OAAOA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAE5EA,EAAEA,CAACA,CAACA,CAACA,QAAQA,CAACA,OAAOA,EAAEA,CAACA,CAACA,CAACA;wBACzBA,MAAMA,iEAAiEA,GAAGA,UAAUA,CAACA;oBACtFA,CAACA;oBAEDA,MAAMA,CAACA,QAAQA,CAACA;gBACjBA,CAACA;gBACFH,mBAACA;YAADA,CAACA,AAtBDD,EAAkCA,mBAAaA,EAsB9CA;YAtBYA,kBAAYA,eAsBxBA,CAAAA;QACFA,CAACA,EAxB6BD,KAAKA,GAALA,YAAKA,KAALA,YAAKA,QAwBlCA;IAADA,CAACA,EAxBsBD,MAAMA,GAANA,sBAAMA,KAANA,sBAAMA,QAwB5BA;AAADA,CAACA,EAxBM,eAAe,KAAf,eAAe,QAwBrB"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/NoFileMETALine.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | var __extends = this.__extends || function (d, b) {
4 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
5 | function __() { this.constructor = d; }
6 | __.prototype = b.prototype;
7 | d.prototype = new __();
8 | };
9 | var LdrawVisualizer;
10 | (function (LdrawVisualizer) {
11 | var Parser;
12 | (function (Parser) {
13 | var Lines;
14 | (function (Lines) {
15 | var NoFileMETALine = (function (_super) {
16 | __extends(NoFileMETALine, _super);
17 | function NoFileMETALine() {
18 | _super.call(this, Lines.LdrawFileLineType.NoFile);
19 | }
20 | NoFileMETALine.prototype.IsValid = function () {
21 | return true;
22 | };
23 | NoFileMETALine.Parse = function (line, splitLine, lineNumber) {
24 | var noFileLine = new NoFileMETALine();
25 | if (!noFileLine.IsValid()) {
26 | throw 'Unable to parse NOFILE META line: Invalid line arguments on line ' + lineNumber;
27 | }
28 | return noFileLine;
29 | };
30 | return NoFileMETALine;
31 | })(Lines.LdrawFileLine);
32 | Lines.NoFileMETALine = NoFileMETALine;
33 | })(Lines = Parser.Lines || (Parser.Lines = {}));
34 | })(Parser = LdrawVisualizer.Parser || (LdrawVisualizer.Parser = {}));
35 | })(LdrawVisualizer || (LdrawVisualizer = {}));
36 | //# sourceMappingURL=NoFileMETALine.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/NoFileMETALine.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"NoFileMETALine.js","sourceRoot":"","sources":["../../../../../scripts/parser/lines/meta-lines/NoFileMETALine.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Lines","LdrawVisualizer.Parser.Lines.NoFileMETALine","LdrawVisualizer.Parser.Lines.NoFileMETALine.constructor","LdrawVisualizer.Parser.Lines.NoFileMETALine.IsValid","LdrawVisualizer.Parser.Lines.NoFileMETALine.Parse"],"mappings":"AAAA,0DAA0D;AAC1D,wCAAwC;;;;;;;AAExC,IAAO,eAAe,CAoBrB;AApBD,WAAO,eAAe;IAACA,IAAAA,MAAMA,CAoB5BA;IApBsBA,WAAAA,MAAMA;QAACC,IAAAA,KAAKA,CAoBlCA;QApB6BA,WAAAA,KAAKA,EAACA,CAACA;YACpCC;gBAAoCC,kCAAaA;gBAChDA;oBACCC,kBAAMA,uBAAiBA,CAACA,MAAMA,CAACA,CAACA;gBACjCA,CAACA;gBAEDD,gCAAOA,GAAPA;oBACCE,MAAMA,CAACA,IAAIA,CAACA;gBACbA,CAACA;gBAEMF,oBAAKA,GAAZA,UAAaA,IAAYA,EAAEA,SAAmBA,EAAEA,UAAkBA;oBACjEG,IAAIA,UAAUA,GAAGA,IAAIA,cAAcA,EAAEA,CAACA;oBAEtCA,EAAEA,CAACA,CAACA,CAACA,UAAUA,CAACA,OAAOA,EAAEA,CAACA,CAACA,CAACA;wBAC3BA,MAAMA,mEAAmEA,GAAGA,UAAUA,CAACA;oBACxFA,CAACA;oBAEDA,MAAMA,CAACA,UAAUA,CAACA;gBACnBA,CAACA;gBACFH,qBAACA;YAADA,CAACA,AAlBDD,EAAoCA,mBAAaA,EAkBhDA;YAlBYA,oBAAcA,iBAkB1BA,CAAAA;QACFA,CAACA,EApB6BD,KAAKA,GAALA,YAAKA,KAALA,YAAKA,QAoBlCA;IAADA,CAACA,EApBsBD,MAAMA,GAANA,sBAAMA,KAANA,sBAAMA,QAoB5BA;AAADA,CAACA,EApBM,eAAe,KAAf,eAAe,QAoBrB"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/PartDescription.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | var __extends = this.__extends || function (d, b) {
4 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
5 | function __() { this.constructor = d; }
6 | __.prototype = b.prototype;
7 | d.prototype = new __();
8 | };
9 | var LdrawVisualizer;
10 | (function (LdrawVisualizer) {
11 | var Parser;
12 | (function (Parser) {
13 | var Lines;
14 | (function (Lines) {
15 | var PartDescriptionMETALine = (function (_super) {
16 | __extends(PartDescriptionMETALine, _super);
17 | function PartDescriptionMETALine(name) {
18 | _super.call(this, Lines.LdrawFileLineType.Name);
19 | this.Name = name;
20 | }
21 | PartDescriptionMETALine.prototype.IsValid = function () {
22 | return LdrawVisualizer.Utility.hasAtLeastOneNonWhitespaceCharacter(this.Name);
23 | };
24 | PartDescriptionMETALine.Parse = function (line, splitLine, lineNumber) {
25 | var nameLine = new Lines.NameMETALine(splitLine[2]);
26 | if (!nameLine.IsValid()) {
27 | throw 'Unable to parse name META line: Invalid line arguments on line ' + lineNumber;
28 | }
29 | return nameLine;
30 | };
31 | return PartDescriptionMETALine;
32 | })(Lines.LdrawFileLine);
33 | Lines.PartDescriptionMETALine = PartDescriptionMETALine;
34 | })(Lines = Parser.Lines || (Parser.Lines = {}));
35 | })(Parser = LdrawVisualizer.Parser || (LdrawVisualizer.Parser = {}));
36 | })(LdrawVisualizer || (LdrawVisualizer = {}));
37 | //# sourceMappingURL=PartDescription.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/PartDescription.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"PartDescription.js","sourceRoot":"","sources":["../../../../../scripts/parser/lines/meta-lines/PartDescription.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Lines","LdrawVisualizer.Parser.Lines.PartDescriptionMETALine","LdrawVisualizer.Parser.Lines.PartDescriptionMETALine.constructor","LdrawVisualizer.Parser.Lines.PartDescriptionMETALine.IsValid","LdrawVisualizer.Parser.Lines.PartDescriptionMETALine.Parse"],"mappings":"AAAA,0DAA0D;AAC1D,wCAAwC;;;;;;;AAExC,IAAO,eAAe,CAwBrB;AAxBD,WAAO,eAAe;IAACA,IAAAA,MAAMA,CAwB5BA;IAxBsBA,WAAAA,MAAMA;QAACC,IAAAA,KAAKA,CAwBlCA;QAxB6BA,WAAAA,KAAKA,EAACA,CAACA;YACpCC;gBAA6CC,2CAAaA;gBACzDA,iCAAYA,IAAYA;oBACvBC,kBAAMA,uBAAiBA,CAACA,IAAIA,CAACA,CAACA;oBAE9BA,IAAIA,CAACA,IAAIA,GAAGA,IAAIA,CAACA;gBAClBA,CAACA;gBAIDD,yCAAOA,GAAPA;oBACCE,MAAMA,CAACA,uBAAOA,CAACA,mCAAmCA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA;gBAC/DA,CAACA;gBAEMF,6BAAKA,GAAZA,UAAaA,IAAYA,EAAEA,SAAmBA,EAAEA,UAAkBA;oBACjEG,IAAIA,QAAQA,GAAGA,IAAIA,kBAAYA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAE9CA,EAAEA,CAACA,CAACA,CAACA,QAAQA,CAACA,OAAOA,EAAEA,CAACA,CAACA,CAACA;wBACzBA,MAAMA,iEAAiEA,GAAGA,UAAUA,CAACA;oBACtFA,CAACA;oBAEDA,MAAMA,CAACA,QAAQA,CAACA;gBACjBA,CAACA;gBACFH,8BAACA;YAADA,CAACA,AAtBDD,EAA6CA,mBAAaA,EAsBzDA;YAtBYA,6BAAuBA,0BAsBnCA,CAAAA;QACFA,CAACA,EAxB6BD,KAAKA,GAALA,YAAKA,KAALA,YAAKA,QAwBlCA;IAADA,CAACA,EAxBsBD,MAAMA,GAANA,sBAAMA,KAANA,sBAAMA,QAwB5BA;AAADA,CAACA,EAxBM,eAAe,KAAf,eAAe,QAwBrB"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/RotationCenterMETALine.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | var __extends = this.__extends || function (d, b) {
4 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
5 | function __() { this.constructor = d; }
6 | __.prototype = b.prototype;
7 | d.prototype = new __();
8 | };
9 | var LdrawVisualizer;
10 | (function (LdrawVisualizer) {
11 | var Parser;
12 | (function (Parser) {
13 | var Lines;
14 | (function (Lines) {
15 | var RotationCenterMETALine = (function (_super) {
16 | __extends(RotationCenterMETALine, _super);
17 | function RotationCenterMETALine(x, y, z, whatIsThisNumberFor, name) {
18 | _super.call(this, Lines.LdrawFileLineType.RotationCenter);
19 | this.X = x;
20 | this.Y = y;
21 | this.Z = z;
22 | this.WhatIsThisNumberFor = whatIsThisNumberFor;
23 | this.Name = name;
24 | }
25 | RotationCenterMETALine.prototype.IsValid = function () {
26 | return (LdrawVisualizer.Utility.isNumber(this.X)
27 | && LdrawVisualizer.Utility.isNumber(this.Y)
28 | && LdrawVisualizer.Utility.isNumber(this.Z)
29 | && LdrawVisualizer.Utility.isNonEmpty(this.Name));
30 | };
31 | RotationCenterMETALine.Parse = function (line, splitLine, lineNumber) {
32 | var x = parseInt(splitLine[3], 10), y = parseInt(splitLine[4], 10), z = parseInt(splitLine[5], 10), whatIsThisNumberFor = parseInt(splitLine[6], 10), name = splitLine[7];
33 | var rotationCenterLine = new RotationCenterMETALine(x, y, z, whatIsThisNumberFor, name);
34 | if (!rotationCenterLine.IsValid()) {
35 | throw 'Unable to parse rotation center META line: Invalid line arguments on line ' + lineNumber;
36 | }
37 | return rotationCenterLine;
38 | };
39 | return RotationCenterMETALine;
40 | })(Lines.LdrawFileLine);
41 | Lines.RotationCenterMETALine = RotationCenterMETALine;
42 | })(Lines = Parser.Lines || (Parser.Lines = {}));
43 | })(Parser = LdrawVisualizer.Parser || (LdrawVisualizer.Parser = {}));
44 | })(LdrawVisualizer || (LdrawVisualizer = {}));
45 | //# sourceMappingURL=RotationCenterMETALine.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/RotationCenterMETALine.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"RotationCenterMETALine.js","sourceRoot":"","sources":["../../../../../scripts/parser/lines/meta-lines/RotationCenterMETALine.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Lines","LdrawVisualizer.Parser.Lines.RotationCenterMETALine","LdrawVisualizer.Parser.Lines.RotationCenterMETALine.constructor","LdrawVisualizer.Parser.Lines.RotationCenterMETALine.IsValid","LdrawVisualizer.Parser.Lines.RotationCenterMETALine.Parse"],"mappings":"AAAA,0DAA0D;AAC1D,wCAAwC;;;;;;;AAExC,IAAO,eAAe,CA2CrB;AA3CD,WAAO,eAAe;IAACA,IAAAA,MAAMA,CA2C5BA;IA3CsBA,WAAAA,MAAMA;QAACC,IAAAA,KAAKA,CA2ClCA;QA3C6BA,WAAAA,KAAKA,EAACA,CAACA;YACpCC;gBAA4CC,0CAAaA;gBACxDA,gCAAYA,CAASA,EAAEA,CAASA,EAAEA,CAASA,EAAEA,mBAA2BA,EAAEA,IAAYA;oBACrFC,kBAAMA,uBAAiBA,CAACA,cAAcA,CAACA,CAACA;oBAExCA,IAAIA,CAACA,CAACA,GAAGA,CAACA,CAACA;oBACXA,IAAIA,CAACA,CAACA,GAAGA,CAACA,CAACA;oBACXA,IAAIA,CAACA,CAACA,GAAGA,CAACA,CAACA;oBACXA,IAAIA,CAACA,mBAAmBA,GAAGA,mBAAmBA,CAACA;oBAC/CA,IAAIA,CAACA,IAAIA,GAAGA,IAAIA,CAACA;gBAClBA,CAACA;gBAQDD,wCAAOA,GAAPA;oBACCE,MAAMA,CAACA,CAACA,uBAAOA,CAACA,QAAQA,CAACA,IAAIA,CAACA,CAACA,CAACA;2BAC5BA,uBAAOA,CAACA,QAAQA,CAACA,IAAIA,CAACA,CAACA,CAACA;2BACxBA,uBAAOA,CAACA,QAAQA,CAACA,IAAIA,CAACA,CAACA,CAACA;2BAExBA,uBAAOA,CAACA,UAAUA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA,CAACA;gBACpCA,CAACA;gBAEMF,4BAAKA,GAAZA,UAAaA,IAAYA,EAAEA,SAAmBA,EAAEA,UAAkBA;oBAEjEG,IAAIA,CAACA,GAAGA,QAAQA,CAACA,SAASA,CAACA,CAACA,CAACA,EAAEA,EAAEA,CAACA,EACjCA,CAACA,GAAGA,QAAQA,CAACA,SAASA,CAACA,CAACA,CAACA,EAAEA,EAAEA,CAACA,EAC9BA,CAACA,GAAGA,QAAQA,CAACA,SAASA,CAACA,CAACA,CAACA,EAAEA,EAAEA,CAACA,EAC9BA,mBAAmBA,GAAGA,QAAQA,CAACA,SAASA,CAACA,CAACA,CAACA,EAAEA,EAAEA,CAACA,EAChDA,IAAIA,GAAGA,SAASA,CAACA,CAACA,CAACA,CAACA;oBAErBA,IAAIA,kBAAkBA,GAAGA,IAAIA,sBAAsBA,CAACA,CAACA,EAAEA,CAACA,EAAEA,CAACA,EAAEA,mBAAmBA,EAAEA,IAAIA,CAACA,CAACA;oBAExFA,EAAEA,CAACA,CAACA,CAACA,kBAAkBA,CAACA,OAAOA,EAAEA,CAACA,CAACA,CAACA;wBACnCA,MAAMA,4EAA4EA,GAAGA,UAAUA,CAACA;oBACjGA,CAACA;oBAEDA,MAAMA,CAACA,kBAAkBA,CAACA;gBAC3BA,CAACA;gBACFH,6BAACA;YAADA,CAACA,AAzCDD,EAA4CA,mBAAaA,EAyCxDA;YAzCYA,4BAAsBA,yBAyClCA,CAAAA;QACFA,CAACA,EA3C6BD,KAAKA,GAALA,YAAKA,KAALA,YAAKA,QA2ClCA;IAADA,CAACA,EA3CsBD,MAAMA,GAANA,sBAAMA,KAANA,sBAAMA,QA2C5BA;AAADA,CAACA,EA3CM,eAAe,KAAf,eAAe,QA2CrB"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/RotationConfigMETALine.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | var __extends = this.__extends || function (d, b) {
4 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
5 | function __() { this.constructor = d; }
6 | __.prototype = b.prototype;
7 | d.prototype = new __();
8 | };
9 | var LdrawVisualizer;
10 | (function (LdrawVisualizer) {
11 | var Parser;
12 | (function (Parser) {
13 | var Lines;
14 | (function (Lines) {
15 | var RotationConfigMETALine = (function (_super) {
16 | __extends(RotationConfigMETALine, _super);
17 | function RotationConfigMETALine(rotationId, isVisible) {
18 | _super.call(this, Lines.LdrawFileLineType.RotationConfig);
19 | this.RotationId = rotationId;
20 | this.IsVisible = isVisible;
21 | }
22 | RotationConfigMETALine.prototype.IsValid = function () {
23 | return (LdrawVisualizer.Utility.isInt(this.RotationId)
24 | && !LdrawVisualizer.Utility.isNullOrUndefined(this.IsVisible));
25 | };
26 | RotationConfigMETALine.Parse = function (line, splitLine, lineNumber) {
27 | var rotId = parseInt(splitLine[3], 10), isVisible = parseInt(splitLine[4], 10) === 1;
28 | var rotationConfigLine = new RotationConfigMETALine(rotId, isVisible);
29 | if (!rotationConfigLine.IsValid()) {
30 | throw 'Unable to parse rotation config META line: Invalid line arguments on line ' + lineNumber;
31 | }
32 | return rotationConfigLine;
33 | };
34 | return RotationConfigMETALine;
35 | })(Lines.LdrawFileLine);
36 | Lines.RotationConfigMETALine = RotationConfigMETALine;
37 | })(Lines = Parser.Lines || (Parser.Lines = {}));
38 | })(Parser = LdrawVisualizer.Parser || (LdrawVisualizer.Parser = {}));
39 | })(LdrawVisualizer || (LdrawVisualizer = {}));
40 | //# sourceMappingURL=RotationConfigMETALine.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/RotationConfigMETALine.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"RotationConfigMETALine.js","sourceRoot":"","sources":["../../../../../scripts/parser/lines/meta-lines/RotationConfigMETALine.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Lines","LdrawVisualizer.Parser.Lines.RotationConfigMETALine","LdrawVisualizer.Parser.Lines.RotationConfigMETALine.constructor","LdrawVisualizer.Parser.Lines.RotationConfigMETALine.IsValid","LdrawVisualizer.Parser.Lines.RotationConfigMETALine.Parse"],"mappings":"AAAA,0DAA0D;AAC1D,wCAAwC;;;;;;;AAExC,IAAO,eAAe,CA8BrB;AA9BD,WAAO,eAAe;IAACA,IAAAA,MAAMA,CA8B5BA;IA9BsBA,WAAAA,MAAMA;QAACC,IAAAA,KAAKA,CA8BlCA;QA9B6BA,WAAAA,KAAKA,EAACA,CAACA;YACpCC;gBAA4CC,0CAAaA;gBACxDA,gCAAYA,UAAkBA,EAAEA,SAAkBA;oBACjDC,kBAAMA,uBAAiBA,CAACA,cAAcA,CAACA,CAACA;oBACxCA,IAAIA,CAACA,UAAUA,GAAGA,UAAUA,CAACA;oBAC7BA,IAAIA,CAACA,SAASA,GAAGA,SAASA,CAACA;gBAC5BA,CAACA;gBAKDD,wCAAOA,GAAPA;oBACCE,MAAMA,CAACA,CAACA,uBAAOA,CAACA,KAAKA,CAACA,IAAIA,CAACA,UAAUA,CAACA;2BAClCA,CAACA,uBAAOA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,SAASA,CAACA,CAACA,CAACA;gBACjDA,CAACA;gBAEMF,4BAAKA,GAAZA,UAAaA,IAAYA,EAAEA,SAAmBA,EAAEA,UAAkBA;oBAEjEG,IAAIA,KAAKA,GAAGA,QAAQA,CAACA,SAASA,CAACA,CAACA,CAACA,EAAEA,EAAEA,CAACA,EACrCA,SAASA,GAAGA,QAAQA,CAACA,SAASA,CAACA,CAACA,CAACA,EAAEA,EAAEA,CAACA,KAAKA,CAACA,CAACA;oBAE9CA,IAAIA,kBAAkBA,GAAGA,IAAIA,sBAAsBA,CAACA,KAAKA,EAAEA,SAASA,CAACA,CAACA;oBAEtEA,EAAEA,CAACA,CAACA,CAACA,kBAAkBA,CAACA,OAAOA,EAAEA,CAACA,CAACA,CAACA;wBACnCA,MAAMA,4EAA4EA,GAAGA,UAAUA,CAACA;oBACjGA,CAACA;oBAEDA,MAAMA,CAACA,kBAAkBA,CAACA;gBAC3BA,CAACA;gBACFH,6BAACA;YAADA,CAACA,AA5BDD,EAA4CA,mBAAaA,EA4BxDA;YA5BYA,4BAAsBA,yBA4BlCA,CAAAA;QACFA,CAACA,EA9B6BD,KAAKA,GAALA,YAAKA,KAALA,YAAKA,QA8BlCA;IAADA,CAACA,EA9BsBD,MAAMA,GAANA,sBAAMA,KAANA,sBAAMA,QA8B5BA;AAADA,CAACA,EA9BM,eAAe,KAAf,eAAe,QA8BrB"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/RotationStepMETALine.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | var __extends = this.__extends || function (d, b) {
4 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
5 | function __() { this.constructor = d; }
6 | __.prototype = b.prototype;
7 | d.prototype = new __();
8 | };
9 | var LdrawVisualizer;
10 | (function (LdrawVisualizer) {
11 | var Parser;
12 | (function (Parser) {
13 | var Lines;
14 | (function (Lines) {
15 | var RotationStepMETALine = (function (_super) {
16 | __extends(RotationStepMETALine, _super);
17 | function RotationStepMETALine(xAngle, yAngle, zAngle, rotationType) {
18 | _super.call(this, Lines.LdrawFileLineType.RotationStep);
19 | this.XAngle = xAngle;
20 | this.YAngle = yAngle;
21 | this.ZAngle = zAngle;
22 | this.RotationType = rotationType;
23 | }
24 | RotationStepMETALine.prototype.IsValid = function () {
25 | // if any of the rotation angles are defined,
26 | // ensure ALL rotation angles are valid
27 | if (!LdrawVisualizer.Utility.isNullOrUndefined(this.XAngle)
28 | || !LdrawVisualizer.Utility.isNullOrUndefined(this.YAngle)
29 | || !LdrawVisualizer.Utility.isNullOrUndefined(this.ZAngle)) {
30 | return (LdrawVisualizer.Utility.isNumber(this.XAngle)
31 | && LdrawVisualizer.Utility.isNumber(this.YAngle)
32 | && LdrawVisualizer.Utility.isNumber(this.ZAngle));
33 | }
34 | else {
35 | return true;
36 | }
37 | };
38 | RotationStepMETALine.Parse = function (line, splitLine, lineNumber) {
39 | var x, y, z, rotType;
40 | if (splitLine[2] !== 'END') {
41 | x = parseFloat(splitLine[2]);
42 | y = parseFloat(splitLine[3]);
43 | z = parseFloat(splitLine[4]);
44 | if (splitLine[5] === 'REL') {
45 | rotType = RotationType.Relative;
46 | }
47 | else if (splitLine[5] === 'ADD') {
48 | rotType = RotationType.Additive;
49 | }
50 | else if (splitLine[5] === 'ABS') {
51 | rotType = RotationType.Absolute;
52 | }
53 | else {
54 | throw 'Unknown rotation step type: ' + splitLine[5];
55 | }
56 | }
57 | var rotStepLine = new RotationStepMETALine(x, y, z, rotType);
58 | if (!rotStepLine.IsValid()) {
59 | throw 'Unable to parse rotation step META line: Invalid line arguments on line ' + lineNumber;
60 | }
61 | return rotStepLine;
62 | };
63 | return RotationStepMETALine;
64 | })(Lines.LdrawFileLine);
65 | Lines.RotationStepMETALine = RotationStepMETALine;
66 | (function (RotationType) {
67 | RotationType[RotationType["Relative"] = 0] = "Relative";
68 | RotationType[RotationType["Additive"] = 1] = "Additive";
69 | RotationType[RotationType["Absolute"] = 2] = "Absolute";
70 | })(Lines.RotationType || (Lines.RotationType = {}));
71 | var RotationType = Lines.RotationType;
72 | })(Lines = Parser.Lines || (Parser.Lines = {}));
73 | })(Parser = LdrawVisualizer.Parser || (LdrawVisualizer.Parser = {}));
74 | })(LdrawVisualizer || (LdrawVisualizer = {}));
75 | //# sourceMappingURL=RotationStepMETALine.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/RotationStepMETALine.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"RotationStepMETALine.js","sourceRoot":"","sources":["../../../../../scripts/parser/lines/meta-lines/RotationStepMETALine.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Lines","LdrawVisualizer.Parser.Lines.RotationStepMETALine","LdrawVisualizer.Parser.Lines.RotationStepMETALine.constructor","LdrawVisualizer.Parser.Lines.RotationStepMETALine.IsValid","LdrawVisualizer.Parser.Lines.RotationStepMETALine.Parse","LdrawVisualizer.Parser.Lines.RotationType"],"mappings":"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"}
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/StepMETALine.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | var __extends = this.__extends || function (d, b) {
4 | for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
5 | function __() { this.constructor = d; }
6 | __.prototype = b.prototype;
7 | d.prototype = new __();
8 | };
9 | var LdrawVisualizer;
10 | (function (LdrawVisualizer) {
11 | var Parser;
12 | (function (Parser) {
13 | var Lines;
14 | (function (Lines) {
15 | var StepMETALine = (function (_super) {
16 | __extends(StepMETALine, _super);
17 | function StepMETALine() {
18 | _super.call(this, Lines.LdrawFileLineType.Step);
19 | }
20 | StepMETALine.prototype.IsValid = function () {
21 | return true;
22 | };
23 | StepMETALine.Parse = function (line, splitLine, lineNumber) {
24 | return new StepMETALine();
25 | };
26 | return StepMETALine;
27 | })(Lines.LdrawFileLine);
28 | Lines.StepMETALine = StepMETALine;
29 | })(Lines = Parser.Lines || (Parser.Lines = {}));
30 | })(Parser = LdrawVisualizer.Parser || (LdrawVisualizer.Parser = {}));
31 | })(LdrawVisualizer || (LdrawVisualizer = {}));
32 | //# sourceMappingURL=StepMETALine.js.map
--------------------------------------------------------------------------------
/compiled/scripts/parser/lines/meta-lines/StepMETALine.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"StepMETALine.js","sourceRoot":"","sources":["../../../../../scripts/parser/lines/meta-lines/StepMETALine.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Parser","LdrawVisualizer.Parser.Lines","LdrawVisualizer.Parser.Lines.StepMETALine","LdrawVisualizer.Parser.Lines.StepMETALine.constructor","LdrawVisualizer.Parser.Lines.StepMETALine.IsValid","LdrawVisualizer.Parser.Lines.StepMETALine.Parse"],"mappings":"AAAA,0DAA0D;AAC1D,wCAAwC;;;;;;;AAExC,IAAO,eAAe,CAcrB;AAdD,WAAO,eAAe;IAACA,IAAAA,MAAMA,CAc5BA;IAdsBA,WAAAA,MAAMA;QAACC,IAAAA,KAAKA,CAclCA;QAd6BA,WAAAA,KAAKA,EAACA,CAACA;YACpCC;gBAAkCC,gCAAaA;gBAC9CA;oBACCC,kBAAMA,uBAAiBA,CAACA,IAAIA,CAACA,CAACA;gBAC/BA,CAACA;gBAEDD,8BAAOA,GAAPA;oBACCE,MAAMA,CAACA,IAAIA,CAACA;gBACbA,CAACA;gBAEMF,kBAAKA,GAAZA,UAAaA,IAAYA,EAAEA,SAAmBA,EAAEA,UAAkBA;oBACjEG,MAAMA,CAACA,IAAIA,YAAYA,EAAEA,CAACA;gBAC3BA,CAACA;gBACFH,mBAACA;YAADA,CAACA,AAZDD,EAAkCA,mBAAaA,EAY9CA;YAZYA,kBAAYA,eAYxBA,CAAAA;QACFA,CAACA,EAd6BD,KAAKA,GAALA,YAAKA,KAALA,YAAKA,QAclCA;IAADA,CAACA,EAdsBD,MAAMA,GAANA,sBAAMA,KAANA,sBAAMA,QAc5BA;AAADA,CAACA,EAdM,eAAe,KAAf,eAAe,QAcrB"}
--------------------------------------------------------------------------------
/compiled/scripts/renderer/ColorLookup.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | var LdrawVisualizer;
5 | (function (LdrawVisualizer) {
6 | var Renderer;
7 | (function (Renderer) {
8 | Renderer.ColorLookup = {};
9 | })(Renderer = LdrawVisualizer.Renderer || (LdrawVisualizer.Renderer = {}));
10 | })(LdrawVisualizer || (LdrawVisualizer = {}));
11 | //# sourceMappingURL=ColorLookup.js.map
--------------------------------------------------------------------------------
/compiled/scripts/renderer/ColorLookup.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"ColorLookup.js","sourceRoot":"","sources":["../../../scripts/renderer/ColorLookup.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Renderer"],"mappings":"AAAA,iDAAiD;AACjD,+CAA+C;AAC/C,qDAAqD;AAErD,IAAO,eAAe,CA2CrB;AA3CD,WAAO,eAAe;IAACA,IAAAA,QAAQA,CA2C9BA;IA3CsBA,WAAAA,QAAQA,EAACA,CAACA;QACrBC,oBAAWA,GAAwDA,EAyC7EA,CAAAA;IACFA,CAACA,EA3CsBD,QAAQA,GAARA,wBAAQA,KAARA,wBAAQA,QA2C9BA;AAADA,CAACA,EA3CM,eAAe,KAAf,eAAe,QA2CrB"}
--------------------------------------------------------------------------------
/compiled/scripts/renderer/EdgeMap.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"EdgeMap.js","sourceRoot":"","sources":["../../../scripts/renderer/EdgeMap.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Renderer","LdrawVisualizer.Renderer.EdgeMap","LdrawVisualizer.Renderer.EdgeMap.constructor","LdrawVisualizer.Renderer.EdgeMap.addGeometry","LdrawVisualizer.Renderer.EdgeMap.addGeometries","LdrawVisualizer.Renderer.EdgeMap.getGeometries","LdrawVisualizer.Renderer.EdgeMap.getGeometriesFromKey","LdrawVisualizer.Renderer.EdgeMap.GetMapKey"],"mappings":"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ACA,CAACA;wBAEPA,EAAEA,CAACA,CAACA,OAAOA,CAACA,CAACA,GAAGA,OAAOA,CAACA,CAACA,CAACA,CAACA,CAACA;4BAC3BA,KAAKA,GAAGA,OAAOA,CAACA;4BAChBA,MAAMA,GAAGA,OAAOA,CAACA;wBAClBA,CAACA;wBAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,OAAOA,CAACA,CAACA,GAAGA,OAAOA,CAACA,CAACA,CAACA,CAACA,CAACA;4BAClCA,KAAKA,GAAGA,OAAOA,CAACA;4BAChBA,MAAMA,GAAGA,OAAOA,CAACA;wBAClBA,CAACA;wBAACA,IAAIA,CAACA,CAACA;4BACPA,yBAAyBA;4BAEzBA,KAAKA,GAAGA,OAAOA,CAACA;4BAChBA,MAAMA,GAAGA,OAAOA,CAACA;wBAClBA,CAACA;oBACFA,CAACA;gBACFA,CAACA;gBAEDA,MAAMA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,KAAKA,CAACA,CAACA,GAAGA,IAAIA,CAACA,SAASA,CAACA;oBAC3CA,IAAIA,CAACA,KAAKA,CAACA,KAAKA,CAACA,CAACA,GAAGA,IAAIA,CAACA,SAASA,CAACA;oBACpCA,IAAIA,CAACA,KAAKA,CAACA,KAAKA,CAACA,CAACA,GAAGA,IAAIA,CAACA,SAASA,CAACA;oBACpCA,IAAIA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,GAAGA,IAAIA,CAACA,SAASA,CAACA;oBACrCA,IAAIA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,GAAGA,IAAIA,CAACA,SAASA,CAACA;oBACrCA,IAAIA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,GAAGA,IAAIA,CAACA,SAASA,CAACA,CAACA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA;YACnDA,CAACA;YACFN,cAACA;QAADA,CAACA,AAjFDD,IAiFCA;QAjFYA,gBAAOA,UAiFnBA,CAAAA;IACFA,CAACA,EApFsBD,QAAQA,GAARA,wBAAQA,KAARA,wBAAQA,QAoF9BA;AAADA,CAACA,EApFM,eAAe,KAAf,eAAe,QAoFrB"}
--------------------------------------------------------------------------------
/compiled/scripts/renderer/Smoother.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"Smoother.js","sourceRoot":"","sources":["../../../scripts/renderer/Smoother.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Renderer","LdrawVisualizer.Renderer.Smoother","LdrawVisualizer.Renderer.Smoother.constructor","LdrawVisualizer.Renderer.Smoother.CombineAndSmooth","LdrawVisualizer.Renderer.Smoother.getConnectedGeometriesGroup"],"mappings":"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"}
--------------------------------------------------------------------------------
/compiled/scripts/renderer/VertexMapBase.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | var LdrawVisualizer;
4 | (function (LdrawVisualizer) {
5 | var Renderer;
6 | (function (Renderer) {
7 | var VertexMapBase = (function () {
8 | function VertexMapBase() {
9 | }
10 | // returns a string key based on three vertices of a point
11 | VertexMapBase.GetMapKey = function (vertex) {
12 | return [Math.round(vertex.x * this.precision),
13 | Math.round(vertex.y * this.precision),
14 | Math.round(vertex.z * this.precision)].join('|');
15 | };
16 | // how close the vertices must be to be considered the same point
17 | VertexMapBase.precision = 10000;
18 | return VertexMapBase;
19 | })();
20 | Renderer.VertexMapBase = VertexMapBase;
21 | })(Renderer = LdrawVisualizer.Renderer || (LdrawVisualizer.Renderer = {}));
22 | })(LdrawVisualizer || (LdrawVisualizer = {}));
23 | //# sourceMappingURL=VertexMapBase.js.map
--------------------------------------------------------------------------------
/compiled/scripts/renderer/VertexMapBase.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"VertexMapBase.js","sourceRoot":"","sources":["../../../scripts/renderer/VertexMapBase.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Renderer","LdrawVisualizer.Renderer.VertexMapBase","LdrawVisualizer.Renderer.VertexMapBase.constructor","LdrawVisualizer.Renderer.VertexMapBase.GetMapKey"],"mappings":"AAAA,oDAAoD;AACpD,sCAAsC;AAEtC,IAAO,eAAe,CAcrB;AAdD,WAAO,eAAe;IAACA,IAAAA,QAAQA,CAc9BA;IAdsBA,WAAAA,QAAQA,EAACA,CAACA;QAEhCC;YAAAC;YAWAC,CAACA;YANAD,0DAA0DA;YAC5CA,uBAASA,GAAvBA,UAAwBA,MAAqBA;gBAC5CE,MAAMA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,GAAGA,IAAIA,CAACA,SAASA,CAACA;oBAC5CA,IAAIA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,GAAGA,IAAIA,CAACA,SAASA,CAACA;oBACrCA,IAAIA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,GAAGA,IAAIA,CAACA,SAASA,CAACA,CAACA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA;YACnDA,CAACA;YARDF,iEAAiEA;YACnDA,uBAASA,GAAWA,KAAKA,CAACA;YAQzCA,oBAACA;QAADA,CAACA,AAXDD,IAWCA;QAXYA,sBAAaA,gBAWzBA,CAAAA;IACFA,CAACA,EAdsBD,QAAQA,GAARA,wBAAQA,KAARA,wBAAQA,QAc9BA;AAADA,CAACA,EAdM,eAAe,KAAf,eAAe,QAcrB"}
--------------------------------------------------------------------------------
/compiled/scripts/renderer/VertexToFaceMap.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | var LdrawVisualizer;
4 | (function (LdrawVisualizer) {
5 | var Renderer;
6 | (function (Renderer) {
7 | (function (Face3VertexIndex) {
8 | Face3VertexIndex[Face3VertexIndex["A"] = 0] = "A";
9 | Face3VertexIndex[Face3VertexIndex["B"] = 1] = "B";
10 | Face3VertexIndex[Face3VertexIndex["C"] = 2] = "C";
11 | })(Renderer.Face3VertexIndex || (Renderer.Face3VertexIndex = {}));
12 | var Face3VertexIndex = Renderer.Face3VertexIndex;
13 | var VertexToFaceMap = (function () {
14 | function VertexToFaceMap() {
15 | // a map of vertex keys to faces.
16 | this.map = {};
17 | // how close the vertices must be to be considered the same point
18 | this.precision = 10000;
19 | }
20 | // adds all of the faces in the geometry to the map, indexed by their vertices.
21 | // note each face will appear in the internal map 3 times, once for each vertex
22 | VertexToFaceMap.prototype.addGeometry = function (geometry) {
23 | var _this = this;
24 | geometry.faces.forEach(function (f) {
25 | [f.a, f.b, f.c].forEach(function (vertexIndex, index) {
26 | var vertexMapKey = _this.getMapKey(geometry.vertices[vertexIndex]);
27 | _this.map[vertexMapKey] = _this.map[vertexMapKey] || [];
28 | _this.map[vertexMapKey].push({
29 | face: f,
30 | matchingVertexIndex: index
31 | });
32 | });
33 | });
34 | };
35 | // returns a list of unique faces that contain the given vertex
36 | VertexToFaceMap.prototype.getFaces = function (vertex) {
37 | var _this = this;
38 | if (LdrawVisualizer.Utility.isArray(vertex)) {
39 | var allFaces = [];
40 | vertex.forEach(function (v) {
41 | var faces = _this.map[_this.getMapKey(v)];
42 | if (faces) {
43 | allFaces = allFaces.concat(faces);
44 | }
45 | });
46 | var uniqueFaces = allFaces.filter(function (value, index, self) {
47 | return self.indexOf(value) === index;
48 | });
49 | return uniqueFaces;
50 | }
51 | else {
52 | return this.map[this.getMapKey(vertex)];
53 | }
54 | };
55 | VertexToFaceMap.prototype.getFacesFromVertexKey = function (vertexKey) {
56 | return this.map[vertexKey];
57 | };
58 | // returns a string key based on three vertices of a point
59 | VertexToFaceMap.prototype.getMapKey = function (vertex) {
60 | return [Math.round(vertex.x * this.precision),
61 | Math.round(vertex.y * this.precision),
62 | Math.round(vertex.z * this.precision)].join('|');
63 | };
64 | return VertexToFaceMap;
65 | })();
66 | Renderer.VertexToFaceMap = VertexToFaceMap;
67 | })(Renderer = LdrawVisualizer.Renderer || (LdrawVisualizer.Renderer = {}));
68 | })(LdrawVisualizer || (LdrawVisualizer = {}));
69 | //# sourceMappingURL=VertexToFaceMap.js.map
--------------------------------------------------------------------------------
/compiled/scripts/renderer/VertexToFaceMap.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"VertexToFaceMap.js","sourceRoot":"","sources":["../../../scripts/renderer/VertexToFaceMap.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Renderer","LdrawVisualizer.Renderer.Face3VertexIndex","LdrawVisualizer.Renderer.VertexToFaceMap","LdrawVisualizer.Renderer.VertexToFaceMap.constructor","LdrawVisualizer.Renderer.VertexToFaceMap.addGeometry","LdrawVisualizer.Renderer.VertexToFaceMap.getFaces","LdrawVisualizer.Renderer.VertexToFaceMap.getFacesFromVertexKey","LdrawVisualizer.Renderer.VertexToFaceMap.getMapKey"],"mappings":"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"}
--------------------------------------------------------------------------------
/compiled/scripts/renderer/VertexToLineMap.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | var LdrawVisualizer;
4 | (function (LdrawVisualizer) {
5 | var Renderer;
6 | (function (Renderer) {
7 | var VertexToLineMap = (function () {
8 | function VertexToLineMap() {
9 | // a map of vertex keys to lines.
10 | this.map = {};
11 | // how close the vertices must be to be considered the same point
12 | this.precision = 10000;
13 | }
14 | // adds a line (defined by two THREE.Vector3's) to the map.
15 | // note that each line will appear in the map twice - once for each point
16 | VertexToLineMap.prototype.addLine = function (vertex1, vertex2) {
17 | var _this = this;
18 | [vertex1, vertex2].forEach(function (v) {
19 | var vertexMapKey = _this.getMapKey(v);
20 | _this.map[vertexMapKey] = _this.map[vertexMapKey] || [];
21 | _this.map[vertexMapKey].push({
22 | vertex1: vertex1,
23 | vertex2: vertex2
24 | });
25 | });
26 | };
27 | // returns a list of unique lines that contain the given vertex
28 | VertexToLineMap.prototype.getLines = function (vertex) {
29 | return this.map[this.getMapKey(vertex)];
30 | };
31 | // returns a string key based on three vertices of a point
32 | VertexToLineMap.prototype.getMapKey = function (vertex) {
33 | return [Math.round(vertex.x * this.precision),
34 | Math.round(vertex.y * this.precision),
35 | Math.round(vertex.z * this.precision)].join('|');
36 | };
37 | return VertexToLineMap;
38 | })();
39 | Renderer.VertexToLineMap = VertexToLineMap;
40 | })(Renderer = LdrawVisualizer.Renderer || (LdrawVisualizer.Renderer = {}));
41 | })(LdrawVisualizer || (LdrawVisualizer = {}));
42 | //# sourceMappingURL=VertexToLineMap.js.map
--------------------------------------------------------------------------------
/compiled/scripts/renderer/VertexToLineMap.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"VertexToLineMap.js","sourceRoot":"","sources":["../../../scripts/renderer/VertexToLineMap.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Renderer","LdrawVisualizer.Renderer.VertexToLineMap","LdrawVisualizer.Renderer.VertexToLineMap.constructor","LdrawVisualizer.Renderer.VertexToLineMap.addLine","LdrawVisualizer.Renderer.VertexToLineMap.getLines","LdrawVisualizer.Renderer.VertexToLineMap.getMapKey"],"mappings":"AAAA,oDAAoD;AACpD,sCAAsC;AAEtC,IAAO,eAAe,CAwCrB;AAxCD,WAAO,eAAe;IAACA,IAAAA,QAAQA,CAwC9BA;IAxCsBA,WAAAA,QAAQA,EAACA,CAACA;QAOhCC;YAAAC;gBAECC,iCAAiCA;gBACzBA,QAAGA,GAA8CA,EAAEA,CAACA;gBAE5DA,iEAAiEA;gBACzDA,cAASA,GAAWA,KAAKA,CAACA;YA0BnCA,CAACA;YAxBAD,2DAA2DA;YAC3DA,yEAAyEA;YACzEA,iCAAOA,GAAPA,UAAQA,OAAsBA,EAAEA,OAAsBA;gBAAtDE,iBASCA;gBARAA,CAACA,OAAOA,EAAEA,OAAOA,CAACA,CAACA,OAAOA,CAACA,UAACA,CAACA;oBAC5BA,IAAIA,YAAYA,GAAGA,KAAIA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA;oBACrCA,KAAIA,CAACA,GAAGA,CAACA,YAAYA,CAACA,GAAGA,KAAIA,CAACA,GAAGA,CAACA,YAAYA,CAACA,IAAIA,EAAEA,CAACA;oBACtDA,KAAIA,CAACA,GAAGA,CAACA,YAAYA,CAACA,CAACA,IAAIA,CAACA;wBAC3BA,OAAOA,EAAEA,OAAOA;wBAChBA,OAAOA,EAAEA,OAAOA;qBAChBA,CAACA,CAACA;gBACJA,CAACA,CAACA,CAACA;YACJA,CAACA;YAEDF,+DAA+DA;YAC/DA,kCAAQA,GAARA,UAASA,MAAqBA;gBAC7BG,MAAMA,CAACA,IAAIA,CAACA,GAAGA,CAACA,IAAIA,CAACA,SAASA,CAAgBA,MAAMA,CAACA,CAACA,CAACA;YACxDA,CAACA;YAEDH,0DAA0DA;YAClDA,mCAASA,GAAjBA,UAAkBA,MAAqBA;gBACtCI,MAAMA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,GAAGA,IAAIA,CAACA,SAASA,CAACA;oBAC5CA,IAAIA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,GAAGA,IAAIA,CAACA,SAASA,CAACA;oBACrCA,IAAIA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,GAAGA,IAAIA,CAACA,SAASA,CAACA,CAACA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA;YACnDA,CAACA;YACFJ,sBAACA;QAADA,CAACA,AAhCDD,IAgCCA;QAhCYA,wBAAeA,kBAgC3BA,CAAAA;IACFA,CAACA,EAxCsBD,QAAQA,GAARA,wBAAQA,KAARA,wBAAQA,QAwC9BA;AAADA,CAACA,EAxCM,eAAe,KAAf,eAAe,QAwCrB"}
--------------------------------------------------------------------------------
/compiled/scripts/utility.js:
--------------------------------------------------------------------------------
1 | var LdrawVisualizer;
2 | (function (LdrawVisualizer) {
3 | var Utility;
4 | (function (Utility) {
5 | function isString(obj) {
6 | return Object.prototype.toString.call(obj) === '[object String]';
7 | }
8 | Utility.isString = isString;
9 | function isNumber(obj) {
10 | return Object.prototype.toString.call(obj) === '[object Number]' && !isNaN(obj);
11 | }
12 | Utility.isNumber = isNumber;
13 | function isInt(obj) {
14 | return isNumber(obj) && (obj % 1) === 0;
15 | }
16 | Utility.isInt = isInt;
17 | function isByte(obj) {
18 | return isInt(obj) && obj >= 0 && obj <= 255;
19 | }
20 | Utility.isByte = isByte;
21 | function isArray(obj) {
22 | return Object.prototype.toString.call(obj) === '[object Array]';
23 | }
24 | Utility.isArray = isArray;
25 | function isValidColorCode(obj) {
26 | return isInt(obj) && obj >= 0;
27 | //return isInt(obj) && obj >= 0 && obj <= 511;
28 | }
29 | Utility.isValidColorCode = isValidColorCode;
30 | function isValidColorHexString(obj) {
31 | return isString(obj) && obj && /^#[a-f0-9]{6}$/i.test(obj);
32 | }
33 | Utility.isValidColorHexString = isValidColorHexString;
34 | function isNullOrUndefined(obj) {
35 | return obj === null || typeof obj === 'undefined';
36 | }
37 | Utility.isNullOrUndefined = isNullOrUndefined;
38 | function hasAtLeastOneNonWhitespaceCharacter(s) {
39 | return /^(?!\s*$).+/.test(s);
40 | }
41 | Utility.hasAtLeastOneNonWhitespaceCharacter = hasAtLeastOneNonWhitespaceCharacter;
42 | function isNonEmpty(s) {
43 | return !(/^\s+$/.test(s));
44 | }
45 | Utility.isNonEmpty = isNonEmpty;
46 | function isValidFilename(filename) {
47 | return /^[a-zA-Z0-9\-_\\/\.]+\.(dat|ldr|mpd)$/i.test(filename);
48 | }
49 | Utility.isValidFilename = isValidFilename;
50 | function logMatrix(matrix) {
51 | var e = matrix.elements;
52 | console.log(e[0], e[4], e[8], e[12]);
53 | console.log(e[1], e[5], e[9], e[13]);
54 | console.log(e[2], e[6], e[10], e[14]);
55 | console.log(e[3], e[7], e[11], e[15]);
56 | console.log('---------------');
57 | }
58 | Utility.logMatrix = logMatrix;
59 | function hexStringToHexNumber(hexString) {
60 | return parseInt(hexString.replace(/#/g, ''), 16);
61 | }
62 | Utility.hexStringToHexNumber = hexStringToHexNumber;
63 | function fixFilePath(filePath) {
64 | return filePath.toLowerCase().replace(/\\/g, '/');
65 | }
66 | Utility.fixFilePath = fixFilePath;
67 | function degreesToRadians(degrees) {
68 | return degrees * (Math.PI / 180);
69 | }
70 | Utility.degreesToRadians = degreesToRadians;
71 | function radiansToDegrees(radians) {
72 | return radians * (180 / Math.PI);
73 | }
74 | Utility.radiansToDegrees = radiansToDegrees;
75 | })(Utility = LdrawVisualizer.Utility || (LdrawVisualizer.Utility = {}));
76 | })(LdrawVisualizer || (LdrawVisualizer = {}));
77 | //# sourceMappingURL=utility.js.map
--------------------------------------------------------------------------------
/compiled/scripts/utility.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"utility.js","sourceRoot":"","sources":["../../scripts/utility.ts"],"names":["LdrawVisualizer","LdrawVisualizer.Utility","LdrawVisualizer.Utility.isString","LdrawVisualizer.Utility.isNumber","LdrawVisualizer.Utility.isInt","LdrawVisualizer.Utility.isByte","LdrawVisualizer.Utility.isArray","LdrawVisualizer.Utility.isValidColorCode","LdrawVisualizer.Utility.isValidColorHexString","LdrawVisualizer.Utility.isNullOrUndefined","LdrawVisualizer.Utility.hasAtLeastOneNonWhitespaceCharacter","LdrawVisualizer.Utility.isNonEmpty","LdrawVisualizer.Utility.isValidFilename","LdrawVisualizer.Utility.logMatrix","LdrawVisualizer.Utility.hexStringToHexNumber","LdrawVisualizer.Utility.fixFilePath","LdrawVisualizer.Utility.degreesToRadians","LdrawVisualizer.Utility.radiansToDegrees"],"mappings":"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"}
--------------------------------------------------------------------------------
/compiled/typings/references.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 | ///
7 | ///
8 | ///
9 | ///
10 | ///
11 | ///
12 | ///
13 | ///
14 | ///
15 | ///
16 | ///
17 | //# sourceMappingURL=references.js.map
--------------------------------------------------------------------------------
/compiled/typings/references.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"references.js","sourceRoot":"","sources":["../../typings/references.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,8CAA8C;AAC9C,0DAA0D;AAC1D,sDAAsD;AACtD,yDAAyD;AACzD,0DAA0D;AAC1D,oDAAoD;AACpD,yDAAyD;AACzD,qDAAqD;AACrD,sDAAsD;AACtD,sDAAsD;AACtD,6DAA6D;AAC7D,2CAA2C;AAC3C,gDAAgD;AAChD,sDAAsD;AACtD,4CAA4C"}
--------------------------------------------------------------------------------
/dist/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nfriend/ldraw-visualizer/a4bb31b598066e29d94dc1d3c224daadbc6ad3b0/dist/favicon.ico
--------------------------------------------------------------------------------
/dist/images/Thumbs.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nfriend/ldraw-visualizer/a4bb31b598066e29d94dc1d3c224daadbc6ad3b0/dist/images/Thumbs.db
--------------------------------------------------------------------------------
/dist/images/studlogo-old.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nfriend/ldraw-visualizer/a4bb31b598066e29d94dc1d3c224daadbc6ad3b0/dist/images/studlogo-old.png
--------------------------------------------------------------------------------
/dist/images/studlogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nfriend/ldraw-visualizer/a4bb31b598066e29d94dc1d3c224daadbc6ad3b0/dist/images/studlogo.png
--------------------------------------------------------------------------------
/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | LDraw Visualizer
4 |
5 |
6 |
7 |
8 |
13 |
14 |
15 |
16 | Loading model. One moment...
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/dist/ldraw-visualizer-0.2.0.min.css:
--------------------------------------------------------------------------------
1 | body{margin:0}body #container{overflow:hidden}
--------------------------------------------------------------------------------
/dist/models/CAR.DAT:
--------------------------------------------------------------------------------
1 | 0 Car
2 | 0 Name: CAR.ldr
3 | 0 Author: James Jessiman
4 | 0 Original LDraw Model - LDraw beta 0.27 Archive
5 | 0 Car
6 | 0 ROTATION CENTER 0 0 0 1 "Custom"
7 | 0 ROTATION CONFIG 0 0
8 | 1 0 0 0 -90 1 0 0 0 1 0 0 0 1 4315.DAT
9 | 0 STEP
10 | 1 7 0 0 -60 1 0 0 0 1 0 0 0 1 4600.DAT
11 | 0 STEP
12 | 1 0 0 0 0 1 0 0 0 1 0 0 0 1 3031.DAT
13 | 0 STEP
14 | 1 7 0 0 60 1 0 0 0 1 0 0 0 1 4600.DAT
15 | 0 STEP
16 | 1 0 0 0 90 -1 0 0 0 1 0 0 0 -1 4315.DAT
17 | 0 STEP
18 | 1 46 30 -8 -90 1 0 0 0 1 0 0 0 1 3024.DAT
19 | 0 STEP
20 | 1 46 -30 -8 -90 1 0 0 0 1 0 0 0 1 3024.DAT
21 | 0 STEP
22 | 1 4 0 -8 -60 0 0 1 0 1 0 -1 0 0 3020.DAT
23 | 0 STEP
24 | 1 4 30 -8 -10 0 0 1 0 1 0 -1 0 0 101.dat
25 | 0 STEP
26 | 1 4 -30 -8 -10 0 0 1 0 1 0 -1 0 0 101.dat
27 | 0 STEP
28 | 1 4 30 -8 30 1 0 0 0 1 0 0 0 1 3024.DAT
29 | 0 STEP
30 | 1 4 -30 -8 30 1 0 0 0 1 0 0 0 1 3024.DAT
31 | 0 STEP
32 | 1 4 0 -8 50 0 0 1 0 1 0 -1 0 0 3021.DAT
33 | 0 STEP
34 | 1 4 0 -8 90 1 0 0 0 1 0 0 0 1 3710.DAT
35 | 0 STEP
36 | 1 1 0 -8 0 1 0 0 0 1 0 0 0 1 4079.DAT
37 | 0 STEP
38 | 1 46 30 -16 90 1 0 0 0 1 0 0 0 1 3024.DAT
39 | 0 STEP
40 | 1 46 -30 -16 90 1 0 0 0 1 0 0 0 1 3024.DAT
41 | 0 STEP
42 | 1 4 0 -16 -30 1 0 0 0 1 0 0 0 1 3829.DAT
43 | 0 STEP
44 | 1 4 0 -24 -60 1 0 0 0 1 0 0 0 1 3788.DAT
45 | 0 STEP
46 | 1 4 0 -24 60 1 0 0 0 1 0 0 0 1 3788.DAT
47 | 0 STEP
48 | 1 36 30 -24 90 1 0 0 0 1 0 0 0 1 3024.DAT
49 | 0 STEP
50 | 1 36 -30 -24 90 1 0 0 0 1 0 0 0 1 3024.DAT
51 | 0 STEP
52 | 1 7 0 -32 -90 1 0 0 0 1 0 0 0 1 3937.DAT
53 | 0 STEP
54 | 1 7 0 -32 -90 1 0 0 0 1 0 0 0 1 3938.DAT
55 | 0 STEP
56 | 1 4 30 -32 -90 1 0 0 0 1 0 0 0 1 157.dat
57 | 0 STEP
58 | 1 4 -30 -32 -90 1 0 0 0 1 0 0 0 1 157.dat
59 | 0 STEP
60 | 1 46 30 -22 -104 1 0 0 0 0 -1 0 1 0 179.dat
61 | 0 STEP
62 | 1 46 -30 -22 -104 1 0 0 0 0 -1 0 1 0 179.dat
63 | 0 STEP
64 | 1 4 30 -32 -60 0 0 1 0 1 0 -1 0 0 3023.DAT
65 | 0 STEP
66 | 1 4 -30 -32 -60 0 0 1 0 1 0 -1 0 0 3023.DAT
67 | 0 STEP
68 | 1 4 30 -32 -30 1 0 0 0 1 0 0 0 1 141.dat
69 | 0 STEP
70 | 1 4 -30 -32 -30 1 0 0 0 1 0 0 0 1 140.dat
71 | 0 STEP
72 | 1 4 30 -32 30 1 0 0 0 1 0 0 0 1 3005.DAT
73 | 0 STEP
74 | 1 4 -30 -32 30 1 0 0 0 1 0 0 0 1 3005.DAT
75 | 0 STEP
76 | 1 4 30 -32 70 0 0 1 0 1 0 -1 0 0 101.dat
77 | 0 STEP
78 | 1 4 -30 -32 70 0 0 1 0 1 0 -1 0 0 101.dat
79 | 0 STEP
80 | 1 4 0 -32 90 1 0 0 0 1 0 0 0 1 3004.DAT
81 | 0 STEP
82 | 1 4 30 -40 -80 0 0 1 0 1 0 -1 0 0 3023.DAT
83 | 0 STEP
84 | 1 4 -30 -40 -80 0 0 1 0 1 0 -1 0 0 3023.DAT
85 | 0 STEP
86 | 1 4 0 -40 -50 1 0 0 0 1 0 0 0 1 3004.DAT
87 | 0 STEP
88 | 1 4 30 -40 -40 0 0 1 0 1 0 -1 0 0 3023.DAT
89 | 0 STEP
90 | 1 4 -30 -40 -40 0 0 1 0 1 0 -1 0 0 3023.DAT
91 | 0 STEP
92 | 1 0 30 -40 40 0 0 1 0 1 0 -1 0 0 3023.DAT
93 | 0 STEP
94 | 1 0 -30 -40 40 0 0 1 0 1 0 -1 0 0 3023.DAT
95 | 0 STEP
96 | 1 0 30 -40 70 1 0 0 0 1 0 0 0 1 3024.DAT
97 | 0 STEP
98 | 1 0 -30 -40 70 1 0 0 0 1 0 0 0 1 3024.DAT
99 | 0 STEP
100 | 1 0 0 -40 90 1 0 0 0 1 0 0 0 1 3710.DAT
101 | 0 STEP
102 | 1 39 0 -88 -30 1 0 0 0 1 0 0 0 1 3823.DAT
103 | 0 STEP
104 | 1 0 0 -88 30 1 0 0 0 1 0 0 0 1 4214.DAT
105 | 0 STEP
106 | 1 39 0 -88 70 -1 0 0 0 1 0 0 0 -1 3823.DAT
107 | 0 STEP
108 | 1 0 0 -96 0 1 0 0 0 1 0 0 0 1 4213.DAT
109 | 0 STEP
110 | 1 0 0 -96 60 1 0 0 0 1 0 0 0 1 3020.DAT
111 | 0 STEP
112 | 1 7 -30 6 60 0 0 1 0 1 0 -1 0 0 4601.dat
113 | 0 STEP
114 | 1 7 30 6 60 0 0 -1 0 1 0 1 0 0 4601.dat
115 | 0 STEP
116 | 1 7 -30 6 -60 0 0 1 0 1 0 -1 0 0 4601.dat
117 | 0 STEP
118 | 1 7 30 6 -60 0 0 -1 0 1 0 1 0 0 4601.dat
119 | 0 STEP
120 | 1 0 -30 6 60 0 0 1 0 1 0 -1 0 0 123.dat
121 | 0 STEP
122 | 1 0 30 6 60 0 0 -1 0 1 0 1 0 0 123.dat
123 | 0 STEP
124 | 1 0 -30 6 -60 0 0 1 0 1 0 -1 0 0 123.dat
125 | 0 STEP
126 | 1 0 30 6 -60 0 0 -1 0 1 0 1 0 0 123.dat
127 | 0 STEP
128 | 1 7 -10 -34 -70 0 0 -1 0 1 0 1 0 0 3062B.DAT
129 | 0 STEP
130 | 1 7 10 -34 -70 0 0 -1 0 1 0 1 0 0 3062B.DAT
131 | 0 STEP
132 | 1 7 0 -42 -90 -1 0 0 0 1 0 0 0 -1 3069BP05.DAT
133 | 0 STEP
134 | 1 7 0 -42 -70 -1 0 0 0 1 0 0 0 -1 3023.DAT
135 | 0
136 |
--------------------------------------------------------------------------------
/dist/models/Thumbs.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nfriend/ldraw-visualizer/a4bb31b598066e29d94dc1d3c224daadbc6ad3b0/dist/models/Thumbs.db
--------------------------------------------------------------------------------
/dist/server/parts-server/parts-server.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | // to set up node and apache to run on the same server: http://stackoverflow.com/a/18604082/1063392
4 | var express = require('express');
5 | var bodyParser = require('body-parser');
6 | var fileFetcher = require('./file-fetcher');
7 | var domain = require('domain');
8 | var app = express();
9 | app.use(bodyParser.urlencoded({ extended: false, limit: 1048576 }));
10 | app.post('/', function (req, res) {
11 | var d = domain.create();
12 | var responseHasBeenSent = false;
13 | d.on('error', function (er) {
14 | if (!responseHasBeenSent) {
15 | responseHasBeenSent = true;
16 | console.log(er);
17 | res.status(500).send(er);
18 | }
19 | });
20 | d.run(function () {
21 | fileFetcher.fetchFiles(req.body.file, function (allFiles) {
22 | res.status(200).send(allFiles);
23 | });
24 | });
25 | });
26 | var server = app.listen(17352);
27 | //# sourceMappingURL=parts-server.js.map
--------------------------------------------------------------------------------
/dist/server/parts-server/parts-server.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"parts-server.js","sourceRoot":"","sources":["../../parts-server/parts-server.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,0CAA0C;AAE1C,mGAAmG;AAEnG,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACjC,IAAI,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACxC,IAAI,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC5C,IAAI,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC/B,IAAI,GAAG,GAAG,OAAO,EAAE,CAAC;AACpB,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAEpE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,UAAC,GAAG,EAAE,GAAG;IACtB,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;IACxB,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAChC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAS,EAAE;QACxB,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC1B,mBAAmB,GAAG,IAAI,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;IACF,CAAC,CAAC,CAAC;IACH,CAAC,CAAC,GAAG,CAAC;QACL,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,UAAC,QAAkB;YACxD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC"}
--------------------------------------------------------------------------------
/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nfriend/ldraw-visualizer/a4bb31b598066e29d94dc1d3c224daadbc6ad3b0/favicon.ico
--------------------------------------------------------------------------------
/fll.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nfriend/ldraw-visualizer/a4bb31b598066e29d94dc1d3c224daadbc6ad3b0/fll.png
--------------------------------------------------------------------------------
/gearbox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nfriend/ldraw-visualizer/a4bb31b598066e29d94dc1d3c224daadbc6ad3b0/gearbox.png
--------------------------------------------------------------------------------
/images/Thumbs.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nfriend/ldraw-visualizer/a4bb31b598066e29d94dc1d3c224daadbc6ad3b0/images/Thumbs.db
--------------------------------------------------------------------------------
/images/studlogo-old.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nfriend/ldraw-visualizer/a4bb31b598066e29d94dc1d3c224daadbc6ad3b0/images/studlogo-old.png
--------------------------------------------------------------------------------
/images/studlogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nfriend/ldraw-visualizer/a4bb31b598066e29d94dc1d3c224daadbc6ad3b0/images/studlogo.png
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | LDraw Visualizer
4 |
5 |
6 |
7 |
8 |
13 |
14 |
15 |
16 | Loading model. One moment...
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/lib/threejs/Detector.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @author alteredq / http://alteredqualia.com/
3 | * @author mr.doob / http://mrdoob.com/
4 | */
5 |
6 | var Detector = {
7 |
8 | canvas: !! window.CanvasRenderingContext2D,
9 | webgl: ( function () { try { var canvas = document.createElement( 'canvas' ); return !! ( window.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ) ); } catch ( e ) { return false; } } )(),
10 | workers: !! window.Worker,
11 | fileapi: window.File && window.FileReader && window.FileList && window.Blob,
12 |
13 | getWebGLErrorMessage: function () {
14 |
15 | var element = document.createElement( 'div' );
16 | element.id = 'webgl-error-message';
17 | element.style.fontFamily = 'monospace';
18 | element.style.fontSize = '13px';
19 | element.style.fontWeight = 'normal';
20 | element.style.textAlign = 'center';
21 | element.style.background = '#fff';
22 | element.style.color = '#000';
23 | element.style.padding = '1.5em';
24 | element.style.width = '400px';
25 | element.style.margin = '5em auto 0';
26 |
27 | if ( ! this.webgl ) {
28 |
29 | element.innerHTML = window.WebGLRenderingContext ? [
30 | 'Your graphics card does not seem to support WebGL.
',
31 | 'Find out how to get it here.'
32 | ].join( '\n' ) : [
33 | 'Your browser does not seem to support WebGL.
',
34 | 'Find out how to get it here.'
35 | ].join( '\n' );
36 |
37 | }
38 |
39 | return element;
40 |
41 | },
42 |
43 | addGetWebGLMessage: function ( parameters ) {
44 |
45 | var parent, id, element;
46 |
47 | parameters = parameters || {};
48 |
49 | parent = parameters.parent !== undefined ? parameters.parent : document.body;
50 | id = parameters.id !== undefined ? parameters.id : 'oldie';
51 |
52 | element = Detector.getWebGLErrorMessage();
53 | element.id = id;
54 |
55 | parent.appendChild( element );
56 |
57 | }
58 |
59 | };
60 |
61 | // browserify support
62 | if ( typeof module === 'object' ) {
63 |
64 | module.exports = Detector;
65 |
66 | }
67 |
--------------------------------------------------------------------------------
/models/CAR.DAT:
--------------------------------------------------------------------------------
1 | 0 Car
2 | 0 Name: CAR.ldr
3 | 0 Author: James Jessiman
4 | 0 Original LDraw Model - LDraw beta 0.27 Archive
5 | 0 Car
6 | 0 ROTATION CENTER 0 0 0 1 "Custom"
7 | 0 ROTATION CONFIG 0 0
8 | 1 0 0 0 -90 1 0 0 0 1 0 0 0 1 4315.DAT
9 | 0 STEP
10 | 1 7 0 0 -60 1 0 0 0 1 0 0 0 1 4600.DAT
11 | 0 STEP
12 | 1 0 0 0 0 1 0 0 0 1 0 0 0 1 3031.DAT
13 | 0 STEP
14 | 1 7 0 0 60 1 0 0 0 1 0 0 0 1 4600.DAT
15 | 0 STEP
16 | 1 0 0 0 90 -1 0 0 0 1 0 0 0 -1 4315.DAT
17 | 0 STEP
18 | 1 46 30 -8 -90 1 0 0 0 1 0 0 0 1 3024.DAT
19 | 0 STEP
20 | 1 46 -30 -8 -90 1 0 0 0 1 0 0 0 1 3024.DAT
21 | 0 STEP
22 | 1 4 0 -8 -60 0 0 1 0 1 0 -1 0 0 3020.DAT
23 | 0 STEP
24 | 1 4 30 -8 -10 0 0 1 0 1 0 -1 0 0 101.dat
25 | 0 STEP
26 | 1 4 -30 -8 -10 0 0 1 0 1 0 -1 0 0 101.dat
27 | 0 STEP
28 | 1 4 30 -8 30 1 0 0 0 1 0 0 0 1 3024.DAT
29 | 0 STEP
30 | 1 4 -30 -8 30 1 0 0 0 1 0 0 0 1 3024.DAT
31 | 0 STEP
32 | 1 4 0 -8 50 0 0 1 0 1 0 -1 0 0 3021.DAT
33 | 0 STEP
34 | 1 4 0 -8 90 1 0 0 0 1 0 0 0 1 3710.DAT
35 | 0 STEP
36 | 1 1 0 -8 0 1 0 0 0 1 0 0 0 1 4079.DAT
37 | 0 STEP
38 | 1 46 30 -16 90 1 0 0 0 1 0 0 0 1 3024.DAT
39 | 0 STEP
40 | 1 46 -30 -16 90 1 0 0 0 1 0 0 0 1 3024.DAT
41 | 0 STEP
42 | 1 4 0 -16 -30 1 0 0 0 1 0 0 0 1 3829.DAT
43 | 0 STEP
44 | 1 4 0 -24 -60 1 0 0 0 1 0 0 0 1 3788.DAT
45 | 0 STEP
46 | 1 4 0 -24 60 1 0 0 0 1 0 0 0 1 3788.DAT
47 | 0 STEP
48 | 1 36 30 -24 90 1 0 0 0 1 0 0 0 1 3024.DAT
49 | 0 STEP
50 | 1 36 -30 -24 90 1 0 0 0 1 0 0 0 1 3024.DAT
51 | 0 STEP
52 | 1 7 0 -32 -90 1 0 0 0 1 0 0 0 1 3937.DAT
53 | 0 STEP
54 | 1 7 0 -32 -90 1 0 0 0 1 0 0 0 1 3938.DAT
55 | 0 STEP
56 | 1 4 30 -32 -90 1 0 0 0 1 0 0 0 1 157.dat
57 | 0 STEP
58 | 1 4 -30 -32 -90 1 0 0 0 1 0 0 0 1 157.dat
59 | 0 STEP
60 | 1 46 30 -22 -104 1 0 0 0 0 -1 0 1 0 179.dat
61 | 0 STEP
62 | 1 46 -30 -22 -104 1 0 0 0 0 -1 0 1 0 179.dat
63 | 0 STEP
64 | 1 4 30 -32 -60 0 0 1 0 1 0 -1 0 0 3023.DAT
65 | 0 STEP
66 | 1 4 -30 -32 -60 0 0 1 0 1 0 -1 0 0 3023.DAT
67 | 0 STEP
68 | 1 4 30 -32 -30 1 0 0 0 1 0 0 0 1 141.dat
69 | 0 STEP
70 | 1 4 -30 -32 -30 1 0 0 0 1 0 0 0 1 140.dat
71 | 0 STEP
72 | 1 4 30 -32 30 1 0 0 0 1 0 0 0 1 3005.DAT
73 | 0 STEP
74 | 1 4 -30 -32 30 1 0 0 0 1 0 0 0 1 3005.DAT
75 | 0 STEP
76 | 1 4 30 -32 70 0 0 1 0 1 0 -1 0 0 101.dat
77 | 0 STEP
78 | 1 4 -30 -32 70 0 0 1 0 1 0 -1 0 0 101.dat
79 | 0 STEP
80 | 1 4 0 -32 90 1 0 0 0 1 0 0 0 1 3004.DAT
81 | 0 STEP
82 | 1 4 30 -40 -80 0 0 1 0 1 0 -1 0 0 3023.DAT
83 | 0 STEP
84 | 1 4 -30 -40 -80 0 0 1 0 1 0 -1 0 0 3023.DAT
85 | 0 STEP
86 | 1 4 0 -40 -50 1 0 0 0 1 0 0 0 1 3004.DAT
87 | 0 STEP
88 | 1 4 30 -40 -40 0 0 1 0 1 0 -1 0 0 3023.DAT
89 | 0 STEP
90 | 1 4 -30 -40 -40 0 0 1 0 1 0 -1 0 0 3023.DAT
91 | 0 STEP
92 | 1 0 30 -40 40 0 0 1 0 1 0 -1 0 0 3023.DAT
93 | 0 STEP
94 | 1 0 -30 -40 40 0 0 1 0 1 0 -1 0 0 3023.DAT
95 | 0 STEP
96 | 1 0 30 -40 70 1 0 0 0 1 0 0 0 1 3024.DAT
97 | 0 STEP
98 | 1 0 -30 -40 70 1 0 0 0 1 0 0 0 1 3024.DAT
99 | 0 STEP
100 | 1 0 0 -40 90 1 0 0 0 1 0 0 0 1 3710.DAT
101 | 0 STEP
102 | 1 39 0 -88 -30 1 0 0 0 1 0 0 0 1 3823.DAT
103 | 0 STEP
104 | 1 0 0 -88 30 1 0 0 0 1 0 0 0 1 4214.DAT
105 | 0 STEP
106 | 1 39 0 -88 70 -1 0 0 0 1 0 0 0 -1 3823.DAT
107 | 0 STEP
108 | 1 0 0 -96 0 1 0 0 0 1 0 0 0 1 4213.DAT
109 | 0 STEP
110 | 1 0 0 -96 60 1 0 0 0 1 0 0 0 1 3020.DAT
111 | 0 STEP
112 | 1 7 -30 6 60 0 0 1 0 1 0 -1 0 0 4601.dat
113 | 0 STEP
114 | 1 7 30 6 60 0 0 -1 0 1 0 1 0 0 4601.dat
115 | 0 STEP
116 | 1 7 -30 6 -60 0 0 1 0 1 0 -1 0 0 4601.dat
117 | 0 STEP
118 | 1 7 30 6 -60 0 0 -1 0 1 0 1 0 0 4601.dat
119 | 0 STEP
120 | 1 0 -30 6 60 0 0 1 0 1 0 -1 0 0 123.dat
121 | 0 STEP
122 | 1 0 30 6 60 0 0 -1 0 1 0 1 0 0 123.dat
123 | 0 STEP
124 | 1 0 -30 6 -60 0 0 1 0 1 0 -1 0 0 123.dat
125 | 0 STEP
126 | 1 0 30 6 -60 0 0 -1 0 1 0 1 0 0 123.dat
127 | 0 STEP
128 | 1 7 -10 -34 -70 0 0 -1 0 1 0 1 0 0 3062B.DAT
129 | 0 STEP
130 | 1 7 10 -34 -70 0 0 -1 0 1 0 1 0 0 3062B.DAT
131 | 0 STEP
132 | 1 7 0 -42 -90 -1 0 0 0 1 0 0 0 -1 3069BP05.DAT
133 | 0 STEP
134 | 1 7 0 -42 -70 -1 0 0 0 1 0 0 0 -1 3023.DAT
135 | 0
136 |
--------------------------------------------------------------------------------
/models/Thumbs.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nfriend/ldraw-visualizer/a4bb31b598066e29d94dc1d3c224daadbc6ad3b0/models/Thumbs.db
--------------------------------------------------------------------------------
/models/test.ldr:
--------------------------------------------------------------------------------
1 | 0 Untitled
2 | 0 Name: test.ldr
3 | 0 Author: LDraw
4 | 0 !LDRAW_ORG Unofficial_Part
5 | 0 ROTATION CENTER 0 0 0 1 "Custom"
6 | 0 ROTATION CONFIG 0 0
7 | 0 //1 27 0 0 0 -1 0 0 0 0.984808 -0.173648 0 -0.173648 -0.984808 47753.dat
8 |
9 | 4 27 0 0 0 50 0 0 50 -50 0 0 -50 0
10 | 4 27 0 -50 0 50 -50 0 50 -70 50 0 -70 50
11 | 4 27 50 0 0 70 0 50 70 -50 50 50 -50 0
12 | 5 27 50 0 0 50 -50 0 0 0 0 0 0 0
13 | 5 27 0 -50 0 50 -50 0 0 0 0 0 0 0
14 |
15 | 0
16 |
--------------------------------------------------------------------------------
/models/test2.ldr:
--------------------------------------------------------------------------------
1 | 0 Untitled
2 | 0 Name: test2.ldr
3 | 0 Author: LDraw
4 | 0 Unofficial Model
5 | 0 ROTATION CENTER 0 0 0 1 "Custom"
6 | 0 ROTATION CONFIG 0 0
7 | 1 27 0 0 0 1 0 0 0 0.819152 -0.573576 0 0.573576 0.819152 47753.dat
8 | 0
9 |
--------------------------------------------------------------------------------
/motorcycle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nfriend/ldraw-visualizer/a4bb31b598066e29d94dc1d3c224daadbc6ad3b0/motorcycle.png
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ldraw-visualizer",
3 | "version": "0.2.0",
4 | "devDependencies": {
5 | "grunt": "~0.4.5",
6 | "grunt-contrib-clean": "^0.6.0",
7 | "grunt-contrib-connect": "^0.10.1",
8 | "grunt-contrib-copy": "^0.8.0",
9 | "grunt-contrib-cssmin": "^0.12.3",
10 | "grunt-contrib-htmlmin": "^0.4.0",
11 | "grunt-contrib-jshint": "^0.11.2",
12 | "grunt-contrib-less": "^1.0.1",
13 | "grunt-contrib-nodeunit": "~0.4.1",
14 | "grunt-contrib-uglify": "^0.9.1",
15 | "grunt-contrib-watch": "^0.6.1",
16 | "grunt-dom-munger": "^3.4.0"
17 | },
18 | "dependencies": {
19 | "body-parser": "^1.13.1",
20 | "express": "^4.13.0"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/parts-server/parts-server.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | // to set up node and apache to run on the same server: http://stackoverflow.com/a/18604082/1063392
5 |
6 | var express = require('express');
7 | var bodyParser = require('body-parser');
8 | var fileFetcher = require('./file-fetcher');
9 | var domain = require('domain');
10 | var app = express();
11 | app.use(bodyParser.urlencoded({ extended: false, limit: 1048576 }));
12 |
13 | app.post('/', (req, res) => {
14 | var d = domain.create();
15 | var responseHasBeenSent = false;
16 | d.on('error', function(er) {
17 | if (!responseHasBeenSent) {
18 | responseHasBeenSent = true;
19 | console.log(er);
20 | res.status(500).send(er);
21 | }
22 | });
23 | d.run(function() {
24 | var start = Date.now();
25 | fileFetcher.fetchFiles(req.body.file, (allFiles: string[]) => {
26 | console.log('request took ' + (Date.now() - start) + ' ms to complete');
27 | res.status(200).send(allFiles);
28 | });
29 | });
30 | });
31 |
32 | var server = app.listen(17352);
33 |
--------------------------------------------------------------------------------
/scripts/parser/Color.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | module LdrawVisualizer.Parser {
5 | export class Color {
6 | constructor(hexValue: string) {
7 | this.HexValue = hexValue;
8 | }
9 |
10 | HexValue: string;
11 |
12 | IsValid(): boolean {
13 | return Utility.isValidColorHexString(this.HexValue);
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/scripts/parser/Coordinates.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | module LdrawVisualizer.Parser {
5 | export class Coordinates {
6 |
7 | constructor(x: number, y: number, z: number) {
8 | this.X = x;
9 | this.Y = y;
10 | this.Z = z;
11 | }
12 |
13 | X: number;
14 | Y: number;
15 | Z: number;
16 |
17 | IsValid(): boolean {
18 | return Utility.isNumber(this.X)
19 | && Utility.isNumber(this.Y)
20 | && Utility.isNumber(this.Z);
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/scripts/parser/FileService.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 |
6 | import SubFileReferenceLine = LdrawVisualizer.Parser.Lines.SubFileReferenceLine;
7 | import LdrawFileLineType = LdrawVisualizer.Parser.Lines.LdrawFileLineType;
8 |
9 | module LdrawVisualizer {
10 |
11 | export class FileService {
12 |
13 | static GetLdrawFile(ldrawFile: string, callback: (file: LdrawFile, ldconfig: LdrawFile) => void, isDev: boolean = true) {
14 | var returnFile: LdrawFile,
15 | url = isDev ? 'http://localhost:17352/' : './parts-server';
16 |
17 | $.ajax({
18 | type: 'POST',
19 | url: url,
20 | data: { file: ldrawFile },
21 | success: (files: { [filename: string]: string }) => {
22 | var parsedFiles: { [filename: string]: LdrawFile } = {};
23 |
24 | // parse each line into a LdrawFile object
25 | for (var prop in files) {
26 | if (files.hasOwnProperty(prop)) {
27 | parsedFiles[prop] = (Parser.FileParser.Parse(files[prop]));
28 | }
29 | }
30 |
31 | var rootFile = parsedFiles['$rootfile$'],
32 | ldConfig = parsedFiles['LDConfig.ldr'];
33 |
34 | // break any .mpd subparts into their own "parts"
35 | var mpdSubFiles = rootFile.Lines.filter(l => l.LineType === LdrawFileLineType.File)
36 | for (var i = mpdSubFiles.length - 1; i > 0; i--) {
37 | var mpdLine = mpdSubFiles[i],
38 | originalIndex = rootFile.Lines.indexOf(mpdLine);
39 |
40 | console.log('found subpart number ' + i + ', chopping off starting at ' + originalIndex);
41 |
42 | var newSubpartLdrawFile = new LdrawFile();
43 | newSubpartLdrawFile.Lines = rootFile.Lines.splice(originalIndex, rootFile.Lines.length /* to the end of the array */);
44 | parsedFiles[Utility.fixFilePath(mpdLine.Filename)] = newSubpartLdrawFile;
45 | }
46 |
47 | // console.log(rootFile);
48 | // console.log(parsedFiles['Core.ldr']);
49 | // console.log('hello');
50 |
51 | // link up subfile references lines to their SubFileReferenceLine instances
52 | for (var prop in parsedFiles) {
53 | if (parsedFiles.hasOwnProperty(prop)) {
54 | parsedFiles[prop].Lines.filter(l => l.LineType === LdrawFileLineType.SubFileReference).forEach(l => {
55 | var subfile = (l);
56 | subfile.File = parsedFiles[Utility.fixFilePath(subfile.Filename)];
57 | });
58 | }
59 | }
60 |
61 | callback(rootFile, ldConfig);
62 | },
63 | dataType: 'JSON'
64 | });
65 | }
66 | }
67 | }
--------------------------------------------------------------------------------
/scripts/parser/LdrawFile.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 |
5 | module LdrawVisualizer {
6 | export class LdrawFile {
7 | Lines: Parser.Lines.LdrawFileLine[] = [];
8 |
9 | IsValid(): boolean {
10 | return this.Lines.every(l => l.IsValid());
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/scripts/parser/lines/CommentLine.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 |
7 | module LdrawVisualizer.Parser.Lines {
8 | export class CommentLine extends LdrawFileLine {
9 | constructor(lineContent: string) {
10 | super(LdrawFileLineType.Comment)
11 |
12 | this.LineContent = lineContent;
13 | }
14 |
15 | LineContent: string;
16 |
17 | IsValid(): boolean {
18 | return true;
19 | }
20 |
21 | static Parse(line: string, splitLine: string[], lineNumber: number): Lines.CommentLine {
22 | return new Lines.CommentLine(line.substring(line.indexOf('0') + 2));
23 | }
24 | }
25 | }
--------------------------------------------------------------------------------
/scripts/parser/lines/LdrawFileLine.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 |
6 | module LdrawVisualizer.Parser.Lines {
7 | export class LdrawFileLine {
8 | constructor(lineType: LdrawFileLineType) {
9 | this.LineType = lineType;
10 | }
11 |
12 | LineType: LdrawFileLineType;
13 |
14 | IsValid(): boolean {
15 | throw 'This method is abstract and should be overriden in a derived class - it should not be called directly';
16 | }
17 |
18 | static Parse(line: string, splitLine: string[], lineNumber: number): Lines.LdrawFileLine {
19 | throw 'This method is abstract and should be overriden in a derived class - it should not be called directly';
20 | }
21 | }
22 | }
--------------------------------------------------------------------------------
/scripts/parser/lines/LineLine.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 |
7 | module LdrawVisualizer.Parser.Lines {
8 | export class LineLine extends LdrawFileLine {
9 | constructor(color: number, point1: Coordinates, point2: Coordinates) {
10 | super(LdrawFileLineType.Line);
11 |
12 | this.Point1 = point1;
13 | this.Point2 = point2;
14 | }
15 |
16 | Point1: Coordinates;
17 | Point2: Coordinates;
18 |
19 | IsValid(): boolean {
20 | return this.Point1.IsValid()
21 | && this.Point2.IsValid();
22 | }
23 |
24 | static Parse(line: string, splitLine: string[], lineNumber: number): Lines.LineLine {
25 | var point1Coords = new Coordinates(parseFloat(splitLine[2]), parseFloat(splitLine[3]), parseFloat(splitLine[4])),
26 | point2Coords = new Coordinates(parseFloat(splitLine[5]), parseFloat(splitLine[6]), parseFloat(splitLine[7])),
27 | lineLine = new Lines.LineLine(parseInt(splitLine[1], 10), point1Coords, point2Coords);
28 |
29 | if (!lineLine.IsValid()) {
30 | throw 'Unable to parse line line: Invalid line arguments on line ' + lineNumber;
31 | }
32 |
33 | return lineLine;
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/scripts/parser/lines/LineTypes.ts:
--------------------------------------------------------------------------------
1 | module LdrawVisualizer.Parser.Lines {
2 | export enum LdrawFileLineType {
3 | Comment = 0,
4 | SubFileReference = 1,
5 | Line = 2,
6 | Triangle = 3,
7 | Quadrilateral = 4,
8 | OptionalLine = 5,
9 | Colour = 6,
10 | Step = 7,
11 | Name = 8,
12 | Author = 9,
13 | RotationCenter = 10,
14 | RotationConfig = 11,
15 | RotationStep = 12,
16 | LDrawOrg = 13,
17 | File = 14,
18 | NoFile = 15
19 | }
20 | }
--------------------------------------------------------------------------------
/scripts/parser/lines/OptionalLineLine.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 | ///
7 |
8 | module LdrawVisualizer.Parser.Lines {
9 | export class OptionalLineLine extends LdrawFileLine {
10 | constructor(color: number, point1: Coordinates, point2: Coordinates, controlPoint1: Coordinates, controlPoint2: Coordinates) {
11 | super(LdrawFileLineType.OptionalLine);
12 |
13 | this.Color = color;
14 | this.Point1 = point1;
15 | this.Point2 = point2;
16 | this.ControlPoint1 = controlPoint1;
17 | this.ControlPoint2 = controlPoint2;
18 | }
19 |
20 | Color: number;
21 | Point1: Coordinates;
22 | Point2: Coordinates;
23 | ControlPoint1: Coordinates;
24 | ControlPoint2: Coordinates;
25 |
26 | IsValid(): boolean {
27 | return Utility.isValidColorCode(this.Color)
28 | && this.Point1.IsValid()
29 | && this.Point2.IsValid()
30 | && this.ControlPoint1.IsValid()
31 | && this.ControlPoint2.IsValid();
32 | }
33 |
34 | static Parse(line: string, splitLine: string[], lineNumber: number): Lines.OptionalLineLine {
35 | var point1Coords = new Coordinates(parseFloat(splitLine[2]), parseFloat(splitLine[3]), parseFloat(splitLine[4])),
36 | point2Coords = new Coordinates(parseFloat(splitLine[5]), parseFloat(splitLine[6]), parseFloat(splitLine[7])),
37 | controlPoint1Coords = new Coordinates(parseFloat(splitLine[8]), parseFloat(splitLine[9]), parseFloat(splitLine[10])),
38 | controlPoint2Coords = new Coordinates(parseFloat(splitLine[11]), parseFloat(splitLine[12]), parseFloat(splitLine[13])),
39 | optLine = new Lines.OptionalLineLine(parseInt(splitLine[1], 10), point1Coords, point2Coords, controlPoint1Coords, controlPoint2Coords);
40 |
41 | if (!optLine.IsValid()) {
42 | throw 'Unable to parse optional line: Invalid line arguments on line ' + lineNumber;
43 | }
44 |
45 | return optLine;
46 | }
47 | }
48 | }
--------------------------------------------------------------------------------
/scripts/parser/lines/QuadrilateralLine.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 |
7 | module LdrawVisualizer.Parser.Lines {
8 | export class QuadrilateralLine extends LdrawFileLine {
9 | constructor(color: number, point1: Coordinates, point2: Coordinates, point3: Coordinates, point4: Coordinates) {
10 | super(LdrawFileLineType.Quadrilateral);
11 |
12 | this.Color = color;
13 | this.Point1 = point1;
14 | this.Point2 = point2;
15 | this.Point3 = point3;
16 | this.Point4 = point4;
17 | }
18 |
19 | Color: number;
20 | Point1: Coordinates;
21 | Point2: Coordinates;
22 | Point3: Coordinates;
23 | Point4: Coordinates;
24 |
25 | IsValid(): boolean {
26 | return Utility.isValidColorCode(this.Color)
27 | && this.Point1.IsValid()
28 | && this.Point2.IsValid()
29 | && this.Point3.IsValid()
30 | && this.Point4.IsValid();
31 | }
32 |
33 | static Parse(line: string, splitLine: string[], lineNumber: number): Lines.QuadrilateralLine {
34 | var point1Coords = new Coordinates(parseFloat(splitLine[2]), parseFloat(splitLine[3]), parseFloat(splitLine[4])),
35 | point2Coords = new Coordinates(parseFloat(splitLine[5]), parseFloat(splitLine[6]), parseFloat(splitLine[7])),
36 | point3Coords = new Coordinates(parseFloat(splitLine[8]), parseFloat(splitLine[9]), parseFloat(splitLine[10])),
37 | point4Coords = new Coordinates(parseFloat(splitLine[11]), parseFloat(splitLine[12]), parseFloat(splitLine[13])),
38 | quadLine = new Lines.QuadrilateralLine(parseInt(splitLine[1], 10), point1Coords, point2Coords, point3Coords, point4Coords);
39 |
40 | if (!quadLine.IsValid()) {
41 | throw 'Unable to parse quadrilateral line: Invalid line arguments on line ' + lineNumber;
42 | }
43 |
44 | return quadLine;
45 | }
46 | }
47 | }
--------------------------------------------------------------------------------
/scripts/parser/lines/SubFileReferenceLine.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 |
7 | module LdrawVisualizer.Parser.Lines {
8 | export class SubFileReferenceLine extends LdrawFileLine {
9 | constructor(color: number, coordinates: Coordinates, transformMatrix: number[][], filename: string) {
10 | super(LdrawFileLineType.SubFileReference);
11 |
12 | this.Color = color;
13 | this.Coordinates = coordinates;
14 | this.TransformMatrix = transformMatrix;
15 | this.Filename = filename;
16 | }
17 |
18 | Color: number;
19 | Coordinates: Coordinates;
20 | TransformMatrix: number[][];
21 | Filename: string;
22 | File: LdrawFile;
23 |
24 | IsValid(): boolean {
25 | var transformMatrixIsValid = this.TransformMatrix && this.TransformMatrix.length === 3
26 | if (transformMatrixIsValid) {
27 | outer: for (var i = 0; i < 3; i++) {
28 | if (Utility.isArray(this.TransformMatrix[i]) && this.TransformMatrix[i].length === 3) {
29 | for (var j = 0; j < 3; j++) {
30 | if (!Utility.isNumber(this.TransformMatrix[i][j])) {
31 | transformMatrixIsValid = false;
32 | break outer;
33 | }
34 | }
35 | } else {
36 | transformMatrixIsValid = false;
37 | break;
38 | }
39 | }
40 | }
41 |
42 | return (Utility.isValidColorCode(this.Color)
43 | && this.Coordinates.IsValid()
44 | && transformMatrixIsValid
45 | && Utility.hasAtLeastOneNonWhitespaceCharacter(this.Filename));
46 | }
47 |
48 | static Parse(line: string, splitLine: string[], lineNumber: number): Lines.SubFileReferenceLine {
49 | var coords = new Coordinates(parseFloat(splitLine[2]), parseFloat(splitLine[3]), parseFloat(splitLine[4])),
50 | matrix = [
51 | [parseFloat(splitLine[5]), parseFloat(splitLine[6]), parseFloat(splitLine[7])],
52 | [parseFloat(splitLine[8]), parseFloat(splitLine[9]), parseFloat(splitLine[10])],
53 | [parseFloat(splitLine[11]), parseFloat(splitLine[12]), parseFloat(splitLine[13])]
54 | ],
55 | refLine = new Lines.SubFileReferenceLine(parseInt(splitLine[1], 10), coords, matrix, line.substring(line.indexOf(splitLine[14])).trim());
56 |
57 | if (!refLine.IsValid()) {
58 | throw 'Unable to parse subfile reference line: Invalid line arguments on line ' + lineNumber;
59 | }
60 |
61 | return refLine;
62 | }
63 | }
64 | }
--------------------------------------------------------------------------------
/scripts/parser/lines/TriangleLine.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 |
7 | module LdrawVisualizer.Parser.Lines {
8 | export class TriangleLine extends LdrawFileLine {
9 | constructor(color: number, point1: Coordinates, point2: Coordinates, point3: Coordinates) {
10 | super(LdrawFileLineType.Triangle);
11 |
12 | this.Color = color;
13 | this.Point1 = point1;
14 | this.Point2 = point2;
15 | this.Point3 = point3;
16 | }
17 |
18 | Color: number;
19 | Point1: Coordinates;
20 | Point2: Coordinates;
21 | Point3: Coordinates;
22 |
23 | IsValid(): boolean {
24 | return Utility.isValidColorCode(this.Color)
25 | && this.Point1.IsValid()
26 | && this.Point2.IsValid()
27 | && this.Point3.IsValid();
28 | }
29 |
30 | static Parse(line: string, splitLine: string[], lineNumber: number): Lines.TriangleLine {
31 | var point1Coords = new Coordinates(parseFloat(splitLine[2]), parseFloat(splitLine[3]), parseFloat(splitLine[4])),
32 | point2Coords = new Coordinates(parseFloat(splitLine[5]), parseFloat(splitLine[6]), parseFloat(splitLine[7])),
33 | point3Coords = new Coordinates(parseFloat(splitLine[8]), parseFloat(splitLine[9]), parseFloat(splitLine[10])),
34 | triangleLine = new Lines.TriangleLine(parseInt(splitLine[1], 10), point1Coords, point2Coords, point3Coords);
35 |
36 | if (!triangleLine.IsValid()) {
37 | throw 'Unable to parse triangle line: Invalid line arguments on line ' + lineNumber;
38 | }
39 |
40 | return triangleLine;
41 | }
42 | }
43 | }
--------------------------------------------------------------------------------
/scripts/parser/lines/meta-lines/AuthorMETALine.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | module LdrawVisualizer.Parser.Lines {
5 | export class AuthorMETALine extends LdrawFileLine {
6 | constructor(author: string) {
7 | super(LdrawFileLineType.Author);
8 | this.Author = author;
9 | }
10 |
11 | Author: string;
12 |
13 | IsValid(): boolean {
14 | return Utility.hasAtLeastOneNonWhitespaceCharacter(this.Author);
15 | }
16 |
17 | static Parse(line: string, splitLine: string[], lineNumber: number): Lines.AuthorMETALine {
18 | var authorLine = new AuthorMETALine(splitLine[2]);
19 |
20 | if (!authorLine.IsValid()) {
21 | throw 'Unable to parse author META line: Invalid line arguments on line ' + lineNumber;
22 | }
23 |
24 | return authorLine;
25 | }
26 | }
27 | }
--------------------------------------------------------------------------------
/scripts/parser/lines/meta-lines/ColourMETALine.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 |
6 | module LdrawVisualizer.Parser.Lines {
7 | export class ColourMETALine extends LdrawFileLine {
8 | constructor(name: string, code: number, value: Color, edge: number|Color,
9 | alpha: number, luminance: number, texture: ColorTexture) {
10 |
11 | super(LdrawFileLineType.Colour);
12 |
13 | this.Name = name;
14 | this.Code = code;
15 | this.Value = value;
16 | this.Edge = edge;
17 | this.Alpha = alpha;
18 | this.Luminance = luminance;
19 | this.Texture = texture;
20 | }
21 |
22 | Name: string;
23 | Code: number;
24 | Value: Color;
25 | Edge: number|Color;
26 | Alpha: number;
27 | Luminance: number;
28 | Texture: ColorTexture;
29 |
30 | IsValid(): boolean {
31 | if (typeof this.Edge === 'number') {
32 | var isEdgeValid = Utility.isValidColorCode(this.Edge);
33 | } else {
34 | var isEdgeValid = !isEdgeValid || (this.Edge).IsValid();
35 | }
36 |
37 | return Utility.isNonEmpty(this.Name)
38 | && Utility.isValidColorCode(this.Code)
39 | && this.Value.IsValid()
40 | && isEdgeValid
41 | && (Utility.isNullOrUndefined(this.Alpha) || Utility.isByte(this.Alpha))
42 | && (Utility.isNullOrUndefined(this.Luminance) || Utility.isByte(this.Luminance));
43 | }
44 |
45 | static Parse(line: string, splitLine: string[], lineNumber: number): Lines.ColourMETALine {
46 | var code: number,
47 | value: Color,
48 | edge: number|Color,
49 | alpha: number,
50 | luminance: number,
51 | texture: Lines.ColorTexture;
52 |
53 | var codeIndex = splitLine.indexOf('CODE');
54 | if (codeIndex !== -1) {
55 | code = parseInt(splitLine[codeIndex + 1], 10);
56 | }
57 |
58 | var valueIndex = splitLine.indexOf('VALUE');
59 | if (valueIndex !== -1) {
60 | value = new Color(splitLine[valueIndex + 1]);
61 | }
62 |
63 | var edgeIndex = splitLine.indexOf('EDGE');
64 | if (edgeIndex !== -1) {
65 | var edgeValue = splitLine[edgeIndex + 1];
66 | if (Utility.isValidColorHexString(edgeValue)) {
67 | edge = new Color(edgeValue);
68 | } else {
69 | edge = parseInt(edgeValue, 10);
70 | }
71 | }
72 |
73 | var alphaIndex = splitLine.indexOf('ALPHA');
74 | if (alphaIndex !== -1) {
75 | alpha = parseInt(splitLine[alphaIndex + 1], 10);
76 | }
77 |
78 | var luminanceIndex = splitLine.indexOf('LUMINANCE');
79 | if (luminanceIndex !== -1) {
80 | luminance = parseInt(splitLine[luminanceIndex + 1], 10);
81 | }
82 |
83 | if (splitLine.indexOf('CHROME') !== -1) {
84 | texture = Lines.ColorTexture.Chrome;
85 | } else if (splitLine.indexOf('PEARLESCENT') !== -1) {
86 | texture = Lines.ColorTexture.Chrome;
87 | } else if (splitLine.indexOf('RUBBER') !== -1) {
88 | texture = Lines.ColorTexture.Chrome;
89 | } else if (splitLine.indexOf('MATTE_METALLIC') !== -1) {
90 | texture = Lines.ColorTexture.Chrome;
91 | } else if (splitLine.indexOf('METAL') !== -1) {
92 | texture = Lines.ColorTexture.Chrome;
93 | } else if (splitLine.indexOf('MATERIAL') !== -1) {
94 | if (splitLine.indexOf('GLITTER') !== -1) {
95 | texture = Lines.ColorTexture.Glitter;
96 | } else if (splitLine.indexOf('SPECKLE') !== -1) {
97 | texture = Lines.ColorTexture.Speckle;
98 | }
99 | }
100 |
101 | var colourLine = new Lines.ColourMETALine(splitLine[2], code, value, edge, alpha, luminance, texture);
102 |
103 | if (!colourLine.IsValid()) {
104 | throw 'Unable to parse META colour line: Invalid line arguments on line ' + lineNumber;
105 | }
106 |
107 | return colourLine;
108 | }
109 | }
110 |
111 | export enum ColorTexture {
112 | Chrome,
113 | Pearlescent,
114 | Rubber,
115 | MatteMetalic,
116 | Metal,
117 | Glitter,
118 | Speckle,
119 | }
120 | }
--------------------------------------------------------------------------------
/scripts/parser/lines/meta-lines/FileMETALine.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | module LdrawVisualizer.Parser.Lines {
5 | export class FileMETALine extends LdrawFileLine {
6 | constructor(filename: string) {
7 | super(LdrawFileLineType.File);
8 |
9 | this.Filename = filename;
10 | }
11 |
12 | Filename: string;
13 |
14 | IsValid(): boolean {
15 | return Utility.hasAtLeastOneNonWhitespaceCharacter(this.Filename);
16 | }
17 |
18 | static Parse(line: string, splitLine: string[], lineNumber: number): Lines.FileMETALine {
19 | var fileLine = new FileMETALine(line.substring(line.indexOf(splitLine[2])));
20 |
21 | if (!fileLine.IsValid()) {
22 | throw 'Unable to parse file META line: Invalid line arguments on line ' + lineNumber;
23 | }
24 |
25 | return fileLine;
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/scripts/parser/lines/meta-lines/LdrawOrgMETALine.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 |
5 | module LdrawVisualizer.Parser.Lines {
6 | export class LdrawOrgMETALine extends LdrawFileLine {
7 | constructor(partType: LdrawOrgPartType) {
8 | super(LdrawFileLineType.LDrawOrg);
9 |
10 | this.PartType = partType;
11 | }
12 |
13 | PartType: LdrawOrgPartType;
14 |
15 | IsValid(): boolean {
16 | return !Utility.isNullOrUndefined(this.PartType);
17 | }
18 |
19 | static Parse(line: string, splitLine: string[], lineNumber: number): Lines.LdrawOrgMETALine {
20 |
21 | var partTypeString = (splitLine[2] || '(Unknown LDraw Org Part Type)').trim().toUpperCase();
22 | var loLine: LdrawOrgMETALine;
23 |
24 | switch (partTypeString) {
25 | case 'PART':
26 | loLine = new LdrawOrgMETALine(LdrawOrgPartType.Part);
27 | break;
28 | case 'SUBPART':
29 | loLine = new LdrawOrgMETALine(LdrawOrgPartType.Subpart);
30 | break;
31 | case 'PRIMITIVE':
32 | loLine = new LdrawOrgMETALine(LdrawOrgPartType.Primitive);
33 | break;
34 | case '48_PRIMITIVE':
35 | loLine = new LdrawOrgMETALine(LdrawOrgPartType.Primitive_48);
36 | break;
37 | case 'SHORTCUT':
38 | loLine = new LdrawOrgMETALine(LdrawOrgPartType.Shortcut);
39 | break;
40 | case 'UNOFFICIAL_PART':
41 | loLine = new LdrawOrgMETALine(LdrawOrgPartType.Unofficial_Part);
42 | break;
43 | case 'UNOFFICIAL_SUBPART':
44 | loLine = new LdrawOrgMETALine(LdrawOrgPartType.Unofficial_Subpart);
45 | break;
46 | case 'UNOFFICIAL_PRIMITIVE':
47 | loLine = new LdrawOrgMETALine(LdrawOrgPartType.Unofficial_Primitive);
48 | break;
49 | case 'UNOFFICIAL_48_PRIMITIVE':
50 | loLine = new LdrawOrgMETALine(LdrawOrgPartType.Unofficial_Primitive_48);
51 | break;
52 | case 'UNOFFICIAL_SHORTCUT':
53 | loLine = new LdrawOrgMETALine(LdrawOrgPartType.Unofficial_Shortcut);
54 | break;
55 | case 'CONFIGURATION':
56 | loLine = new LdrawOrgMETALine(LdrawOrgPartType.Configuration);
57 | break;
58 | default:
59 | loLine = new LdrawOrgMETALine(LdrawOrgPartType.Other);
60 | }
61 |
62 | if (!loLine.IsValid()) {
63 | throw 'Unable to parse LDraw Org META line: Invalid line arguments on line ' + lineNumber;
64 | }
65 |
66 | return loLine;
67 | }
68 | }
69 |
70 | export enum LdrawOrgPartType {
71 | Part, Subpart, Primitive, Primitive_48, Shortcut,
72 | Unofficial_Part, Unofficial_Subpart, Unofficial_Primitive, Unofficial_Primitive_48, Unofficial_Shortcut,
73 | Configuration, Other
74 | }
75 | }
--------------------------------------------------------------------------------
/scripts/parser/lines/meta-lines/NameMETALine.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | module LdrawVisualizer.Parser.Lines {
5 | export class NameMETALine extends LdrawFileLine {
6 | constructor(name: string) {
7 | super(LdrawFileLineType.Name);
8 |
9 | this.Name = name;
10 | }
11 |
12 | Name: string;
13 |
14 | IsValid(): boolean {
15 | return Utility.hasAtLeastOneNonWhitespaceCharacter(this.Name);
16 | }
17 |
18 | static Parse(line: string, splitLine: string[], lineNumber: number): Lines.NameMETALine {
19 | var nameLine = new NameMETALine(line.substring(line.indexOf(splitLine[2])));
20 |
21 | if (!nameLine.IsValid()) {
22 | throw 'Unable to parse name META line: Invalid line arguments on line ' + lineNumber;
23 | }
24 |
25 | return nameLine;
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/scripts/parser/lines/meta-lines/NoFileMETALine.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | module LdrawVisualizer.Parser.Lines {
5 | export class NoFileMETALine extends LdrawFileLine {
6 | constructor() {
7 | super(LdrawFileLineType.NoFile);
8 | }
9 |
10 | IsValid(): boolean {
11 | return true;
12 | }
13 |
14 | static Parse(line: string, splitLine: string[], lineNumber: number): Lines.NoFileMETALine {
15 | var noFileLine = new NoFileMETALine();
16 |
17 | if (!noFileLine.IsValid()) {
18 | throw 'Unable to parse NOFILE META line: Invalid line arguments on line ' + lineNumber;
19 | }
20 |
21 | return noFileLine;
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/scripts/parser/lines/meta-lines/PartDescription.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | module LdrawVisualizer.Parser.Lines {
5 | export class PartDescriptionMETALine extends LdrawFileLine {
6 | constructor(name: string) {
7 | super(LdrawFileLineType.Name);
8 |
9 | this.Name = name;
10 | }
11 |
12 | Name: string;
13 |
14 | IsValid(): boolean {
15 | return Utility.hasAtLeastOneNonWhitespaceCharacter(this.Name);
16 | }
17 |
18 | static Parse(line: string, splitLine: string[], lineNumber: number): Lines.NameMETALine {
19 | var nameLine = new NameMETALine(splitLine[2]);
20 |
21 | if (!nameLine.IsValid()) {
22 | throw 'Unable to parse name META line: Invalid line arguments on line ' + lineNumber;
23 | }
24 |
25 | return nameLine;
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/scripts/parser/lines/meta-lines/RotationCenterMETALine.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | module LdrawVisualizer.Parser.Lines {
5 | export class RotationCenterMETALine extends LdrawFileLine {
6 | constructor(x: number, y: number, z: number, whatIsThisNumberFor: number, name: string) {
7 | super(LdrawFileLineType.RotationCenter);
8 |
9 | this.X = x;
10 | this.Y = y;
11 | this.Z = z;
12 | this.WhatIsThisNumberFor = whatIsThisNumberFor;
13 | this.Name = name;
14 | }
15 |
16 | X: number;
17 | Y: number;
18 | Z: number;
19 | WhatIsThisNumberFor: number;
20 | Name: string;
21 |
22 | IsValid(): boolean {
23 | return (Utility.isNumber(this.X)
24 | && Utility.isNumber(this.Y)
25 | && Utility.isNumber(this.Z)
26 | // && Utility.isNumber(this.WhatIsThisNumberFor)
27 | && Utility.isNonEmpty(this.Name));
28 | }
29 |
30 | static Parse(line: string, splitLine: string[], lineNumber: number): Lines.RotationCenterMETALine {
31 |
32 | var x = parseInt(splitLine[3], 10),
33 | y = parseInt(splitLine[4], 10),
34 | z = parseInt(splitLine[5], 10),
35 | whatIsThisNumberFor = parseInt(splitLine[6], 10),
36 | name = splitLine[7];
37 |
38 | var rotationCenterLine = new RotationCenterMETALine(x, y, z, whatIsThisNumberFor, name);
39 |
40 | if (!rotationCenterLine.IsValid()) {
41 | throw 'Unable to parse rotation center META line: Invalid line arguments on line ' + lineNumber;
42 | }
43 |
44 | return rotationCenterLine;
45 | }
46 | }
47 | }
--------------------------------------------------------------------------------
/scripts/parser/lines/meta-lines/RotationConfigMETALine.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | module LdrawVisualizer.Parser.Lines {
5 | export class RotationConfigMETALine extends LdrawFileLine {
6 | constructor(rotationId: number, isVisible: boolean) {
7 | super(LdrawFileLineType.RotationConfig);
8 | this.RotationId = rotationId;
9 | this.IsVisible = isVisible;
10 | }
11 |
12 | RotationId: number;
13 | IsVisible: boolean;
14 |
15 | IsValid(): boolean {
16 | return (Utility.isInt(this.RotationId)
17 | && !Utility.isNullOrUndefined(this.IsVisible));
18 | }
19 |
20 | static Parse(line: string, splitLine: string[], lineNumber: number): Lines.RotationConfigMETALine {
21 |
22 | var rotId = parseInt(splitLine[3], 10),
23 | isVisible = parseInt(splitLine[4], 10) === 1;
24 |
25 | var rotationConfigLine = new RotationConfigMETALine(rotId, isVisible);
26 |
27 | if (!rotationConfigLine.IsValid()) {
28 | throw 'Unable to parse rotation config META line: Invalid line arguments on line ' + lineNumber;
29 | }
30 |
31 | return rotationConfigLine;
32 | }
33 | }
34 | }
--------------------------------------------------------------------------------
/scripts/parser/lines/meta-lines/RotationStepMETALine.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | module LdrawVisualizer.Parser.Lines {
5 | export class RotationStepMETALine extends LdrawFileLine {
6 | constructor(xAngle: number, yAngle: number, zAngle: number, rotationType: RotationType) {
7 | super(LdrawFileLineType.RotationStep);
8 |
9 | this.XAngle = xAngle;
10 | this.YAngle = yAngle;
11 | this.ZAngle = zAngle;
12 | this.RotationType = rotationType;
13 | }
14 |
15 | XAngle: number;
16 | YAngle: number;
17 | ZAngle: number;
18 | RotationType: RotationType;
19 |
20 | IsValid(): boolean {
21 |
22 | // if any of the rotation angles are defined,
23 | // ensure ALL rotation angles are valid
24 | if (!Utility.isNullOrUndefined(this.XAngle)
25 | || !Utility.isNullOrUndefined(this.YAngle)
26 | || !Utility.isNullOrUndefined(this.ZAngle)) {
27 |
28 | return (Utility.isNumber(this.XAngle)
29 | && Utility.isNumber(this.YAngle)
30 | && Utility.isNumber(this.ZAngle));
31 | } else {
32 | return true;
33 | }
34 | }
35 |
36 | static Parse(line: string, splitLine: string[], lineNumber: number): Lines.RotationStepMETALine {
37 |
38 | var x: number, y: number, z: number, rotType: RotationType;
39 |
40 | if (splitLine[2] !== 'END') {
41 | x = parseFloat(splitLine[2]);
42 | y = parseFloat(splitLine[3]);
43 | z = parseFloat(splitLine[4]);
44 |
45 | if (splitLine[5] === 'REL') {
46 | rotType = RotationType.Relative;
47 | } else if (splitLine[5] === 'ADD') {
48 | rotType = RotationType.Additive;
49 | } else if (splitLine[5] === 'ABS') {
50 | rotType = RotationType.Absolute;
51 | } else {
52 | throw 'Unknown rotation step type: ' + splitLine[5];
53 | }
54 | }
55 |
56 | var rotStepLine = new RotationStepMETALine(x, y, z, rotType);
57 |
58 | if (!rotStepLine.IsValid()) {
59 | throw 'Unable to parse rotation step META line: Invalid line arguments on line ' + lineNumber;
60 | }
61 |
62 | return rotStepLine;
63 | }
64 | }
65 |
66 | export enum RotationType {
67 | Relative, Additive, Absolute
68 | }
69 | }
--------------------------------------------------------------------------------
/scripts/parser/lines/meta-lines/StepMETALine.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | module LdrawVisualizer.Parser.Lines {
5 | export class StepMETALine extends LdrawFileLine {
6 | constructor() {
7 | super(LdrawFileLineType.Step);
8 | }
9 |
10 | IsValid(): boolean {
11 | return true;
12 | }
13 |
14 | static Parse(line: string, splitLine: string[], lineNumber: number): Lines.StepMETALine {
15 | return new StepMETALine();
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/scripts/renderer/ColorLookup.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 |
5 | module LdrawVisualizer.Renderer {
6 | export var ColorLookup: { [code: number]: { hex: number, alpha?: number } } = {
7 |
8 | /*// black
9 | 0: { hex: 0x000000 },
10 |
11 | // blue
12 | 1: { hex: 0x005BF },
13 |
14 | // green
15 | 2: { hex: 0x257A3E },
16 |
17 | // red
18 | 4: { hex: 0xC91A09 },
19 |
20 | // brown
21 | 6: { hex: 0x583927 },
22 |
23 | // dark gray
24 | 8: { hex: 0x6D6E5C },
25 |
26 | // yellow
27 | 14: { hex: 0xF2CD37 },
28 |
29 | // white
30 | 15: { hex: 0xFFFFFF },
31 |
32 | // tranparent red
33 | 36: { hex: 0xC91A09, alpha: 128 },
34 |
35 | // tranparent clear
36 | 47: { hex: 0xFCFCFC, alpha: 128 },
37 |
38 | // silver metal
39 | 80: { hex: 0xA5A9B4 },
40 |
41 | // rubber black
42 | 256: { hex: 0x212121 },
43 |
44 | // chrome silver
45 | 383: { hex: 0xE0E0E0 },*/
46 |
47 | }
48 | }
--------------------------------------------------------------------------------
/scripts/renderer/EdgeMap.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | module LdrawVisualizer.Renderer {
4 |
5 | export class EdgeMap {
6 |
7 | // how close the vertices must be to be considered the same point
8 | private precision: number = 10000;
9 |
10 | // a map of edge keys to faces.
11 | private map: { [mapKey: string]: Array } = {};
12 |
13 | addGeometry(geometry: THREE.Geometry): void {
14 | geometry.faces.forEach(f => {
15 | [
16 | { vertex1Index: f.a, vertex2Index: f.b },
17 | { vertex1Index: f.b, vertex2Index: f.c },
18 | { vertex1Index: f.c, vertex2Index: f.a }
19 | ].forEach((edge, index) => {
20 | var mapKey = this.GetMapKey(geometry.vertices[edge.vertex1Index], geometry.vertices[edge.vertex2Index]);
21 | if (!this.map[mapKey]) {
22 | this.map[mapKey] = [];
23 | }
24 | this.map[mapKey].push(geometry);
25 | });
26 | });
27 | }
28 |
29 | addGeometries(geometries: Array): void {
30 | geometries.forEach(g => {
31 | this.addGeometry(g);
32 | });
33 | }
34 |
35 |
36 | getGeometries(vertex1: THREE.Vector3, vertex2: THREE.Vector3): Array {
37 | return this.getGeometriesFromKey(this.GetMapKey(vertex1, vertex2));
38 | }
39 |
40 | getGeometriesFromKey(edgeKey: string): Array {
41 | return this.map[edgeKey] || [];
42 | }
43 |
44 | // returns an order-independent string key based on all six data points of the two vertices
45 | public GetMapKey(vertexA: THREE.Vector3, vertexB: THREE.Vector3): string {
46 | var first: THREE.Vector3, second: THREE.Vector3;
47 |
48 | if (vertexA.x < vertexB.x) {
49 | first = vertexA;
50 | second = vertexB;
51 | } else if (vertexA.x > vertexB.x) {
52 | first = vertexB;
53 | second = vertexA;
54 | } else {
55 |
56 | if (vertexA.y < vertexB.y) {
57 | first = vertexA;
58 | second = vertexB;
59 | } else if (vertexA.y > vertexB.y) {
60 | first = vertexB;
61 | second = vertexA;
62 | } else {
63 |
64 | if (vertexA.z < vertexB.z) {
65 | first = vertexA;
66 | second = vertexB;
67 | } else if (vertexA.z > vertexB.z) {
68 | first = vertexB;
69 | second = vertexA;
70 | } else {
71 | // they're the same point
72 |
73 | first = vertexA;
74 | second = vertexB;
75 | }
76 | }
77 | }
78 |
79 | return [Math.round(first.x * this.precision),
80 | Math.round(first.y * this.precision),
81 | Math.round(first.z * this.precision),
82 | Math.round(second.x * this.precision),
83 | Math.round(second.y * this.precision),
84 | Math.round(second.z * this.precision)].join('|');
85 | }
86 | }
87 | }
--------------------------------------------------------------------------------
/scripts/renderer/Smoother.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 |
7 | module LdrawVisualizer.Renderer {
8 | export class Smoother {
9 |
10 | private edgeMap = new EdgeMap();
11 |
12 | public CombineAndSmooth(geometries: Array,
13 | optionalLines: Array<{ vertex1: THREE.Vector3, vertex2: THREE.Vector3 }>,
14 | quadLines: { [lineKey: string]: any }): THREE.Geometry {
15 |
16 | this.edgeMap.addGeometries(geometries);
17 |
18 | var optionalLineLookup: { [key: string]: { vertex1: THREE.Vector3, vertex2: THREE.Vector3 } } = {};
19 | optionalLines.forEach(ol => {
20 | optionalLineLookup[this.edgeMap.GetMapKey(ol.vertex1, ol.vertex2)] = ol;
21 | });
22 |
23 | var geometryGroups: Array> = [];
24 |
25 | while (geometries.length > 0) {
26 | var currentGeometry = geometries.shift();
27 | var currentGeometryGroup = this.getConnectedGeometriesGroup(currentGeometry, optionalLineLookup);
28 | currentGeometryGroup.forEach(geom => {
29 | geometries.splice(geometries.indexOf(geom), 1);
30 | });
31 |
32 | geometryGroups.push(currentGeometryGroup);
33 | }
34 |
35 | var emptyMatrix = new THREE.Matrix4();
36 | var smoothedGeometries: Array = [];
37 |
38 | geometryGroups.forEach(group => {
39 | var combinedGeom = new THREE.Geometry();
40 | group.forEach(geom => {
41 | combinedGeom.merge(geom, emptyMatrix, 0);
42 | });
43 | combinedGeom.computeFaceNormals();
44 | combinedGeom.mergeVertices();
45 | combinedGeom.computeVertexNormals();
46 | smoothedGeometries.push(combinedGeom);
47 | });
48 |
49 | var finalGeom = new THREE.Geometry();
50 | smoothedGeometries.forEach(geom => {
51 | finalGeom.merge(geom, emptyMatrix, 0);
52 | });
53 |
54 | return finalGeom;
55 |
56 | // for (var lineKey in quadLines) {
57 | // if (quadLines.hasOwnProperty(lineKey)) {
58 | // var quadHalves = edgeMap.getFacesFromLineKey(lineKey);
59 | // if (quadHalves) {
60 | // quadHalves.face1.vertexNormals[0] = quadHalves.face2.vertexNormals[2].clone();
61 | // quadHalves.face2.vertexNormals[0] = quadHalves.face1.vertexNormals[2].clone();
62 | // }
63 | // }
64 | // }
65 | }
66 |
67 | // returns all geometries connected to the provided geometry.
68 | // the returned array includes the provided geometry.
69 | private getConnectedGeometriesGroup(
70 | geometry: THREE.Geometry,
71 | optionalLineLookup: { [key: string]: { vertex1: THREE.Vector3, vertex2: THREE.Vector3 } },
72 | geometries: Array = []
73 | ): Array {
74 |
75 | geometries.push(geometry);
76 |
77 | geometry.faces.forEach(f => {
78 | [
79 | { vertex1: f.a, vertex2: f.b },
80 | { vertex1: f.b, vertex2: f.c },
81 | { vertex1: f.c, vertex2: f.a },
82 | ].forEach(edge => {
83 | var edgeKey = this.edgeMap.GetMapKey(geometry.vertices[edge.vertex1], geometry.vertices[edge.vertex2]);
84 | if (optionalLineLookup[edgeKey]) {
85 | var adjacentGeometries = this.edgeMap.getGeometriesFromKey(edgeKey);
86 | if (adjacentGeometries.length > 0) {
87 | adjacentGeometries.forEach(geom => {
88 | if (geometries.indexOf(geom) === -1) {
89 | this.getConnectedGeometriesGroup(geom, optionalLineLookup, geometries);
90 | }
91 | });
92 | }
93 | }
94 | });
95 | });
96 |
97 | return geometries;
98 | }
99 | }
100 | }
--------------------------------------------------------------------------------
/scripts/renderer/VertexToFaceMap.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | module LdrawVisualizer.Renderer {
5 |
6 | export interface FaceContainer {
7 | face: THREE.Face3;
8 | matchingVertexIndex: Face3VertexIndex;
9 | }
10 |
11 | export enum Face3VertexIndex {
12 | A = 0, B = 1, C = 2
13 | }
14 |
15 | export class VertexToFaceMap {
16 |
17 | // a map of vertex keys to faces.
18 | private map: { [mapKey: string]: Array } = {};
19 |
20 | // how close the vertices must be to be considered the same point
21 | private precision: number = 10000;
22 |
23 | // adds all of the faces in the geometry to the map, indexed by their vertices.
24 | // note each face will appear in the internal map 3 times, once for each vertex
25 | addGeometry(geometry: THREE.Geometry): void {
26 | geometry.faces.forEach(f => {
27 | [f.a, f.b, f.c].forEach((vertexIndex, index) => {
28 | var vertexMapKey = this.getMapKey(geometry.vertices[vertexIndex]);
29 | this.map[vertexMapKey] = this.map[vertexMapKey] || [];
30 | this.map[vertexMapKey].push({
31 | face: f,
32 | matchingVertexIndex: index
33 | });
34 | });
35 | });
36 | }
37 |
38 | // returns a list of unique faces that contain the given vertex
39 | getFaces(vertex: THREE.Vector3|THREE.Vector3[]): Array {
40 | if (Utility.isArray(vertex)) {
41 | var allFaces: Array = [];
42 | (vertex).forEach(v => {
43 | var faces = this.map[this.getMapKey(v)];
44 | if (faces) {
45 | allFaces = allFaces.concat(faces);
46 | }
47 | });
48 | var uniqueFaces = allFaces.filter((value, index, self) => {
49 | return self.indexOf(value) === index;
50 | });
51 | return uniqueFaces;
52 | } else {
53 | return this.map[this.getMapKey(vertex)];
54 | }
55 | }
56 |
57 | getFacesFromVertexKey(vertexKey: string): Array {
58 | return this.map[vertexKey];
59 | }
60 |
61 | // returns a string key based on three vertices of a point
62 | private getMapKey(vertex: THREE.Vector3): string {
63 | return [Math.round(vertex.x * this.precision),
64 | Math.round(vertex.y * this.precision),
65 | Math.round(vertex.z * this.precision)].join('|');
66 | }
67 | }
68 | }
--------------------------------------------------------------------------------
/scripts/renderer/VertexToLineMap.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | module LdrawVisualizer.Renderer {
5 |
6 | export interface OptionalLine {
7 | vertex1: THREE.Vector3;
8 | vertex2: THREE.Vector3;
9 | }
10 |
11 | export class VertexToLineMap {
12 |
13 | // a map of vertex keys to lines.
14 | private map: { [mapKey: string]: Array } = {};
15 |
16 | // how close the vertices must be to be considered the same point
17 | private precision: number = 10000;
18 |
19 | // adds a line (defined by two THREE.Vector3's) to the map.
20 | // note that each line will appear in the map twice - once for each point
21 | addLine(vertex1: THREE.Vector3, vertex2: THREE.Vector3): void {
22 | [vertex1, vertex2].forEach((v) => {
23 | var vertexMapKey = this.getMapKey(v);
24 | this.map[vertexMapKey] = this.map[vertexMapKey] || [];
25 | this.map[vertexMapKey].push({
26 | vertex1: vertex1,
27 | vertex2: vertex2
28 | });
29 | });
30 | }
31 |
32 | // returns a list of unique lines that contain the given vertex
33 | getLines(vertex: THREE.Vector3): Array {
34 | return this.map[this.getMapKey(vertex)];
35 | }
36 |
37 | // returns a string key based on three vertices of a point
38 | private getMapKey(vertex: THREE.Vector3): string {
39 | return [Math.round(vertex.x * this.precision),
40 | Math.round(vertex.y * this.precision),
41 | Math.round(vertex.z * this.precision)].join('|');
42 | }
43 | }
44 | }
--------------------------------------------------------------------------------
/scripts/utility.ts:
--------------------------------------------------------------------------------
1 | module LdrawVisualizer.Utility {
2 | export function isString(obj) {
3 | return Object.prototype.toString.call(obj) === '[object String]';
4 | }
5 |
6 | export function isNumber(obj) {
7 | return Object.prototype.toString.call(obj) === '[object Number]' && !isNaN(obj);
8 | }
9 |
10 | export function isInt(obj) {
11 | return isNumber(obj) && (obj % 1) === 0;
12 | }
13 |
14 | export function isByte(obj) {
15 | return isInt(obj) && obj >= 0 && obj <= 255;
16 | }
17 |
18 | export function isArray(obj) {
19 | return Object.prototype.toString.call(obj) === '[object Array]';
20 | }
21 |
22 | export function isValidColorCode(obj) {
23 | return isInt(obj) && obj >= 0;
24 | //return isInt(obj) && obj >= 0 && obj <= 511;
25 | }
26 |
27 | export function isValidColorHexString(obj) {
28 | return isString(obj) && obj && /^#[a-f0-9]{6}$/i.test(obj);
29 | }
30 |
31 | export function isNullOrUndefined(obj) {
32 | return obj === null || typeof obj === 'undefined';
33 | }
34 |
35 | export function hasAtLeastOneNonWhitespaceCharacter(s: string) {
36 | return /^(?!\s*$).+/.test(s);
37 | }
38 |
39 | export function isNonEmpty(s: string) {
40 | return !(/^\s+$/.test(s));
41 | }
42 |
43 | export function isValidFilename(filename: string): boolean {
44 | return /^[a-zA-Z0-9\-_\\/\.]+\.(dat|ldr|mpd)$/i.test(filename);
45 | }
46 |
47 | export function logMatrix(matrix: THREE.Matrix4) {
48 | var e = matrix.elements;
49 | console.log(e[0], e[4], e[8], e[12]);
50 | console.log(e[1], e[5], e[9], e[13]);
51 | console.log(e[2], e[6], e[10], e[14]);
52 | console.log(e[3], e[7], e[11], e[15]);
53 | console.log('---------------');
54 | }
55 |
56 | export function hexStringToHexNumber(hexString: string): number {
57 | return parseInt(hexString.replace(/#/g, ''), 16);
58 | }
59 |
60 | export function fixFilePath(filePath: string): string {
61 | return filePath.toLowerCase().replace(/\\/g, '/');
62 | }
63 |
64 | export function degreesToRadians(degrees: number): number {
65 | return degrees * (Math.PI / 180);
66 | }
67 |
68 | export function radiansToDegrees(radians: number): number {
69 | return radians * (180 / Math.PI);
70 | }
71 | }
--------------------------------------------------------------------------------
/styles/ldraw-visualizer.css:
--------------------------------------------------------------------------------
1 | body{margin:0}body #container{overflow:hidden}/*# sourceMappingURL=./styles/ldraw-visualizer.css.map */
--------------------------------------------------------------------------------
/styles/ldraw-visualizer.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["ldraw-visualizer.less"],"names":[],"mappings":"AAAA,KACC,SADD,IAGC,YACC"}
--------------------------------------------------------------------------------
/styles/ldraw-visualizer.less:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 |
4 | #container {
5 | overflow: hidden;
6 | }
7 | }
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES5",
4 | "module": "amd",
5 | "sourceMap": true,
6 | "watch": true
7 | }
8 | }
--------------------------------------------------------------------------------
/typings/references.js:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 | ///
7 | ///
8 | ///
9 | ///
10 | ///
11 | ///
12 | ///
13 | ///
14 | ///
15 | ///
16 | //# sourceMappingURL=references.js.map
--------------------------------------------------------------------------------
/typings/references.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"references.js","sourceRoot":"","sources":["references.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,8CAA8C;AAC9C,0DAA0D;AAC1D,sDAAsD;AACtD,yDAAyD;AACzD,0DAA0D;AAC1D,oDAAoD;AACpD,yDAAyD;AACzD,qDAAqD;AACrD,sDAAsD;AACtD,sDAAsD;AACtD,6DAA6D;AAC7D,2CAA2C;AAC3C,gDAAgD;AAChD,sDAAsD"}
--------------------------------------------------------------------------------
/typings/references.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 | ///
5 | ///
6 | ///
7 | ///
8 | ///
9 | ///
10 | ///
11 | ///
12 | ///
13 | ///
14 | ///
15 | ///
16 | ///
--------------------------------------------------------------------------------
/typings/threejs/detector.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for three.js (Detector.js)
2 | // Project: https://github.com/mrdoob/three.js/blob/master/examples/js/Detector.js
3 | // Definitions by: Satoru Kimura
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | interface DetectorStatic {
7 | canvas: boolean;
8 | webgl: boolean;
9 | workers: boolean;
10 | fileapi: boolean;
11 |
12 | getWebGLErrorMessage(): HTMLElement;
13 | addGetWebGLMessage(parameters?: {id?: string; parent?: HTMLElement}): void;
14 | }
15 |
16 | declare var Detector: DetectorStatic;
17 |
--------------------------------------------------------------------------------
/typings/threejs/three-canvasrenderer.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for three.js (CanvasRenderer.js)
2 | // Project: https://github.com/mrdoob/three.js/blob/master/examples/js/renderers/CanvasRenderer.js
3 | // Definitions by: Satoru Kimura
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | ///
7 |
8 | declare module THREE {
9 | export interface SpriteCanvasMaterialParameters extends MaterialParameters{
10 | color?: number;
11 |
12 | }
13 |
14 | export class SpriteCanvasMaterial extends Material {
15 | constructor(parameters?: SpriteCanvasMaterialParameters);
16 |
17 | color: Color;
18 |
19 | program(context: any, color: Color): void;
20 | clone(): SpriteCanvasMaterial;
21 | }
22 |
23 | export interface CanvasRendererParameters {
24 | canvas?: HTMLCanvasElement;
25 | devicePixelRatio?: number;
26 | }
27 |
28 | export class CanvasRenderer implements Renderer {
29 | constructor(parameters?: CanvasRendererParameters);
30 |
31 | domElement: HTMLCanvasElement;
32 | autoClear: boolean;
33 | sortObjects: boolean;
34 | sortElements: boolean;
35 | info: { render: { vertices: number; faces: number; }; };
36 |
37 | supportsVertexTextures(): void;
38 | setFaceCulling(): void;
39 | getPixelRatio(): number;
40 | setPixelRatio(value: number): void;
41 | setSize(width: number, height: number, updateStyle?: boolean): void;
42 | setViewport(x: number, y: number, width: number, height: number): void;
43 | setScissor(): void;
44 | enableScissorTest(): void;
45 | setClearColor(color: Color, opacity?: number): void;
46 | setClearColor(color: string, opacity?: number): void;
47 | setClearColor(color: number, opacity?: number): void;
48 | setClearColorHex(hex: number, alpha?: number): void;
49 | getClearColor(): Color;
50 | getClearAlpha(): number;
51 | getMaxAnisotropy(): number;
52 | clear(): void;
53 | clearColor(): void;
54 | clearDepth(): void;
55 | clearStencil(): void;
56 | render(scene: Scene, camera: Camera): void;
57 | }
58 | }
--------------------------------------------------------------------------------
/typings/threejs/three-copyshader.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for three.js (CopyShader.js)
2 | // Project: https://github.com/mrdoob/three.js/blob/r68/examples/js/shaders/CopyShader.js
3 | // Definitions by: Satoru Kimura
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | ///
7 |
8 | declare module THREE {
9 | export var CopyShader: Shader;
10 | }
11 |
--------------------------------------------------------------------------------
/typings/threejs/three-css3drenderer.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for three.js (CSS3DRenderer.js)
2 | // Project: https://github.com/mrdoob/three.js/blob/master/examples/js/renderers/CSS3DRenderer.js
3 | // Definitions by: Satoru Kimura
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | // This renderer does not work in IE. Can be found here for more information.
7 | // https://github.com/mrdoob/three.js/issues/4783
8 |
9 | ///
10 |
11 | declare module THREE {
12 | class CSS3DObject extends Object3D {
13 | constructor(element: any);
14 |
15 | element: any;
16 | }
17 |
18 | class CSS3DSprite extends CSS3DObject {
19 | constructor(element: any);
20 |
21 | }
22 |
23 |
24 | class CSS3DRenderer {
25 | constructor();
26 |
27 | domElement:HTMLElement;
28 |
29 | setSize(width: number, height: number): void;
30 | render(scene: THREE.Scene, camera: THREE.Camera): void;
31 | }
32 | }
--------------------------------------------------------------------------------
/typings/threejs/three-effectcomposer.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for three.js (EffectComposer.js)
2 | // Project: https://github.com/mrdoob/three.js/blob/r68/examples/js/postprocessing/EffectComposer.js
3 | // Definitions by: Satoru Kimura
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | ///
7 | ///
8 | ///
9 |
10 | declare module THREE {
11 | export class EffectComposer {
12 | constructor( renderer: WebGLRenderer, renderTarget?: WebGLRenderTarget);
13 |
14 | renderTarget1: WebGLRenderTarget;
15 | renderTarget2: WebGLRenderTarget;
16 | writeBuffer: WebGLRenderTarget;
17 | readBuffer: WebGLRenderTarget;
18 | passes: any[];
19 | copyPass: ShaderPass;
20 |
21 | swapBuffers(): void;
22 | addPass(pass: any): void;
23 | insertPass(pass: any, index: number): void;
24 | render(delta?: number): void;
25 | reset(renderTarget?: WebGLRenderTarget): void;
26 | setSize( width: number, height: number ): void;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/typings/threejs/three-maskpass.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for three.js (MaskPass.js)
2 | // Project: https://github.com/mrdoob/three.js/blob/r68/examples/js/postprocessing/MaskPass.js
3 | // Definitions by: Satoru Kimura
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | ///
7 |
8 | declare module THREE {
9 | export class MaskPass {
10 | constructor( scene: Scene, camera: Camera);
11 |
12 | scene: Scene;
13 | camera: Camera;
14 | enabled: boolean;
15 | clear: boolean;
16 | needsSwap: boolean;
17 | inverse: boolean;
18 |
19 | render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, delta: number): void;
20 | }
21 |
22 | export class ClearMaskPass {
23 | constructor();
24 |
25 | enabled: boolean;
26 |
27 | render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, delta: number): void;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/typings/threejs/three-orbitcontrols.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for three.js (OrbitControls.js)
2 | // Project: https://github.com/mrdoob/three.js/blob/master/examples/js/controls/OrbitControls.js
3 | // Definitions by: Satoru Kimura
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | ///
7 |
8 | declare module THREE {
9 | class OrbitControls {
10 | constructor(object:Camera, domElement?:HTMLElement);
11 |
12 | object:Camera;
13 | domElement:HTMLElement;
14 |
15 | // API
16 | enabled: boolean;
17 | target: THREE.Vector3;
18 |
19 | // deprecated
20 | center: THREE.Vector3;
21 |
22 | noZoom: boolean;
23 | zoomSpeed: number;
24 | minDistance: number;
25 | maxDistance: number;
26 | noRotate: boolean;
27 | rotateSpeed: number;
28 | noPan: boolean;
29 | keyPanSpeed: number;
30 | autoRotate: boolean;
31 | autoRotateSpeed: number;
32 | minPolarAngle: number;
33 | maxPolarAngle: number;
34 | minAzimuthAngle: number;
35 | maxAzimuthAngle: number;
36 | noKeys: boolean;
37 | keys: { LEFT: number; UP: number; RIGHT: number; BOTTOM: number; };
38 | mouseButtons: { ORBIT: MOUSE; ZOOM: MOUSE; PAN: MOUSE; };
39 |
40 | rotateLeft(angle?: number): void;
41 | rotateUp(angle?: number): void;
42 | panLeft(distance?: number): void;
43 | panUp(distance?: number): void;
44 | pan( deltaX: number, deltaY: number): void;
45 | dollyIn(dollyScale: number): void;
46 | dollyOut(dollyScale: number): void;
47 | update(): void;
48 | reset(): void;
49 | getPolarAngle() : number;
50 | getAzimuthalAngle(): number;
51 |
52 | // EventDispatcher mixins
53 | addEventListener(type: string, listener: (event: any) => void ): void;
54 | hasEventListener(type: string, listener: (event: any) => void): void;
55 | removeEventListener(type: string, listener: (event: any) => void): void;
56 | dispatchEvent(event: { type: string; target: any; }): void;
57 | }
58 | }
--------------------------------------------------------------------------------
/typings/threejs/three-projector.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for three.js (Projector.js)
2 | // Project: https://github.com/mrdoob/three.js/blob/master/examples/js/renderers/Projector.js
3 | // Definitions by: Satoru Kimura
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | ///
7 |
8 | declare module THREE {
9 | // Renderers / Renderables /////////////////////////////////////////////////////////////////////
10 | export class RenderableObject {
11 | constructor();
12 |
13 | id: number;
14 | object: Object;
15 | z: number;
16 | }
17 |
18 | export class RenderableFace {
19 | constructor();
20 |
21 | id: number;
22 | v1: RenderableVertex;
23 | v2: RenderableVertex;
24 | v3: RenderableVertex;
25 | normalModel: Vector3;
26 | vertexNormalsModel: Vector3[];
27 | vertexNormalsLength: number;
28 | color: Color;
29 | material: Material;
30 | uvs: Vector2[][];
31 | z: number;
32 |
33 | }
34 |
35 | export class RenderableVertex {
36 | constructor();
37 |
38 | position: Vector3;
39 | positionWorld: Vector3;
40 | positionScreen: Vector4;
41 | visible: boolean;
42 |
43 | copy(vertex: RenderableVertex): void;
44 | }
45 |
46 | export class RenderableLine {
47 | constructor();
48 |
49 | id: number;
50 | v1: RenderableVertex;
51 | v2: RenderableVertex;
52 | vertexColors: Color[];
53 | material: Material;
54 | z: number;
55 | }
56 |
57 | export class RenderableSprite {
58 | constructor();
59 |
60 | id: number;
61 | object: Object;
62 | x: number;
63 | y: number;
64 | z: number;
65 | rotation: number;
66 | scale: Vector2;
67 | material: Material;
68 | }
69 |
70 | /**
71 | * Projects points between spaces.
72 | */
73 | export class Projector {
74 | constructor();
75 |
76 | // deprecated.
77 | projectVector(vector: Vector3, camera: Camera): Vector3;
78 |
79 | // deprecated.
80 | unprojectVector(vector: Vector3, camera: Camera): Vector3;
81 |
82 | /**
83 | * Transforms a 3D scene object into 2D render data that can be rendered in a screen with your renderer of choice, projecting and clipping things out according to the used camera.
84 | * If the scene were a real scene, this method would be the equivalent of taking a picture with the camera (and developing the film would be the next step, using a Renderer).
85 | *
86 | * @param scene scene to project.
87 | * @param camera camera to use in the projection.
88 | * @param sort select whether to sort elements using the Painter's algorithm.
89 | */
90 | projectScene(scene: Scene, camera: Camera, sortObjects: boolean, sortElements?: boolean): {
91 | objects: Object3D[]; // Mesh, Line or other object
92 | sprites: Object3D[]; // Sprite or Particle
93 | lights: Light[];
94 | elements: Face3[]; // Line, Particle, Face3 or Face4
95 | };
96 | }
97 | }
--------------------------------------------------------------------------------
/typings/threejs/three-renderpass.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for three.js (RenderPass.js)
2 | // Project: https://github.com/mrdoob/three.js/blob/r68/examples/js/postprocessing/RenderPass.js
3 | // Definitions by: Satoru Kimura
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | ///
7 |
8 | declare module THREE {
9 | export class RenderPass {
10 | constructor( scene: Scene, camera: Camera, overrideMaterial?: Material, clearColor?: Color, clearAlpha?: number );
11 | constructor( scene: Scene, camera: Camera, overrideMaterial?: Material, clearColor?: string, clearAlpha?: number );
12 | constructor( scene: Scene, camera: Camera, overrideMaterial?: Material, clearColor?: number, clearAlpha?: number );
13 |
14 | scene: Scene;
15 | camera: Camera;
16 | overrideMaterial: Material;
17 | clearColor: any; // Color or string or number
18 | clearAlpha: number;
19 | oldClearColor: Color;
20 | oldClearAlpha: number;
21 | enabled: boolean;
22 | clear: boolean;
23 | needsSwap: boolean;
24 |
25 | render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, delta: number): void;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/typings/threejs/three-shaderpass.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for three.js (ShaderPass.js)
2 | // Project: https://github.com/mrdoob/three.js/blob/r68/examples/js/postprocessing/ShaderPass.js
3 | // Definitions by: Satoru Kimura
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | ///
7 |
8 | declare module THREE {
9 | export class ShaderPass {
10 | constructor( shader: Shader, textureID?: string );
11 |
12 | textureID: string;
13 | uniforms: any;
14 | material: ShaderMaterial;
15 | renderToScreen: boolean;
16 | enabled: boolean;
17 | needsSwap: boolean;
18 | clear: boolean;
19 | camera: Camera;
20 | scene: Scene;
21 | quad: Mesh;
22 |
23 | render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, delta: number): void;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/typings/threejs/three-trackballcontrols.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for three.js (TrackballControls.js)
2 | // Project: https://github.com/mrdoob/three.js/blob/master/examples/js/controls/TrackballControls.js
3 | // Definitions by: Satoru Kimura
4 | // Definitions: https://github.com/borisyankov/DefinitelyTyped
5 |
6 | ///
7 |
8 | declare module THREE {
9 | class TrackballControls extends EventDispatcher {
10 | constructor(object:Camera, domElement?:HTMLElement);
11 |
12 | object:Camera;
13 | domElement:HTMLElement;
14 |
15 | // API
16 | enabled:boolean;
17 | screen:{ left: number; top: number; width: number; height: number };
18 | rotateSpeed:number;
19 | zoomSpeed:number;
20 | panSpeed:number;
21 | noRotate:boolean;
22 | noZoom:boolean;
23 | noPan:boolean;
24 | noRoll:boolean;
25 | staticMoving:boolean;
26 | dynamicDampingFactor:number;
27 | minDistance:number;
28 | maxDistance:number;
29 | keys:number[];
30 |
31 | update():void;
32 | reset():void;
33 | checkDistances():void;
34 | zoomCamera():void;
35 | panCamera():void;
36 | rotateCamera():void;
37 |
38 | handleResize():void;
39 | handleEvent(event: any):void;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------