25 #include <QMainWindow>
35 for (
ccHObject *
object : selectedEntities) {
36 if (object->isKindOf(
type)) {
37 targetObj.push_back(
object);
42 object->filterChildren(internalContainer,
true,
type);
43 if (!internalContainer.empty()) {
44 targetObj.insert(targetObj.end(), internalContainer.begin(),
45 internalContainer.end());
57 for (
auto obj : targetObjContainer) {
60 viewports.push_back(viewport);
72 for (
auto obj : targetObjContainer) {
73 auto *mesh =
dynamic_cast<ccMesh *
>(obj);
74 if (mesh && mesh->hasTextures()) {
75 meshes.push_back(mesh);
81 qAnimation::qAnimation(QObject *parent)
87 if (m_action ==
nullptr) {
94 if (viewports.size() >= 2 || !meshes.empty()) {
95 m_action->setEnabled(
true);
98 m_action->setEnabled(
false);
99 m_action->setToolTip(tr(
"%1\nAt least 2 viewports must be selected.")
104 QList<QAction *> qAnimation::getActions() {
108 m_action =
new QAction(
getName(),
this);
112 connect(m_action, &QAction::triggered,
this, &qAnimation::doAction);
115 return QList<QAction *>{m_action};
119 void qAnimation::doAction() {
138 std::vector<std::vector<std::string>> textureFileList;
139 for (
auto &mesh : meshes) {
140 auto *materials =
const_cast<ccMaterialSet *
>(mesh->getMaterialSet());
141 std::vector<std::string> textureFiles;
143 for (
int i = 0; i < materials->size(); ++i) {
145 materials->at(i)->getTextureFilename()));
148 textureFileList.push_back(textureFiles);
151 Q_ASSERT((viewports.size() >= 2 ||
156 .arg(viewports.size()));
158 QString(
"[qAnimation] Selected meshes: %1").arg(meshes.size()));
162 if (!videoDlg.init(viewports, meshes)) {
164 "Failed to initialize the plugin dialog (not enough memory?)",
172 for (std::size_t i = 0; i < meshes.size(); ++i) {
173 auto &mesh = meshes[i];
174 if (mesh && mesh->getMaterialSet()) {
175 if (!mesh->updateTextures(textureFileList[i])) {
177 .arg(mesh->getName()));
184 if (videoDlg.exportTrajectoryOnExit() && videoDlg.getTrajectory()) {
int64_t CV_CLASS_ENUM
Type of object type flags (64 bits)
static bool Warning(const char *format,...)
Prints out a formatted warning message in console.
static bool Error(const char *format,...)
Display an error dialog with formatted message.
virtual QString getName() const override
Returns (short) name (for menu entry, etc.)
virtual QString getDescription() const override
Returns long name/description (for tooltip, etc.)
virtual QIcon getIcon() const override
Returns icon.
virtual void showColors(bool state)
Sets colors visibility.
Hierarchical CLOUDVIEWER Object.
std::vector< ccHObject * > Container
Standard instances container (for children, etc.)
Mesh (triangle) material.
void setColor(const ecvColor::Rgb &col)
Sets the polyline color.
void setWidth(PointCoordinateType width)
Sets the width of the line.
Standard ECV plugin interface.
virtual ecvMainAppInterface * getMainAppInterface()
A callback pointer to the main app interface for use by plugins.
ecvMainAppInterface * m_app
Main application interface.
virtual QMainWindow * getMainWindow()=0
Returns main window.
virtual QWidget * getActiveWindow()=0
virtual const ccHObject::Container & getSelectedEntities() const =0
Returns currently selected entities ("read only")
virtual void addToDB(ccHObject *obj, bool updateZoom=false, bool autoExpandDBTree=true, bool checkDimensions=false, bool autoRedraw=true)=0
virtual void dispToConsole(QString message, ConsoleMessageLevel level=STD_CONSOLE_MESSAGE)=0
Dialog for qAnimation plugin.
constexpr Rgb yellow(MAX, MAX, 0)
static ViewPortList GetSelectedViewPorts(const ccHObject::Container &selectedEntities)
std::vector< cc2DViewportObject * > ViewPortList
std::vector< ccMesh * > MeshList
static void GetSelectedObjects(const ccHObject::Container &selectedEntities, CV_CLASS_ENUM type, ccHObject::Container &targetObj)
static MeshList GetSelectedMeshes(const ccHObject::Container &selectedEntities)