/** * Update the lights on this child's material. This method should only be called when the lights * collection is dirty. It will trigger compilation of all light-enabled shaders. * * @param child */ private void updateChildMaterialWithLights(Object3D child) { Material material = child.getMaterial(); if (material != null && material.lightingEnabled()) material.setLights(mLights); if (material != null && mFogParams != null) material.addPlugin(new FogMaterialPlugin(mFogParams)); int numChildren = child.getNumChildren(); for (int i = 0; i < numChildren; i++) { Object3D grandChild = child.getChildAt(i); updateChildMaterialWithLights(grandChild); } }
private void addShadowMapMaterialPlugin(Object3D o, ShadowMapMaterialPlugin materialPlugin) { Material m = o.getMaterial(); if (m != null && m.lightingEnabled()) { if (materialPlugin != null) { m.addPlugin(materialPlugin); } else if (mShadowMapMaterial != null) { m.removePlugin(mShadowMapMaterial.getMaterialPlugin()); } } for (int i = 0; i < o.getNumChildren(); i++) addShadowMapMaterialPlugin(o.getChildAt(i), materialPlugin); }
/** * Retrieve the number of objects on the screen, recursive method * * @return int the total object count for the screen. */ public int getNumObjects() { int objectCount = 0; ArrayList<Object3D> children = getChildrenCopy(); for (int i = 0, j = children.size(); i < j; i++) { Object3D child = children.get(i); if (child.getGeometry() != null && child.getGeometry().getVertices() != null && child.isVisible()) if (child.getNumChildren() > 0) { objectCount += child.getNumObjects() + 1; } else { objectCount++; } } return objectCount; }
/** * Retrieve the number of triangles this scene contains, recursive method * * @return int the total triangle count for the scene. */ public int getNumTriangles() { int triangleCount = 0; ArrayList<Object3D> children = getChildrenCopy(); for (int i = 0, j = children.size(); i < j; i++) { Object3D child = children.get(i); if (child.getGeometry() != null && child.getGeometry().getVertices() != null && child.isVisible()) if (child.getNumChildren() > 0) { triangleCount += child.getNumTriangles(); } else { triangleCount += child.getGeometry().getVertices().limit() / 9; } } return triangleCount; }