@Override
  protected void setShaderParams(Camera camera) {
    super.setShaderParams(camera);

    if (mParticleShader == null) {
      RajLog.e("[" + getClass().getName() + "] You need to set a particle material first.");
      throw new RuntimeException("You need to set a particle material first.");
    }
    mParticleShader.setCameraPosition(camera.getPosition());
    mParticleShader.setPointSize(mPointSize);
  }
Ejemplo n.º 2
0
  @Override
  protected void parse(InputStream is) throws ParsingException {
    BufferedReader buffer = new BufferedReader(new InputStreamReader(is));
    String line;
    try {
      while ((line = buffer.readLine()) != null) {
        String repl = line.replaceAll(REGEX_CLEAN, REPLACE_EMPTY);
        if (repl.length() == 0 || repl.charAt(0) == COMMENT) continue;

        readLine(buffer, line);
      }
      buffer.close();
    } catch (Exception e) {
      throw new ParsingException(e);
    }

    // -- get lights

    Stack<Model> lights = mFbx.objects.getModelsByType(FBXValues.MODELTYPE_LIGHT);
    int numLights = lights.size();

    RajawaliRenderer.setMaxLights(numLights == 0 ? 1 : numLights);
    Stack<ALight> sceneLights = new Stack<ALight>();

    for (int i = 0; i < numLights; ++i) {
      Model l = lights.get(i);
      // -- really need to add more light types

      sceneLights.add(buildLight(l));
    }

    if (numLights == 0) {
      ALight light = new DirectionalLight();
      light.setPosition(2, 0, -5);
      light.setPower(1);
      sceneLights.add(light);
    }

    // -- check fog
    // TODO: add fog support
    /*
     * if(mFbx.version5.fogOptions.fogEnable != null && mFbx.version5.fogOptions.fogEnable == 1) { FogOptions
     * fogOptions = mFbx.version5.fogOptions; mRenderer.setFogEnabled(true); Camera cam = mRenderer.getCamera();
     * cam.setFogEnabled(true); cam.setFogNear(fogOptions.fogStart); cam.setFogColor(fogOptions.fogColor.color);
     * mRenderer.setBackgroundColor(fogOptions.fogColor.color); }
     */

    // -- get meshes

    Stack<Model> models = mFbx.objects.getModelsByType(FBXValues.MODELTYPE_MESH);

    try {
      for (int i = 0; i < models.size(); ++i) {
        buildMesh(models.get(i), sceneLights);
      }
    } catch (TextureException tme) {
      throw new ParsingException(tme);
    }

    // -- get cameras

    Stack<Model> cameras = mFbx.objects.getModelsByType(FBXValues.MODELTYPE_CAMERA);
    Model camera = null;

    for (int i = 0; i < cameras.size(); ++i) {
      if (cameras.get(i).hidden == null || !cameras.get(i).hidden.equals("True")) {
        camera = cameras.get(i);
        break;
      }
    }

    if (camera != null) { // TODO: FIX
      Camera cam = mRenderer.getCurrentCamera();
      cam.setPosition(camera.position);
      cam.setX(mRenderer.getCurrentCamera().getX() * -1);
      cam.setRotation(camera.properties.lclRotation);
      Vector3 lookAt = camera.lookAt;
      // lookAt.x = -lookAt.x;
      cam.setLookAt(lookAt);
      cam.setNearPlane(camera.properties.nearPlane);
      cam.setFarPlane(camera.properties.farPlane);
      cam.setFieldOfView(camera.properties.fieldOfView);
    }
  }