응애맘마조
큐브 맵, 사운드 로드 본문
강의 내용을 가지고 큐브 맵 이미지와 사운드를 로드하는 것이 과제였습니다.
#include "stdafx.h"
#include "Solar.h"
#include "Deadpool.h"
#include "Scene2.h"
Scene2::Scene2()
{
}
Scene2::~Scene2()
{
}
void Scene2::Init()
{
grid = Grid::Create();
sky = Sky::Create();
sky2 = Sky::Create();
sky2->texCube->LoadFile("cloud.dds");
map = Terrain::Create();
map->LoadFile("Terrain.xml");
map->CreateStructuredBuffer();
dead = new Deadpool();
dead->Init();
cam = Camera::Create();
cam->LoadFile("Cam.xml");
SOUND->AddSound("PureEvil.mp3", "PE");
SOUND->Play("PE");
Camera::main = cam;
src = 0;
dest = 0;
moveSpeed = 20.0f;
timer = 0.0f;
}
void Scene2::Release()
{
}
void Scene2::Update()
{
if (ImGui::SliderFloat("masterVolum", &App.soundScale, 0.0f, 1.0f))
{
SOUND->SetMasterVolume();
}
if (ImGui::Button("stop"))
{
SOUND->Stop("PE");
}
Camera::main->width = App.GetWidth();
Camera::main->height = App.GetHeight();
Camera::main->viewport.width = App.GetWidth();
Camera::main->viewport.height = App.GetHeight();
Camera::main->Update();
Camera::ControlMainCam();
//debug
ImGui::Text("FPS: %d", TIMER->GetFramePerSecond());
ImGui::SliderFloat(" App.deltaScale", &App.deltaScale,0.0f,10.0f);
//Hierarchy
ImGui::Begin("Hierarchy");
grid->RenderHierarchy();
sky->RenderHierarchy();
sky2->RenderHierarchy();
cam->RenderHierarchy();
dead->Hi();
map->RenderHierarchy();
ImGui::End();
sky->Update();
}
void Scene2::LateUpdate()
{
if (INPUT->KeyDown(VK_MBUTTON))
{
Vector3 HitPoint;
if (map->ComPutePicking(Util::MouseToRay(), HitPoint))
{
srcPos = dead->root->GetWorldPos();
destPos = HitPoint;
Ray srcToDest;
srcToDest.position = srcPos;
srcToDest.direction = destPos - srcPos;
//중간에 컬라이더랑 충돌이라면
if (map->IntersectCollider(srcToDest))
{
src = map->GetDiNodeIdx(srcPos);
dest = map->GetDiNodeIdx(destPos);
if (map->PathFinding(src, dest, way))
{
way.push_front(destPos);
Vector3 dir = way.back() - dead->root->GetWorldPos();
timer = dir.Length() / moveSpeed;
dir.Normalize();
moveDir = dir;
}
}
//아니라면
else
{
moveDir = srcToDest.direction;
moveDir.Normalize();
timer = srcToDest.direction.Length() / moveSpeed;
}
}
}
if (timer > 0.0f)
{
dead->root->MoveWorldPos(moveDir * moveSpeed * DELTA);
timer -= DELTA;
if (not way.empty() and timer <= 0.0f)
{
way.pop_back();
if (not way.empty())
{
Vector3 dir = way.back() - dead->root->GetWorldPos();
timer = dir.Length() / moveSpeed;
dir.Normalize();
moveDir = dir;
}
}
}
}
void Scene2::Render()
{
Camera::main->Set();
sky->Render();
}
void Scene2::PreRender()
{
}
void Scene2::ResizeScreen()
{
Camera::main->width = App.GetWidth();
Camera::main->height = App.GetHeight();
Camera::main->viewport.width = App.GetWidth();
Camera::main->viewport.height = App.GetHeight();
}
D3D.vol1.egg
10.00MB
D3D.vol2.egg
10.00MB
D3D.vol3.egg
10.00MB
D3D.vol4.egg
1.48MB
사운드가 있고 용량이 커져서 파일로 첨부합니다.
읽어주셔서 감사합니다.
'공부 > 3D과제' 카테고리의 다른 글
렌더 투 텍스쳐, 포스트 이펙트, 블러 (0) | 2023.08.07 |
---|---|
Directional Light, Spot Light, Point Light (0) | 2023.08.01 |
다익스트라, 에이스타 (0) | 2023.07.12 |
GPGPU, 컴퓨트 셰이더 (0) | 2023.07.11 |
애니메이션 효과 구현 (0) | 2023.07.02 |
Comments