package com.jme3.scene; /** * An abstract class for implementations that perform grouping of geometries * via instancing or batching. * * @author Kirill Vainer */ public abstract class GeometryGroupNode extends Node { public static int getGeometryStartIndex(Geometry geom) { return geom.startIndex; } protected static void setGeometryStartIndex(Geometry geom, int startIndex) { if (startIndex < -1) { throw new AssertionError(); } geom.startIndex = startIndex; } /** * Construct a <code>GeometryGroupNode</code> */ public GeometryGroupNode() { super(); } /** * Construct a <code>GeometryGroupNode</code> * * @param name The name of the GeometryGroupNode. */ public GeometryGroupNode(String name) { super(name); } /** * Called by {@link Geometry geom} to specify that its world transform * has been changed. * * @param geom The Geometry whose transform changed. */ public abstract void onTransformChange(Geometry geom); /** * Called by {@link Geometry geom} to specify that its * {@link Geometry#setMaterial(com.jme3.material.Material) material} * has been changed. * * @param geom The Geometry whose material changed. * * @throws UnsupportedOperationException If this implementation does * not support dynamic material changes. */ public abstract void onMaterialChange(Geometry geom); /** * Called by {@link Geometry geom} to specify that its * {@link Geometry#setMesh(com.jme3.scene.Mesh) mesh} * has been changed. * * This is also called when the geometry's * {@link Geometry#setLodLevel(int) lod level} changes. * * @param geom The Geometry whose mesh changed. * * @throws UnsupportedOperationException If this implementation does * not support dynamic mesh changes. */ public abstract void onMeshChange(Geometry geom); /** * Called by {@link Geometry geom} to specify that it * has been unassociated from its <code>GeoemtryGroupNode</code>. * * Unassociation occurs when the {@link Geometry} is * {@link Spatial#removeFromParent() detached} from its parent * {@link Node}. * * @param geom The Geometry which is being unassociated. */ public abstract void onGeometryUnassociated(Geometry geom); }