Support POLY_F4
This commit is contained in:
parent
2e2389ba9a
commit
2b37aa3db8
|
@ -13,8 +13,8 @@ namespace JabyEngine {
|
||||||
static constexpr auto CmdID = BitRange::from_to(29 - BitCorrection, 31 - BitCorrection);
|
static constexpr auto CmdID = BitRange::from_to(29 - BitCorrection, 31 - BitCorrection);
|
||||||
static constexpr auto GouraudShading = Bit(28 - BitCorrection);
|
static constexpr auto GouraudShading = Bit(28 - BitCorrection);
|
||||||
static constexpr auto FlatShading = !GouraudShading;
|
static constexpr auto FlatShading = !GouraudShading;
|
||||||
static constexpr auto QuardVertics = Bit(27 - BitCorrection);
|
static constexpr auto QuadVertics = Bit(27 - BitCorrection);
|
||||||
static constexpr auto TriVertics = !QuardVertics;
|
static constexpr auto TriVertics = !QuadVertics;
|
||||||
static constexpr auto Textured = Bit(26 - BitCorrection);
|
static constexpr auto Textured = Bit(26 - BitCorrection);
|
||||||
static constexpr auto Untextured = !Textured;
|
static constexpr auto Untextured = !Textured;
|
||||||
static constexpr auto SemiTransparent = Bit(25 - BitCorrection);
|
static constexpr auto SemiTransparent = Bit(25 - BitCorrection);
|
||||||
|
@ -117,7 +117,11 @@ namespace JabyEngine {
|
||||||
Vertex vertex2; // d
|
Vertex vertex2; // d
|
||||||
|
|
||||||
constexpr POLY_F3() = default;
|
constexpr POLY_F3() = default;
|
||||||
constexpr POLY_F3(const Vertex (&verticies)[3], Color24 color) : color(color), code(IdentityCode), vertex0(verticies[0]), vertex1(verticies[1]), vertex2(verticies[2]) {
|
constexpr POLY_F3(const Vertex (&verticies)[3], Color24 color) :
|
||||||
|
color(color), code(IdentityCode),
|
||||||
|
vertex0(verticies[0]),
|
||||||
|
vertex1(verticies[1]),
|
||||||
|
vertex2(verticies[2]) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -216,15 +220,44 @@ namespace JabyEngine {
|
||||||
color2(verticies_ex[2].color), vertex2(verticies_ex[2].position), page2(verticies_ex[2].page) {}
|
color2(verticies_ex[2].color), vertex2(verticies_ex[2].position), page2(verticies_ex[2].page) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct POLY_F4 : public internal::IsPrimitive, public internal::CodeInterface<POLY_F4> {
|
||||||
|
static constexpr auto IdentityCode = Code(POLY_F3::IdentityCode).set(Code::QuadVertics);
|
||||||
|
|
||||||
|
Color24 color; // a
|
||||||
|
Code code = IdentityCode; // a
|
||||||
|
Vertex vertex0; // b
|
||||||
|
Vertex vertex1; // c
|
||||||
|
Vertex vertex2; // d
|
||||||
|
Vertex vertex3; // e
|
||||||
|
|
||||||
|
constexpr POLY_F4() = default;
|
||||||
|
constexpr POLY_F4(const Vertex (&verticies)[4], Color24 color) :
|
||||||
|
color(color), code(IdentityCode),
|
||||||
|
vertex0(verticies[0]),
|
||||||
|
vertex1(verticies[1]),
|
||||||
|
vertex2(verticies[2]),
|
||||||
|
vertex3(verticies[3]) {}
|
||||||
|
constexpr POLY_F4(const AreaI16& area, Color24 color) : POLY_F4({
|
||||||
|
area.position,
|
||||||
|
area.position.move(area.size.width, 0),
|
||||||
|
area.position.move(0, area.size.height),
|
||||||
|
area.position.move(area.size.width, area.size.height)},
|
||||||
|
color) {}
|
||||||
|
};
|
||||||
|
|
||||||
typedef POLY_F3 FlatTriangle;
|
typedef POLY_F3 FlatTriangle;
|
||||||
typedef POLY_FT3 FlatTexturedTriangle;
|
typedef POLY_FT3 FlatTexturedTriangle;
|
||||||
typedef POLY_G3 GouraudTriangle;
|
typedef POLY_G3 GouraudTriangle;
|
||||||
typedef POLY_GT3 GouraudTexturedTriangle;
|
typedef POLY_GT3 GouraudTexturedTriangle;
|
||||||
|
|
||||||
|
typedef POLY_F4 FlatRectangle;
|
||||||
|
|
||||||
static_assert(sizeof(POLY_F3) == 16);
|
static_assert(sizeof(POLY_F3) == 16);
|
||||||
static_assert(sizeof(POLY_FT3) == 28);
|
static_assert(sizeof(POLY_FT3) == 28);
|
||||||
static_assert(sizeof(POLY_G3) == 24);
|
static_assert(sizeof(POLY_G3) == 24);
|
||||||
static_assert(sizeof(POLY_GT3) == 36);
|
static_assert(sizeof(POLY_GT3) == 36);
|
||||||
|
|
||||||
|
static_assert(sizeof(POLY_F4) == 20);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -81,6 +81,17 @@ namespace JabyEngine {
|
||||||
constexpr Position() = default;
|
constexpr Position() = default;
|
||||||
constexpr Position(T x, T y) : x(x), y(y) {
|
constexpr Position(T x, T y) : x(x), y(y) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
constexpr Position& move(T dx, T dy) {
|
||||||
|
this->x += dx;
|
||||||
|
this->y += dy;
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr Position move(T dx, T dy) const {
|
||||||
|
return Position(this->x, this->y).move(dx, dy);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
|
Loading…
Reference in New Issue