/** Metoda odpowiedzialna za wyswietlenie i animacje trojwymiarowego logo */ public void displayLogo() { try { int keys; int frames = 0; float angle = 10.0f; // kat o jaki obraca sie logo w animacji Graphics3D g3d = Graphics3D.getInstance(); Graphics g = getGraphics(); // setFullScreenMode(true); Thread.sleep(100); // zaladowanie obiektu zapisanego w pliku m3g Object3D[] objects = Loader.load("/res/blue_logo.m3g"); scene = (World) objects[0]; Camera camera = new Camera(); camera.setPerspective(30.0f, (float) getWidth() / (float) getHeight(), 1.0f, 1000.0f); camera.setTranslation(0.0f, 0.0f, 24.0f); scene.addChild(camera); scene.setActiveCamera(camera); scene.getChild(0).preRotate(180.0f, 1.0f, 0.0f, 0.0f); keys = getKeyStates(); while (((keys & FIRE_PRESSED) == 0) && (frames < 36)) { // oczekiwanie na nacisniecie klawisza g3d.bindTarget(g); scene.getChild(0).preRotate(angle, 0.0f, 0.7f, 1.0f); // wyrenderowanie sceny g3d.render(scene); // zwolnienie kontekstu graficznego g3d.releaseTarget(); flushGraphics(); Thread.sleep(30); // uspienie watku na 30ms keys = getKeyStates(); frames++; } while (((getKeyStates() & FIRE_PRESSED) != 0) && (frames < 36)) {} // oczekiwanie na zwolnienie przycisku fire if ((keys & FIRE_PRESSED) == 0) // jesli przycisk nie zostal wcisniety, tylko animacja dobiegla konca Thread.sleep(1000); } catch (InterruptedException e) { soundPlayer.play(SoundPlayer.ERROR_SOUND); System.out.println("Praca watku przerysowujacego zawartosc ekranu zostala przerwana!"); e.printStackTrace(); } catch (IOException e) { soundPlayer.play(SoundPlayer.ERROR_SOUND); System.out.println("Blad podczas wczytywania pliku z zasobow!"); e.printStackTrace(); } catch (Exception e) { soundPlayer.play(SoundPlayer.ERROR_SOUND); System.out.println("Nieznany wyjatek"); e.printStackTrace(); } }