159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta/* 259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * Copyright (c) 2009-2012 jMonkeyEngine 359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * All rights reserved. 459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * 559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * Redistribution and use in source and binary forms, with or without 659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * modification, are permitted provided that the following conditions are 759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * met: 859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * 959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * * Redistributions of source code must retain the above copyright 1059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * notice, this list of conditions and the following disclaimer. 1159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * 1259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * * Redistributions in binary form must reproduce the above copyright 1359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * notice, this list of conditions and the following disclaimer in the 1459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * documentation and/or other materials provided with the distribution. 1559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * 1659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * * Neither the name of 'jMonkeyEngine' nor the names of its contributors 1759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * may be used to endorse or promote products derived from this software 1859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * without specific prior written permission. 1959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * 2059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 2259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 2359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 2459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 2559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 2659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 2759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 2859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 2959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 3059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 3259b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartapackage com.jme3.asset; 3359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 3459b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.bounding.BoundingVolume; 3559b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.collision.Collidable; 3659b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.collision.CollisionResults; 3759b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.collision.UnsupportedCollisionException; 3859b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.export.InputCapsule; 3959b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.export.JmeExporter; 4059b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.export.JmeImporter; 4159b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.export.OutputCapsule; 4259b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.light.AmbientLight; 4359b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.light.Light; 4459b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.material.Material; 4559b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.material.RenderState.FaceCullMode; 4659b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.renderer.Camera; 4759b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.Node; 4859b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.SceneGraphVisitor; 4959b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.Spatial; 5059b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.plugins.ogre.AnimData; 5159b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.texture.Texture; 5259b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport java.io.IOException; 5359b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport java.util.ArrayList; 5459b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport java.util.List; 5559b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport java.util.Queue; 5659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 5759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta/** 5859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * Blender key. Contains path of the blender file and its loading properties. 5959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @author Marcin Roguski (Kaelthas) 6059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 6159b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartapublic class BlenderKey extends ModelKey { 6259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 6359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected static final int DEFAULT_FPS = 25; 6459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 6559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * FramesPerSecond parameter describe how many frames there are in each second. It allows to calculate the time 6659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * between the frames. 6759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 6859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected int fps = DEFAULT_FPS; 6959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** Width of generated textures (in pixels). */ 7059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected int generatedTextureWidth = 60; 7159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** Height of generated textures (in pixels). */ 7259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected int generatedTextureHeight = 60; 7359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** Depth of generated textures (in pixels). */ 7459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected int generatedTextureDepth = 60; 7559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 7659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This variable is a bitwise flag of FeatureToLoad interface values; By default everything is being loaded. 7759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 7859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected int featuresToLoad = FeaturesToLoad.ALL; 7959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** This variable determines if assets that are not linked to the objects should be loaded. */ 8059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected boolean loadUnlinkedAssets; 8159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** The root path for all the assets. */ 8259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected String assetRootPath; 8359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** This variable indicate if Y axis is UP axis. If not then Z is up. By default set to true. */ 8459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected boolean fixUpAxis = true; 8559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 8659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * The name of world settings that the importer will use. If not set or specified name does not occur in the file 8759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * then the first world settings in the file will be used. 8859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 8959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected String usedWorld; 9059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 9159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * User's default material that is set fo objects that have no material definition in blender. The default value is 9259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * null. If the value is null the importer will use its own default material (gray color - like in blender). 9359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 9459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected Material defaultMaterial; 9559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** Face cull mode. By default it is disabled. */ 9659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected FaceCullMode faceCullMode = FaceCullMode.Off; 9759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 9859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * Variable describes which layers will be loaded. N-th bit set means N-th layer will be loaded. 9959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * If set to -1 then the current layer will be loaded. 10059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 10159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected int layersToLoad = -1; 10259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 10359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 10459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * Constructor used by serialization mechanisms. 10559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 10659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public BlenderKey() {} 10759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 10859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 10959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * Constructor. Creates a key for the given file name. 11059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param name 11159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * the name (path) of a file 11259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 11359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public BlenderKey(String name) { 11459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta super(name); 11559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 11659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 11759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 11859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns frames per second amount. The default value is BlenderKey.DEFAULT_FPS = 25. 11959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return the frames per second amount 12059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 12159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public int getFps() { 12259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return fps; 12359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 12459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 12559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 12659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method sets frames per second amount. 12759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param fps 12859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * the frames per second amount 12959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 13059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void setFps(int fps) { 13159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta this.fps = fps; 13259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 13359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 13459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 13559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method sets the width of generated texture (in pixels). By default the value is 140 px. 13659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param generatedTextureWidth 13759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * the width of generated texture 13859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 13959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void setGeneratedTextureWidth(int generatedTextureWidth) { 14059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta this.generatedTextureWidth = generatedTextureWidth; 14159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 14259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 14359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 14459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns the width of generated texture (in pixels). By default the value is 140 px. 14559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return the width of generated texture 14659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 14759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public int getGeneratedTextureWidth() { 14859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return generatedTextureWidth; 14959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 15059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 15159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 15259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method sets the height of generated texture (in pixels). By default the value is 20 px. 15359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param generatedTextureHeight 15459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * the height of generated texture 15559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 15659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void setGeneratedTextureHeight(int generatedTextureHeight) { 15759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta this.generatedTextureHeight = generatedTextureHeight; 15859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 15959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 16059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 16159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns the height of generated texture (in pixels). By default the value is 20 px. 16259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return the height of generated texture 16359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 16459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public int getGeneratedTextureHeight() { 16559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return generatedTextureHeight; 16659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 16759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 16859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 16959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method sets the depth of generated texture (in pixels). By default the value is 20 px. 17059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param generatedTextureDepth 17159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * the depth of generated texture 17259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 17359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void setGeneratedTextureDepth(int generatedTextureDepth) { 17459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta this.generatedTextureDepth = generatedTextureDepth; 17559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 17659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 17759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 17859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns the depth of generated texture (in pixels). By default the value is 20 px. 17959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return the depth of generated texture 18059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 18159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public int getGeneratedTextureDepth() { 18259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return generatedTextureDepth; 18359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 18459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 18559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 18659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns the face cull mode. 18759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return the face cull mode 18859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 18959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public FaceCullMode getFaceCullMode() { 19059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return faceCullMode; 19159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 19259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 19359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 19459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method sets the face cull mode. 19559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param faceCullMode 19659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * the face cull mode 19759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 19859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void setFaceCullMode(FaceCullMode faceCullMode) { 19959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta this.faceCullMode = faceCullMode; 20059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 20159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 20259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 20359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method sets layers to be loaded. 20459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param layersToLoad 20559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * layers to be loaded 20659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 20759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void setLayersToLoad(int layersToLoad) { 20859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta this.layersToLoad = layersToLoad; 20959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 21059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 21159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 21259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns layers to be loaded. 21359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return layers to be loaded 21459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 21559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public int getLayersToLoad() { 21659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return layersToLoad; 21759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 21859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 21959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 22059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method sets the asset root path. 22159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param assetRootPath 22259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * the assets root path 22359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 22459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void setAssetRootPath(String assetRootPath) { 22559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta this.assetRootPath = assetRootPath; 22659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 22759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 22859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 22959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns the asset root path. 23059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return the asset root path 23159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 23259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public String getAssetRootPath() { 23359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return assetRootPath; 23459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 23559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 23659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 23759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method adds features to be loaded. 23859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param featuresToLoad 23959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * bitwise flag of FeaturesToLoad interface values 24059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 24159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void includeInLoading(int featuresToLoad) { 24259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta this.featuresToLoad |= featuresToLoad; 24359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 24459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 24559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 24659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method removes features from being loaded. 24759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param featuresNotToLoad 24859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * bitwise flag of FeaturesToLoad interface values 24959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 25059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void excludeFromLoading(int featuresNotToLoad) { 25159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta this.featuresToLoad &= ~featuresNotToLoad; 25259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 25359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 25459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 25559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns bitwise value of FeaturesToLoad interface value. It describes features that will be loaded by 25659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * the blender file loader. 25759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return features that will be loaded by the blender file loader 25859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 25959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public int getFeaturesToLoad() { 26059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return featuresToLoad; 26159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 26259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 26359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 26459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method determines if unlinked assets should be loaded. 26559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * If not then only objects on selected layers will be loaded and their assets if required. 26659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * If yes then all assets will be loaded even if they are on inactive layers or are not linked 26759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * to anything. 26859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return <b>true</b> if unlinked assets should be loaded and <b>false</b> otherwise 26959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 27059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public boolean isLoadUnlinkedAssets() { 27159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return loadUnlinkedAssets; 27259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 27359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 27459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 27559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method sets if unlinked assets should be loaded. 27659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * If not then only objects on selected layers will be loaded and their assets if required. 27759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * If yes then all assets will be loaded even if they are on inactive layers or are not linked 27859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * to anything. 27959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param loadUnlinkedAssets 28059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * <b>true</b> if unlinked assets should be loaded and <b>false</b> otherwise 28159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 28259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void setLoadUnlinkedAssets(boolean loadUnlinkedAssets) { 28359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta this.loadUnlinkedAssets = loadUnlinkedAssets; 28459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 28559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 28659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 28759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method creates an object where loading results will be stores. Only those features will be allowed to store 28859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * that were specified by features-to-load flag. 28959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return an object to store loading results 29059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 29159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public LoadingResults prepareLoadingResults() { 29259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return new LoadingResults(featuresToLoad); 29359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 29459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 29559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 29659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method sets the fix up axis state. If set to true then Y is up axis. Otherwise the up i Z axis. By default Y 29759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * is up axis. 29859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param fixUpAxis 29959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * the up axis state variable 30059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 30159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void setFixUpAxis(boolean fixUpAxis) { 30259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta this.fixUpAxis = fixUpAxis; 30359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 30459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 30559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 30659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns the fix up axis state. If set to true then Y is up axis. Otherwise the up i Z axis. By 30759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * default Y is up axis. 30859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return the up axis state variable 30959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 31059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public boolean isFixUpAxis() { 31159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return fixUpAxis; 31259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 31359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 31459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 31559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This mehtod sets the name of the WORLD data block taht should be used during file loading. By default the name is 31659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * not set. If no name is set or the given name does not occur in the file - the first WORLD data block will be used 31759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * during loading (assumin any exists in the file). 31859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param usedWorld 31959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * the name of the WORLD block used during loading 32059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 32159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void setUsedWorld(String usedWorld) { 32259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta this.usedWorld = usedWorld; 32359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 32459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 32559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 32659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This mehtod returns the name of the WORLD data block taht should be used during file loading. 32759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return the name of the WORLD block used during loading 32859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 32959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public String getUsedWorld() { 33059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return usedWorld; 33159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 33259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 33359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 33459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method sets the default material for objects. 33559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param defaultMaterial 33659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * the default material 33759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 33859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void setDefaultMaterial(Material defaultMaterial) { 33959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta this.defaultMaterial = defaultMaterial; 34059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 34159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 34259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 34359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns the default material. 34459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return the default material 34559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 34659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public Material getDefaultMaterial() { 34759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return defaultMaterial; 34859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 34959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 35059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta @Override 35159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void write(JmeExporter e) throws IOException { 35259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta super.write(e); 35359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta OutputCapsule oc = e.getCapsule(this); 35459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta oc.write(fps, "fps", DEFAULT_FPS); 35559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta oc.write(generatedTextureWidth, "generated-texture-width", 20); 35659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta oc.write(generatedTextureHeight, "generated-texture-height", 20); 35759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta oc.write(generatedTextureDepth, "generated-texture-depth", 20); 35859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta oc.write(featuresToLoad, "features-to-load", FeaturesToLoad.ALL); 35959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta oc.write(loadUnlinkedAssets, "load-unlinked-assets", false); 36059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta oc.write(assetRootPath, "asset-root-path", null); 36159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta oc.write(fixUpAxis, "fix-up-axis", true); 36259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta oc.write(usedWorld, "used-world", null); 36359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta oc.write(defaultMaterial, "default-material", null); 36459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta oc.write(faceCullMode, "face-cull-mode", FaceCullMode.Off); 36559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta oc.write(layersToLoad, "layers-to-load", -1); 36659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 36759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 36859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta @Override 36959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void read(JmeImporter e) throws IOException { 37059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta super.read(e); 37159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta InputCapsule ic = e.getCapsule(this); 37259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta fps = ic.readInt("fps", DEFAULT_FPS); 37359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta generatedTextureWidth = ic.readInt("generated-texture-width", 20); 37459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta generatedTextureHeight = ic.readInt("generated-texture-height", 20); 37559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta generatedTextureDepth = ic.readInt("generated-texture-depth", 20); 37659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta featuresToLoad = ic.readInt("features-to-load", FeaturesToLoad.ALL); 37759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta loadUnlinkedAssets = ic.readBoolean("load-unlinked-assets", false); 37859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta assetRootPath = ic.readString("asset-root-path", null); 37959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta fixUpAxis = ic.readBoolean("fix-up-axis", true); 38059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta usedWorld = ic.readString("used-world", null); 38159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta defaultMaterial = (Material) ic.readSavable("default-material", null); 38259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta faceCullMode = ic.readEnum("face-cull-mode", FaceCullMode.class, FaceCullMode.Off); 38359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta layersToLoad = ic.readInt("layers-to=load", -1); 38459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 38559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 38659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta @Override 38759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public int hashCode() { 38859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta final int prime = 31; 38959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta int result = super.hashCode(); 39059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta result = prime * result + (assetRootPath == null ? 0 : assetRootPath.hashCode()); 39159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta result = prime * result + (defaultMaterial == null ? 0 : defaultMaterial.hashCode()); 39259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta result = prime * result + (faceCullMode == null ? 0 : faceCullMode.hashCode()); 39359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta result = prime * result + featuresToLoad; 39459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta result = prime * result + (fixUpAxis ? 1231 : 1237); 39559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta result = prime * result + fps; 39659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta result = prime * result + generatedTextureDepth; 39759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta result = prime * result + generatedTextureHeight; 39859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta result = prime * result + generatedTextureWidth; 39959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta result = prime * result + layersToLoad; 40059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta result = prime * result + (loadUnlinkedAssets ? 1231 : 1237); 40159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta result = prime * result + (usedWorld == null ? 0 : usedWorld.hashCode()); 40259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return result; 40359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 40459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 40559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta @Override 40659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public boolean equals(Object obj) { 40759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (this == obj) { 40859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return true; 40959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 41059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (!super.equals(obj)) { 41159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return false; 41259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 41359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (this.getClass() != obj.getClass()) { 41459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return false; 41559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 41659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta BlenderKey other = (BlenderKey) obj; 41759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (assetRootPath == null) { 41859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (other.assetRootPath != null) { 41959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return false; 42059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 42159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (!assetRootPath.equals(other.assetRootPath)) { 42259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return false; 42359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 42459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (defaultMaterial == null) { 42559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (other.defaultMaterial != null) { 42659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return false; 42759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 42859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (!defaultMaterial.equals(other.defaultMaterial)) { 42959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return false; 43059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 43159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (faceCullMode != other.faceCullMode) { 43259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return false; 43359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 43459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (featuresToLoad != other.featuresToLoad) { 43559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return false; 43659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 43759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (fixUpAxis != other.fixUpAxis) { 43859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return false; 43959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 44059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (fps != other.fps) { 44159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return false; 44259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 44359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (generatedTextureDepth != other.generatedTextureDepth) { 44459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return false; 44559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 44659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (generatedTextureHeight != other.generatedTextureHeight) { 44759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return false; 44859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 44959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (generatedTextureWidth != other.generatedTextureWidth) { 45059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return false; 45159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 45259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (layersToLoad != other.layersToLoad) { 45359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return false; 45459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 45559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (loadUnlinkedAssets != other.loadUnlinkedAssets) { 45659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return false; 45759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 45859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (usedWorld == null) { 45959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (other.usedWorld != null) { 46059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return false; 46159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 46259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else if (!usedWorld.equals(other.usedWorld)) { 46359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return false; 46459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 46559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return true; 46659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 46759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 46859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 46959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This interface describes the features of the scene that are to be loaded. 47059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @author Marcin Roguski (Kaelthas) 47159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 47259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public static interface FeaturesToLoad { 47359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 47459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta int SCENES = 0x0000FFFF; 47559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta int OBJECTS = 0x0000000B; 47659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta int ANIMATIONS = 0x00000004; 47759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta int MATERIALS = 0x00000003; 47859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta int TEXTURES = 0x00000001; 47959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta int CAMERAS = 0x00000020; 48059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta int LIGHTS = 0x00000010; 48159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta int ALL = 0xFFFFFFFF; 48259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 48359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 48459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 48559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This class holds the loading results according to the given loading flag. 48659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @author Marcin Roguski (Kaelthas) 48759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 48859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public static class LoadingResults extends Spatial { 48959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 49059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** Bitwise mask of features that are to be loaded. */ 49159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta private final int featuresToLoad; 49259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** The scenes from the file. */ 49359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta private List<Node> scenes; 49459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** Objects from all scenes. */ 49559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta private List<Node> objects; 49659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** Materials from all objects. */ 49759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta private List<Material> materials; 49859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** Textures from all objects. */ 49959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta private List<Texture> textures; 50059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** Animations of all objects. */ 50159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta private List<AnimData> animations; 50259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** All cameras from the file. */ 50359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta private List<Camera> cameras; 50459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** All lights from the file. */ 50559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta private List<Light> lights; 50659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 50759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 50859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * Private constructor prevents users to create an instance of this class from outside the 50959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param featuresToLoad 51059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * bitwise mask of features that are to be loaded 51159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @see FeaturesToLoad FeaturesToLoad 51259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 51359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta private LoadingResults(int featuresToLoad) { 51459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta this.featuresToLoad = featuresToLoad; 51559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if ((featuresToLoad & FeaturesToLoad.SCENES) != 0) { 51659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta scenes = new ArrayList<Node>(); 51759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 51859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if ((featuresToLoad & FeaturesToLoad.OBJECTS) != 0) { 51959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta objects = new ArrayList<Node>(); 52059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if ((featuresToLoad & FeaturesToLoad.MATERIALS) != 0) { 52159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta materials = new ArrayList<Material>(); 52259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if ((featuresToLoad & FeaturesToLoad.TEXTURES) != 0) { 52359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta textures = new ArrayList<Texture>(); 52459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 52559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 52659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if ((featuresToLoad & FeaturesToLoad.ANIMATIONS) != 0) { 52759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta animations = new ArrayList<AnimData>(); 52859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 52959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 53059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if ((featuresToLoad & FeaturesToLoad.CAMERAS) != 0) { 53159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta cameras = new ArrayList<Camera>(); 53259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 53359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if ((featuresToLoad & FeaturesToLoad.LIGHTS) != 0) { 53459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta lights = new ArrayList<Light>(); 53559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 53659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 53759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 53859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 53959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns a bitwise flag describing what features of the blend file will be included in the result. 54059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return bitwise mask of features that are to be loaded 54159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @see FeaturesToLoad FeaturesToLoad 54259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 54359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public int getLoadedFeatures() { 54459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return featuresToLoad; 54559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 54659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 54759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 54859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method adds a scene to the result set. 54959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param scene 55059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * scene to be added to the result set 55159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 55259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void addScene(Node scene) { 55359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (scenes != null) { 55459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta scenes.add(scene); 55559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 55659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 55759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 55859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 55959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method adds an object to the result set. 56059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param object 56159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * object to be added to the result set 56259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 56359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void addObject(Node object) { 56459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (objects != null) { 56559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta objects.add(object); 56659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 56759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 56859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 56959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 57059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method adds a material to the result set. 57159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param material 57259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * material to be added to the result set 57359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 57459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void addMaterial(Material material) { 57559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (materials != null) { 57659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta materials.add(material); 57759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 57859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 57959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 58059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 58159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method adds a texture to the result set. 58259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param texture 58359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * texture to be added to the result set 58459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 58559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void addTexture(Texture texture) { 58659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (textures != null) { 58759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta textures.add(texture); 58859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 58959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 59059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 59159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 59259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method adds a camera to the result set. 59359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param camera 59459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * camera to be added to the result set 59559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 59659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void addCamera(Camera camera) { 59759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (cameras != null) { 59859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta cameras.add(camera); 59959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 60059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 60159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 60259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 60359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method adds a light to the result set. 60459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param light 60559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * light to be added to the result set 60659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 60759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta @Override 60859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void addLight(Light light) { 60959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (lights != null) { 61059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta lights.add(light); 61159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 61259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 61359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 61459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 61559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns all loaded scenes. 61659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return all loaded scenes 61759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 61859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public List<Node> getScenes() { 61959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return scenes; 62059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 62159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 62259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 62359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns all loaded objects. 62459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return all loaded objects 62559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 62659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public List<Node> getObjects() { 62759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return objects; 62859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 62959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 63059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 63159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns all loaded materials. 63259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return all loaded materials 63359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 63459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public List<Material> getMaterials() { 63559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return materials; 63659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 63759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 63859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 63959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns all loaded textures. 64059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return all loaded textures 64159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 64259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public List<Texture> getTextures() { 64359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return textures; 64459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 64559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 64659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 64759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns all loaded animations. 64859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return all loaded animations 64959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 65059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public List<AnimData> getAnimations() { 65159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return animations; 65259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 65359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 65459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 65559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns all loaded cameras. 65659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return all loaded cameras 65759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 65859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public List<Camera> getCameras() { 65959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return cameras; 66059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 66159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 66259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 66359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns all loaded lights. 66459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return all loaded lights 66559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 66659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public List<Light> getLights() { 66759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return lights; 66859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 66959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 67059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta @Override 67159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public int collideWith(Collidable other, CollisionResults results) throws UnsupportedCollisionException { 67259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return 0; 67359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 67459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 67559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta @Override 67659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void updateModelBound() {} 67759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 67859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta @Override 67959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void setModelBound(BoundingVolume modelBound) {} 68059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 68159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta @Override 68259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public int getVertexCount() { 68359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return 0; 68459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 68559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 68659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta @Override 68759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public int getTriangleCount() { 68859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return 0; 68959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 69059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 69159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta @Override 69259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public Spatial deepClone() { 69359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return null; 69459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 69559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 69659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta @Override 69759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void depthFirstTraversal(SceneGraphVisitor visitor) {} 69859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 69959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta @Override 70059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta protected void breadthFirstTraversal(SceneGraphVisitor visitor, Queue<Spatial> queue) {} 70159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 70259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 70359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 70459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * The WORLD file block contains various data that could be added to the scene. The contained data includes: ambient 70559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * light. 70659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @author Marcin Roguski (Kaelthas) 70759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 70859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public static class WorldData { 70959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 71059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** The ambient light. */ 71159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta private AmbientLight ambientLight; 71259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 71359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 71459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method returns the world's ambient light. 71559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @return the world's ambient light 71659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 71759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public AmbientLight getAmbientLight() { 71859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta return ambientLight; 71959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 72059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 72159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 72259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * This method sets the world's ambient light. 72359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @param ambientLight 72459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * the world's ambient light 72559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 72659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void setAmbientLight(AmbientLight ambientLight) { 72759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta this.ambientLight = ambientLight; 72859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 72959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 73059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta} 731