SDK:
- Only store ORIGINAL_PATH metadata in .j3odata when actually converting the model for the first time - Store ORIGINAL_PATH and ORIGINAL_NAME UserData on geometry when creating j3o files with the SDK git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@10242 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
6efe687825
commit
d0dc0d1345
@ -72,6 +72,7 @@ public abstract class AbstractBlenderAssetDataObject extends SpatialAssetDataObj
|
||||
replaceFiles();
|
||||
listListener.stop();
|
||||
savable = spatial;
|
||||
storeOriginalPathUserData();
|
||||
return spatial;
|
||||
} catch (IOException ex) {
|
||||
Exceptions.printStackTrace(ex);
|
||||
|
@ -33,8 +33,11 @@ package com.jme3.gde.core.assets;
|
||||
|
||||
import com.jme3.asset.AssetKey;
|
||||
import com.jme3.asset.ModelKey;
|
||||
import com.jme3.scene.Geometry;
|
||||
import com.jme3.scene.SceneGraphVisitorAdapter;
|
||||
import com.jme3.scene.Spatial;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import org.openide.DialogDisplayer;
|
||||
@ -94,6 +97,9 @@ public class SpatialAssetDataObject extends AssetDataObject {
|
||||
Spatial spatial = mgr.loadModel(getAssetKey());
|
||||
listListener.stop();
|
||||
savable = spatial;
|
||||
if (!(this instanceof BinaryModelDataObject)) {
|
||||
storeOriginalPathUserData();
|
||||
}
|
||||
lock.releaseLock();
|
||||
return spatial;
|
||||
} catch (Exception ex) {
|
||||
@ -136,4 +142,49 @@ public class SpatialAssetDataObject extends AssetDataObject {
|
||||
Exceptions.printStackTrace(ex);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* SDK:
|
||||
- Only store ORIGINAL_PATH AssetData property when actually converting
|
||||
- Store ORIGINAL_PATH and ORIGINAL_NAME UserData on geometry when creating j3o files with the SDK
|
||||
*/
|
||||
protected void storeOriginalPathUserData() {
|
||||
final ArrayList<String> geomMap = new ArrayList<String>();
|
||||
Spatial spat = (Spatial) savable;
|
||||
if (spat != null) {
|
||||
spat.depthFirstTraversal(new SceneGraphVisitorAdapter() {
|
||||
@Override
|
||||
public void visit(Geometry geom) {
|
||||
StringBuilder geometryIdentifier = new StringBuilder();
|
||||
Spatial curSpat = geom;
|
||||
String geomName = curSpat.getName();
|
||||
if (geomName == null) {
|
||||
logger.log(Level.WARNING, "Null geometry name!");
|
||||
geomName = "null";
|
||||
}
|
||||
geom.setUserData("ORIGINAL_NAME", geomName);
|
||||
logger.log(Level.INFO, "Set ORIGINAL_NAME for {0}", geomName);
|
||||
while (curSpat != null) {
|
||||
String name = curSpat.getName();
|
||||
if (name == null) {
|
||||
logger.log(Level.WARNING, "Null spatial name!");
|
||||
name = "null";
|
||||
}
|
||||
geometryIdentifier.insert(0, name);
|
||||
geometryIdentifier.insert(0, '/');
|
||||
curSpat = curSpat.getParent();
|
||||
}
|
||||
String id = geometryIdentifier.toString();
|
||||
if (geomMap.contains(id)) {
|
||||
logger.log(Level.WARNING, "Cannot create unique name for Geometry {0}: {1}", new Object[]{geom, id});
|
||||
}
|
||||
geomMap.add(id);
|
||||
geom.setUserData("ORIGINAL_PATH", id);
|
||||
logger.log(Level.INFO, "Set ORIGINAL_PATH for {0}", id);
|
||||
super.visit(geom);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
logger.log(Level.SEVERE, "No geometry available when trying to scan initial geometry configuration");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -64,6 +64,7 @@ public class OgreBinaryMeshDataObject extends SpatialAssetDataObject {
|
||||
replaceXmlFiles(mgr);
|
||||
listListener.stop();
|
||||
savable = spatial;
|
||||
storeOriginalPathUserData();
|
||||
lock.releaseLock();
|
||||
File deleteFile = new File(options.getDestFile());
|
||||
deleteFile.delete();
|
||||
|
Loading…
x
Reference in New Issue
Block a user