SDK:
- remove ogrexml check for material name - remove dedicated loadAsset/saveAsset overrides in OgreXMLDataObject and OgreSceneDataObject git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9737 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
cf2bd1de24
commit
02ed25ed0d
@ -31,18 +31,11 @@
|
||||
*/
|
||||
package com.jme3.gde.ogrexml;
|
||||
|
||||
import com.jme3.gde.core.assets.ProjectAssetManager;
|
||||
import com.jme3.gde.core.assets.SpatialAssetDataObject;
|
||||
import com.jme3.scene.Spatial;
|
||||
import java.io.IOException;
|
||||
import org.openide.DialogDisplayer;
|
||||
import org.openide.NotifyDescriptor;
|
||||
import org.openide.NotifyDescriptor.Confirmation;
|
||||
import org.openide.filesystems.FileLock;
|
||||
import org.openide.filesystems.FileObject;
|
||||
import org.openide.loaders.DataObjectExistsException;
|
||||
import org.openide.loaders.MultiFileLoader;
|
||||
import org.openide.util.Exceptions;
|
||||
|
||||
public class OgreSceneDataObject extends SpatialAssetDataObject {
|
||||
|
||||
@ -50,52 +43,4 @@ public class OgreSceneDataObject extends SpatialAssetDataObject {
|
||||
super(pf, loader);
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized Spatial loadAsset() {
|
||||
if (isModified() && savable != null) {
|
||||
return (Spatial) savable;
|
||||
}
|
||||
ProjectAssetManager mgr = getLookup().lookup(ProjectAssetManager.class);
|
||||
if (mgr == null) {
|
||||
DialogDisplayer.getDefault().notifyLater(new NotifyDescriptor.Message("File is not part of a project!\nCannot load without ProjectAssetManager."));
|
||||
return null;
|
||||
}
|
||||
String name = getPrimaryFile().getName();
|
||||
String matName = null;//((OgreSceneKey)getAssetKey()).getMaterialName();
|
||||
if(matName == null){
|
||||
matName = name;
|
||||
}
|
||||
// FileObject sourceMatFile = getPrimaryFile().getParent().getFileObject(matName, "material");
|
||||
// if (sourceMatFile == null || !sourceMatFile.isValid()) {
|
||||
// Confirmation msg = new NotifyDescriptor.Confirmation(
|
||||
// "No material file found for " + getPrimaryFile().getNameExt() + "\n"
|
||||
// + "A file named " + matName + ".material should be in the same folder.\n"
|
||||
// + "Press OK to import mesh only.",
|
||||
// NotifyDescriptor.OK_CANCEL_OPTION,
|
||||
// NotifyDescriptor.WARNING_MESSAGE);
|
||||
// Object result = DialogDisplayer.getDefault().notify(msg);
|
||||
// if (!NotifyDescriptor.OK_OPTION.equals(result)) {
|
||||
// return null;
|
||||
// }
|
||||
// }
|
||||
|
||||
FileLock lock = null;
|
||||
try {
|
||||
lock = getPrimaryFile().lock();
|
||||
mgr.deleteFromCache(getAssetKey());
|
||||
listListener.start();
|
||||
Spatial spatial = mgr.loadModel(getAssetKey());
|
||||
listListener.stop();
|
||||
savable = spatial;
|
||||
lock.releaseLock();
|
||||
return spatial;
|
||||
} catch (Exception ex) {
|
||||
Exceptions.printStackTrace(ex);
|
||||
} finally {
|
||||
if (lock != null) {
|
||||
lock.releaseLock();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -32,28 +32,12 @@
|
||||
package com.jme3.gde.ogrexml;
|
||||
|
||||
import com.jme3.asset.ModelKey;
|
||||
import com.jme3.export.binary.BinaryExporter;
|
||||
import com.jme3.gde.core.assets.AssetData;
|
||||
import com.jme3.gde.core.assets.ProjectAssetManager;
|
||||
import com.jme3.gde.core.assets.SpatialAssetDataObject;
|
||||
import com.jme3.scene.Spatial;
|
||||
import com.jme3.scene.plugins.ogre.OgreMeshKey;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import org.netbeans.api.progress.ProgressHandle;
|
||||
import org.netbeans.api.progress.ProgressHandleFactory;
|
||||
import org.openide.DialogDisplayer;
|
||||
import org.openide.NotifyDescriptor;
|
||||
import org.openide.NotifyDescriptor.Confirmation;
|
||||
import org.openide.awt.StatusDisplayer;
|
||||
import org.openide.filesystems.FileLock;
|
||||
import org.openide.filesystems.FileObject;
|
||||
import org.openide.loaders.DataObject;
|
||||
import org.openide.loaders.DataObjectExistsException;
|
||||
import org.openide.loaders.MultiFileLoader;
|
||||
import org.openide.util.Exceptions;
|
||||
|
||||
public class OgreXMLDataObject extends SpatialAssetDataObject {
|
||||
|
||||
@ -69,120 +53,5 @@ public class OgreXMLDataObject extends SpatialAssetDataObject {
|
||||
assetKey = new OgreMeshKey(super.getAssetKey().getName());
|
||||
return (OgreMeshKey)assetKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized Spatial loadAsset() {
|
||||
if (isModified() && savable != null) {
|
||||
return (Spatial) savable;
|
||||
}
|
||||
ProjectAssetManager mgr = getLookup().lookup(ProjectAssetManager.class);
|
||||
if (mgr == null) {
|
||||
DialogDisplayer.getDefault().notifyLater(new NotifyDescriptor.Message("File is not part of a project!\nCannot load without ProjectAssetManager."));
|
||||
return null;
|
||||
}
|
||||
String name = getPrimaryFile().getName();
|
||||
int idx = name.toLowerCase().indexOf(".mesh");
|
||||
if(idx!=-1){
|
||||
name = name.substring(0, idx);
|
||||
}
|
||||
String matName = ((OgreMeshKey)getAssetKey()).getMaterialName();
|
||||
if(matName == null){
|
||||
matName = name;
|
||||
}
|
||||
FileObject sourceMatFile = getPrimaryFile().getParent().getFileObject(matName, "material");
|
||||
if (sourceMatFile == null || !sourceMatFile.isValid()) {
|
||||
Confirmation msg = new NotifyDescriptor.Confirmation(
|
||||
"No material file found for " + getPrimaryFile().getNameExt() + "\n"
|
||||
+ "A file named " + matName + ".material should be in the same folder.\n"
|
||||
+ "Press OK to import mesh only.",
|
||||
NotifyDescriptor.OK_CANCEL_OPTION,
|
||||
NotifyDescriptor.WARNING_MESSAGE);
|
||||
Object result = DialogDisplayer.getDefault().notify(msg);
|
||||
if (!NotifyDescriptor.OK_OPTION.equals(result)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
FileLock lock = null;
|
||||
try {
|
||||
lock = getPrimaryFile().lock();
|
||||
mgr.deleteFromCache(getAssetKey());
|
||||
listListener.start();
|
||||
Spatial spatial = mgr.loadModel(getAssetKey());
|
||||
listListener.stop();
|
||||
savable = spatial;
|
||||
lock.releaseLock();
|
||||
return spatial;
|
||||
} catch (Exception ex) {
|
||||
Exceptions.printStackTrace(ex);
|
||||
} finally {
|
||||
if (lock != null) {
|
||||
lock.releaseLock();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public synchronized void saveAsset() throws IOException {
|
||||
ProjectAssetManager mgr = getLookup().lookup(ProjectAssetManager.class);
|
||||
if (mgr == null) {
|
||||
return;
|
||||
}
|
||||
String name = getPrimaryFile().getName();
|
||||
int idx = name.toLowerCase().indexOf(".mesh");
|
||||
if(idx!=-1){
|
||||
name = name.substring(0, idx);
|
||||
}
|
||||
|
||||
ProgressHandle progressHandle = ProgressHandleFactory.createHandle("Saving File..");
|
||||
progressHandle.start();
|
||||
BinaryExporter exp = BinaryExporter.getInstance();
|
||||
FileLock lock = null;
|
||||
OutputStream out = null;
|
||||
try {
|
||||
if (saveExtension == null) {
|
||||
out = getPrimaryFile().getOutputStream();
|
||||
} else {
|
||||
FileObject outFileObject = getPrimaryFile().getParent().getFileObject(name, saveExtension);
|
||||
if (outFileObject == null) {
|
||||
outFileObject = getPrimaryFile().getParent().createData(name, saveExtension);
|
||||
}
|
||||
out = outFileObject.getOutputStream();
|
||||
outFileObject.getParent().refresh();
|
||||
}
|
||||
exp.save(savable, out);
|
||||
} finally {
|
||||
if (lock != null) {
|
||||
lock.releaseLock();
|
||||
}
|
||||
if (out != null) {
|
||||
out.close();
|
||||
}
|
||||
}
|
||||
progressHandle.finish();
|
||||
StatusDisplayer.getDefault().setStatusText(getPrimaryFile().getNameExt() + " saved.");
|
||||
setModified(false);
|
||||
|
||||
FileObject outFile = null;
|
||||
if (saveExtension == null) {
|
||||
outFile = getPrimaryFile();
|
||||
} else {
|
||||
outFile = getPrimaryFile().getParent().getFileObject(name, saveExtension);
|
||||
if (outFile == null) {
|
||||
Logger.getLogger(SpatialAssetDataObject.class.getName()).log(Level.SEVERE, "Could not locate saved file.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
try {
|
||||
DataObject targetModel = DataObject.find(outFile);
|
||||
AssetData properties = targetModel.getLookup().lookup(AssetData.class);
|
||||
if (properties != null) {
|
||||
properties.loadProperties();
|
||||
properties.setProperty("ORIGINAL_PATH", mgr.getRelativeAssetPath(outFile.getPath()));
|
||||
properties.saveProperties();
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Exceptions.printStackTrace(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user