1 #ifndef M2MPARTIALMESH_H 2 #define M2MPARTIALMESH_H 6 #include <QSharedPointer> 23 : mImage(material->texture()) {}
29 return mImage.data() == other.mImage.data();
34 return !(*
this == other);
64 return !(*
this == other);
82 QVector3D v1, QVector2D t1,
83 QVector3D v2, QVector2D t2,
84 QVector3D v3, QVector2D t3,
85 QVector3D v4, QVector2D t4);
87 QVector3D
vertex(
int idx)
const;
114 QVector2D xzDirection,
119 bool upsideDown =
false);
123 QVector3D mV1, mV2, mV3, mV4;
124 QVector2D mT1, mT2, mT3, mT4;
138 QVector3D v1, QVector2D t1,
139 QVector3D v2, QVector2D t2,
140 QVector3D v3, QVector2D t3);
142 QVector<QVector3D>
verts()
const {
return {mV1, mV2, mV3}; }
145 QVector3D
normal()
const {
return mNormal; }
151 QVector3D mV1, mV2, mV3;
152 QVector2D mT1, mT2, mT3;
177 QSharedPointer<SimpleTexturedObject>
toObject()
const;
183 QVector<QVector3D> mVertexPositions;
184 QVector<QVector3D> mTriangleNormals;
185 QVector<SimpleTexturedObject::Triangle> mTriangles;
188 QVector<float> mReflAmbient;
189 QVector<float> mReflDiffuse;
190 QVector<float> mReflSpecular;
191 QVector<float> mShininess;
194 QVector<SimpleTexturedObject::TriangleTexCoords> mTriangleTextureCoordinates;
235 QMap<const QImage *, PreObject> mTexturesToObjects;
241 #endif // M2MPARTIALMESH_H QVector< QVector2D > textureCoords() const
Definition: m2mpartialmesh.h:143
float diffuse
Definition: m2mpartialmesh.h:50
PreObject(ImageInfo img)
Creates the PreObject with the given texture image.
Definition: m2mpartialmesh.cpp:158
bool operator!=(const PhongInfo &other) const
Definition: m2mpartialmesh.h:62
bool operator==(const ImageInfo &other) const
Definition: m2mpartialmesh.h:27
QVector3D vertex(int idx) const
Definition: m2mpartialmesh.cpp:23
Represents and helps construct a quadrilateral with one texture and a Phong material.
Definition: m2mpartialmesh.h:72
void addQuad(const Quad &q)
Adds the quad to this object, but does not change this object's texture image.
Definition: m2mpartialmesh.cpp:162
QSharedPointer< ImageAndSource > SharedImageAndSource
Definition: imageandsource.h:8
Trig(ImageInfo texture, PhongInfo material, QVector3D v1, QVector2D t1, QVector3D v2, QVector2D t2, QVector3D v3, QVector2D t3)
Definition: m2mpartialmesh.cpp:243
Class to allow piece-by-piece mesh construction.
Definition: m2mpartialmesh.h:201
ImageInfo()
Definition: m2mpartialmesh.h:19
QVector< QVector3D > verts() const
Definition: m2mpartialmesh.h:142
ImageInfo(SharedImageAndSource img)
Definition: m2mpartialmesh.h:21
void addPartialMesh(const PartialMeshData &p)
Definition: m2mpartialmesh.cpp:133
Definition: abstractpolygontilemesher.h:8
bool operator!=(const ImageInfo &other) const
Definition: m2mpartialmesh.h:32
Quad(QVector3D normal, ImageInfo texture, PhongInfo material, QVector3D v1, QVector2D t1, QVector3D v2, QVector2D t2, QVector3D v3, QVector2D t3, QVector3D v4, QVector2D t4)
Creates a quad with the given vertices. Vertices must be specified in counterclockwise order...
Definition: m2mpartialmesh.cpp:8
QVector2D texCoord(int idx) const
Definition: m2mpartialmesh.cpp:29
static Quad makeVerticalQuad(QVector3D center, QVector2D xzDirection, float width, float height, ImageInfo texture, PhongInfo material, bool upsideDown=false)
makeVerticalQuad Creates a vertical quad.
Definition: m2mpartialmesh.cpp:51
void addTrig(const Trig &t)
Definition: m2mpartialmesh.cpp:114
PartialMeshData & operator+=(const PartialMeshData &other)
Definition: m2mpartialmesh.h:221
QVector< QSharedPointer< SimpleTexturedObject > > constructObjects()
Constructs a list of meshes out of the data stored in this class.
Definition: m2mpartialmesh.cpp:145
bool operator==(const PhongInfo &other) const
Definition: m2mpartialmesh.h:54
void addQuad(const Quad &q)
addQuad Adds a quad to the mesh.
Definition: m2mpartialmesh.cpp:95
void addPreObject(const PreObject &o)
Definition: m2mpartialmesh.cpp:207
Class to wrap Phong reflection info.
Definition: m2mpartialmesh.h:42
float shininess
Definition: m2mpartialmesh.h:52
PhongInfo phongInfo() const
Definition: m2mpartialmesh.h:148
ImageInfo imageInfo() const
Definition: m2mpartialmesh.h:147
ImageInfo imageInfo() const
Definition: m2mpartialmesh.cpp:40
SharedImageAndSource image() const
Definition: m2mpartialmesh.h:25
float ambient
Definition: m2mpartialmesh.h:49
Definition: m2mpartialmesh.h:163
PhongInfo(const TileMaterial *material)
Definition: m2mpartialmesh.h:43
Definition: m2mpartialmesh.h:133
float specular
Definition: m2mpartialmesh.h:51
PartialMeshData & operator+(const PartialMeshData &other)
Definition: m2mpartialmesh.h:227
PhongInfo phongInfo() const
Definition: m2mpartialmesh.cpp:45
QVector3D normal() const
Definition: m2mpartialmesh.cpp:35
ImageInfo imageInfo() const
Definition: m2mpartialmesh.h:179
ImageInfo(const TileMaterial *material)
Definition: m2mpartialmesh.h:22
Definition: tilematerial.h:8
QVector3D normal() const
Definition: m2mpartialmesh.h:145
QSharedPointer< SimpleTexturedObject > toObject() const
Compiles this PreObject into a SimpleTexturedObject.
Definition: m2mpartialmesh.cpp:229
Class to wrap image info. This will be changed to use SharedImageAndSource when possible.
Definition: m2mpartialmesh.h:17
void addTrig(const Trig &t)
Definition: m2mpartialmesh.cpp:189