init
This commit is contained in:
@@ -1,13 +1,14 @@
|
||||
#include <G3DAll.h>
|
||||
#include <initguid.h>
|
||||
#include <iomanip>
|
||||
#include "../../resource.h"
|
||||
#include "resource.h"
|
||||
#include "DataModelV2/Instance.h"
|
||||
#include "DataModelV2/PartInstance.h"
|
||||
#include "DataModelV2/TextButtonInstance.h"
|
||||
#include "DataModelV2/ImageButtonInstance.h"
|
||||
#include "DataModelV2/DataModelInstance.h"
|
||||
#include "DataModelV2/GuiRootInstance.h"
|
||||
#include "XplicitNgine/XplicitNgine.h"
|
||||
#include "CameraController.h"
|
||||
#include "AudioPlayer.h"
|
||||
#include "Globals.h"
|
||||
@@ -188,9 +189,11 @@ void Application::onInit() {
|
||||
_dataModel->font = g_fntdominant;
|
||||
g_dataModel = _dataModel;
|
||||
|
||||
//initGUI();
|
||||
_xplicitNgine = new XplicitNgine();
|
||||
g_xplicitNgine = _xplicitNgine;
|
||||
|
||||
#ifdef LEGACY_LOAD_G3DFUN_LEVEL
|
||||
// Anchored this baseplate for XplicitNgine tests
|
||||
PartInstance* test = makePart();
|
||||
test->setParent(_dataModel->getWorkspace());
|
||||
test->color = Color3(0.2F,0.3F,1);
|
||||
@@ -198,7 +201,8 @@ void Application::onInit() {
|
||||
test->setPosition(Vector3(0,0,0));
|
||||
test->setCFrame(test->getCFrame() * Matrix3::fromEulerAnglesXYZ(0,toRadians(0),toRadians(0)));
|
||||
test->setSurface(TOP, Enum::SurfaceType::Bumps);
|
||||
|
||||
test->anchored = true;
|
||||
|
||||
test = makePart();
|
||||
test->setParent(_dataModel->getWorkspace());
|
||||
test->color = Color3(.5F,1,.5F);
|
||||
@@ -262,9 +266,6 @@ void Application::onInit() {
|
||||
test->setPosition(Vector3(-2,5,0));
|
||||
test->setSurface(TOP, Enum::SurfaceType::Bumps);
|
||||
|
||||
|
||||
|
||||
|
||||
test = makePart();
|
||||
test->setParent(_dataModel->getWorkspace());
|
||||
test->color = Color3::gray();
|
||||
@@ -294,86 +295,20 @@ void Application::onInit() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void Application::onCleanup() {
|
||||
clearInstances();
|
||||
sky->~Sky();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
||||
Class HyperSnapSolver
|
||||
|
||||
function getCollisionDepth(Part colliding, part collider);
|
||||
function getFaceCollision(Part colliding, part collider);
|
||||
|
||||
function eject(Part colliding, Part collider)
|
||||
{
|
||||
if(!colliding.canCollide || !collider.canCollide)
|
||||
return;
|
||||
if(getCollisionDepth(colliding, collider) != 0) {
|
||||
int ejectMultiplier, ejectMultipliery = 1-(collider.Friction+colliding.Friction), ejectMultiplierz = 1-(collider.Friction/2+colliding.Friction/2);
|
||||
if(colliding.Anchored)
|
||||
ejectMultiplier = collider.elasticity;
|
||||
int faceCollided = getFaceCollision(colliding, collider);
|
||||
if(faceCollided % 3 == 1)
|
||||
{
|
||||
ejectMultipliery = ejectMultiplier;
|
||||
ejectMultiplier = 1-(collider.Friction+colliding.Friction/2);
|
||||
}
|
||||
else if(faceCollided % 3 == 2)
|
||||
{
|
||||
ejectMultiplierz = ejectMultiplier;
|
||||
ejectMultiplier = 1-(collider.Friction+colliding.Friction/2);
|
||||
}
|
||||
|
||||
collider.Velocity *= Vector3.new(colliding.Velocity.x*ejectMultiplier,colliding.Velocity.y*ejectMultipliery,colliding.Velocity.z)
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
double grav = 0.32666666666666666666666666666667;
|
||||
void simGrav(PartInstance * collider)
|
||||
{
|
||||
if(!collider->anchored)
|
||||
{
|
||||
collider->setPosition(collider->getPosition()+collider->getVelocity());
|
||||
collider->setVelocity(collider->getVelocity()-Vector3(0,grav,0));
|
||||
}
|
||||
}
|
||||
|
||||
void eject(PartInstance * colliding, PartInstance * collider)
|
||||
{
|
||||
if(colliding == collider || !colliding->canCollide || !collider->canCollide)
|
||||
return;
|
||||
if(G3D::CollisionDetection::fixedSolidBoxIntersectsFixedSolidBox(collider->getBox(), colliding->getBox()))
|
||||
collider->setVelocity(collider->getVelocity().reflectionDirection(colliding->getCFrame().upVector())/1.3F);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Application::onLogic() {
|
||||
//PhysicsStart
|
||||
for_each (_dataModel->getWorkspace()->partObjects.begin(), _dataModel->getWorkspace()->partObjects.end(), simGrav);
|
||||
void Application::onLogic() {
|
||||
// XplicitNgine Start
|
||||
for(size_t i = 0; i < _dataModel->getWorkspace()->partObjects.size(); i++)
|
||||
{
|
||||
for(size_t j = 0; j < _dataModel->getWorkspace()->partObjects.size(); j++)
|
||||
{
|
||||
eject(_dataModel->getWorkspace()->partObjects[i], _dataModel->getWorkspace()->partObjects[j]);
|
||||
}
|
||||
}
|
||||
PartInstance* partInstance = _dataModel->getWorkspace()->partObjects[i];
|
||||
_xplicitNgine->createBody(partInstance);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Application::onNetwork() {
|
||||
// Poll net messages here
|
||||
}
|
||||
@@ -407,95 +342,29 @@ void Application::onSimulation(RealTime rdt, SimTime sdt, SimTime idt) {
|
||||
|
||||
}
|
||||
|
||||
/*double getOSVersion() {
|
||||
OSVERSIONINFO osvi;
|
||||
|
||||
ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
|
||||
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
||||
|
||||
GetVersionEx(&osvi);
|
||||
std::string version = Convert(osvi.dwMajorVersion) + "." + Convert(osvi.dwMinorVersion);
|
||||
return ::atof(version.c_str());
|
||||
}*/
|
||||
/*
|
||||
bool IsHolding(int button)
|
||||
{
|
||||
return (GetKeyState(button) >> 1)>0;
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
void Application::onUserInput(UserInput* ui) {
|
||||
if(mouseMoveState)
|
||||
{
|
||||
mouseMoveState = false;
|
||||
tool->onMouseMoved(mouse);
|
||||
}
|
||||
/*
|
||||
if(GetHoldKeyState(VK_LCONTROL))
|
||||
{
|
||||
if(GetHoldKeyState('D'))
|
||||
{
|
||||
_messageTime = System::time();
|
||||
if(debugMode())
|
||||
_message = "Debug Mode Disabled";
|
||||
else
|
||||
_message = "Debug Mode Enabled";
|
||||
setDebugMode(!debugMode());
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
if(GetHoldKeyState(VK_F8))
|
||||
{
|
||||
_dataModel->getGuiRoot()->setDebugMessage("FOV Set to 10", System::time());
|
||||
}
|
||||
//}
|
||||
|
||||
//_dataModel->mousex = ui->getMouseX();
|
||||
//_dataModel->mousey = ui->getMouseY();
|
||||
mouse.setMouseDown((GetKeyState(VK_LBUTTON) & 0x100) != 0);
|
||||
|
||||
if (GetHoldKeyState(VK_LBUTTON)) {
|
||||
/* if (_dragging) {
|
||||
PartInstance* part = NULL;
|
||||
if(g_selectedInstances.size() > 0)
|
||||
part = (PartInstance*) g_selectedInstances.at(0);
|
||||
Ray dragRay = cameraController.getCamera()->worldRay(mouse.x, mouse.y, renderDevice->getViewport());
|
||||
std::vector<Instance*> instances = _dataModel->getWorkspace()->getAllChildren();
|
||||
for(size_t i = 0; i < instances.size(); i++)
|
||||
{
|
||||
if(PartInstance* moveTo = dynamic_cast<PartInstance*>(instances.at(i)))
|
||||
{
|
||||
float __time = testRay.intersectionTime(moveTo->getBox());
|
||||
float __nearest=std::numeric_limits<float>::infinity();
|
||||
if (__time != inf())
|
||||
{
|
||||
if (__nearest>__time)
|
||||
{
|
||||
// BROKEN
|
||||
//Vector3 closest = (dragRay.closestPoint(moveTo->getPosition()) * 2);
|
||||
//part->setPosition(closest);
|
||||
//part->setPosition(Vector3(floor(closest.x),part->getPosition().y,floor(closest.z)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Sleep(10);
|
||||
}*/
|
||||
}
|
||||
// Camera KB Handling {
|
||||
if (GetKPBool(VK_OEM_COMMA)) //Left
|
||||
g_usableApp->cameraController.panLeft();
|
||||
else if (GetKPBool(VK_OEM_PERIOD)) // Right
|
||||
g_usableApp->cameraController.panRight();
|
||||
else if (GetKPBool(0x49)) // Zoom In (I)
|
||||
g_usableApp->cameraController.Zoom(1);
|
||||
else if (GetKPBool(0x4F)) // Zoom Out (O)
|
||||
g_usableApp->cameraController.Zoom(-1);
|
||||
// }
|
||||
|
||||
//readMouseGUIInput();
|
||||
// Add other key handling here
|
||||
// Camera KB Handling
|
||||
if (GetKPBool(VK_OEM_COMMA)) //Left
|
||||
g_usableApp->cameraController.panLeft();
|
||||
else if (GetKPBool(VK_OEM_PERIOD)) // Right
|
||||
g_usableApp->cameraController.panRight();
|
||||
else if (GetKPBool(0x49)) // Zoom In (I)
|
||||
g_usableApp->cameraController.Zoom(1);
|
||||
else if (GetKPBool(0x4F)) // Zoom Out (O)
|
||||
g_usableApp->cameraController.Zoom(-1);
|
||||
}
|
||||
|
||||
void Application::changeTool(Tool * newTool)
|
||||
@@ -793,11 +662,6 @@ void Application::onKeyPressed(int key)
|
||||
{
|
||||
_dataModel->getOpen();
|
||||
}
|
||||
if ((GetHoldKeyState(VK_LCONTROL) || GetHoldKeyState(VK_RCONTROL)) && key=='A')
|
||||
{
|
||||
std::vector<Instance *> vec = _dataModel->getWorkspace()->getAllChildren();
|
||||
g_selectedInstances.insert(g_selectedInstances.end(), vec.begin(), vec.end());
|
||||
}
|
||||
tool->onKeyDown(key);
|
||||
}
|
||||
void Application::onKeyUp(int key)
|
||||
@@ -948,6 +812,8 @@ void Application::run() {
|
||||
RealTime rdt = timeStep;
|
||||
SimTime sdt = timeStep * rate;
|
||||
SimTime idt = desiredFrameDuration * rate;
|
||||
|
||||
|
||||
|
||||
onSimulation(rdt,sdt,idt);
|
||||
m_simulationWatch.tock();
|
||||
|
||||
Reference in New Issue
Block a user