#include "Crown.h" #include "OS.h" #include #include #include "MovableCamera.h" namespace crown { MovableCamera* cam; extern "C" { JNIEXPORT void JNICALL Java_crown_android_CrownLib_frame(JNIEnv* env, jobject obj); }; class MainScene : public AccelerometerListener, TouchListener { public: MainScene() { get_input_manager()->register_accelerometer_listener(this); get_input_manager()->register_touch_listener(this); cam = new MovableCamera(Vec3::ZERO, true, 90.0f, 1.6f, true, 0.1f, 2.5f); if (cam) { cam->SetActive(true); cam->SetSpeed(0.1); cam->SetFarClipDistance(1000.0f); } } void accelerometer_changed(const AccelerometerEvent& event) { cam->SetRotation(event.x, event.y); } void touch_down(const TouchEvent& event) { cam->MoveBackward(); } void touch_move(const TouchEvent& event) { cam->MoveBackward(); } void draw_triangle() { GetDevice()->GetRenderer()->set_clear_color(Color4::LIGHTBLUE); GetDevice()->GetRenderer()->set_matrix(MT_VIEW, Mat4::IDENTITY); GetDevice()->GetRenderer()->set_matrix(MT_MODEL, Mat4::IDENTITY); cam->Render(); static GLfloat vertices[] = { -1.0f, -1.0f, -2.0f, 1.0f, -1.0f, -2.0f, 0.0f, 1.0f, -2.0f}; GetDevice()->GetRenderer()->set_matrix(MT_MODEL, Mat4::IDENTITY); glEnableClientState(GL_VERTEX_ARRAY); glVertexPointer(3, GL_FLOAT, 0, vertices); glDrawArrays(GL_TRIANGLES, 0, 3); glDisableClientState(GL_VERTEX_ARRAY); } void frame() { Device* mDevice = GetDevice(); os::event_loop(); get_input_manager()->event_loop(); GetDevice()->GetRenderer()->begin_frame(); draw_triangle(); GetDevice()->GetRenderer()->end_frame(); os::swap_buffers(); } }; MainScene* scene = new MainScene(); JNIEXPORT void JNICALL Java_crown_android_CrownLib_frame(JNIEnv* env, jobject obj) { scene->frame(); } } // namespace crown