* J3O files will now automatically load J3M files if they were loaded via assetManager.loadMaterial()
git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7175 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
		
							parent
							
								
									b774630160
								
							
						
					
					
						commit
						86a4ad3718
					
				| @ -534,6 +534,7 @@ public class J3MLoader implements AssetLoader { | ||||
|                 throw new IOException("Extended material "+extendedMat+" cannot be found."); | ||||
| 
 | ||||
|             material = new Material(def); | ||||
|             material.setAssetName(fileName); | ||||
|         }else if (scan.hasNext("\\{")){ | ||||
|             if (extending){ | ||||
|                 throw new IOException("Expected ':', got '{'"); | ||||
|  | ||||
| @ -84,6 +84,8 @@ public class Material implements Cloneable, Savable, Comparable<Material> { | ||||
|         additiveLight.setBlendMode(RenderState.BlendMode.AlphaAdditive); | ||||
|         additiveLight.setDepthWrite(false); | ||||
|     } | ||||
| 
 | ||||
|     private String assetName; | ||||
|     private MaterialDef def; | ||||
|     private ListMap<String, MatParam> paramValues = new ListMap<String, MatParam>(); | ||||
|     private Technique technique; | ||||
| @ -173,6 +175,14 @@ public class Material implements Cloneable, Savable, Comparable<Material> { | ||||
|     public Material() { | ||||
|     } | ||||
| 
 | ||||
|     public String getAssetName() { | ||||
|         return assetName; | ||||
|     } | ||||
| 
 | ||||
|     public void setAssetName(String assetName) { | ||||
|         this.assetName = assetName; | ||||
|     } | ||||
| 
 | ||||
|     public int getSortId() { | ||||
|         Technique t = getActiveTechnique(); | ||||
|         if (sortingId == -1 && t != null && t.getShader() != null) { | ||||
|  | ||||
| @ -65,12 +65,12 @@ public class MaterialDef { | ||||
|         logger.log(Level.INFO, "Loaded material definition: {0}", name); | ||||
|     } | ||||
| 
 | ||||
|     public void setAssetName(String assetName){ | ||||
|         this.assetName = assetName; | ||||
|     public String getAssetName() { | ||||
|         return assetName; | ||||
|     } | ||||
| 
 | ||||
|     public String getAssetName(){ | ||||
|         return assetName; | ||||
|     public void setAssetName(String assetName) { | ||||
|         this.assetName = assetName; | ||||
|     } | ||||
| 
 | ||||
|     public AssetManager getAssetManager(){ | ||||
|  | ||||
| @ -32,6 +32,7 @@ | ||||
| 
 | ||||
| package com.jme3.scene; | ||||
| 
 | ||||
| import com.jme3.asset.AssetNotFoundException; | ||||
| import com.jme3.bounding.BoundingVolume; | ||||
| import com.jme3.collision.Collidable; | ||||
| import com.jme3.collision.CollisionResults; | ||||
| @ -45,9 +46,13 @@ import com.jme3.scene.VertexBuffer.Type; | ||||
| import com.jme3.util.TempVars; | ||||
| import java.io.IOException; | ||||
| import java.util.Queue; | ||||
| import java.util.logging.Level; | ||||
| import java.util.logging.Logger; | ||||
| 
 | ||||
| public class Geometry extends Spatial { | ||||
| 
 | ||||
|     private static final Logger logger = Logger.getLogger(Geometry.class.getName()); | ||||
| 
 | ||||
|     /** | ||||
|      * The mesh contained herein | ||||
|      */ | ||||
| @ -327,6 +332,9 @@ public class Geometry extends Spatial { | ||||
|         super.write(ex); | ||||
|         OutputCapsule oc = ex.getCapsule(this); | ||||
|         oc.write(mesh, "mesh", null); | ||||
|         if (material != null){ | ||||
|             oc.write(material.getAssetName(), "materialName", null); | ||||
|         } | ||||
|         oc.write(material, "material", null); | ||||
|         oc.write(ignoreTransform, "ignoreTransform", false); | ||||
|     } | ||||
| @ -336,7 +344,24 @@ public class Geometry extends Spatial { | ||||
|         super.read(im); | ||||
|         InputCapsule ic = im.getCapsule(this); | ||||
|         mesh = (Mesh) ic.readSavable("mesh", null); | ||||
|         material = (Material) ic.readSavable("material", null); | ||||
| 
 | ||||
|         material = null; | ||||
|         String matName = ic.readString("materialName", null); | ||||
|         if (matName != null){ | ||||
|             // Material name is set, | ||||
|             // Attempt to load material via J3M | ||||
|             try { | ||||
|                 material = im.getAssetManager().loadMaterial(matName); | ||||
|             } catch (AssetNotFoundException ex){ | ||||
|                 // Cannot find J3M file. | ||||
|                 logger.log(Level.FINE, "Could not load J3M file {0} for Geometry.", | ||||
|                         matName); | ||||
|             } | ||||
|         } | ||||
|         // If material is NULL, try to load it from the geometry | ||||
|         if (material == null){ | ||||
|             material = (Material) ic.readSavable("material", null); | ||||
|         } | ||||
|         ignoreTransform = ic.readBoolean("ignoreTransform", false); | ||||
|     } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user