engine/Templates/SalmonWallpaperTemplate/jni/main_code.cpp

191 lines
3.6 KiB
C++

#include "main_code.h"
#ifdef TARGET_ANDROID
#include "android_api.h"
#endif
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include "include/Engine.h"
#include "main_code.h"
extern float lastOffsetX;
#ifdef TARGET_WIN32
bool RedBkgPref = true;
#else
extern bool RedBkgPref;
#endif
TAndroidApplication::TAndroidApplication()
: TApplication()
, Inited(false)
//, LiteModel(NULL)
{
}
void TAndroidApplication::LoadModels()
{
mat3 m(vec4(0,1*sin(pi/8 + pi/2),0,1*cos(pi/8 + pi/2)));
/*
LiteModel = new TLiteModel;
LiteModel->LoadModel("bt_box_yellow.lm1");
LiteModel->ScaleModel(10.0f);
LiteModel->RotateModel(m);
LiteModel->UpdateVBO();*/
FlexModel = ResourceManager->FlexModelManager.InstanciateModel("model.xml");
//FlexModel.MoveModel(vec3(1, -4, -4));
FlexModel.ScaleModel(1.5f);
FlexModel.RotateModel(m);
FlexModel.RefreshBuffer();
}
void TAndroidApplication::DrawAllScene()
{
glClearColor(0.f, 0.f, 0.f, 1.0f);
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
Renderer->PushProjectionMatrix(1,1);
Renderer->LoadIdentity();
if (RedBkgPref)
{
glBindTexture(GL_TEXTURE_2D, ResourceManager->TexList["bkg_red.png"]);
}
else
{
glBindTexture(GL_TEXTURE_2D, ResourceManager->TexList["bkg_blue.png"]);
}
Renderer->DrawRect(vec2(0.0f, 0.f), vec2(1.f, 1.f), vec2(0.f, 0.f), vec2(1.f, 1.f));
Renderer->PopProjectionMatrix();
Renderer->PushPerspectiveProjectionMatrix(pi/6, Renderer->GetMatrixWidth() / Renderer->GetMatrixHeight(), 1.f, 4500.f);
glClear(GL_DEPTH_BUFFER_BIT);
Renderer->SetGLCamView();
//LiteModel->DrawVBO();
FlexModel.Draw();
Renderer->PopProjectionMatrix();
}
void TAndroidApplication::InnerInit()
{
RenderMutex.lock();
CheckGlError();
glEnable(GL_BLEND);
*Console<<"Inner init go!\n";
#ifdef TARGET_ANDROID
ResourceManager->PathToResources = "";
#endif
#ifdef TARGET_WIN32
ResourceManager->PathToResources = "../../assets/";
#endif
ResourceManager->ShaderManager.AddShader("DefaultShader", "gui_transparent.vertex", "gui_transparent.fragment");
Renderer->PushShader("DefaultShader");
ResourceManager->TexList.AddTexture("bkg_red.png");
ResourceManager->TexList.AddTexture("bkg_blue.png");
CheckGlError();
boost::get<TPanoramicCamera>(Renderer->Camera).MovePhi(pi/32);
//ResourceManager->ModelManager.AddLiteModel("bt_box_yellow.lm1");
ResourceManager->TexList.AddTexture("bt_box_yellow.bmp");
ResourceManager->FlexModelManager.LoadModelFromXml("model.xml");
LoadModels();
if (Renderer->GetScreenWidth() > Renderer->GetScreenHeight())
{
boost::get<TPanoramicCamera>(Renderer->Camera).MoveDist(30.f);
}
else
{
boost::get<TPanoramicCamera>(Renderer->Camera).MoveDist(45.f);
}
CheckGlError();
glViewport(0, 0, Renderer->GetScreenWidth(), Renderer->GetScreenHeight());
Renderer->SetPerspectiveProjection(pi / 6.f, 1.0f, 100.0f);
*Console<<"Inner init end!\n";
RenderMutex.unlock();
}
void TAndroidApplication::InnerDeinit()
{
RenderMutex.lock();
Inited = false;
/*
if (LiteModel != NULL)
{
LiteModel->FreeModel();
delete LiteModel;
LiteModel = NULL;
}*/
RenderMutex.unlock();
}
void TAndroidApplication::InnerDraw()
{
RenderMutex.lock();
DrawAllScene();
RenderMutex.unlock();
}
void TAndroidApplication::InnerUpdate(cardinal dt)
{
}
void TAndroidApplication::InnerOnMove(vec2 shift)
{
boost::get<TPanoramicCamera>(Renderer->Camera).MoveAlpha(-pi*shift.v[0]*0.1f);
}
void TAndroidApplication::OnMouseDown(TMouseState& mouseState)
{
}