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; }
/** 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(); } }
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 }
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(); }
/** Skal bli kalt når objektet skal dø, fjernes eller noe slikt... */ public void die() { dead = true; _gameRenderer.removeObject(this); }
/** * 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); } }