5template<size_t pixelCount>
6Camera<pixelCount>::Camera(Transform* transform, PixelGroup<pixelCount>* pixelGroup) {
7 this->transform = transform;
8 this->pixelGroup = pixelGroup;
13template<size_t pixelCount>
14Camera<pixelCount>::Camera(Transform* transform, CameraLayout* cameraLayout, PixelGroup<pixelCount>* pixelGroup) {
15 this->transform = transform;
16 this->pixelGroup = pixelGroup;
17 this->cameraLayout = cameraLayout;
19 transform->SetBaseRotation(cameraLayout->GetRotation());
24template<size_t pixelCount>
25PixelGroup<pixelCount>* Camera<pixelCount>::GetPixelGroup() {
29template<size_t pixelCount>
30Vector2D Camera<pixelCount>::GetCameraMinCoordinate() {
32 for(uint16_t i = 0; i < pixelGroup->GetPixelCount(); i++){
33 minC.X = pixelGroup->GetCoordinate(i).X < minC.X ? pixelGroup->GetCoordinate(i).X : minC.X;
34 minC.Y = pixelGroup->GetCoordinate(i).Y < minC.Y ? pixelGroup->GetCoordinate(i).Y : minC.Y;
43template<size_t pixelCount>
44Vector2D Camera<pixelCount>::GetCameraMaxCoordinate() {
46 for(uint16_t i = 0; i < pixelGroup->GetPixelCount(); i++){
47 maxC.X = pixelGroup->GetCoordinate(i).X > maxC.X ? pixelGroup->GetCoordinate(i).X : maxC.X;
48 maxC.Y = pixelGroup->GetCoordinate(i).Y > maxC.Y ? pixelGroup->GetCoordinate(i).Y : maxC.Y;
57template<size_t pixelCount>
58Vector2D Camera<pixelCount>::GetCameraCenterCoordinate() {
59 return (GetCameraMinCoordinate() + GetCameraMaxCoordinate()) / 2.0f;
62template<size_t pixelCount>
63Vector3D Camera<pixelCount>::GetCameraTransformMin() {
64 Vector2D minV2 = GetCameraMinCoordinate();
66 return transform->GetRotation().RotateVector(Vector3D(minV2.X, minV2.Y, 0) * transform->GetScale()) + transform->GetPosition();
69template<size_t pixelCount>
70Vector3D Camera<pixelCount>::GetCameraTransformMax() {
71 Vector2D maxV2 = GetCameraMaxCoordinate();
73 return transform->GetRotation().RotateVector(Vector3D(maxV2.X, maxV2.Y, 0) * transform->GetScale()) + transform->GetPosition();
76template<size_t pixelCount>
77Vector3D Camera<pixelCount>::GetCameraTransformCenter() {
78 return (GetCameraTransformMin() + GetCameraTransformMax()) / 2.0f;