/******************************************************************************
*	File		-	properties_view.h
*	Author		-	Joey Pollack
*	Date		-	2022/01/26 (y/m/d)
*	Mod Date	-	2022/01/26 (y/m/d)
*	Description	-	Displayes the properties and components(?) of the selected
*                   object.
******************************************************************************/

#include "properties_view.h"
#include <dearimgui/imgui.h>
#include <editor/editor.h>
#include <world/entity.h>
#include <world/components.h>
#include <editor/component_guis.h>

namespace lunarium { namespace editor 
{
    PropertiesView::PropertiesView()
        : Panel("Properties", gui::PanelDockZone::DDZ_RIGHT, true), mpSelectedAsset(nullptr), mpSelectedEntity(nullptr)
    {
        
    }

    bool PropertiesView::DoFrame()
    {
        if (!mIsOpen)
            return false;

        if (!ImGui::Begin(GetName(), &mIsOpen, ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar))
        {
            ImGui::End();
            return false;
        }

        if (mpSelectedEntity)
        {
            // TODO: iterate through components
            if (mpSelectedEntity->HasComponent<TagComponent>())
            {
                CompGui::RenderTagComp(mpSelectedEntity->GetComponent<TagComponent>());
            }
        }

        ImGui::End();
        return true;
    }

    void PropertiesView::SetSelection(Entity* pEntity)
    {
        mpSelectedAsset = nullptr;
        mpSelectedEntity = pEntity;
    }

    void PropertiesView::SetSelection(EditorAsset* pAsset)
    {
        mpSelectedEntity = nullptr;
        mpSelectedAsset = pAsset;
    }


}}