void Game::Init() { srand(time(0)); m_isRunning = true; lightObj = GameObjectPtr(new GameObject()); lightObj->Init(); lightObj->AddComponent(Component::T_DirectionalLight); lightObj->DirectionalLight()->m_Color = vec4(1, 0.5, 0.5, 0.4); lightObj->Transform()->position = vec3(10, 10, 0); cameraObj = GameObjectPtr(new GameObject()); cameraObj->Init(); cameraObj->AddComponent(Component::T_PerspectiveCamera); cameraObj->PerspectiveCamera()->CalcProjMatrix(); cameraObj->Transform()->position = vec3(100, 300, 0); GLRenderer::Instance().SetMainCamera(cameraObj->PerspectiveCamera()); MaterialPtr testMat = SceneManager::Instance().CreateMaterial("DeferredPrepass"); ShaderPtr shader = AssetManager::Instance().GetShader("deferred/Diffuse.shader"); testMat->SetShaderProgram(shader); MaterialPtr bumpMat = SceneManager::Instance().CreateMaterial("DeferredPrepassBump"); ShaderPtr bumpShader = AssetManager::Instance().GetShader("deferred/DiffuseNormal.shader"); bumpMat->SetShaderProgram(bumpShader); boxObj = GameObjectPtr(new GameObject()); boxObj->Init(); boxObj->AddComponent(Component::T_MeshRenderer); boxObj->MeshRenderer()->SetMesh(AssetManager::Instance().GetMesh("meshes/de_dust2.obj")); boxObj->MeshRenderer()->SetMaterial(testMat); boxObj->Transform()->position = vec3(0, 0, 0); boxObj->MeshRenderer()->SetDiffuseMapTexture(AssetManager::Instance().GetTexture2D("meshes/test.tga")); boxObj->MeshRenderer()->SetNormalMapTexture(AssetManager::Instance().GetTexture2D("meshes/box_normal.tga")); boxObj->MeshRenderer()->SetTextureScale(vec2(1, 1)); boxObj->AddComponent(Component::T_RigidBody); RigidBodyPtr bodyPtr = boxObj->RigidBody(); CRigidBody* body = (CRigidBody*)(bodyPtr.get()); body->InitializeStaticMesh(); //body->InitializeStatic(PhysicsManager::Instance().CreateStaticMesh(AssetManager::Instance().GetMesh("meshes/de_dust2.obj"))); PhysicsBoxPtr boxShape = PhysicsManager::Instance().CreateBoxShape(vec3(10, 10, 10)); for(int i=0; i<32; i++) { boxObj = GameObjectPtr(new GameObject()); boxObj->Init(); char buf[256]; sprintf(buf, "Box #%i", i); boxObj->Name(std::string(buf)); boxObj->AddComponent(Component::T_MeshRenderer); boxObj->MeshRenderer()->SetMesh(AssetManager::Instance().GetMesh("meshes/bumpbox.obj")); if(i%2 == 0) { boxObj->MeshRenderer()->SetMaterial(testMat); } else { boxObj->MeshRenderer()->SetMaterial(bumpMat); } boxObj->MeshRenderer()->SetDiffuseMapTexture(AssetManager::Instance().GetTexture2D("meshes/test.tga")); boxObj->Transform()->position = vec3(0, 15+30*i, 0); boxObj->Transform()->scale = vec3(10, 10, 10); boxObj->AddComponent(Component::T_PointLight); boxObj->PointLight()->SetRadius(45.f); boxObj->PointLight()->m_Color = vec4(0.5f+float(rand()%1000)*0.001f*0.5f, 0.5f+float(rand()%1000)*0.001f*0.5f, 0.5f+float(rand()%1000)*0.001f*0.5f, 5); boxObj->AddComponent(Component::T_RigidBody); RigidBodyPtr boxBodyPtr = boxObj->RigidBody(); CRigidBody* boxBody = (CRigidBody*)(boxBodyPtr.get()); boxBody->InitializeDynamic(10.f, boxShape); } }