- re-add ogrexml check for mesh.xml files

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9738 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
nor..67 13 years ago
parent 02ed25ed0d
commit 687dbb4d13
  1. 60
      sdk/jme3-ogrexml/src/com/jme3/gde/ogrexml/OgreXMLDataObject.java

@ -32,12 +32,19 @@
package com.jme3.gde.ogrexml;
import com.jme3.asset.ModelKey;
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 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 OgreXMLDataObject extends SpatialAssetDataObject {
@ -53,5 +60,58 @@ 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;
}
}

Loading…
Cancel
Save