Пример #1
0
  /**
   * 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);
    }
  }
Пример #2
0
  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);
  }
Пример #3
0
  /**
   * 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;
  }
Пример #4
0
  /**
   * 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;
  }