#ifndef EDITSCENE_SMART_OBJECT_HPP
#define EDITSCENE_SMART_OBJECT_HPP
#pragma once

#include <Ogre.h>
#include <vector>
#include <string>

/**
 * Smart Object component.
 *
 * Defines an interactive object in the world that characters can
 * navigate to and perform GOAP actions on.
 *
 * The entity's TransformComponent defines the position/orientation.
 * Characters will pathfind to within `radius` distance in XZ plane
 * and `height` difference in Y, then execute the selected action.
 */
struct SmartObjectComponent {
	// Interaction radius in XZ plane
	float radius = 1.0f;

	// Maximum height difference for interaction
	float height = 1.8f;

	// Names of GOAP actions (from ActionDatabase) that this object provides
	std::vector<Ogre::String> actionNames;

	SmartObjectComponent() = default;

	explicit SmartObjectComponent(float radius_, float height_)
		: radius(radius_)
		, height(height_)
	{
	}
};

#endif // EDITSCENE_SMART_OBJECT_HPP
