Skip to content

Commit 2fb0337

Browse files
committed
Bug fixes
1 parent 43f0ab9 commit 2fb0337

File tree

9 files changed

+33
-23
lines changed

9 files changed

+33
-23
lines changed

main.js

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,6 @@ app.on('ready', () =>
102102
{role: 'quit'},
103103
],
104104
},
105-
{
106-
label: 'Edit',
107-
submenu: [
108-
{role: 'undo'}, {role: 'redo'}, {type: 'separator'},
109-
{role: 'cut'}, {role: 'copy'}, {role: 'paste'}, {label: 'Duplicate', accelerator: 'CmdOrCtrl+D'}, {role: 'delete', accelerator: 'Delete'},
110-
],
111-
},
112105
{
113106
label: 'View',
114107
submenu: view_submenu,

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "three-studio",
33
"productName": "ThreeStudio",
4-
"version": "0.3.0",
4+
"version": "0.3.1",
55
"description": "ThreeStudio",
66
"license": "GPL-3.0-or-later",
77
"author": {

src/assets/asset.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,12 @@ let assets = new Asset('folder', 'data');
3939
let assetsById = {};
4040
let assetsByClass = {};
4141

42+
let LOADING = 'LOADING';
43+
4244
function addAsset(object, cls, name, parent)
4345
{
4446
parent = parent || assets;
45-
if (!parent.children[name]) {
47+
if (!parent.children[name] || parent.children[name] === LOADING) {
4648
let id = ++Asset.count;
4749
let asset = new Asset('file', name, parent, {
4850
class: cls,
@@ -112,6 +114,7 @@ function importAssets(dir_path, assets)
112114
assets.children[folder] = new Asset('folder', folder, assets);
113115
}
114116
for (let file of files) {
117+
assets.children[file] = LOADING;
115118
let abs_path = path.join(dir_path, file);
116119
let callback = onAssetLoad.partial(assets, file);
117120
// Texture and model files are loaded by a corresponding loader.
@@ -136,13 +139,13 @@ function importAssets(dir_path, assets)
136139
});
137140
}
138141

139-
importAssets('data', assets);
142+
setTimeout(() => importAssets('data', assets));
140143

141144
async function getAsset()
142145
{
143146
let asset = assets;
144147
for (let name of [...arguments].map(path.split).flatten()) {
145-
for (let i = 0; i < 20 && asset.children[name] === undefined; ++i) {
148+
while (asset.children[name] === LOADING) {
146149
await sleep(100);
147150
}
148151
asset = asset.children[name];

src/assets/geometry.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,11 @@ Geometry.prototype.getParameters = BufferGeometry.prototype.getParameters = func
8888
return this.parameters;
8989
}
9090

91+
Geometry.prototype.export = BufferGeometry.prototype.export = function()
92+
{
93+
return this.toJSON();
94+
}
95+
9196
Geometry.import = BufferGeometry.import = async function(json)
9297
{
9398
return new THREE.ObjectLoader().parseGeometries([json])[json.uuid];

src/editor.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ async function newScene()
2222
function loadScene(file_path)
2323
{
2424
if (!file_path) {
25-
dialog.showOpenDialog({filters: [{name: 'Scene', extensions: ['scene']}]}, files => {
26-
if (!files) {
25+
dialog.showOpenDialog({filters: [{name: 'Scene', extensions: ['scene']}]}).then(result => {
26+
if (result.canceled) {
2727
return;
2828
}
29-
loadScene(files[0]);
29+
loadScene(result.filePaths[0]);
3030
});
3131
} else {
3232
fs.readFile(file_path, (error, content) => {
@@ -52,11 +52,11 @@ function saveScene(file_path)
5252
return;
5353
}
5454
if (!file_path) {
55-
dialog.showSaveDialog({filters: [{name: 'Scene', extensions: ['scene']}]}, file => {
56-
if (!file) {
55+
dialog.showSaveDialog({filters: [{name: 'Scene', extensions: ['scene']}]}).then(result => {
56+
if (result.canceled) {
5757
return;
5858
}
59-
saveScene(file);
59+
saveScene(result.filePath);
6060
});
6161
} else {
6262
let json = scene.export();

src/utils/csg.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,9 @@ CSG.toGeometry = function(csg, matrix4)
9292
}
9393
index += polygon.vertices.length;
9494
}
95-
geometry.addAttribute('position', new THREE.Float32BufferAttribute(vertices, 3));
96-
geometry.addAttribute('normal', new THREE.Float32BufferAttribute(normals, 3));
97-
geometry.addAttribute('uv', new THREE.Float32BufferAttribute(uvs, 2));
95+
geometry.setAttribute('position', new THREE.Float32BufferAttribute(vertices, 3));
96+
geometry.setAttribute('normal', new THREE.Float32BufferAttribute(normals, 3));
97+
geometry.setAttribute('uv', new THREE.Float32BufferAttribute(uvs, 2));
9898
geometry.setIndex(indices);
9999
return geometry;
100100
}

src/views/actor-inspector.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ ActorInspectorView.prototype.initToolbox = function(component_menu)
6666
return '<ul class="dropdown-menu">{}</ul>'.format(
6767
$.map(components, (item, key) => {
6868
if ($.isFunction(item)) {
69-
return '<li class="dropdown-item" data-component-name="{0}">{0}</li>'.format(displayTitle(item));
69+
return '<li class="dropdown-item" data-component-name="{1}">{0}</li>'.format(displayTitle(item), item.name);
7070
} else {
7171
return '<li class="dropdown-item dropdown-toggle dropdown-submenu">{0}{1}</li>'.format(key, buildMenu(item));
7272
}

src/views/scene-hierarchy.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,14 @@ function SceneHierarchyView(container, state)
2222
actor.addComponent(new window[name]());
2323
}
2424
}
25+
// https://github.com/vakata/jstree/issues/1021
26+
self.skip_change_event = true;
27+
self.hierarchy.on('refresh.jstree', () => {
28+
scene.setSelection([actor.id]);
29+
self.hierarchy.off('refresh.jstree');
30+
self.skip_change_event = false;
31+
});
2532
self.refresh();
26-
scene.setSelection([actor.id]);
2733
}
2834
});
2935

@@ -127,6 +133,9 @@ SceneHierarchyView.prototype.onNodeDelete = function(event, data)
127133

128134
SceneHierarchyView.prototype.onNodeChange = function(event, data)
129135
{
136+
if (this.skip_change_event) {
137+
return;
138+
}
130139
scene.setSelection(this.tree.get_selected());
131140
}
132141

0 commit comments

Comments
 (0)