From 847962910f0bff071f3bf07c9abb87764fb6cac3 Mon Sep 17 00:00:00 2001 From: claude-bot Date: Mon, 13 Jul 2026 12:40:03 +0000 Subject: Import aap/librw @ master Snapshot for re3/reVC vendoring, per @lzcnt. Source: https://github.com/aap/librw (master). --- tools/im3d/trilist.cpp | 202 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 tools/im3d/trilist.cpp (limited to 'tools/im3d/trilist.cpp') diff --git a/tools/im3d/trilist.cpp b/tools/im3d/trilist.cpp new file mode 100644 index 0000000..6fa4014 --- /dev/null +++ b/tools/im3d/trilist.cpp @@ -0,0 +1,202 @@ +#include +#include + +#include "im3d.h" + +float TriListData[36][5] = { + /* front */ + { 1.000f, 1.000f, 1.000f, 1.000f, 1.000f}, + {-1.000f, -1.000f, 1.000f, 0.000f, 0.000f}, + { 1.000f, -1.000f, 1.000f, 1.000f, 0.000f}, + { 1.000f, 1.000f, 1.000f, 1.000f, 1.000f}, + {-1.000f, 1.000f, 1.000f, 0.000f, 1.000f}, + {-1.000f, -1.000f, 1.000f, 0.000f, 0.000f}, + /* back */ + {-1.000f, -1.000f, -1.000f, 1.000f, 1.000f}, + {-1.000f, 1.000f, -1.000f, 1.000f, 0.000f}, + { 1.000f, 1.000f, -1.000f, 0.000f, 0.000f}, + {-1.000f, -1.000f, -1.000f, 1.000f, 1.000f}, + { 1.000f, 1.000f, -1.000f, 0.000f, 0.000f}, + { 1.000f, -1.000f, -1.000f, 0.000f, 1.000f}, + /* top */ + { 1.000f, 1.000f, 1.000f, 1.000f, 1.000f}, + { 1.000f, 1.000f, -1.000f, 1.000f, 0.000f}, + {-1.000f, 1.000f, -1.000f, 0.000f, 0.000f}, + { 1.000f, 1.000f, 1.000f, 1.000f, 1.000f}, + {-1.000f, 1.000f, -1.000f, 0.000f, 0.000f}, + {-1.000f, 1.000f, 1.000f, 0.000f, 1.000f}, + /* bottom */ + {-1.000f, -1.000f, -1.000f, 1.000f, 1.000f}, + { 1.000f, -1.000f, 1.000f, 0.000f, 0.000f}, + {-1.000f, -1.000f, 1.000f, 1.000f, 0.000f}, + {-1.000f, -1.000f, -1.000f, 1.000f, 1.000f}, + { 1.000f, -1.000f, -1.000f, 0.000f, 1.000f}, + { 1.000f, -1.000f, 1.000f, 0.000f, 0.000f}, + /* left */ + {-1.000f, -1.000f, -1.000f, 1.000f, 1.000f}, + {-1.000f, 1.000f, 1.000f, 0.000f, 0.000f}, + {-1.000f, 1.000f, -1.000f, 1.000f, 0.000f}, + {-1.000f, -1.000f, -1.000f, 1.000f, 1.000f}, + {-1.000f, -1.000f, 1.000f, 0.000f, 1.000f}, + {-1.000f, 1.000f, 1.000f, 0.000f, 0.000f}, + /* right */ + { 1.000f, 1.000f, 1.000f, 1.000f, 1.000f}, + { 1.000f, -1.000f, 1.000f, 1.000f, 0.000f}, + { 1.000f, -1.000f, -1.000f, 0.000f, 0.000f}, + { 1.000f, 1.000f, 1.000f, 1.000f, 1.000f}, + { 1.000f, -1.000f, -1.000f, 0.000f, 0.000f}, + { 1.000f, 1.000f, -1.000f, 0.000f, 1.000f} +}; + +float IndexedTriListData[8][5] = { + { 1.000f, 1.000f, 1.000f, 1.000f, 0.000f}, + {-1.000f, 1.000f, 1.000f, 1.000f, 1.000f}, + {-1.000f, -1.000f, 1.000f, 0.500f, 1.000f}, + { 1.000f, -1.000f, 1.000f, 0.500f, 0.000f}, + + { 1.000f, 1.000f, -1.000f, 0.500f, 0.000f}, + {-1.000f, 1.000f, -1.000f, 0.500f, 1.000f}, + {-1.000f, -1.000f, -1.000f, 0.000f, 1.000f}, + { 1.000f, -1.000f, -1.000f, 0.000f, 0.000f} +}; + +rw::uint16 IndexedTriListIndices[36] = { + /* front */ + 0, 1, 3, 1, 2, 3, + /* back */ + 7, 5, 4, 5, 7, 6, + /* left */ + 6, 2, 1, 1, 5, 6, + /* right */ + 0, 3, 4, 4, 3, 7, + /* top */ + 1, 0, 4, 1, 4, 5, + /* bottom */ + 2, 6, 3, 6, 7, 3 +}; + +rw::RWDEVICE::Im3DVertex TriList[36]; +rw::RWDEVICE::Im3DVertex IndexedTriList[8]; + + +void +TriListCreate(void) +{ + for(int i = 0; i < 36; i++){ + TriList[i].setX(TriListData[i][0]); + TriList[i].setY(TriListData[i][1]); + TriList[i].setZ(TriListData[i][2]); + TriList[i].setU(TriListData[i][3]); + TriList[i].setV(TriListData[i][4]); + } +} + +void +TriListSetColor(bool white) +{ + int i; + rw::RGBA SolidColor1 = SolidRed; + rw::RGBA SolidColor2 = SolidBlue; + rw::RGBA SolidColor3 = SolidGreen; + rw::RGBA SolidColor4 = SolidYellow; + rw::RGBA SolidColor5 = SolidCyan; + rw::RGBA SolidColor6 = SolidPurple; + + if(white){ + SolidColor1 = SolidWhite; + SolidColor2 = SolidWhite; + SolidColor3 = SolidWhite; + SolidColor4 = SolidWhite; + SolidColor5 = SolidWhite; + SolidColor6 = SolidWhite; + } + + for(i = 0; i < 6; i++) + TriList[i].setColor(SolidColor1.red, SolidColor1.green, + SolidColor1.blue, SolidColor1.alpha); + for(; i < 12; i++) + TriList[i].setColor(SolidColor2.red, SolidColor2.green, + SolidColor2.blue, SolidColor2.alpha); + for(; i < 18; i++) + TriList[i].setColor(SolidColor3.red, SolidColor3.green, + SolidColor3.blue, SolidColor3.alpha); + for(; i < 24; i++) + TriList[i].setColor(SolidColor4.red, SolidColor4.green, + SolidColor4.blue, SolidColor4.alpha); + for(; i < 30; i++) + TriList[i].setColor(SolidColor5.red, SolidColor5.green, + SolidColor5.blue, SolidColor5.alpha); + for(; i < 36; i++) + TriList[i].setColor(SolidColor6.red, SolidColor6.green, + SolidColor6.blue, SolidColor6.alpha); +} + +void +TriListRender(rw::Matrix *transform, rw::uint32 transformFlags) +{ + rw::im3d::Transform(TriList, 36, transform, transformFlags); + rw::im3d::RenderPrimitive(rw::PRIMTYPETRILIST); + rw::im3d::End(); +} + + +void +IndexedTriListCreate(void) +{ + for(int i = 0; i < 8; i++){ + IndexedTriList[i].setX(IndexedTriListData[i][0]); + IndexedTriList[i].setY(IndexedTriListData[i][1]); + IndexedTriList[i].setZ(IndexedTriListData[i][2]); + IndexedTriList[i].setU(IndexedTriListData[i][3]); + IndexedTriList[i].setV(IndexedTriListData[i][4]); + } +} + +void +IndexedTriListSetColor(bool white) +{ + rw::RGBA SolidColor1 = SolidRed; + rw::RGBA SolidColor2 = SolidYellow; + rw::RGBA SolidColor3 = SolidBlack; + rw::RGBA SolidColor4 = SolidPurple; + rw::RGBA SolidColor5 = SolidGreen; + rw::RGBA SolidColor6 = SolidCyan; + rw::RGBA SolidColor7 = SolidBlue; + rw::RGBA SolidColor8 = SolidWhite; + + if(white){ + SolidColor1 = SolidWhite; + SolidColor2 = SolidWhite; + SolidColor3 = SolidWhite; + SolidColor4 = SolidWhite; + SolidColor5 = SolidWhite; + SolidColor6 = SolidWhite; + SolidColor7 = SolidWhite; + SolidColor8 = SolidWhite; + } + + IndexedTriList[0].setColor(SolidColor1.red, SolidColor1.green, + SolidColor1.blue, SolidColor1.alpha); + IndexedTriList[1].setColor(SolidColor2.red, SolidColor2.green, + SolidColor2.blue, SolidColor2.alpha); + IndexedTriList[2].setColor(SolidColor3.red, SolidColor3.green, + SolidColor3.blue, SolidColor3.alpha); + IndexedTriList[3].setColor(SolidColor4.red, SolidColor4.green, + SolidColor4.blue, SolidColor4.alpha); + IndexedTriList[4].setColor(SolidColor5.red, SolidColor5.green, + SolidColor5.blue, SolidColor5.alpha); + IndexedTriList[5].setColor(SolidColor6.red, SolidColor6.green, + SolidColor6.blue, SolidColor6.alpha); + IndexedTriList[6].setColor(SolidColor7.red, SolidColor7.green, + SolidColor7.blue, SolidColor7.alpha); + IndexedTriList[7].setColor(SolidColor8.red, SolidColor8.green, + SolidColor8.blue, SolidColor8.alpha); +} + +void +IndexedTriListRender(rw::Matrix *transform, rw::uint32 transformFlags) +{ + rw::im3d::Transform(IndexedTriList, 8, transform, transformFlags); + rw::im3d::RenderIndexedPrimitive(rw::PRIMTYPETRILIST, IndexedTriListIndices, 36); + rw::im3d::End(); +} -- cgit v1.2.3