#pragma once #include "ControlledMotor.h" #include "DistanceSensor.h" #include "Motor.h" #include "Thing.h" #include "Vector2.h" #include "Vector3.h" namespace Passer { namespace RoboidControl { /// @brief A plament is used to specify where a Thing is placed on the Roboid. class Placement { public: /// @brief Default constructor with a zero placement Placement(); /// @brief Placement of a Thing on the Roboid /// @param thing The Thing which is placed /// @param position The position of the Thing in carthesian coordinated /// @param horizontalDirection The horizontal direction angle of the Thing /// @param verticalAngle The vertical direction angle of the Thing Placement(Thing* thing, Vector3 position = Vector3::zero, float horizontalDirection = 0.0F, float verticalAngle = 0.0F); /// @brief Placement of a Thing on the roboit without position /// @param thing The Thing which is place /// @param horizontalDirection The horizontal direction angle of the Thing /// @param verticalAngle The vertical direction angle of the Thing Placement(Thing* thing, float horizontalDirection, float verticalAnlge = 0.0F); /// @brief The parent placement in the Roboid hierarchy /// @remark Reserved for future use Placement* parent = nullptr; /// @brief An array of children of this placement in the Roboid hierarchy /// @remark Reserved for future use Placement** children = nullptr; /// @brief The number of children of this placemet in the Roboid hierarchy /// @remark Reserved for future use unsigned int childCount = 0; /// @brief The Thing which is placed Thing* thing; /// @brief The position of the Thing in carthesian coordinates Vector3 position; /// @brief The angle or direction of the Thing in the horizontal plane float horizontalDirection; /// @brief The angle or direction of the Thing in the vertical plane float verticalDirection; }; } // namespace RoboidControl } // namespace Passer using namespace Passer::RoboidControl;