MeshRepresentation.h
Go to the documentation of this file.
// This file is a part of the OpenSurgSim project.
// Copyright 2013, SimQuest Solutions Inc.
//
// 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 SURGSIM_GRAPHICS_MESHREPRESENTATION_H
#define SURGSIM_GRAPHICS_MESHREPRESENTATION_H
#include "SurgSim/Framework/Asset.h"
#include "SurgSim/Framework/FrameworkConvert.h"
#include "SurgSim/DataStructures/DataStructuresConvert.h"
#include "SurgSim/Math/MathConvert.h"
#include "SurgSim/Graphics/Mesh.h"
#include "SurgSim/Graphics/Representation.h"
namespace SurgSim
{
namespace Graphics
{
class MeshRepresentation : public virtual Representation
{
public:
enum UpdateOption
{
UPDATE_OPTION_NONE = 0,
UPDATE_OPTION_VERTICES = 0x01,
UPDATE_OPTION_COLORS = 0x02,
UPDATE_OPTION_TEXTURES = 0x04,
UPDATE_OPTION_TRIANGLES = 0x08,
UPDATE_OPTION_ALL = UPDATE_OPTION_VERTICES | UPDATE_OPTION_COLORS |
UPDATE_OPTION_TEXTURES | UPDATE_OPTION_TRIANGLES
};
explicit MeshRepresentation(const std::string& name) : Representation(name)
{
SURGSIM_ADD_SERIALIZABLE_PROPERTY(MeshRepresentation, std::shared_ptr<SurgSim::Framework::Asset>, Mesh, getMesh,
setMesh);
SURGSIM_ADD_SERIALIZABLE_PROPERTY(MeshRepresentation, int, UpdateOptions, getUpdateOptions, setUpdateOptions);
SURGSIM_ADD_SETTER(MeshRepresentation, std::string, MeshFileName, loadMesh);
}
virtual ~MeshRepresentation() {}
virtual std::shared_ptr<Mesh> getMesh() = 0;
virtual void setMesh(std::shared_ptr<SurgSim::Framework::Asset> mesh) = 0;
virtual void loadMesh(const std::string& fileName) = 0;
virtual void setShape(std::shared_ptr<SurgSim::Math::Shape> shape) = 0;
virtual void setUpdateOptions(int val) = 0;
virtual int getUpdateOptions() const = 0;
virtual void updateMesh(const Mesh& mesh) = 0;
};
}; // Graphics
}; // SurgSim
#endif // SURGSIM_GRAPHICS_MESHREPRESENTATION_H
SurgSim
Definition: CompoundShapeToGraphics.cpp:29
SurgSim::Graphics::MeshRepresentation
Graphics representation of a mesh, can be initialized from a Mesh structure.
Definition: MeshRepresentation.h:34
DataStructuresConvert.h
SurgSim::Graphics::Mesh
Definition: Mesh.h:57
SurgSim::Graphics::MeshRepresentation::UPDATE_OPTION_VERTICES
Definition: MeshRepresentation.h:41
SurgSim::Graphics::MeshRepresentation::loadMesh
virtual void loadMesh(const std::string &fileName)=0
Convenience function to trigger the load of the mesh with the given filename.
SurgSim::Graphics::MeshRepresentation::UPDATE_OPTION_TEXTURES
Definition: MeshRepresentation.h:43
SurgSim::Graphics::MeshRepresentation::~MeshRepresentation
virtual ~MeshRepresentation()
Destructor.
Definition: MeshRepresentation.h:60
SurgSim::Graphics::MeshRepresentation::UPDATE_OPTION_COLORS
Definition: MeshRepresentation.h:42
Mesh.h
SurgSim::Graphics::MeshRepresentation::UPDATE_OPTION_ALL
Definition: MeshRepresentation.h:45
MathConvert.h
This contains a series of functions to encode and decode Eigen data structures to and from YAML nodes...
SurgSim::Graphics::MeshRepresentation::getUpdateOptions
virtual int getUpdateOptions() const =0
Gets update options for this mesh.
Representation.h
SurgSim::Graphics::MeshRepresentation::setUpdateOptions
virtual void setUpdateOptions(int val)=0
Sets the structures that are expected to change during the lifetime of the mesh, these will be update...
Asset.h
SurgSim::Graphics::MeshRepresentation::setMesh
virtual void setMesh(std::shared_ptr< SurgSim::Framework::Asset > mesh)=0
Sets the mesh.
SURGSIM_ADD_SETTER
#define SURGSIM_ADD_SETTER(class, type, property, setter)
A macro to register a setter that can be used from YAML, and as a writeable property use this to prov...
Definition: Accessible.h:236
SURGSIM_ADD_SERIALIZABLE_PROPERTY
#define SURGSIM_ADD_SERIALIZABLE_PROPERTY(class, type, property, getter, setter)
A macro to register a serializable property, this needs to support reading, writing and all the conve...
Definition: Accessible.h:225
SurgSim::Graphics::Representation
Base graphics representation class, which defines the interface that all graphics representations mus...
Definition: Representation.h:39
SurgSim::Graphics::MeshRepresentation::UPDATE_OPTION_NONE
Definition: MeshRepresentation.h:40
SurgSim::Graphics::MeshRepresentation::getMesh
virtual std::shared_ptr< Mesh > getMesh()=0
Gets the mesh.
SurgSim::Graphics::MeshRepresentation::updateMesh
virtual void updateMesh(const Mesh &mesh)=0
SurgSim::Graphics::MeshRepresentation::MeshRepresentation
MeshRepresentation(const std::string &name)
Constructor.
Definition: MeshRepresentation.h:51
SurgSim::Graphics::MeshRepresentation::UpdateOption
UpdateOption
Definition: MeshRepresentation.h:38
FrameworkConvert.h
SurgSim::Graphics::MeshRepresentation::UPDATE_OPTION_TRIANGLES
Definition: MeshRepresentation.h:44
SurgSim::Graphics::MeshRepresentation::setShape
virtual void setShape(std::shared_ptr< SurgSim::Math::Shape > shape)=0
Sets the shape of the representation param shape the shape of this representation.