Commit 52df481b authored by Benjamin Collins's avatar Benjamin Collins

Initial Commit

parents
* {
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";
}
html,body{
padding: 0;
margin: 0;
height: 100%;
background-color: #eee;
--header-height: 36px;
--nav-width: 205px;
--aside-width: 230px;
}
header {
width: 100%;
height: var(--header-height);
background-color: #343a40;
color: #fff;
}
header table {
width: 100%;
height: 100%;
table-layout: fixed;
border-collapse: collapse;
}
header table td.title {
width: 230px;
}
header input {
visibility: hidden;
}
header table td.btn {
width: 210px;
}
header table td.btn button {
display: block;
margin: auto;
}
header table h1 {
color: #fff;
font-size: 18px;
padding: 0;
margin: 0;
letter-spacing: 1px;
text-indent: 4px;
}
header button,
header select {
padding: 4px 0;
width: 120px;
border: 1px solid #fff;
color: #fff;
background-color: transparent;
}
header button:disabled {
pointer-events: none;
}
header button:hover {
cursor: pointer;
background-color: rgba(255,255,255,0.1);
}
main {
width: 100%;
height: calc(100% - var(--header-height));
position: relative;
}
main nav {
position: absolute;
top: 0;
left: 0;
width: var(--nav-width);
height: 100%;
background-color: rgba(0,0,0,.8);
overflow-y: auto;
}
main nav li {
color: #fff;
list-style-type: none;
padding: 4px 0;
text-indent: 4px;
width: 100%;
}
main nav li.active {
color: #167c80;
}
main nav li:hover {
color: #eee;
cursor: pointer;
}
main aside {
position: absolute;
top: 0;
left: var(--nav-width);
width: calc(var(--aside-width) - 2px);
height: 100%;
overflow-y: auto;
border-right: 2px solid #454545;
}
main aside li {
padding: 4px 0;
font-size: 17px;
text-indent: 4px;
}
main section {
position: absolute;
top: 0;
right: 0;
width: calc(100% - var(--aside-width) - var(--nav-width));
height: 100%;
overflow: hidden;
}
<!DOCTYPE HTML>
<html>
<head>
<title>Megaman Legends</title>
<meta charset="utf-8"/>
<link rel="icon" type="image/png" href="img/favicon.png"/>
<link rel="stylesheet" type="text/css" href="css/layout.css"/>
<script type="text/javascript" src="lib/sprintf.js"></script>
<script type="text/javascript" src="lib/buffer.js"></script>
<script type="text/javascript" src="lib/dexie.min.js"></script>
<script type="text/javascript" src="lib/three.min.js"></script>
<script type="text/javascript" src="lib/async.min.js"></script>
<script type="text/javascript" src="lib/OrbitControls.js"></script>
<script type="text/javascript" src="lib/ColladaExporter.js"></script>
<script type="text/javascript" src="lib/canvas-to-blob.min.js"></script>
<script type="text/javascript" src="lib/FileSaver.js"></script>
<script type="text/javascript" src="js/layout.js"></script>
</head>
<body>
<header>
<table>
<tr>
<td class="title">
<h1>Megaman Legends</h1>
</td>
<td class="btn">
<button id="upload">
Import
</button>
</td>
<td>
<span id="selected"></span>
<input type="file" id="files" multiple="multiple" accept=".BIN"/>
</td>
<td class="btn">
<button id="download_dae">
Export DAE
</button>
</td>
<td class="btn">
<button id="download_img">
Export IMG
</button>
</td>
<td class="btn">
<button id="download_json">
Export JSON
</button>
</td>
<td class="btn">
<select id="select">
<option>Select Animation</option>
</select>
</td>
<td class="btn">
<button id="about">
About
</button>
</td>
</tr>
</table>
</header>
<main>
<nav>
<div id="ebd_list"></div>
</nav>
<aside>
<div id="mdl_list"></div>
</aside>
<section id="context">
</section>
</main>
</body>
</html>
This diff is collapsed.
This diff is collapsed.
/* FileSaver.js
* A saveAs() FileSaver implementation.
* 1.3.5
* 2018-01-22 15:49:54
*
* By Eli Grey, https://eligrey.com
* License: MIT
* See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md
*/
/*global self */
/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */
/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/src/FileSaver.js */
var saveAs = saveAs || (function(view) {
"use strict";
// IE <10 is explicitly unsupported
if (typeof view === "undefined" || typeof navigator !== "undefined" && /MSIE [1-9]\./.test(navigator.userAgent)) {
return;
}
var
doc = view.document
// only get URL when necessary in case Blob.js hasn't overridden it yet
, get_URL = function() {
return view.URL || view.webkitURL || view;
}
, save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a")
, can_use_save_link = "download" in save_link
, click = function(node) {
var event = new MouseEvent("click");
node.dispatchEvent(event);
}
, is_safari = /constructor/i.test(view.HTMLElement) || view.safari
, is_chrome_ios =/CriOS\/[\d]+/.test(navigator.userAgent)
, throw_outside = function(ex) {
(view.setImmediate || view.setTimeout)(function() {
throw ex;
}, 0);
}
, force_saveable_type = "application/octet-stream"
// the Blob API is fundamentally broken as there is no "downloadfinished" event to subscribe to
, arbitrary_revoke_timeout = 1000 * 40 // in ms
, revoke = function(file) {
var revoker = function() {
if (typeof file === "string") { // file is an object URL
get_URL().revokeObjectURL(file);
} else { // file is a File
file.remove();
}
};
setTimeout(revoker, arbitrary_revoke_timeout);
}
, dispatch = function(filesaver, event_types, event) {
event_types = [].concat(event_types);
var i = event_types.length;
while (i--) {
var listener = filesaver["on" + event_types[i]];
if (typeof listener === "function") {
try {
listener.call(filesaver, event || filesaver);
} catch (ex) {
throw_outside(ex);
}
}
}
}
, auto_bom = function(blob) {
// prepend BOM for UTF-8 XML and text/* types (including HTML)
// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF
if (/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) {
return new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});
}
return blob;
}
, FileSaver = function(blob, name, no_auto_bom) {
if (!no_auto_bom) {
blob = auto_bom(blob);
}
// First try a.download, then web filesystem, then object URLs
var
filesaver = this
, type = blob.type
, force = type === force_saveable_type
, object_url
, dispatch_all = function() {
dispatch(filesaver, "writestart progress write writeend".split(" "));
}
// on any filesys errors revert to saving with object URLs
, fs_error = function() {
if ((is_chrome_ios || (force && is_safari)) && view.FileReader) {
// Safari doesn't allow downloading of blob urls
var reader = new FileReader();
reader.onloadend = function() {
var url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');
var popup = view.open(url, '_blank');
if(!popup) view.location.href = url;
url=undefined; // release reference before dispatching
filesaver.readyState = filesaver.DONE;
dispatch_all();
};
reader.readAsDataURL(blob);
filesaver.readyState = filesaver.INIT;
return;
}
// don't create more object URLs than needed
if (!object_url) {
object_url = get_URL().createObjectURL(blob);
}
if (force) {
view.location.href = object_url;
} else {
var opened = view.open(object_url, "_blank");
if (!opened) {
// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html
view.location.href = object_url;
}
}
filesaver.readyState = filesaver.DONE;
dispatch_all();
revoke(object_url);
}
;
filesaver.readyState = filesaver.INIT;
if (can_use_save_link) {
object_url = get_URL().createObjectURL(blob);
setTimeout(function() {
save_link.href = object_url;
save_link.download = name;
click(save_link);
dispatch_all();
revoke(object_url);
filesaver.readyState = filesaver.DONE;
});
return;
}
fs_error();
}
, FS_proto = FileSaver.prototype
, saveAs = function(blob, name, no_auto_bom) {
return new FileSaver(blob, name || blob.name || "download", no_auto_bom);
}
;
// IE 10+ (native saveAs)
if (typeof navigator !== "undefined" && navigator.msSaveOrOpenBlob) {
return function(blob, name, no_auto_bom) {
name = name || blob.name || "download";
if (!no_auto_bom) {
blob = auto_bom(blob);
}
return navigator.msSaveOrOpenBlob(blob, name);
};
}
FS_proto.abort = function(){};
FS_proto.readyState = FS_proto.INIT = 0;
FS_proto.WRITING = 1;
FS_proto.DONE = 2;
FS_proto.error =
FS_proto.onwritestart =
FS_proto.onprogress =
FS_proto.onwrite =
FS_proto.onabort =
FS_proto.onerror =
FS_proto.onwriteend =
null;
return saveAs;
}(
typeof self !== "undefined" && self
|| typeof window !== "undefined" && window
|| this
));
This diff is collapsed.
This diff is collapsed.
/**
* @author kovacsv / http://kovacsv.hu/
* @author mrdoob / http://mrdoob.com/
*/
THREE.STLExporter = function () {};
THREE.STLExporter.prototype = {
constructor: THREE.STLExporter,
parse: ( function () {
var vector = new THREE.Vector3();
var normalMatrixWorld = new THREE.Matrix3();
return function parse( scene ) {
var output = '';
output += 'solid exported\n';
scene.traverse( function ( object ) {
if ( object instanceof THREE.Mesh ) {
var geometry = object.geometry;
var matrixWorld = object.matrixWorld;
if ( geometry instanceof THREE.BufferGeometry ) {
geometry = new THREE.Geometry().fromBufferGeometry( geometry );
}
if ( geometry instanceof THREE.Geometry ) {
var vertices = geometry.vertices;
var faces = geometry.faces;
normalMatrixWorld.getNormalMatrix( matrixWorld );
for ( var i = 0, l = faces.length; i < l; i ++ ) {
var face = faces[ i ];
vector.copy( face.normal ).applyMatrix3( normalMatrixWorld ).normalize();
output += '\tfacet normal ' + vector.x + ' ' + vector.y + ' ' + vector.z + '\n';
output += '\t\touter loop\n';
var indices = [ face.a, face.b, face.c ];
for ( var j = 0; j < 3; j ++ ) {
vector.copy( vertices[ indices[ j ] ] ).applyMatrix4( matrixWorld );
output += '\t\t\tvertex ' + vector.x + ' ' + vector.y + ' ' + vector.z + '\n';
}
output += '\t\tendloop\n';
output += '\tendfacet\n';
}
}
}
} );
output += 'endsolid exported\n';
return output;
};
}() )
};
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment