-
Notifications
You must be signed in to change notification settings - Fork 32
/
PrimitiveLevel.cpp
50 lines (45 loc) · 1.97 KB
/
PrimitiveLevel.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/*
* Copyright (c) 2018 Isetta
*/
#include "PrimitiveLevel.h"
#include "Core/Config/Config.h"
#include "Graphics/CameraComponent.h"
#include "Scene/Entity.h"
#include "Components/FlyController.h"
#include "Custom/EscapeExit.h"
#include "Scene/Primitive.h"
namespace Isetta {
void PrimitiveLevel::OnLevelLoad() {
Entity* cameraEntity{Entity::Instantiate("Camera")};
cameraEntity->AddComponent<CameraComponent>();
cameraEntity->SetTransform(Math::Vector3{0, 5, 10}, Math::Vector3{-15, 0, 0},
Math::Vector3::one);
cameraEntity->AddComponent<FlyController>();
cameraEntity->AddComponent<EscapeExit>();
Entity* lightEntity{Entity::Instantiate("Light")};
lightEntity->AddComponent<LightComponent>();
lightEntity->SetTransform(Math::Vector3{0, 200, 600}, Math::Vector3::zero,
Math::Vector3::one);
Entity* entity;
// Create capsule mesh entity, no collider
entity = Primitive::Create(Primitive::Type::Capsule);
entity->transform->SetWorldPos(Math::Vector3{0, 1.f, 0});
// Create cube mesh entity, no collider
entity = Primitive::Create(Primitive::Type::Cube);
entity->transform->SetWorldPos(Math::Vector3{1.5f, 0.5f, 0});
// Create cylinder mesh entity, no collider
entity = Primitive::Create(Primitive::Type::Cylinder);
entity->transform->SetWorldPos(Math::Vector3{-1.5f, 1.f, 0});
// Create grid mesh entity, with box collider
// Grid is horizontal square 5 unit x 0 unit x 5 unit
entity = Primitive::Create(Primitive::Type::Grid, true);
// Create quad mesh entity, no collider
// Quad is vertical square 1 unit x 1 unit x 0 unit
entity = Primitive::Create(Primitive::Type::Quad);
entity->transform->SetWorldPos(Math::Vector3{1.5f, 0.5f, 1});
entity->transform->SetWorldRot(Math::Vector3{0, 180.f, 0});
// Create sphere mesh entity, with sphere collider
entity = Primitive::Create(Primitive::Type::Sphere, true);
entity->transform->SetWorldPos(Math::Vector3{1.5f, 2.f, 0});
}
} // namespace Isetta