From e2cc42e6f334afc022671e48449d504bfbf83ec3 Mon Sep 17 00:00:00 2001
From: "Kae..pl" <Kaelthas_Spellsinger@o2.pl>
Date: Thu, 3 Oct 2013 10:05:00 +0000
Subject: [PATCH] Bugfix: making blender importer NOT to crash when coming
 accross Depth24Stencil8 image type.

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@10816 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
---
 .../textures/UVCoordinatesGenerator.java      |  7 +++---
 .../blending/TextureBlenderFactory.java       | 25 +++++++++++++------
 2 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/engine/src/blender/com/jme3/scene/plugins/blender/textures/UVCoordinatesGenerator.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/UVCoordinatesGenerator.java
index cde876b46..f3d192008 100644
--- a/engine/src/blender/com/jme3/scene/plugins/blender/textures/UVCoordinatesGenerator.java
+++ b/engine/src/blender/com/jme3/scene/plugins/blender/textures/UVCoordinatesGenerator.java
@@ -55,9 +55,10 @@ public class UVCoordinatesGenerator {
     private static final Logger LOGGER = Logger.getLogger(UVCoordinatesGenerator.class.getName());
 
     public static enum UVCoordinatesType {
-        TEXCO_ORCO(1), TEXCO_REFL(2), TEXCO_NORM(4), TEXCO_GLOB(8), TEXCO_UV(16), TEXCO_OBJECT(32), TEXCO_LAVECTOR(64), TEXCO_VIEW(128), TEXCO_STICKY(256), TEXCO_OSA(512), TEXCO_WINDOW(1024), NEED_UV(2048), TEXCO_TANGENT(4096),
-        // still stored in vertex->accum, 1 D
-        TEXCO_PARTICLE_OR_STRAND(8192), TEXCO_STRESS(16384), TEXCO_SPEED(32768);
+        TEXCO_ORCO(1), TEXCO_REFL(2), TEXCO_NORM(4), TEXCO_GLOB(8), TEXCO_UV(16), TEXCO_OBJECT(32), TEXCO_LAVECTOR(64), TEXCO_VIEW(128), 
+        TEXCO_STICKY(256), TEXCO_OSA(512), TEXCO_WINDOW(1024), NEED_UV(2048), TEXCO_TANGENT(4096),
+        TEXCO_PARTICLE_OR_STRAND(8192), //TEXCO_PARTICLE (since blender 2.6x) has also the value of: 8192 but is used for halo materials instead of normal materials
+        TEXCO_STRESS(16384), TEXCO_SPEED(32768);
 
         public final int blenderValue;
 
diff --git a/engine/src/blender/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderFactory.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderFactory.java
index 25c13f32a..88262b8a3 100644
--- a/engine/src/blender/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderFactory.java
+++ b/engine/src/blender/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderFactory.java
@@ -34,6 +34,7 @@ package com.jme3.scene.plugins.blender.textures.blending;
 import com.jme3.scene.plugins.blender.BlenderContext;
 import com.jme3.texture.Image;
 import com.jme3.texture.Image.Format;
+
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -45,6 +46,19 @@ import java.util.logging.Logger;
 public class TextureBlenderFactory {
     private static final Logger LOGGER = Logger.getLogger(TextureBlenderFactory.class.getName());
 
+    /**
+     * A blender that does not change the image. Used for none supported image types.
+     */
+    private static final TextureBlender NON_CHANGING_BLENDER = new TextureBlender() {
+        @Override
+        public Image blend(Image image, Image baseImage, BlenderContext blenderContext) {
+            return image;
+        }
+
+        @Override
+        public void copyBlendingData(TextureBlender textureBlender) { }
+    };
+    
     /**
      * This method creates the blending class.
      * 
@@ -52,6 +66,7 @@ public class TextureBlenderFactory {
      *            the texture format
      * @return texture blending class
      */
+    @SuppressWarnings("deprecation")
     public static TextureBlender createTextureBlender(Format format, int flag, boolean negate, int blendType, float[] materialColor, float[] color, float colfac) {
         switch (format) {
             case Luminance8:
@@ -97,15 +112,9 @@ public class TextureBlenderFactory {
             case Intensity8:
             case LATC:
             case LTC:
+            case Depth24Stencil8:
                 LOGGER.log(Level.WARNING, "Image type not yet supported for blending: {0}. Returning a blender that does not change the texture.", format);
-                return new TextureBlender() {
-                    public Image blend(Image image, Image baseImage, BlenderContext blenderContext) {
-                        return image;
-                    }
-
-                    public void copyBlendingData(TextureBlender textureBlender) {
-                    }
-                };
+                return NON_CHANGING_BLENDER;
             default:
                 throw new IllegalStateException("Unknown image format type: " + format);
         }