コード例 #1
0
ファイル: Shader.java プロジェクト: tmercer/Schooner-3D
  int load(int type) throws GLException {
    if (loaded) {
      return handle;
    }
    handle = GLES20.glCreateShader(type);
    if (handle == 0) {
      int error = GameRenderer.logError("glCreateShader(" + type + ")");
      throw new GLException(error, "CreateShader failed");
    }
    GLES20.glShaderSource(handle, source);
    GameRenderer.logError("glShaderSource(handle, source)");
    GLES20.glCompileShader(handle);

    // Check compile status
    int[] compiled = {0};
    GLES20.glGetShaderiv(handle, GLES20.GL_COMPILE_STATUS, compiled, 0);
    if (compiled[0] != GLES20.GL_TRUE) {
      Log.e(TAG, "Error compiling shader. \n" + GLES20.glGetShaderInfoLog(handle));

      // Undo the shader
      GLES20.glDeleteShader(handle);
      return 0;
    }

    Log.d(TAG, "shader successfully compiled!");

    return handle;
  }
コード例 #2
0
ファイル: GameObject.java プロジェクト: porqpine/apomorph
  /** Denne kalles av renderloopen. Sørger for at action() blir kalt. */
  public void doAction() {
    _age++;
    if (_age == 200) { // Todo: denne burde ikke være her. Men det går så JÆVLIG fort nå...
      _age = 0;
    }
    action();

    x += _xSpeed;
    y += _ySpeed;
    // Hvis vi går utenfor skjermen, håndter det!
    if (y + height > _gameRenderer.getHeight()
        || y < 0
        || x + width > _gameRenderer.getWidth()
        || x < 0) {
      outOfScreenAction();
    }
  }
コード例 #3
0
  public void run() {
    // TODO Auto-generated method stub
    mLastTime = SystemClock.uptimeMillis();
    mFinished = false;
    while (!mFinished) {

      if (mGameRoot != null) {
        // Wait for Rendering Thread to Finish

        mRenderer.checkRenderingIsFinshed();
        final long time = SystemClock.uptimeMillis();
        final long timeDelta = time - mLastTime;

        if (timeDelta > 12) {
          float secondsDelta = (time - mLastTime) * 0.001f;
          if (secondsDelta > 0.1f) {
            secondsDelta = 0.1f;
          }
          // TODO This is the game root, will be used to update objects under it!
          mGameRoot.update(secondsDelta, null);

          // TODO get camera positions and pass below
          // This calls the setRenderQueue in render system which will eventually set the rendering
          // thread to
          // a queue of objects

          BaseObject.renderSystem.swapQueue(mRenderer, 10f, 10f);

          mLastTime = SystemClock.uptimeMillis();
        } else {
        }
      }
    }
    BaseObject.renderSystem.emptyQueues(mRenderer);
    mRenderer.clearAllTextures(); // Clear all textures
    BaseObject.resetAllElements(); // resets everything except textures
  }
コード例 #4
0
ファイル: GameEngine.java プロジェクト: sucz/inwodorz
  public GameEngine(Activity activity) {
    super((Context) activity);
    this.parentActivity = activity;
    this.context = (Context) activity;
    this.setFocusableInTouchMode(true);
    this.setOnKeyListener(this);

    _renderer = new GameRenderer(context);

    setRenderer(_renderer);
    setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);

    // rejestracja listernerów
    SensorManager sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
    Sensor sensor;
    sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_GAME);
    GameEventBus.getInstance()
        .attachToEventBus(EngineEventListener.class, new EngineEventHandler(this));

    this.generateLists();

    player = new AsyncPlayer("GameEngine->AudioPlayer");

    LvLBuilder lvLBuilder = new LvLBuilder(lvlList, context);
    lvlIter = lvLBuilder.iterator();
    if (lvlIter.hasNext()) {

      Level lvl = (Level) lvlIter.next();
      currentLvLName = lvl.getName();
      List<Stage> stages = lvl.getStages();

      stagesIter = stages.iterator();
      if (stages != null && stagesIter.hasNext()) {
        Stage stage = (Stage) stagesIter.next();
        currentStageName = stage.getName();
        _renderer.setAlienObjectsList(stage.getShips());
      }
      Log.d("Current Level: ", currentLvLName);
      Log.d("Current Stage: ", currentStageName);
    }
    this.refresh = new Refresher(this);
    ((Thread) refresh).start();
    this.audio = new AudioService2(context);
    ((Thread) audio).start();
  }
コード例 #5
0
ファイル: GameObject.java プロジェクト: porqpine/apomorph
 /** Skal bli kalt når objektet skal dø, fjernes eller noe slikt... */
 public void die() {
   dead = true;
   _gameRenderer.removeObject(this);
 }
コード例 #6
0
ファイル: GameEngine.java プロジェクト: sucz/inwodorz
  /**
   * Implementacja obsługi zdarzeń które muszą zostać wykonane przez silnik
   *
   * @see
   *     com.mmm.ztp.event.engineEvents.EngineEventListener#onEngineEvent(com.mmm.ztp.event.engineEvents.EngineEventObject)
   */
  @Override
  public void onEngineEvent(EngineEventObject obj) {
    if (obj.getType() == EngineEventObject.TYPE_NEXT_LEVEL) {
      Intent menu = new Intent(context, LevelMenu.class);

      if (stagesIter.hasNext()) {
        this.renderPause();
        Stage stage = (Stage) stagesIter.next();
        currentStageName = stage.getName();
        _renderer.setAlienObjectsList(stage.getShips());

        Log.d("Current Level: ", currentLvLName);
        Log.d("Current Stage: ", currentStageName);

        this.parentActivity.runOnUiThread(
            new Runnable() {
              @Override
              public void run() {
                Toast.makeText(
                        context,
                        "Level: " + currentLvLName + " Stage:" + currentStageName,
                        Toast.LENGTH_SHORT)
                    .show();
              }
            });
        this.renderResume();
      } else if (lvlIter.hasNext()) {
        this.renderPause();
        GameEventBus.getInstance()
            .fireEvent(
                AudioEventListener.class,
                new AudioEventObject(AudioEventObject.TYPE_NEXT_LVL, null));

        Level lvl = (Level) lvlIter.next();
        currentLvLName = lvl.getName();
        List<Stage> stages = lvl.getStages();
        stagesIter = stages.iterator();

        if (stages != null && stagesIter.hasNext()) {
          Stage stage = (Stage) stagesIter.next();
          currentStageName = stage.getName();
          _renderer.setAlienObjectsList(stage.getShips());
          Log.d("Current Level: ", currentLvLName);
          Log.d("Current Stage: ", currentStageName);
        }
        menu.putExtra("level", currentLvLName);
        menu.putExtra("stage", currentStageName);
        context.startActivity(menu);
        this.renderResume();
      } else {
        this.renderPause();
        GameEventBus.getInstance()
            .fireEvent(
                EngineEventListener.class,
                new EngineEventObject(EngineEventObject.TYPE_GAMEOVER, null));
      }
    }
    if (obj.getType() == EngineEventObject.TYPE_GAMEOVER) {
      Intent finish = new Intent(context, GameOver.class);
      context.startActivity(finish);
    }
  }