removing Halibut Engine
This commit is contained in:
parent
cda8e18889
commit
448b2dd6d9
@ -2,20 +2,6 @@
|
|||||||
#define ENGINE_H_INCLUDED
|
#define ENGINE_H_INCLUDED
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef TARGET_HALIBUT
|
|
||||||
#ifdef TARGET_WIN32
|
|
||||||
#define HALIBUT_WIN32
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef TARGET_ANDROID
|
|
||||||
#define HALIBUT_ANDROID
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_IOS
|
|
||||||
#define HALIBUT_IOS
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef TARGET_SALMON
|
#ifdef TARGET_SALMON
|
||||||
#ifdef TARGET_WIN32
|
#ifdef TARGET_WIN32
|
||||||
#define SALMON_WIN32
|
#define SALMON_WIN32
|
||||||
@ -34,24 +20,12 @@
|
|||||||
#include "SalmonEngineWindows.h"
|
#include "SalmonEngineWindows.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HALIBUT_WIN32
|
|
||||||
#include "HalibutEngineWindows.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef SALMON_ANDROID
|
#ifdef SALMON_ANDROID
|
||||||
#include "SalmonEngineAndroid.h"
|
#include "SalmonEngineAndroid.h"
|
||||||
#endif
|
#endif
|
||||||
#ifdef HALIBUT_ANDROID
|
|
||||||
#include "HalibutEngineAndroid.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef SALMON_IOS
|
#ifdef SALMON_IOS
|
||||||
#include "include/SalmonEngineIos.h"
|
#include "include/SalmonEngineIos.h"
|
||||||
#endif
|
#endif
|
||||||
#ifdef HALIBUT_IOS
|
|
||||||
#include "include/HalibutEngineIos.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif //ENGINE_H_INCLUDED
|
#endif //ENGINE_H_INCLUDED
|
@ -1,48 +0,0 @@
|
|||||||
#ifndef HALIBUT_ENGINE_ANDROID_H_INCLUDED
|
|
||||||
#define HALIBUT_ENGINE_ANDROID_H_INCLUDED
|
|
||||||
|
|
||||||
|
|
||||||
#include "include/Utils/Utils.h"
|
|
||||||
#include "include/Utils/Console/console.h"
|
|
||||||
|
|
||||||
#include "include/Render/HalibutRender/HalibutRenderAndroid.h"
|
|
||||||
|
|
||||||
#include "include/HalibutEngineInterface.h"
|
|
||||||
//Android code only
|
|
||||||
|
|
||||||
|
|
||||||
namespace SE
|
|
||||||
{
|
|
||||||
|
|
||||||
extern TJavaConsole* Console;
|
|
||||||
|
|
||||||
extern THalibutResourceManager* ResourceManager;
|
|
||||||
|
|
||||||
extern THalibutRendererAndroid* Renderer;
|
|
||||||
|
|
||||||
class TApplication : public TApplicationAncestor
|
|
||||||
{
|
|
||||||
protected:
|
|
||||||
public:
|
|
||||||
TApplication();
|
|
||||||
|
|
||||||
virtual ~TApplication();
|
|
||||||
|
|
||||||
virtual void OuterInit(int screenWidth, int screenHeight, float matrixWidth, float matrixHeight);
|
|
||||||
|
|
||||||
virtual void OuterDeinit();
|
|
||||||
|
|
||||||
virtual void OnKeyPress(cardinal key);
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
} //namespace SE
|
|
||||||
|
|
||||||
//This file includes templates that call any of three singletones: Console, ResourceManager or Renderer
|
|
||||||
|
|
||||||
#include "include/GUIManager/WidgetTemplatesImpl.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,104 +0,0 @@
|
|||||||
#ifndef HALIBUT_ENGINE_INTERFACE_H_INCLUDED
|
|
||||||
#define HALIBUT_ENGINE_INTERFACE_H_INCLUDED
|
|
||||||
|
|
||||||
#include "include/ApplicationInterface.h"
|
|
||||||
|
|
||||||
#include "include/TextureManager/SalmonTexture.h"
|
|
||||||
#include "include/ShaderManager/ShaderManager.h"
|
|
||||||
#include "include/ScriptManager/ScriptManager.h"
|
|
||||||
#include "include/GUIManager/GUIManager.h"
|
|
||||||
#include "include/FrameManager/FrameManager.h"
|
|
||||||
#include "include/FontManager/FontManager.h"
|
|
||||||
#include "include/HalibutAnimation/HalibutAnimation.h"
|
|
||||||
#include "include/SmartValueManager/SmartValueManager.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef TARGET_WIN32
|
|
||||||
#include "include/SoundManager/SoundManagerWindows.h"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ANDROID
|
|
||||||
#include "include/SoundManager/SoundManagerAndroid.h"
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_IOS
|
|
||||||
#include "include/SoundManager/SoundManagerIos.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace SE
|
|
||||||
{
|
|
||||||
|
|
||||||
//Windows only
|
|
||||||
struct TMouseState
|
|
||||||
{
|
|
||||||
int X;
|
|
||||||
int Y;
|
|
||||||
bool LeftButtonPressed;
|
|
||||||
bool MiddleButtonPressed;
|
|
||||||
bool RightButtonPressed;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class THalibutResourceManager
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
std::string PathToResources;
|
|
||||||
|
|
||||||
TTextureListClass TexList;
|
|
||||||
TShaderManager ShaderManager;
|
|
||||||
TScriptManager ScriptManager;
|
|
||||||
TGUIManager GUIManager;
|
|
||||||
TFrameManager FrameManager;
|
|
||||||
TFontManager FontManager;
|
|
||||||
THalibutAnimationManager HalibutAnimationManager;
|
|
||||||
TSmartValueManager SmartValueManager;
|
|
||||||
|
|
||||||
#ifdef TARGET_WIN32
|
|
||||||
TSoundManagerWindows SoundManager;
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_ANDROID
|
|
||||||
TSoundManagerAndroid SoundManager;
|
|
||||||
#endif
|
|
||||||
#ifdef TARGET_IOS
|
|
||||||
TSoundManagerIos SoundManager;
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class TApplicationAncestor : public TApplicationInterface
|
|
||||||
{
|
|
||||||
protected:
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
TApplicationAncestor();
|
|
||||||
|
|
||||||
//If you override them, call ancestor:
|
|
||||||
virtual void OuterDraw();
|
|
||||||
virtual void OuterUpdate(cardinal dt);
|
|
||||||
|
|
||||||
|
|
||||||
virtual void OuterOnTapDown(vec2 p);
|
|
||||||
virtual void OuterOnTapUp(vec2 p);
|
|
||||||
virtual void OuterOnMove(vec2 shift);
|
|
||||||
|
|
||||||
virtual void InnerOnTapDown(vec2 p) { }
|
|
||||||
|
|
||||||
virtual void InnerOnTapUp(vec2 p) { }
|
|
||||||
|
|
||||||
virtual void InnerOnMove(vec2 shift) { }
|
|
||||||
|
|
||||||
virtual void OnFling(vec2 v) { } //Android only
|
|
||||||
|
|
||||||
virtual void OnMouseMove(TMouseState& mouseState) { } //Windows only
|
|
||||||
|
|
||||||
virtual void OnMouseWheel(short int delta) { } //Windows only
|
|
||||||
|
|
||||||
virtual void OnKeyPress(cardinal key) { } //Try not to override this. But if you need to override, call ancestor!
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
} //namespace SE
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,52 +0,0 @@
|
|||||||
//
|
|
||||||
// HalibutEngineIos.h
|
|
||||||
// Halibut Engine
|
|
||||||
//
|
|
||||||
// Created by vvv ооо on 13.07.12.
|
|
||||||
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef HALIBUT_ENGINE_IOS_H_INCLUDED
|
|
||||||
#define HALIBUT_ENGINE_IOS_H_INCLUDED
|
|
||||||
|
|
||||||
#include "include/HalibutEngineInterface.h"
|
|
||||||
|
|
||||||
#include "include/Render/HalibutRender/HalibutRenderIos.h"
|
|
||||||
|
|
||||||
#include "include/Utils/Utils.h"
|
|
||||||
|
|
||||||
namespace SE
|
|
||||||
{
|
|
||||||
|
|
||||||
extern TIosConsole* Console;
|
|
||||||
|
|
||||||
extern THalibutResourceManager* ResourceManager;
|
|
||||||
|
|
||||||
extern THalibutRenderIos* Renderer;
|
|
||||||
|
|
||||||
class TApplication : public TApplicationAncestor
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
TApplication();
|
|
||||||
|
|
||||||
virtual ~TApplication();
|
|
||||||
|
|
||||||
virtual void OuterInit(int screenWidth, int screenHeight, float matrixWidth, float matrixHeight);
|
|
||||||
|
|
||||||
virtual void OuterDeinit();
|
|
||||||
|
|
||||||
virtual void OnKeyPress(cardinal key);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} //namespace SE
|
|
||||||
|
|
||||||
|
|
||||||
//This file includes templates that call any of three singletones: Console, ResourceManager or Renderer
|
|
||||||
|
|
||||||
#include "include/GUIManager/WidgetTemplatesImpl.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,63 +0,0 @@
|
|||||||
#pragma once //Windows ok
|
|
||||||
|
|
||||||
|
|
||||||
#include "include/Render/HalibutRender/HalibutRenderWindows.h"
|
|
||||||
|
|
||||||
#include "include/HalibutEngineInterface.h"
|
|
||||||
|
|
||||||
namespace SE
|
|
||||||
{
|
|
||||||
|
|
||||||
//==============================================================
|
|
||||||
//========= GLOBAL VARIABLES - REMEMBER THIS LIST!!! ===========
|
|
||||||
//==============================================================
|
|
||||||
|
|
||||||
extern HGLRC hRC; //Render context
|
|
||||||
extern HWND Hwnd; //Main window handle
|
|
||||||
extern HDC hDC; //Device context
|
|
||||||
|
|
||||||
extern TFileConsole* Console;
|
|
||||||
//Console and log for output
|
|
||||||
|
|
||||||
extern THalibutRenderer* Renderer;
|
|
||||||
//OpenGL renderer
|
|
||||||
|
|
||||||
extern THalibutResourceManager* ResourceManager;
|
|
||||||
//Resource Manager
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TApplication : public TApplicationAncestor
|
|
||||||
{
|
|
||||||
protected:
|
|
||||||
std::string LogFilename; //Log file name
|
|
||||||
unsigned char KeyboardBuffer[256];
|
|
||||||
public:
|
|
||||||
int X, Y, Width, Height; //Window position and size
|
|
||||||
float MatrixWidth, MatrixHeight;
|
|
||||||
|
|
||||||
std::string WindowName; //Window name
|
|
||||||
|
|
||||||
TApplication();
|
|
||||||
virtual ~TApplication();
|
|
||||||
|
|
||||||
const std::string& GetLogFilename();
|
|
||||||
|
|
||||||
char GetKeyState(cardinal keyNum);
|
|
||||||
|
|
||||||
void SetKeyboardBuffer(const unsigned char* source);
|
|
||||||
|
|
||||||
virtual void OnKeyPress(cardinal key); // If you override this, call ancestor!
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
int MainLoop(TApplication& application);
|
|
||||||
|
|
||||||
} //namespace SE
|
|
||||||
|
|
||||||
//This file includes templates that call any of three singletones: Console, ResourceManager or Renderer
|
|
||||||
|
|
||||||
#include "include/GUIManager/WidgetTemplatesImpl.h"
|
|
||||||
|
|
@ -1,175 +0,0 @@
|
|||||||
#include "include/HalibutEngineAndroid.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace SE
|
|
||||||
{
|
|
||||||
|
|
||||||
TJavaConsole* Console = NULL;
|
|
||||||
|
|
||||||
THalibutResourceManager* ResourceManager = NULL;
|
|
||||||
|
|
||||||
THalibutRendererAndroid* Renderer = NULL;
|
|
||||||
|
|
||||||
|
|
||||||
TApplication::TApplication()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void TApplication::OuterInit(int screenWidth, int screenHeight, float matrixWidth, float matrixHeight)
|
|
||||||
{
|
|
||||||
|
|
||||||
OuterDeinit();
|
|
||||||
|
|
||||||
Console = new TJavaConsole;
|
|
||||||
|
|
||||||
*Console<<std::string("Console successfully started!!!");
|
|
||||||
|
|
||||||
ResourceManager = new THalibutResourceManager;
|
|
||||||
|
|
||||||
Renderer = new THalibutRendererAndroid;
|
|
||||||
|
|
||||||
ResourceManager->ScriptManager.BindBasicFunctions();
|
|
||||||
|
|
||||||
InnerInit();
|
|
||||||
|
|
||||||
Renderer->InitOpenGL(screenWidth, screenHeight, matrixWidth, matrixHeight);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void TApplication::OuterDeinit()
|
|
||||||
{
|
|
||||||
if (Console != NULL)
|
|
||||||
{
|
|
||||||
*Console<<"OuterDeinit";
|
|
||||||
}
|
|
||||||
InnerDeinit();
|
|
||||||
|
|
||||||
|
|
||||||
if (ResourceManager != NULL)
|
|
||||||
{
|
|
||||||
delete ResourceManager;
|
|
||||||
ResourceManager = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Renderer != NULL)
|
|
||||||
{
|
|
||||||
delete Renderer;
|
|
||||||
Renderer = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (Console != NULL)
|
|
||||||
{
|
|
||||||
delete Console;
|
|
||||||
Console = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
TApplication::~TApplication()
|
|
||||||
{
|
|
||||||
OuterDeinit();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TApplication::OnKeyPress(cardinal key)
|
|
||||||
{
|
|
||||||
//For Android
|
|
||||||
//7-16 => "0".."9"
|
|
||||||
//29-54 => "a".."z"
|
|
||||||
//
|
|
||||||
|
|
||||||
if (IsConsoleOut)
|
|
||||||
{
|
|
||||||
|
|
||||||
if (key == 96 || key == 126) //` or ~
|
|
||||||
{
|
|
||||||
|
|
||||||
IsConsoleOut = false;
|
|
||||||
}
|
|
||||||
else if (key == 8) //Backspace
|
|
||||||
{
|
|
||||||
if (Console->ConsoleInput.size() > 0 && Console->ConsoleCursor > 0)
|
|
||||||
{
|
|
||||||
//Console->ConsoleInput.erase(Console->ConsoleInput.end()-1);
|
|
||||||
Console->ConsoleInput.erase(Console->ConsoleInput.begin() + Console->ConsoleCursor-1);
|
|
||||||
Console->ConsoleCursor--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (key == 13 || key == 10) //Enter
|
|
||||||
{
|
|
||||||
ResourceManager->ScriptManager.RunScript(Console->ConsoleInput);
|
|
||||||
*Console<<"===>"+Console->ConsoleInput+"<===";
|
|
||||||
|
|
||||||
Console->InputHistory.push_back(Console->ConsoleInput);
|
|
||||||
|
|
||||||
Console->InputHistoryCursor = Console->InputHistory.size();
|
|
||||||
|
|
||||||
Console->ConsoleInput = "";
|
|
||||||
Console->ConsoleCursor = 0;
|
|
||||||
}
|
|
||||||
else if (key >= 32 && key <= 255) //ASCII
|
|
||||||
{
|
|
||||||
//Console->ConsoleInput += static_cast<char>(key);
|
|
||||||
Console->ConsoleInput.insert(Console->ConsoleInput.begin()+Console->ConsoleCursor, static_cast<char>(key));
|
|
||||||
Console->ConsoleCursor++;
|
|
||||||
}
|
|
||||||
else if (key > 0x100) //VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
cardinal realKey = key - 0x100;
|
|
||||||
|
|
||||||
if (realKey == VK_UP)
|
|
||||||
{
|
|
||||||
if (Console->InputHistoryCursor > 0)
|
|
||||||
{
|
|
||||||
Console->InputHistoryCursor--;
|
|
||||||
Console->ConsoleInput = Console->InputHistory[Console->InputHistoryCursor];
|
|
||||||
Console->ConsoleCursor = Console->ConsoleInput.size();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (realKey == VK_DOWN)
|
|
||||||
{
|
|
||||||
if ( Console->InputHistoryCursor+1 < Console->InputHistory.size())
|
|
||||||
{
|
|
||||||
Console->InputHistoryCursor++;
|
|
||||||
Console->ConsoleInput = Console->InputHistory[Console->InputHistoryCursor];
|
|
||||||
Console->ConsoleCursor = Console->ConsoleInput.size();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (realKey == VK_LEFT)
|
|
||||||
{
|
|
||||||
if (Console->ConsoleCursor > 0)
|
|
||||||
{
|
|
||||||
Console->ConsoleCursor--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (realKey == VK_RIGHT)
|
|
||||||
{
|
|
||||||
if (Console->ConsoleCursor < Console->ConsoleInput.size())
|
|
||||||
{
|
|
||||||
Console->ConsoleCursor++;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*Console<<std::string("Key is ")+tostr(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (key == 96 || key == 126) //~
|
|
||||||
{
|
|
||||||
IsConsoleOut = true;
|
|
||||||
Console->ConsoleInput = "";
|
|
||||||
Console->ConsoleCursor = Console->ConsoleInput.size();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} //namespace SE
|
|
@ -1,76 +0,0 @@
|
|||||||
#include "include/HalibutEngineInterface.h"
|
|
||||||
#include "include/Engine.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace SE
|
|
||||||
{
|
|
||||||
|
|
||||||
TApplicationAncestor::TApplicationAncestor()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TApplicationAncestor::OuterDraw()
|
|
||||||
{
|
|
||||||
|
|
||||||
CheckGlError("THalibutApplicationInterface::OuterDraw 1");
|
|
||||||
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
|
||||||
glClear( GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
|
|
||||||
|
|
||||||
glActiveTexture(GL_TEXTURE0);
|
|
||||||
RenderUniform1i("Texture", 0);
|
|
||||||
RenderUniform1f("Transparency", 1.f);
|
|
||||||
|
|
||||||
InnerDraw();
|
|
||||||
|
|
||||||
CheckGlError("THalibutApplicationInterface::OuterDraw 1.5");
|
|
||||||
|
|
||||||
ResourceManager->GUIManager.Draw();
|
|
||||||
|
|
||||||
if (IsConsoleOut)
|
|
||||||
{
|
|
||||||
Console->Draw();
|
|
||||||
}
|
|
||||||
CheckGlError("THalibutApplicationInterface::OuterDraw 2");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TApplicationAncestor::OuterUpdate(cardinal dt)
|
|
||||||
{
|
|
||||||
CheckGlError();
|
|
||||||
ResourceManager->GUIManager.Update(dt);
|
|
||||||
ResourceManager->HalibutAnimationManager.Update(dt);
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef TARGET_IOS
|
|
||||||
ResourceManager->SoundManager.Update(dt);
|
|
||||||
#endif
|
|
||||||
CheckGlError();
|
|
||||||
InnerUpdate(dt);
|
|
||||||
|
|
||||||
CheckGlError();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TApplicationAncestor::OuterOnTapDown(vec2 p)
|
|
||||||
{
|
|
||||||
ResourceManager->GUIManager.OnMouseDown(p);
|
|
||||||
InnerOnTapDown(p);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TApplicationAncestor::OuterOnTapUp(vec2 p)
|
|
||||||
{
|
|
||||||
ResourceManager->GUIManager.OnMouseUp(p);
|
|
||||||
InnerOnTapUp(p);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TApplicationAncestor::OuterOnMove(vec2 shift)
|
|
||||||
{
|
|
||||||
ResourceManager->GUIManager.OnMove(shift);
|
|
||||||
InnerOnMove(shift);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} //namespace SE
|
|
@ -1,187 +0,0 @@
|
|||||||
//
|
|
||||||
// HalibutEngineIos.cpp
|
|
||||||
// Halibut Engine
|
|
||||||
//
|
|
||||||
// Created by vvv ооо on 13.07.12.
|
|
||||||
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
#include "include/Engine.h"
|
|
||||||
|
|
||||||
#include "include/HalibutEngineIos.h"
|
|
||||||
|
|
||||||
namespace SE
|
|
||||||
{
|
|
||||||
|
|
||||||
TIosConsole* Console = NULL;
|
|
||||||
|
|
||||||
THalibutResourceManager* ResourceManager = NULL;
|
|
||||||
|
|
||||||
THalibutRenderIos* Renderer = NULL;
|
|
||||||
|
|
||||||
|
|
||||||
TApplication::TApplication()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void TApplication::OuterInit(int screenWidth, int screenHeight, float matrixWidth, float matrixHeight)
|
|
||||||
{
|
|
||||||
|
|
||||||
OuterDeinit();
|
|
||||||
|
|
||||||
Console = new TIosConsole;
|
|
||||||
|
|
||||||
*Console<<std::string("Console successfully started!!!");
|
|
||||||
|
|
||||||
ResourceManager = new THalibutResourceManager;
|
|
||||||
|
|
||||||
Renderer = new THalibutRenderIos;
|
|
||||||
|
|
||||||
ResourceManager->ScriptManager.BindBasicFunctions();
|
|
||||||
|
|
||||||
InnerInit();
|
|
||||||
|
|
||||||
Renderer->InitOpenGL(screenWidth, screenHeight, matrixWidth, matrixHeight);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void TApplication::OuterDeinit()
|
|
||||||
{
|
|
||||||
if (Console != NULL)
|
|
||||||
{
|
|
||||||
*Console<<"OuterDeinit";
|
|
||||||
}
|
|
||||||
InnerDeinit();
|
|
||||||
|
|
||||||
|
|
||||||
if (ResourceManager != NULL)
|
|
||||||
{
|
|
||||||
delete ResourceManager;
|
|
||||||
ResourceManager = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Renderer != NULL)
|
|
||||||
{
|
|
||||||
delete Renderer;
|
|
||||||
Renderer = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (Console != NULL)
|
|
||||||
{
|
|
||||||
delete Console;
|
|
||||||
Console = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
TApplication::~TApplication()
|
|
||||||
{
|
|
||||||
OuterDeinit();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TApplication::OnKeyPress(cardinal key)
|
|
||||||
{
|
|
||||||
//For Android
|
|
||||||
//7-16 => "0".."9"
|
|
||||||
//29-54 => "a".."z"
|
|
||||||
//
|
|
||||||
|
|
||||||
if (IsConsoleOut)
|
|
||||||
{
|
|
||||||
|
|
||||||
if (key == 96 || key == 126) //` or ~
|
|
||||||
{
|
|
||||||
|
|
||||||
IsConsoleOut = false;
|
|
||||||
}
|
|
||||||
else if (key == 8) //Backspace
|
|
||||||
{
|
|
||||||
if (Console->ConsoleInput.size() > 0 && Console->ConsoleCursor > 0)
|
|
||||||
{
|
|
||||||
//Console->ConsoleInput.erase(Console->ConsoleInput.end()-1);
|
|
||||||
Console->ConsoleInput.erase(Console->ConsoleInput.begin() + Console->ConsoleCursor-1);
|
|
||||||
Console->ConsoleCursor--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (key == 13 || key == 10) //Enter
|
|
||||||
{
|
|
||||||
ResourceManager->ScriptManager.RunScript(Console->ConsoleInput);
|
|
||||||
*Console<<"===>"+Console->ConsoleInput+"<===";
|
|
||||||
|
|
||||||
Console->InputHistory.push_back(Console->ConsoleInput);
|
|
||||||
|
|
||||||
Console->InputHistoryCursor = Console->InputHistory.size();
|
|
||||||
|
|
||||||
Console->ConsoleInput = "";
|
|
||||||
Console->ConsoleCursor = 0;
|
|
||||||
}
|
|
||||||
else if (key >= 32 && key <= 255) //ASCII
|
|
||||||
{
|
|
||||||
//Console->ConsoleInput += static_cast<char>(key);
|
|
||||||
Console->ConsoleInput.insert(Console->ConsoleInput.begin()+Console->ConsoleCursor, static_cast<char>(key));
|
|
||||||
Console->ConsoleCursor++;
|
|
||||||
}
|
|
||||||
else if (key > 0x100) //VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
cardinal realKey = key - 0x100;
|
|
||||||
|
|
||||||
if (realKey == VK_UP)
|
|
||||||
{
|
|
||||||
if (Console->InputHistoryCursor > 0)
|
|
||||||
{
|
|
||||||
Console->InputHistoryCursor--;
|
|
||||||
Console->ConsoleInput = Console->InputHistory[Console->InputHistoryCursor];
|
|
||||||
Console->ConsoleCursor = Console->ConsoleInput.size();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (realKey == VK_DOWN)
|
|
||||||
{
|
|
||||||
if ( Console->InputHistoryCursor+1 < Console->InputHistory.size())
|
|
||||||
{
|
|
||||||
Console->InputHistoryCursor++;
|
|
||||||
Console->ConsoleInput = Console->InputHistory[Console->InputHistoryCursor];
|
|
||||||
Console->ConsoleCursor = Console->ConsoleInput.size();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (realKey == VK_LEFT)
|
|
||||||
{
|
|
||||||
if (Console->ConsoleCursor > 0)
|
|
||||||
{
|
|
||||||
Console->ConsoleCursor--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (realKey == VK_RIGHT)
|
|
||||||
{
|
|
||||||
if (Console->ConsoleCursor < Console->ConsoleInput.size())
|
|
||||||
{
|
|
||||||
Console->ConsoleCursor++;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*Console<<std::string("Key is ")+tostr(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (key == 96 || key == 126) //~
|
|
||||||
{
|
|
||||||
IsConsoleOut = true;
|
|
||||||
Console->ConsoleInput = "";
|
|
||||||
Console->ConsoleCursor = Console->ConsoleInput.size();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} //namespace SE
|
|
@ -1,510 +0,0 @@
|
|||||||
#include "include/Utils/Utils.h"
|
|
||||||
#include "include/HalibutEngineWindows.h"
|
|
||||||
|
|
||||||
namespace SE
|
|
||||||
{
|
|
||||||
|
|
||||||
//==============================================================
|
|
||||||
//========= GLOBAL VARIABLES - REMEMBER THIS LIST!!! ===========
|
|
||||||
//==============================================================
|
|
||||||
|
|
||||||
HGLRC hRC; //Render context
|
|
||||||
HWND Hwnd; //Main window handle
|
|
||||||
HDC hDC; //Device context
|
|
||||||
|
|
||||||
TFileConsole* Console = NULL;
|
|
||||||
|
|
||||||
THalibutRenderer* Renderer = NULL;
|
|
||||||
|
|
||||||
THalibutResourceManager* ResourceManager = NULL;
|
|
||||||
|
|
||||||
|
|
||||||
//==============================================================
|
|
||||||
//=============== GLOBAL VARS ENDS =============================
|
|
||||||
//==============================================================
|
|
||||||
|
|
||||||
const int CONST_DEFAULT_SCREEN_WIDTH = 800;
|
|
||||||
const int CONST_DEFAULT_SCREEN_HEIGHT = 600;
|
|
||||||
|
|
||||||
const cardinal CONST_TIMER_INTERVAL = 10;
|
|
||||||
|
|
||||||
//There might be anything
|
|
||||||
const char CONST_WINDOW_CLASS_NAME[] = "TSalmonEngineForm";
|
|
||||||
|
|
||||||
//To calculate when to call Update
|
|
||||||
cardinal NewTickCount;
|
|
||||||
cardinal LastTickCount;
|
|
||||||
|
|
||||||
vec2 MouseButtonPos;
|
|
||||||
vec2 MouseTotalShift;
|
|
||||||
bool MouseButtonPressed = false;
|
|
||||||
bool MouseMoved = false;
|
|
||||||
|
|
||||||
//User application
|
|
||||||
TApplication* App = NULL;
|
|
||||||
|
|
||||||
|
|
||||||
TApplication::TApplication()
|
|
||||||
: X(0)
|
|
||||||
, Y(0)
|
|
||||||
, Width(800)
|
|
||||||
, Height(600)
|
|
||||||
, MatrixWidth(0.f)
|
|
||||||
, MatrixHeight(0.f)
|
|
||||||
, WindowName("Halibut Engine")
|
|
||||||
, LogFilename("log.txt")
|
|
||||||
{
|
|
||||||
for(int i=0; i<256; i++)
|
|
||||||
{
|
|
||||||
KeyboardBuffer[i] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TApplication::~TApplication()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
const std::string& TApplication::GetLogFilename()
|
|
||||||
{
|
|
||||||
return LogFilename;
|
|
||||||
}
|
|
||||||
|
|
||||||
char TApplication::GetKeyState(cardinal keyNum)
|
|
||||||
{
|
|
||||||
if (keyNum > 255)
|
|
||||||
throw ErrorToLog("GetKeyState - invalid key number!");
|
|
||||||
|
|
||||||
return KeyboardBuffer[keyNum];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TApplication::SetKeyboardBuffer(const unsigned char* source)
|
|
||||||
{
|
|
||||||
memcpy((unsigned char*)KeyboardBuffer, source, 256);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TApplication::OnKeyPress(cardinal key)
|
|
||||||
{
|
|
||||||
|
|
||||||
if (IsConsoleOut)
|
|
||||||
{
|
|
||||||
|
|
||||||
if (key == 96 || key == 126) //~
|
|
||||||
{
|
|
||||||
IsConsoleOut = false;
|
|
||||||
}
|
|
||||||
else if (key == 8) //Backspace
|
|
||||||
{
|
|
||||||
if (Console->ConsoleInput.size() > 0 && Console->ConsoleCursor > 0)
|
|
||||||
{
|
|
||||||
Console->ConsoleInput.erase(Console->ConsoleInput.begin() + Console->ConsoleCursor-1);
|
|
||||||
Console->ConsoleCursor--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (key == 13|| key == 10) //Enter
|
|
||||||
{
|
|
||||||
ResourceManager->ScriptManager.RunScript(Console->ConsoleInput);
|
|
||||||
|
|
||||||
Console->InputHistory.push_back(Console->ConsoleInput);
|
|
||||||
|
|
||||||
Console->InputHistoryCursor = Console->InputHistory.size();
|
|
||||||
|
|
||||||
Console->ConsoleInput = "";
|
|
||||||
Console->ConsoleCursor = 0;
|
|
||||||
}
|
|
||||||
else if (key >= 32 && key <= 255) //ASCII
|
|
||||||
{
|
|
||||||
Console->ConsoleInput.insert(Console->ConsoleInput.begin()+Console->ConsoleCursor, static_cast<char>(key));
|
|
||||||
Console->ConsoleCursor++;
|
|
||||||
}
|
|
||||||
else if (key > 0x100) //VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT
|
|
||||||
{
|
|
||||||
cardinal realKey = key - 0x100;
|
|
||||||
|
|
||||||
if (realKey == VK_UP)
|
|
||||||
{
|
|
||||||
if (Console->InputHistoryCursor > 0)
|
|
||||||
{
|
|
||||||
Console->InputHistoryCursor--;
|
|
||||||
Console->ConsoleInput = Console->InputHistory[Console->InputHistoryCursor];
|
|
||||||
Console->ConsoleCursor = Console->ConsoleInput.size();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (realKey == VK_DOWN)
|
|
||||||
{
|
|
||||||
if ( Console->InputHistoryCursor+1 < Console->InputHistory.size())
|
|
||||||
{
|
|
||||||
Console->InputHistoryCursor++;
|
|
||||||
Console->ConsoleInput = Console->InputHistory[Console->InputHistoryCursor];
|
|
||||||
Console->ConsoleCursor = Console->ConsoleInput.size();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (realKey == VK_LEFT)
|
|
||||||
{
|
|
||||||
if (Console->ConsoleCursor > 0)
|
|
||||||
{
|
|
||||||
Console->ConsoleCursor--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (realKey == VK_RIGHT)
|
|
||||||
{
|
|
||||||
if (Console->ConsoleCursor < Console->ConsoleInput.size())
|
|
||||||
{
|
|
||||||
Console->ConsoleCursor++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*Console<<"Key is "+tostr(key)+endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ResourceManager->GUIManager.KeyPressedSignal(key);
|
|
||||||
|
|
||||||
if (key == 96 || key == 126) //~
|
|
||||||
{
|
|
||||||
IsConsoleOut = true;
|
|
||||||
Console->ConsoleInput = "";
|
|
||||||
Console->ConsoleCursor = Console->ConsoleInput.size();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DrawScene()
|
|
||||||
{
|
|
||||||
App->OuterDraw();
|
|
||||||
SwapBuffers(hDC);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ProcessTickCount()
|
|
||||||
{
|
|
||||||
//unsigned char keyboardStateArr[256];
|
|
||||||
|
|
||||||
NewTickCount = GetTickCount();
|
|
||||||
if (NewTickCount - LastTickCount > CONST_TIMER_INTERVAL)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
GetKeyboardState((unsigned char*)keyboardStateArr);
|
|
||||||
App->SetKeyboardBuffer((unsigned char*)keyboardStateArr);
|
|
||||||
*/
|
|
||||||
|
|
||||||
App->OuterUpdate(NewTickCount - LastTickCount);
|
|
||||||
LastTickCount = NewTickCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
LONG WINAPI WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|
||||||
{
|
|
||||||
static PAINTSTRUCT ps;
|
|
||||||
|
|
||||||
TMouseState mouseState;
|
|
||||||
|
|
||||||
switch(uMsg)
|
|
||||||
{
|
|
||||||
case WM_CLOSE:
|
|
||||||
Hwnd = 0; //HACK to force window to close
|
|
||||||
PostQuitMessage(0);
|
|
||||||
//Xperimental
|
|
||||||
return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case WM_PAINT:
|
|
||||||
DrawScene();
|
|
||||||
|
|
||||||
BeginPaint(hWnd, &ps);
|
|
||||||
EndPaint(hWnd, &ps);
|
|
||||||
|
|
||||||
ProcessTickCount();
|
|
||||||
break;
|
|
||||||
case WM_SIZE:
|
|
||||||
|
|
||||||
PostMessage(hWnd, WM_PAINT, 0, 0);
|
|
||||||
break;
|
|
||||||
case WM_CHAR:
|
|
||||||
App->OnKeyPress(wParam);
|
|
||||||
/*
|
|
||||||
switch (wParam)
|
|
||||||
{
|
|
||||||
case 27:
|
|
||||||
PostQuitMessage(0);
|
|
||||||
Hwnd = 0;
|
|
||||||
|
|
||||||
//Xperimental
|
|
||||||
return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
|
||||||
|
|
||||||
break;
|
|
||||||
//... Will add more code later
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
break;
|
|
||||||
case WM_KEYDOWN:
|
|
||||||
//Special for arrow keys
|
|
||||||
|
|
||||||
if (wParam == VK_UP || wParam == VK_DOWN || wParam == VK_LEFT || wParam == VK_RIGHT)
|
|
||||||
{
|
|
||||||
App->OnKeyPress(0x100 + wParam);
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
case WM_MOUSEMOVE:
|
|
||||||
mouseState.X = (lParam << 16) >> 16;
|
|
||||||
mouseState.Y = lParam >> 16;
|
|
||||||
mouseState.LeftButtonPressed = (wParam & MK_LBUTTON);
|
|
||||||
mouseState.MiddleButtonPressed = (wParam & MK_MBUTTON);
|
|
||||||
mouseState.RightButtonPressed = (wParam & MK_RBUTTON);
|
|
||||||
|
|
||||||
App->OnMouseMove(mouseState);
|
|
||||||
|
|
||||||
if (MouseButtonPressed)
|
|
||||||
{
|
|
||||||
vec2 currentMousePos(static_cast<float>(mouseState.X), static_cast<float>(App->Height - mouseState.Y));
|
|
||||||
vec2 shift = (MouseButtonPos - currentMousePos);
|
|
||||||
//shift.v[1] = - shift.v[1];
|
|
||||||
App->OuterOnMove(shift);
|
|
||||||
//App->OuterOnMove(currentMousePos - MouseButtonPos);
|
|
||||||
MouseButtonPos = currentMousePos;
|
|
||||||
|
|
||||||
MouseTotalShift += shift;
|
|
||||||
|
|
||||||
if (fabs(MouseTotalShift.v[0]) > 10.f || fabs(MouseTotalShift.v[1]) > 10.f)
|
|
||||||
{
|
|
||||||
MouseMoved = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case WM_LBUTTONDOWN:
|
|
||||||
case WM_RBUTTONDOWN:
|
|
||||||
mouseState.X = (lParam << 16) >> 16;
|
|
||||||
mouseState.Y = lParam >> 16;
|
|
||||||
mouseState.LeftButtonPressed = (wParam & MK_LBUTTON);
|
|
||||||
mouseState.MiddleButtonPressed = (wParam & MK_MBUTTON);
|
|
||||||
mouseState.RightButtonPressed = (wParam & MK_RBUTTON);
|
|
||||||
|
|
||||||
MouseButtonPos = vec2(static_cast<float>(mouseState.X), static_cast<float>(App->Height - mouseState.Y));
|
|
||||||
|
|
||||||
if (mouseState.LeftButtonPressed)
|
|
||||||
{
|
|
||||||
App->OuterOnTapDown(MouseButtonPos);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
MouseButtonPressed = true;
|
|
||||||
|
|
||||||
MouseMoved = false;
|
|
||||||
|
|
||||||
MouseTotalShift = vec2(0,0);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
break;
|
|
||||||
case WM_LBUTTONUP:
|
|
||||||
case WM_RBUTTONUP:
|
|
||||||
mouseState.X = (lParam << 16) >> 16;
|
|
||||||
mouseState.Y = lParam >> 16;
|
|
||||||
mouseState.LeftButtonPressed = (wParam & MK_LBUTTON);
|
|
||||||
mouseState.MiddleButtonPressed = (wParam & MK_MBUTTON);
|
|
||||||
mouseState.MiddleButtonPressed = (wParam & MK_RBUTTON);
|
|
||||||
|
|
||||||
if (!MouseMoved)
|
|
||||||
{
|
|
||||||
App->OuterOnTapUp(vec2(static_cast<float>(mouseState.X), static_cast<float>(App->Height - mouseState.Y)));
|
|
||||||
}
|
|
||||||
|
|
||||||
MouseButtonPressed = false;
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case WM_MOUSEWHEEL:
|
|
||||||
App->OnMouseWheel(wParam >> 16);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CreateOpenGLWindow(const char* title, int x, int y, int width, int height,HWND& hWnd, HDC& hDC, HGLRC& hRC)
|
|
||||||
{
|
|
||||||
int pf;
|
|
||||||
WNDCLASS wc;
|
|
||||||
PIXELFORMATDESCRIPTOR pfd;
|
|
||||||
static HINSTANCE hInstance = 0;
|
|
||||||
|
|
||||||
if (!hInstance)
|
|
||||||
{
|
|
||||||
hInstance = GetModuleHandle(NULL);
|
|
||||||
wc.style = CS_OWNDC;
|
|
||||||
wc.lpfnWndProc = (WNDPROC)WindowProc;
|
|
||||||
wc.cbClsExtra = 0;
|
|
||||||
wc.cbWndExtra = 0;
|
|
||||||
wc.hInstance = hInstance;
|
|
||||||
wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);
|
|
||||||
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
|
|
||||||
wc.hbrBackground = NULL;
|
|
||||||
wc.lpszMenuName = NULL;
|
|
||||||
wc.lpszClassName = CONST_WINDOW_CLASS_NAME;
|
|
||||||
|
|
||||||
if (!RegisterClass(&wc))
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
RECT r;
|
|
||||||
r.left = x;
|
|
||||||
r.right = x + width;
|
|
||||||
r.top = y;
|
|
||||||
r.bottom = y + height;
|
|
||||||
|
|
||||||
DWORD windowStyle = WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
|
|
||||||
|
|
||||||
AdjustWindowRect(&r, windowStyle, false);
|
|
||||||
|
|
||||||
hWnd = CreateWindow(CONST_WINDOW_CLASS_NAME, title, windowStyle, 0, 0, r.right-r.left, r.bottom-r.top, NULL, NULL, hInstance, NULL);
|
|
||||||
|
|
||||||
if (hWnd == NULL)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
hDC = GetDC(hWnd);
|
|
||||||
|
|
||||||
memset(&pfd, 0, sizeof(pfd));
|
|
||||||
pfd.nSize = sizeof(pfd);
|
|
||||||
pfd.nVersion = 1;
|
|
||||||
pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
|
|
||||||
pfd.iPixelType = PFD_TYPE_RGBA;
|
|
||||||
pfd.cColorBits = 32;
|
|
||||||
|
|
||||||
pf = ChoosePixelFormat(hDC, &pfd);
|
|
||||||
if (pf == 0)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (SetPixelFormat(hDC, pf, &pfd) == FALSE)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
hRC = wglCreateContext( hDC );
|
|
||||||
wglMakeCurrent( hDC, hRC );
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
int MainLoop(TApplication& application)
|
|
||||||
{
|
|
||||||
MSG msg;
|
|
||||||
|
|
||||||
//Here console log is not created so we can not use ErrorCommon
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Console = new TFileConsole(application.GetLogFilename());
|
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Here console log is already created
|
|
||||||
try
|
|
||||||
{
|
|
||||||
|
|
||||||
*Console<<"Log started";
|
|
||||||
|
|
||||||
if (!CreateOpenGLWindow(application.WindowName.c_str(), application.X, application.Y, application.Width, application.Height,Hwnd,hDC,hRC))
|
|
||||||
{
|
|
||||||
*Console<<"Unable to create OpenGL Window!";
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
*Console<<"OpenGL Window created";
|
|
||||||
|
|
||||||
|
|
||||||
if (App != NULL)
|
|
||||||
throw ErrorCommon();
|
|
||||||
|
|
||||||
App = &application;
|
|
||||||
|
|
||||||
Renderer = new THalibutRenderer;
|
|
||||||
ResourceManager = new THalibutResourceManager;
|
|
||||||
|
|
||||||
if (Renderer->BindOpenGLFunctions())
|
|
||||||
{
|
|
||||||
if (App->MatrixWidth == 0)
|
|
||||||
{
|
|
||||||
App->MatrixWidth = static_cast<float>(App->Width);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (App->MatrixHeight == 0)
|
|
||||||
{
|
|
||||||
App->MatrixHeight = static_cast<float>(App->Height);
|
|
||||||
}
|
|
||||||
|
|
||||||
App->OuterInit(App->Width, App->Height, App->MatrixWidth, App->MatrixHeight);
|
|
||||||
|
|
||||||
ShowWindow(Hwnd, SW_SHOW);
|
|
||||||
UpdateWindow(Hwnd);
|
|
||||||
|
|
||||||
NewTickCount = GetTickCount();
|
|
||||||
LastTickCount = NewTickCount;
|
|
||||||
|
|
||||||
bool StayIn = true;
|
|
||||||
|
|
||||||
while (StayIn)
|
|
||||||
{
|
|
||||||
while(PeekMessage(&msg, Hwnd, 0, 0, PM_NOREMOVE))
|
|
||||||
{
|
|
||||||
if(GetMessage(&msg, Hwnd, 0, 0))
|
|
||||||
{
|
|
||||||
TranslateMessage(&msg);
|
|
||||||
DispatchMessage(&msg);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
StayIn = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
DrawScene();
|
|
||||||
|
|
||||||
ProcessTickCount();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
*Console<<"Program prepares to quit";
|
|
||||||
|
|
||||||
App->OuterDeinit();
|
|
||||||
|
|
||||||
delete ResourceManager;
|
|
||||||
delete Renderer;
|
|
||||||
|
|
||||||
|
|
||||||
wglMakeCurrent(NULL, NULL);
|
|
||||||
ReleaseDC(Hwnd,hDC);
|
|
||||||
wglDeleteContext(hRC);
|
|
||||||
DestroyWindow(Hwnd);
|
|
||||||
|
|
||||||
}
|
|
||||||
catch(ErrorCommon)
|
|
||||||
{
|
|
||||||
//... let the ErrorTypes.h do the buisness
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
delete Console;
|
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} //namespace SE
|
|
Loading…
Reference in New Issue
Block a user