Skip to content

Commit

Permalink
create draft of ReferenceModels component
Browse files Browse the repository at this point in the history
Signed-off-by: Ashton Larkin <[email protected]>
  • Loading branch information
adlarkin committed Apr 1, 2021
1 parent 0802698 commit de6da01
Showing 1 changed file with 75 additions and 0 deletions.
75 changes: 75 additions & 0 deletions include/ignition/gazebo/components/ReferenceModels.hh
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
/*
* Copyright (C) 2021 Open Source Robotics Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
#ifndef IGNITION_GAZEBO_COMPONENTS_REFERENCEMODELS_HH_
#define IGNITION_GAZEBO_COMPONENTS_REFERENCEMODELS_HH_

// TODO(adlarkin) add missing #include headers

namespace ignition
{
namespace gazebo
{
// Inline bracket to help doxygen filtering.
inline namespace IGNITION_GAZEBO_VERSION_NAMESPACE {
namespace components
{
/// \brief Data structure that holds information about which models for
/// a given link view this link as the model's canonical link
struct ReferenceModelsInfo
{
/// \brief The models which this link serves as a canonical link for
std::set<Entity> models;

// TODO(adlarkin) fill in methods below

// this should be called when a model is assigned to a canonical link
public: bool AddModel(const Entity &_model);

// this should be called when a model is entity is removed/deleted
public: bool RemoveModel(const Entity &_model);

public: bool operator==(const ReferenceModelsInfo &_info) const;

public: bool operator!=(const ReferenceModelsInfo &_info) const;
};
}

namespace serializers
{
/// \brief Serializer for ReferenceModelsInfo object
class ReferenceModelsInfoSerializer
{
// TODO(adlarkin) write serialization methods
};
}

namespace components
{
/// \brief A component that gives a mapping between a link and all of the
/// models this link serves as a canonical link for. This component should
/// only be applied to links.
using ReferenceModels =
Component<ReferenceModelsInfo, class ReferenceModelsTag,
serializers::ReferenceModelsInfoSerializer>;
IGN_GAZEBO_REGISTER_COMPONENT("ign_gazebo_components.ReferenceModels",
ReferenceModels)
}
}
}
}

#endif

0 comments on commit de6da01

Please sign in to comment.