summaryrefslogtreecommitdiff
path: root/src/engine/editor/ObjectPicker.h
blob: cf1e4e12d0fe914cd4dc8dfd37a849495658775a (plain)
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
#pragma once

#include <libultraship/libultraship.h>
#include <libultra/gbi.h>
#include "Collision.h"
#include "Gizmo.h"
#include "GameObject.h"
#include "engine/Matrix.h"

namespace TrackEditor {
    class ObjectPicker {
    public:
        void SelectObject(std::vector<GameObject*> objects);
        void DragHandle();
        void Draw();
        void FindObject(Ray ray, std::vector<GameObject*> objects);
        void Load();
        void Tick();
        Gizmo eGizmo;
        std::variant<AActor*, OObject*, GameObject*> _selected;
    private:
        bool _draw = false;
        GameObject* _lastSelected;
        s32 Inverse(MtxF* src, MtxF* dest);
        void Copy(MtxF* src, MtxF* dest);
        void Clear(MtxF* mf);
        // actor, distance from camera
        std::pair<AActor*, float> CheckAActorRay(Ray ray);
        std::pair<OObject*, float> CheckOObjectRay(Ray ray);
        std::pair<GameObject*, float> CheckEditorObjectRay(Ray ray);
        bool Debug = false;
    };
}