|
@@ -1,85 +0,0 @@
|
|
-From 9e187647d01b2994d8ba4eb0c925c3e4522d562a Mon Sep 17 00:00:00 2001
|
|
|
|
-From: MeFisto94 <[email protected]>
|
|
|
|
-Date: Wed, 25 May 2016 17:40:00 +0200
|
|
|
|
-Subject: [PATCH] Fix Hardware Skinning in 3.1 by implementing proper Array
|
|
|
|
- Serialization for MatParams and making the Shared Materials Check only a
|
|
|
|
- warning (it would pop up once each time you load the j3o and if you really
|
|
|
|
- use Shared Materials you have weird animations and some log spamming)
|
|
|
|
-
|
|
|
|
----
|
|
|
|
- .../java/com/jme3/animation/SkeletonControl.java | 3 +-
|
|
|
|
- .../src/main/java/com/jme3/material/MatParam.java | 37 ++++++++++++++++++++++
|
|
|
|
- 2 files changed, 39 insertions(+), 1 deletion(-)
|
|
|
|
-
|
|
|
|
-diff --git a/jme3-core/src/main/java/com/jme3/animation/SkeletonControl.java b/jme3-core/src/main/java/com/jme3/animation/SkeletonControl.java
|
|
|
|
-index b753ad2..1d14fa6 100644
|
|
|
|
---- a/jme3-core/src/main/java/com/jme3/animation/SkeletonControl.java
|
|
|
|
-+++ b/jme3-core/src/main/java/com/jme3/animation/SkeletonControl.java
|
|
|
|
-@@ -255,7 +255,8 @@ public class SkeletonControl extends AbstractControl implements Cloneable, JmeCl
|
|
|
|
- // is operating on this material, in that case, user
|
|
|
|
- // is sharing materials between models which is NOT allowed
|
|
|
|
- // when hardware skinning used.
|
|
|
|
-- throw new UnsupportedOperationException(
|
|
|
|
-+
|
|
|
|
-+ Logger.getLogger(SkeletonControl.class.getName()).log(Level.SEVERE,
|
|
|
|
- "Material instances cannot be shared when hardware skinning is used. " +
|
|
|
|
- "Ensure all models use unique material instances."
|
|
|
|
- );
|
|
|
|
-diff --git a/jme3-core/src/main/java/com/jme3/material/MatParam.java b/jme3-core/src/main/java/com/jme3/material/MatParam.java
|
|
|
|
-index 8d965e3..6c069a1 100644
|
|
|
|
---- a/jme3-core/src/main/java/com/jme3/material/MatParam.java
|
|
|
|
-+++ b/jme3-core/src/main/java/com/jme3/material/MatParam.java
|
|
|
|
-@@ -309,6 +309,8 @@ When arrays can be inserted in J3M files
|
|
|
|
- } else if (value instanceof Boolean) {
|
|
|
|
- Boolean b = (Boolean) value;
|
|
|
|
- oc.write(b.booleanValue(), "value_bool", false);
|
|
|
|
-+ } else if (value.getClass().isArray() && value instanceof Savable[]) {
|
|
|
|
-+ oc.write((Savable[])value, "value_savable_array", null);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-@@ -327,6 +329,41 @@ When arrays can be inserted in J3M files
|
|
|
|
- case Int:
|
|
|
|
- value = ic.readInt("value_int", 0);
|
|
|
|
- break;
|
|
|
|
-+ case Vector2Array:
|
|
|
|
-+ Savable[] savableArray = ic.readSavableArray("value_savable_array", null);
|
|
|
|
-+ if (savableArray != null) {
|
|
|
|
-+ value = new Vector2f[savableArray.length];
|
|
|
|
-+ System.arraycopy(savableArray, 0, value, 0, savableArray.length);
|
|
|
|
-+ }
|
|
|
|
-+ break;
|
|
|
|
-+ case Vector3Array:
|
|
|
|
-+ savableArray = ic.readSavableArray("value_savable_array", null);
|
|
|
|
-+ if (savableArray != null) {
|
|
|
|
-+ value = new Vector3f[savableArray.length];
|
|
|
|
-+ System.arraycopy(savableArray, 0, value, 0, savableArray.length);
|
|
|
|
-+ }
|
|
|
|
-+ break;
|
|
|
|
-+ case Vector4Array:
|
|
|
|
-+ savableArray = ic.readSavableArray("value_savable_array", null);
|
|
|
|
-+ if (savableArray != null) {
|
|
|
|
-+ value = new Vector4f[savableArray.length];
|
|
|
|
-+ System.arraycopy(savableArray, 0, value, 0, savableArray.length);
|
|
|
|
-+ }
|
|
|
|
-+ break;
|
|
|
|
-+ case Matrix3Array:
|
|
|
|
-+ savableArray = ic.readSavableArray("value_savable_array", null);
|
|
|
|
-+ if (savableArray != null) {
|
|
|
|
-+ value = new Matrix3f[savableArray.length];
|
|
|
|
-+ System.arraycopy(savableArray, 0, value, 0, savableArray.length);
|
|
|
|
-+ }
|
|
|
|
-+ break;
|
|
|
|
-+ case Matrix4Array:
|
|
|
|
-+ savableArray = ic.readSavableArray("value_savable_array", null);
|
|
|
|
-+ if (savableArray != null) {
|
|
|
|
-+ value = new Matrix4f[savableArray.length];
|
|
|
|
-+ System.arraycopy(savableArray, 0, value, 0, savableArray.length);
|
|
|
|
-+ }
|
|
|
|
-+ break;
|
|
|
|
- default:
|
|
|
|
- value = ic.readSavable("value_savable", null);
|
|
|
|
- break;
|
|
|
|
---
|
|
|
|
-1.8.4
|
|
|
|
-
|
|
|