src/linetypes/compoundobject.h

Tue, 15 Mar 2022 18:56:02 +0200

author
Teemu Piippo <teemu@hecknology.net>
date
Tue, 15 Mar 2022 18:56:02 +0200
changeset 184
35bbfad4d0f4
parent 183
97b591813c8b
child 186
922662adb72a
permissions
-rw-r--r--

Add missing svg icon

#pragma once
#include "object.h"

class Model;

namespace ldraw
{
	class CompoundObject;
}

/**
 * @brief An abstract object that has a transformation mmatrix and can be inverted.
 * It can be inlined into multiple objects.
 */
class ldraw::CompoundObject : public ColoredObject
{
public:
	CompoundObject() = default;
	CompoundObject(
		const glm::mat4& transformation,
		const Color color = ldraw::MAIN_COLOR);
	QVariant getProperty(Property property) const override;
	glm::vec3 position() const;
	void invert(GetPolygonsContext*context) override;
	Model* resolve(const ModelId callingModelId, DocumentManager* documents) const;
	QDataStream& serialize(QDataStream& stream) const override;
	QDataStream& deserialize(QDataStream& stream) override;
	std::optional<Axis> flatDimension(GetPolygonsContext *context) const;
	glm::mat4 transformation;
	bool isInverted = false;
protected:
	void setProperty(SetPropertyResult* result, const PropertyKeyValue& pair) override;
};

mercurial