File indexing completed on 2026-04-09 07:48:52
0001
0002
0003
0004
0005
0006
0007
0008 #include "OPTICKS_LOG.hh"
0009 #include "SSim.hh"
0010 #include "stree.h"
0011 #include "ssys.h"
0012 #include "SScene.h"
0013 #include "CSGFoundry.h"
0014
0015 struct CSGFoundryLoadTest
0016 {
0017 static int Load();
0018 static int getMeshPrim();
0019 static int descPrimRange();
0020 static int CompareRanges();
0021 static int CSGPrim_AABB_Overlap();
0022
0023 static int Main(int argc, char** argv);
0024 };
0025
0026
0027 inline int CSGFoundryLoadTest::Main(int argc, char** argv)
0028 {
0029 OPTICKS_LOG(argc, argv);
0030
0031 const char* TEST = ssys::getenvvar("TEST", "Load");
0032 bool ALL = strcmp(TEST,"ALL") == 0 ;
0033 int rc = 0 ;
0034 if(ALL||0==strcmp(TEST,"Load")) rc += Load();
0035 if(ALL||0==strcmp(TEST,"getMeshPrim")) rc += getMeshPrim();
0036 if(ALL||0==strcmp(TEST,"descPrimRange")) rc += descPrimRange();
0037 if(ALL||0==strcmp(TEST,"CompareRanges")) rc += CompareRanges();
0038 if(ALL||0==strcmp(TEST,"CSGPrim_AABB_Overlap")) rc += CSGPrim_AABB_Overlap();
0039 return rc ;
0040 }
0041
0042 inline int CSGFoundryLoadTest::Load()
0043 {
0044 CSGFoundry* fd = CSGFoundry::Load() ;
0045
0046 LOG(info) << " -------------------- After CSGFoundry::Load " ;
0047
0048 LOG(info) << fd->descBase() ;
0049 LOG(info) << fd->desc() ;
0050 LOG(info) << " -------------------- After CSGFoundry::desc " ;
0051
0052 stree* st = fd->sim->tree ;
0053 LOG(info) << st->desc() ;
0054 LOG(info) << " -------------------- After stree::desc " ;
0055
0056 return 0 ;
0057 }
0058
0059 inline int CSGFoundryLoadTest::getMeshPrim()
0060 {
0061 int LVID = ssys::getenvint("LVID", 0);
0062 std::cout << "[CSGFoundryLoadTest::getMeshPrim LVID " << LVID << "\n" ;
0063 CSGFoundry* fd = CSGFoundry::Load() ;
0064 std::cout << fd->descBase() ;
0065
0066 unsigned mesh_idx = LVID ;
0067 std::vector<const CSGPrim*> prim ;
0068 fd->getMeshPrimPointers(prim, mesh_idx);
0069
0070 std::cout << "]CSGFoundryLoadTest::getMeshPrim LVID " << LVID << "\n" << CSGPrim::Desc(prim) ;
0071
0072 return 0 ;
0073 }
0074
0075 inline int CSGFoundryLoadTest::descPrimRange()
0076 {
0077 std::cout << "[CSGFoundryLoadTest::descPrimRange \n" ;
0078 CSGFoundry* fd = CSGFoundry::Load() ;
0079 std::cout << fd->descBase() ;
0080 std::cout << fd->descPrimRange() ;
0081 std::cout << fd->descBase() ;
0082 std::cout << "]CSGFoundryLoadTest::descPrimRange\n" ;
0083 return 0 ;
0084 }
0085
0086 inline int CSGFoundryLoadTest::CompareRanges()
0087 {
0088 int SID = ssys::getenvint("SID", -1);
0089
0090 CSGFoundry* fd = CSGFoundry::Load() ;
0091 size_t num_solid = fd->solid.size() ;
0092
0093 int solidIdx = SID >= 0 ? SID : num_solid + SID ;
0094 stree* tr = fd->sim->tree ;
0095 SScene* sc = fd->sim->scene ;
0096
0097 assert( sc->meshgroup.size() == num_solid );
0098
0099 const SMeshGroup* mg = sc->meshgroup[solidIdx] ;
0100
0101 std::cout
0102 << "[CSGFoundryLoadTest::CompareRanges \n"
0103 << fd->descBase()
0104 << " SID " << SID
0105 << " num_solid " << num_solid
0106 << " solidIdx " << solidIdx
0107 << " tr " << ( tr ? "YES" : "NO " )
0108 << " sc " << ( sc ? "YES" : "NO " )
0109 << " mg " << ( mg ? "YES" : "NO " )
0110 << "\n"
0111 ;
0112
0113 std::cout << fd->comparePrimRange(solidIdx, mg) ;
0114
0115 std::cout
0116 << fd->descBase()
0117 << "]CSGFoundryLoadTest::CompareRanges\n"
0118 ;
0119 return 0 ;
0120 }
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131 inline int CSGFoundryLoadTest::CSGPrim_AABB_Overlap()
0132 {
0133 CSGFoundry* fd = CSGFoundry::Load() ;
0134
0135 stree* tree = fd->getTree();
0136 size_t num_solid = fd->solid.size() ;
0137
0138 std::cout
0139 << "[CSGFoundryLoadTest::CSGPrim_AABB_Overlap \n"
0140 << " tree " << ( tree ? "YES" : "NO " )
0141 << "\n"
0142 << fd->descBase()
0143 << "\n"
0144 << " num_solid " << num_solid
0145 << "\n"
0146 << fd->desc()
0147 << "\n"
0148 ;
0149
0150
0151 return 0 ;
0152 }
0153
0154
0155
0156
0157 int main(int argc, char** argv)
0158 {
0159 return CSGFoundryLoadTest::Main(argc, argv) ;
0160 }