응애맘마조

큐브 맵, 사운드 로드 본문

공부/3D과제

큐브 맵, 사운드 로드

TH.Wert 2023. 7. 28. 17:20

강의 내용을 가지고 큐브 맵 이미지와 사운드를 로드하는 것이 과제였습니다.

#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