diff --git a/jme3-core/src/main/java/com/jme3/scene/Geometry.java b/jme3-core/src/main/java/com/jme3/scene/Geometry.java index 1ce159c78..b33152c07 100644 --- a/jme3-core/src/main/java/com/jme3/scene/Geometry.java +++ b/jme3-core/src/main/java/com/jme3/scene/Geometry.java @@ -81,7 +81,7 @@ public class Geometry extends Spatial { * The start index of this Geometry's inside * the {@link GeometryGroupNode}. */ - protected int startIndex; + protected int startIndex = -1; /** * Serialization only. Do not use. */ @@ -316,7 +316,7 @@ public class Geometry extends Spatial { * @param node Which {@link GeometryGroupNode} to associate with. * @param startIndex The starting index of this geometry in the group. */ - protected void associateWithGroupNode(GeometryGroupNode node, int startIndex) { + public void associateWithGroupNode(GeometryGroupNode node, int startIndex) { if (isGrouped()) { unassociateFromGroupNode(); } @@ -331,13 +331,15 @@ public class Geometry extends Spatial { * * Should only be called by the parent {@link GeometryGroupNode}. */ - protected void unassociateFromGroupNode() { + public void unassociateFromGroupNode() { if (groupNode != null) { // Once the geometry is removed // from the parent, the group node needs to be updated. groupNode.onGeoemtryUnassociated(this); groupNode = null; - startIndex = 0; + + // change the default to -1 to make error detection easier + startIndex = -1; } } @@ -486,7 +488,7 @@ public class Geometry extends Spatial { // but the cloned one is not attached to anything, hence not managed. if (isGrouped()) { groupNode = null; - startIndex = 0; + startIndex = -1; } geomClone.cachedWorldMat = cachedWorldMat.clone(); diff --git a/jme3-core/src/main/java/com/jme3/scene/GeometryGroupNode.java b/jme3-core/src/main/java/com/jme3/scene/GeometryGroupNode.java index 52b299d56..ea94e4b89 100644 --- a/jme3-core/src/main/java/com/jme3/scene/GeometryGroupNode.java +++ b/jme3-core/src/main/java/com/jme3/scene/GeometryGroupNode.java @@ -8,6 +8,20 @@ package com.jme3.scene; */ public abstract class GeometryGroupNode extends Node { + protected static int getGeometryStartIndex(Geometry geom) { + if (geom.startIndex == -1) { + throw new AssertionError(); + } + return geom.startIndex; + } + + protected static void setGeometryStartIndex(Geometry geom, int startIndex) { + if (startIndex < -1) { + throw new AssertionError(); + } + geom.startIndex = startIndex; + } + /** * Construct a GeometryGroupNode */