Skip to content

Commit 1ca4a4f

Browse files
Alexandre jublot0xSwapFeeder
authored andcommitted
feat: abstracted CameraComponent implementation in CameraComponentImpl
1 parent 695c73d commit 1ca4a4f

File tree

4 files changed

+109
-37
lines changed

4 files changed

+109
-37
lines changed

Factory/include/initializers/CameraInitializer.hpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,12 @@
99
#define ENGINE_CAMERAINITIALIZER_HPP
1010

1111
#include "polymorph/Core.hpp"
12-
#include "../../../Scripts/include/CameraComponent.hpp"
12+
#include "CameraComponentImpl.hpp"
1313

1414
namespace polymorph::engine
1515
{
16-
class CameraComponent;
1716

18-
class CameraInitializer : public AComponentInitializer<CameraComponent>
17+
class CameraInitializer : public AComponentInitializer<CameraComponentImpl>
1918
{
2019
///////////////////////////////// Constructors /////////////////////////////////
2120

Scripts/include/CameraComponent.hpp

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
#include "Utilities/safe_ptr.hpp"
1515
#include "Utilities/types/Vector.hpp"
1616
#include "Utilities/Time.hpp"
17-
#include "../../Core/include/modules/CameraModule.hpp"
17+
#include "modules/CameraModule.hpp"
1818

1919
namespace polymorph::engine
2020
{
@@ -30,7 +30,7 @@ namespace polymorph::engine
3030
////////////////////// CONSTRUCTORS/DESTRUCTORS /////////////////////////
3131

3232
public:
33-
explicit CameraComponent(GameObject gameObject);
33+
explicit CameraComponent(GameObject gameObject) : Component("Camera", gameObject) {};
3434

3535

3636
//////////////////////--------------------------/////////////////////////
@@ -48,12 +48,7 @@ namespace polymorph::engine
4848
GameObject ObjectTarget;
4949
Vector3 PointTarget;
5050

51-
void update() override;
52-
53-
void start() override;
54-
5551
std::shared_ptr<graphical::CameraModule> camera;
56-
static inline CameraComponent *Current = nullptr;
5752

5853
private:
5954

@@ -64,21 +59,21 @@ namespace polymorph::engine
6459

6560
/////////////////////////////// METHODS /////////////////////////////////
6661
public:
67-
bool isTargetingObject();
62+
virtual bool isTargetingObject() = 0;
6863

69-
GameObject getTargetObject();
64+
virtual GameObject getTargetObject() = 0;
7065

71-
void setTargetPosition(Vector3 targetPosition);
66+
virtual void setTargetPosition(Vector3 targetPosition) = 0;
7267

73-
void setTargetObject(GameObject object);
68+
virtual void setTargetObject(GameObject object) = 0;
7469

75-
void setUp(Vector3 up);
70+
virtual void setUp(Vector3 up) = 0;
7671

77-
void setFov(float fov);
72+
virtual void setFov(float fov) = 0;
7873

79-
void begin3dMode();
74+
virtual void begin3dMode() = 0;
8075

81-
void end3dMode();
76+
virtual void end3dMode() = 0;
8277

8378

8479
private:
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
/*
2+
** EPITECH PROJECT, 2020
3+
** CameraComponentImpl.hpp
4+
** File description:
5+
** header for CameraComponentImpl.c
6+
*/
7+
8+
9+
#pragma once
10+
11+
#include <vector>
12+
#include <functional>
13+
#include "CameraComponent.hpp"
14+
15+
namespace polymorph::engine
16+
{
17+
18+
class CameraComponentImpl : public CameraComponent
19+
{
20+
21+
////////////////////// CONSTRUCTORS/DESTRUCTORS /////////////////////////
22+
23+
public:
24+
explicit CameraComponentImpl(GameObject gameObject);
25+
26+
27+
//////////////////////--------------------------/////////////////////////
28+
29+
30+
31+
///////////////////////////// PROPERTIES ////////////////////////////////
32+
public:
33+
enum CameraTargetType : int
34+
{
35+
Point,
36+
Object,
37+
};
38+
CameraTargetType TargetType;
39+
GameObject ObjectTarget;
40+
Vector3 PointTarget;
41+
42+
std::shared_ptr<graphical::CameraModule> camera;
43+
44+
private:
45+
46+
47+
//////////////////////--------------------------/////////////////////////
48+
49+
50+
51+
/////////////////////////////// METHODS /////////////////////////////////
52+
public:
53+
void update() override;
54+
55+
void start() override;
56+
57+
bool isTargetingObject() override;
58+
59+
GameObject getTargetObject() override;
60+
61+
void setTargetPosition(Vector3 targetPosition) override;
62+
63+
void setTargetObject(GameObject object) override;
64+
65+
void setUp(Vector3 up) override;
66+
67+
void setFov(float fov) override;
68+
69+
void begin3dMode() override;
70+
71+
void end3dMode() override;
72+
73+
74+
private:
75+
76+
77+
//////////////////////--------------------------/////////////////////////
78+
79+
};
80+
81+
}
Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,57 @@
11
/*
22
** EPITECH PROJECT, 2022
3-
** CameraComponent.cpp
3+
** CameraComponentImpl.cpp
44
** File description:
5-
** CameraComponent.cpp
5+
** CameraComponentImpl.cpp
66
*/
77

88
#include "polymorph/Core.hpp"
9-
#include "CameraComponent.hpp"
9+
#include "CameraComponentImpl.hpp"
1010

1111

1212
namespace polymorph::engine
1313
{
1414

15-
CameraComponent::CameraComponent(GameObject gameObject) : Component("Camera", gameObject)
16-
{
17-
Current = this;
18-
}
15+
CameraComponentImpl::CameraComponentImpl(GameObject gameObject) : CameraComponent(gameObject) {}
1916

20-
bool CameraComponent::isTargetingObject()
17+
bool CameraComponentImpl::isTargetingObject()
2118
{
2219
return (TargetType == Object);
2320
}
2421

25-
GameObject CameraComponent::getTargetObject()
22+
GameObject CameraComponentImpl::getTargetObject()
2623
{
2724
return ObjectTarget;
2825
}
2926

30-
void CameraComponent::setTargetPosition(Vector3 targetPosition)
27+
void CameraComponentImpl::setTargetPosition(Vector3 targetPosition)
3128
{
3229
PointTarget = targetPosition;
3330
camera->setTarget(PointTarget);
34-
TargetType = CameraComponent::Point;
31+
TargetType = CameraComponentImpl::Point;
3532
}
3633

37-
void CameraComponent::setUp(Vector3 up)
34+
void CameraComponentImpl::setUp(Vector3 up)
3835
{
3936
camera->setUp(up);
4037
}
4138

42-
void CameraComponent::setFov(float fov)
39+
void CameraComponentImpl::setFov(float fov)
4340
{
4441
camera->setFOV(fov);
4542
}
4643

47-
void CameraComponent::begin3dMode()
44+
void CameraComponentImpl::begin3dMode()
4845
{
4946
camera->begin3DMode();
5047
}
5148

52-
void CameraComponent::end3dMode()
49+
void CameraComponentImpl::end3dMode()
5350
{
5451
camera->end3DMode();
5552
}
5653

57-
void CameraComponent::update()
54+
void CameraComponentImpl::update()
5855
{
5956
if (TargetType == CameraTargetType::Object && !!ObjectTarget)
6057
{
@@ -66,7 +63,7 @@ namespace polymorph::engine
6663
}
6764
}
6865

69-
void CameraComponent::start()
66+
void CameraComponentImpl::start()
7067
{
7168
if (TargetType == CameraTargetType::Object && !!ObjectTarget)
7269
{
@@ -78,10 +75,10 @@ namespace polymorph::engine
7875
}
7976
}
8077

81-
void CameraComponent::setTargetObject(GameObject object)
78+
void CameraComponentImpl::setTargetObject(GameObject object)
8279
{
8380
ObjectTarget = object;
8481
camera->setTarget(ObjectTarget->transform->getPosition());
85-
TargetType = CameraComponent::Object;
82+
TargetType = CameraComponentImpl::Object;
8683
}
8784
}

0 commit comments

Comments
 (0)