void Build_StairStep(vec3_t min, vec3_t max, const char* mainTexture, const char* riserTexture, int direction) { NodeSmartReference newBrush(GlobalBrushCreator().createBrush()); //----- Build Outer Bounds --------- vec3_t v1, v2, v3, v5, v6, v7; VectorCopy(min, v1); VectorCopy(min, v2); VectorCopy(min, v3); VectorCopy(max, v5); VectorCopy(max, v6); VectorCopy(max, v7); v2[0] = max[0]; v3[1] = max[1]; v6[0] = min[0]; v7[1] = min[1]; //---------------------------------- AddFaceWithTexture(newBrush, v6, v5, v7, mainTexture, false); // top gets current texture if(direction == MOVE_EAST) AddFaceWithTexture(newBrush, v1, v3, v6, riserTexture, false); else AddFaceWithTexture(newBrush, v1, v3, v6, "textures/common/caulk", false); // west facing side, etc... if(direction == MOVE_NORTH) AddFaceWithTexture(newBrush, v1, v7, v2, riserTexture, false); else AddFaceWithTexture(newBrush, v1, v7, v2, "textures/common/caulk", false); if(direction == MOVE_SOUTH) AddFaceWithTexture(newBrush, v3, v5, v6, riserTexture, false); else AddFaceWithTexture(newBrush, v3, v5, v6, "textures/common/caulk", false); if(direction == MOVE_WEST) AddFaceWithTexture(newBrush, v7, v5, v2, riserTexture, false); else AddFaceWithTexture(newBrush, v7, v5, v2, "textures/common/caulk", false); AddFaceWithTexture(newBrush, v1, v2, v3, "textures/common/caulk", false); // base is caulked Node_getTraversable(GlobalRadiant().getMapWorldEntity())->insert(newBrush); // finish brush }
void Build_StairStep(vec3_t min, vec3_t max, const char* mainTexture, const char* riserTexture, int direction) { scene::Node* newBrush = Brush_AllocNode(); //----- Build Outer Bounds --------- vec3_t v1, v2, v3, v5, v6, v7; VectorCopy(min, v1); VectorCopy(min, v2); VectorCopy(min, v3); VectorCopy(max, v5); VectorCopy(max, v6); VectorCopy(max, v7); v2[0] = max[0]; v3[1] = max[1]; v6[0] = min[0]; v7[1] = min[1]; //---------------------------------- AddFaceWithTexture(newBrush, v6, v5, v7, mainTexture, FALSE); // top gets current texture if(direction == MOVE_EAST) AddFaceWithTexture(newBrush, v1, v3, v6, riserTexture, FALSE); else AddFaceWithTexture(newBrush, v1, v3, v6, "textures/common/caulk", FALSE); // west facing side, etc... if(direction == MOVE_NORTH) AddFaceWithTexture(newBrush, v1, v7, v2, riserTexture, FALSE); else AddFaceWithTexture(newBrush, v1, v7, v2, "textures/common/caulk", FALSE); if(direction == MOVE_SOUTH) AddFaceWithTexture(newBrush, v3, v5, v6, riserTexture, FALSE); else AddFaceWithTexture(newBrush, v3, v5, v6, "textures/common/caulk", FALSE); if(direction == MOVE_WEST) AddFaceWithTexture(newBrush, v7, v5, v2, riserTexture, FALSE); else AddFaceWithTexture(newBrush, v7, v5, v2, "textures/common/caulk", FALSE); AddFaceWithTexture(newBrush, v1, v2, v3, "textures/common/caulk", FALSE); // base is caulked GetWorldspawn()->m_traverse->insert(newBrush); // finish brush }
void AddFaceWithTextureScaled(scene::Node* brush, vec3_t va, vec3_t vb, vec3_t vc, const char* texture, bool bVertScale, bool bHorScale, float minX, float minY, float maxX, float maxY) { qtexture_t* pqtTexInfo; // TTimo: there used to be a call to pfnHasShader here // this was not necessary. In Radiant everything is shader. // If a texture doesn't have a shader script, a default shader object is used. // The IShader object was leaking also // collect texture info: sizes, etc IShader* i = QERApp_Shader_ForName(texture); pqtTexInfo = i->getTexture(); // shader width/height doesn't come out properly if(pqtTexInfo) { float scale[2] = {0.5f, 0.5f}; float shift[2] = {0, 0}; if(bHorScale) { int texWidth = pqtTexInfo->width; float width = maxX - minX; scale[0] = width/texWidth; shift[0] = -(float)((int)maxX%(int)width)/scale[0]; } if(bVertScale) { int texHeight = pqtTexInfo->height; float height = maxY - minY; scale[1] = height/texHeight; shift[1] = (float)((int)minY%(int)height)/scale[1]; } _QERFaceData addFace; FillDefaultTexture(&addFace, va, vb, vc, texture); addFace.m_texdef.scale[0] = scale[0]; addFace.m_texdef.scale[1] = scale[1]; addFace.m_texdef.shift[0] = shift[0]; addFace.m_texdef.shift[1] = shift[1]; #if 0 brush->m_brush->addPlane(addFace.m_p0, addFace.m_p1, addFace.m_p2, addFace.m_texdef); #endif } else { // shouldn't even get here, as default missing texture should be returned if // texture doesn't exist, but just in case AddFaceWithTexture(brush, va, vb, vc, texture, FALSE); Sys_ERROR("BobToolz::Invalid Texture Name-> %s", texture); } // the IShader is not kept referenced, DecRef it i->DecRef(); }
void AddFaceWithTextureScaled(scene::Node& brush, vec3_t va, vec3_t vb, vec3_t vc, const char* texture, bool bVertScale, bool bHorScale, float minX, float minY, float maxX, float maxY) { qtexture_t* pqtTexInfo; // TTimo: there used to be a call to pfnHasShader here // this was not necessary. In Radiant everything is shader. // If a texture doesn't have a shader script, a default shader object is used. // The IShader object was leaking also // collect texture info: sizes, etc IShader* i = GlobalShaderSystem().getShaderForName(texture); pqtTexInfo = i->getTexture(); // shader width/height doesn't come out properly if(pqtTexInfo) { float scale[2] = {0.5f, 0.5f}; float shift[2] = {0, 0}; if(bHorScale) { float width = maxX - minX; scale[0] = width/pqtTexInfo->width; shift[0] = -(float)((int)maxX%(int)width)/scale[0]; } if(bVertScale) { float height = maxY - minY; scale[1] = height/pqtTexInfo->height; shift[1] = (float)((int)minY%(int)height)/scale[1]; } _QERFaceData addFace; FillDefaultTexture(&addFace, va, vb, vc, texture); addFace.m_texdef.scale[0] = scale[0]; addFace.m_texdef.scale[1] = scale[1]; addFace.m_texdef.shift[0] = shift[0]; addFace.m_texdef.shift[1] = shift[1]; GlobalBrushCreator().Brush_addFace(brush, addFace); } else { // shouldn't even get here, as default missing texture should be returned if // texture doesn't exist, but just in case AddFaceWithTexture(brush, va, vb, vc, texture, false); globalErrorStream() << "BobToolz::Invalid Texture Name-> " << texture; } // the IShader is not kept referenced, DecRef it i->DecRef(); }
// internal use only, to get a box without finishing construction brush_t* Build_Get_BoundingCube_Selective( vec3_t min, vec3_t max, char* texture, bool* useFaces ){ brush_t* newBrush = (brush_t*)g_FuncTable.m_pfnCreateBrushHandle(); //----- Build Outer Bounds --------- vec3_t v1, v2, v3, v5, v6, v7; VectorCopy( min, v1 ); VectorCopy( min, v2 ); VectorCopy( min, v3 ); VectorCopy( max, v5 ); VectorCopy( max, v6 ); VectorCopy( max, v7 ); v2[0] = max[0]; v3[1] = max[1]; v6[0] = min[0]; v7[1] = min[1]; //---------------------------------- //----- Add Six Cube Faces --------- if ( useFaces[0] ) { AddFaceWithTexture( newBrush, v1, v2, v3, texture, FALSE ); } if ( useFaces[1] ) { AddFaceWithTexture( newBrush, v1, v3, v6, texture, FALSE ); } if ( useFaces[2] ) { AddFaceWithTexture( newBrush, v1, v7, v2, texture, FALSE ); } if ( useFaces[3] ) { AddFaceWithTexture( newBrush, v5, v6, v3, texture, FALSE ); } if ( useFaces[4] ) { AddFaceWithTexture( newBrush, v5, v2, v7, texture, FALSE ); } if ( useFaces[5] ) { AddFaceWithTexture( newBrush, v5, v7, v6, texture, FALSE ); } //---------------------------------- return newBrush; }
// internal use only, to get a box without finishing construction scene::Node& Build_Get_BoundingCube_Selective(vec3_t min, vec3_t max, char* texture, bool* useFaces) { NodeSmartReference newBrush(GlobalBrushCreator().createBrush()); //----- Build Outer Bounds --------- vec3_t v1, v2, v3, v5, v6, v7; VectorCopy(min, v1); VectorCopy(min, v2); VectorCopy(min, v3); VectorCopy(max, v5); VectorCopy(max, v6); VectorCopy(max, v7); v2[0] = max[0]; v3[1] = max[1]; v6[0] = min[0]; v7[1] = min[1]; //---------------------------------- //----- Add Six Cube Faces --------- if(useFaces[0]) AddFaceWithTexture(newBrush, v1, v2, v3, texture, false); if(useFaces[1]) AddFaceWithTexture(newBrush, v1, v3, v6, texture, false); if(useFaces[2]) AddFaceWithTexture(newBrush, v1, v7, v2, texture, false); if(useFaces[3]) AddFaceWithTexture(newBrush, v5, v6, v3, texture, false); if(useFaces[4]) AddFaceWithTexture(newBrush, v5, v2, v7, texture, false); if(useFaces[5]) AddFaceWithTexture(newBrush, v5, v7, v6, texture, false); //---------------------------------- return newBrush; }
// internal use only, to get a box without finishing construction scene::Node* Build_Get_BoundingCube_Selective(vec3_t min, vec3_t max, char* texture, bool* useFaces) { scene::Node* newBrush = Brush_AllocNode(); //----- Build Outer Bounds --------- vec3_t v1, v2, v3, v5, v6, v7; VectorCopy(min, v1); VectorCopy(min, v2); VectorCopy(min, v3); VectorCopy(max, v5); VectorCopy(max, v6); VectorCopy(max, v7); v2[0] = max[0]; v3[1] = max[1]; v6[0] = min[0]; v7[1] = min[1]; //---------------------------------- //----- Add Six Cube Faces --------- if(useFaces[0]) AddFaceWithTexture(newBrush, v1, v2, v3, texture, FALSE); if(useFaces[1]) AddFaceWithTexture(newBrush, v1, v3, v6, texture, FALSE); if(useFaces[2]) AddFaceWithTexture(newBrush, v1, v7, v2, texture, FALSE); if(useFaces[3]) AddFaceWithTexture(newBrush, v5, v6, v3, texture, FALSE); if(useFaces[4]) AddFaceWithTexture(newBrush, v5, v2, v7, texture, FALSE); if(useFaces[5]) AddFaceWithTexture(newBrush, v5, v7, v6, texture, FALSE); //---------------------------------- return newBrush; }
void Build_StairStep_Wedge( int dir, vec3_t min, vec3_t max, const char* mainTexture, const char* riserTexture, bool detail ){ brush_t* newBrush = (brush_t*)g_FuncTable.m_pfnCreateBrushHandle(); //----- Build Outer Bounds --------- vec3_t v1, v2, v3, v5, v6, v7, v8; VectorCopy( min, v1 ); VectorCopy( min, v2 ); VectorCopy( min, v3 ); VectorCopy( max, v5 ); VectorCopy( max, v6 ); VectorCopy( max, v7 ); VectorCopy( max, v8 ); v2[0] = max[0]; v3[1] = max[1]; v6[0] = min[0]; v7[1] = min[1]; v8[2] = min[2]; //v8 needed this time, becoz of sloping faces (2-4-6-8) //---------------------------------- AddFaceWithTexture( newBrush, v6, v5, v7, mainTexture, detail ); if ( dir != MOVE_EAST ) { if ( dir == MOVE_WEST ) { AddFaceWithTexture( newBrush, v5, v2, v7, riserTexture, detail ); } else{ AddFaceWithTexture( newBrush, v5, v2, v7, "textures/common/caulk", detail ); } } if ( dir != MOVE_WEST ) { if ( dir == MOVE_EAST ) { AddFaceWithTexture( newBrush, v1, v3, v6, riserTexture, detail ); } else{ AddFaceWithTexture( newBrush, v1, v3, v6, "textures/common/caulk", detail ); } } if ( dir != MOVE_NORTH ) { if ( dir == MOVE_SOUTH ) { AddFaceWithTexture( newBrush, v3, v5, v6, riserTexture, detail ); } else{ AddFaceWithTexture( newBrush, v3, v5, v6, "textures/common/caulk", detail ); } } if ( dir != MOVE_SOUTH ) { if ( dir == MOVE_NORTH ) { AddFaceWithTexture( newBrush, v1, v7, v2, riserTexture, detail ); } else{ AddFaceWithTexture( newBrush, v1, v7, v2, "textures/common/caulk", detail ); } } if ( dir == MOVE_EAST ) { AddFaceWithTexture( newBrush, v1, v5, v3, "textures/common/caulk", detail ); } if ( dir == MOVE_WEST ) { AddFaceWithTexture( newBrush, v2, v8, v6, "textures/common/caulk", detail ); } if ( dir == MOVE_NORTH ) { AddFaceWithTexture( newBrush, v1, v5, v6, "textures/common/caulk", detail ); } if ( dir == MOVE_SOUTH ) { AddFaceWithTexture( newBrush, v7, v8, v3, "textures/common/caulk", detail ); } g_FuncTable.m_pfnCommitBrushHandle( newBrush ); }
void Build_Wedge( int dir, vec3_t min, vec3_t max, bool bUp ){ brush_t* newBrush = (brush_t*)g_FuncTable.m_pfnCreateBrushHandle(); vec3_t v1, v2, v3, v5, v6, v7, v8; VectorCopy( min, v1 ); VectorCopy( min, v2 ); VectorCopy( min, v3 ); VectorCopy( max, v5 ); VectorCopy( max, v6 ); VectorCopy( max, v7 ); VectorCopy( max, v8 ); v2[0] = max[0]; v3[1] = max[1]; v6[0] = min[0]; v7[1] = min[1]; v8[2] = min[2]; if ( bUp ) { if ( dir != MOVE_EAST ) { AddFaceWithTexture( newBrush, v1, v3, v6, "textures/common/caulk", FALSE ); } if ( dir != MOVE_WEST ) { AddFaceWithTexture( newBrush, v7, v5, v8, "textures/common/caulk", FALSE ); } if ( dir != MOVE_NORTH ) { AddFaceWithTexture( newBrush, v1, v7, v2, "textures/common/caulk", FALSE ); } if ( dir != MOVE_SOUTH ) { AddFaceWithTexture( newBrush, v3, v8, v6, "textures/common/caulk", FALSE ); } AddFaceWithTexture( newBrush, v1, v2, v3, "textures/common/caulk", FALSE ); if ( dir == MOVE_EAST ) { AddFaceWithTexture( newBrush, v1, v3, v5, "textures/common/caulk", FALSE ); } if ( dir == MOVE_WEST ) { AddFaceWithTexture( newBrush, v2, v6, v8, "textures/common/caulk", FALSE ); } if ( dir == MOVE_NORTH ) { AddFaceWithTexture( newBrush, v1, v6, v5, "textures/common/caulk", FALSE ); } if ( dir == MOVE_SOUTH ) { AddFaceWithTexture( newBrush, v7, v3, v8, "textures/common/caulk", FALSE ); } } else { if ( dir != MOVE_WEST ) { AddFaceWithTexture( newBrush, v7, v5, v8, "textures/common/caulk", FALSE ); } if ( dir != MOVE_EAST ) { AddFaceWithTexture( newBrush, v1, v3, v6, "textures/common/caulk", FALSE ); } if ( dir != MOVE_NORTH ) { AddFaceWithTexture( newBrush, v3, v8, v6, "textures/common/caulk", FALSE ); } if ( dir != MOVE_SOUTH ) { AddFaceWithTexture( newBrush, v1, v7, v2, "textures/common/caulk", FALSE ); } AddFaceWithTexture( newBrush, v6, v5, v7, "textures/common/caulk", FALSE ); if ( dir == MOVE_WEST ) { AddFaceWithTexture( newBrush, v1, v5, v3, "textures/common/caulk", FALSE ); } if ( dir == MOVE_EAST ) { AddFaceWithTexture( newBrush, v2, v8, v6, "textures/common/caulk", FALSE ); } if ( dir == MOVE_NORTH ) { AddFaceWithTexture( newBrush, v1, v5, v6, "textures/common/caulk", FALSE ); } if ( dir == MOVE_SOUTH ) { AddFaceWithTexture( newBrush, v7, v8, v3, "textures/common/caulk", FALSE ); } } g_FuncTable.m_pfnCommitBrushHandle( newBrush ); }
void BuildDoorsX2(vec3_t min, vec3_t max, bool bSclMainHor, bool bSclMainVert, bool bSclTrimHor, bool bSclTrimVert, const char* mainTexture, const char* trimTexture, int direction) { int xy; if(direction == 0) xy = 0; else xy = 1; //----- Build Outer Bounds --------- vec3_t v1, v2, v3, v5, v6, v7, ve_1, ve_2, ve_3; VectorCopy(min, v1); VectorCopy(min, v2); VectorCopy(min, v3); VectorCopy(max, v5); VectorCopy(max, v6); VectorCopy(max, v7); v2[0] = max[0]; v3[1] = max[1]; v6[0] = min[0]; v7[1] = min[1]; float width = (max[xy] - min[xy])/2; if(direction == 0) { VectorCopy(v1, ve_1); VectorCopy(v3, ve_2); VectorCopy(v6, ve_3); } else { VectorCopy(v7, ve_1); VectorCopy(v1, ve_2); VectorCopy(v2, ve_3); } ve_1[xy] += width; ve_2[xy] += width; ve_3[xy] += width; //---------------------------------- scene::Node* newBrush1 = Brush_AllocNode(); scene::Node* newBrush2 = Brush_AllocNode(); AddFaceWithTexture(newBrush1, v1, v2, v3, "textures/common/caulk", FALSE); AddFaceWithTexture(newBrush1, v5, v7, v6, "textures/common/caulk", FALSE); AddFaceWithTexture(newBrush2, v1, v2, v3, "textures/common/caulk", FALSE); AddFaceWithTexture(newBrush2, v5, v7, v6, "textures/common/caulk", FALSE); if(direction == 0) { AddFaceWithTexture(newBrush1, v1, v3, v6, "textures/common/caulk", FALSE); AddFaceWithTexture(newBrush2, v5, v2, v7, "textures/common/caulk", FALSE); } else { AddFaceWithTexture(newBrush1, v1, v7, v2, "textures/common/caulk", FALSE); AddFaceWithTexture(newBrush2, v5, v6, v3, "textures/common/caulk", FALSE); } if(direction == 0) { AddFaceWithTextureScaled(newBrush1, v1, v7, v2, mainTexture, bSclMainVert, bSclMainHor, min[0], min[2], max[0], max[2]); AddFaceWithTextureScaled(newBrush1, v5, v6, v3, mainTexture, bSclMainVert, bSclMainHor, max[0], min[2], min[0], max[2]); AddFaceWithTextureScaled(newBrush2, v1, v7, v2, mainTexture, bSclMainVert, bSclMainHor, min[0], min[2], max[0], max[2]); AddFaceWithTextureScaled(newBrush2, v5, v6, v3, mainTexture, bSclMainVert, bSclMainHor, max[0], min[2], min[0], max[2]); // flip max/min to reverse tex dir AddFaceWithTextureScaled(newBrush1, ve_3, ve_2, ve_1, trimTexture, bSclTrimVert, bSclTrimHor, min[1], min[2], max[1], max[2]); AddFaceWithTextureScaled(newBrush2, ve_1, ve_2, ve_3, trimTexture, bSclTrimVert, bSclTrimHor, max[1], min[2], min[1], max[2]); } else { AddFaceWithTextureScaled(newBrush1, v1, v3, v6, mainTexture, bSclMainVert, bSclMainHor, min[1], min[2], max[1], max[2]); AddFaceWithTextureScaled(newBrush1, v5, v2, v7, mainTexture, bSclMainVert, bSclMainHor, max[1], min[2], min[1], max[2]); AddFaceWithTextureScaled(newBrush2, v1, v3, v6, mainTexture, bSclMainVert, bSclMainHor, min[1], min[2], max[1], max[2]); AddFaceWithTextureScaled(newBrush2, v5, v2, v7, mainTexture, bSclMainVert, bSclMainHor, max[1], min[2], min[1], max[2]); // flip max/min to reverse tex dir AddFaceWithTextureScaled(newBrush1, ve_1, ve_2, ve_3, trimTexture, bSclTrimVert, bSclTrimHor, min[0], min[2], max[0], max[2]); AddFaceWithTextureScaled(newBrush2, ve_3, ve_2, ve_1, trimTexture, bSclTrimVert, bSclTrimHor, max[0], min[2], min[0], max[2]); } //---------------------------------- scene::Node* pEDoor1 = GlobalEntityCreator().createEntity("func_door"); scene::Node* pEDoor2 = GlobalEntityCreator().createEntity("func_door"); if(direction == 0) { pEDoor1->m_entity->setkeyvalue("angle", "180"); pEDoor2->m_entity->setkeyvalue("angle", "360"); } else { pEDoor1->m_entity->setkeyvalue("angle", "270"); pEDoor2->m_entity->setkeyvalue("angle", "90"); } srand((unsigned)time(NULL)); char teamname[256]; sprintf(teamname, "t%i", rand()); pEDoor1->m_entity->setkeyvalue("team", teamname); pEDoor2->m_entity->setkeyvalue("team", teamname); pEDoor1->m_traverse->insert(newBrush1); pEDoor2->m_traverse->insert(newBrush2); GlobalSceneGraph().root()->m_traverse->insert(pEDoor1); GlobalSceneGraph().root()->m_traverse->insert(pEDoor2); // ResetCurrentTexture(); }
void Build_StairStep_Wedge(int dir, vec3_t min, vec3_t max, const char* mainTexture, const char* riserTexture, bool detail) { NodeSmartReference newBrush(GlobalBrushCreator().createBrush()); //----- Build Outer Bounds --------- vec3_t v1, v2, v3, v5, v6, v7, v8; VectorCopy(min, v1); VectorCopy(min, v2); VectorCopy(min, v3); VectorCopy(max, v5); VectorCopy(max, v6); VectorCopy(max, v7); VectorCopy(max, v8); v2[0] = max[0]; v3[1] = max[1]; v6[0] = min[0]; v7[1] = min[1]; v8[2] = min[2]; //v8 needed this time, becoz of sloping faces (2-4-6-8) //---------------------------------- AddFaceWithTexture(newBrush, v6, v5, v7, mainTexture, detail); if(dir != MOVE_EAST) { if(dir == MOVE_WEST) AddFaceWithTexture(newBrush, v5, v2, v7, riserTexture, detail); else AddFaceWithTexture(newBrush, v5, v2, v7, "textures/common/caulk", detail); } if(dir != MOVE_WEST) { if(dir == MOVE_EAST) AddFaceWithTexture(newBrush, v1, v3, v6, riserTexture, detail); else AddFaceWithTexture(newBrush, v1, v3, v6, "textures/common/caulk", detail); } if(dir != MOVE_NORTH) { if(dir == MOVE_SOUTH) AddFaceWithTexture(newBrush, v3, v5, v6, riserTexture, detail); else AddFaceWithTexture(newBrush, v3, v5, v6, "textures/common/caulk", detail); } if(dir != MOVE_SOUTH) { if(dir == MOVE_NORTH) AddFaceWithTexture(newBrush, v1, v7, v2, riserTexture, detail); else AddFaceWithTexture(newBrush, v1, v7, v2, "textures/common/caulk", detail); } if(dir == MOVE_EAST) AddFaceWithTexture(newBrush, v1, v5, v3, "textures/common/caulk", detail); if(dir == MOVE_WEST) AddFaceWithTexture(newBrush, v2, v8, v6, "textures/common/caulk", detail); if(dir == MOVE_NORTH) AddFaceWithTexture(newBrush, v1, v5, v6, "textures/common/caulk", detail); if(dir == MOVE_SOUTH) AddFaceWithTexture(newBrush, v7, v8, v3, "textures/common/caulk", detail); Node_getTraversable(GlobalRadiant().getMapWorldEntity())->insert(newBrush); }
void BuildDoorsX2( vec3_t min, vec3_t max, bool bSclMainHor, bool bSclMainVert, bool bSclTrimHor, bool bSclTrimVert, const char* mainTexture, const char* trimTexture, int direction ){ int xy; if ( direction == 0 ) { xy = 0; } else{ xy = 1; } //----- Build Outer Bounds --------- vec3_t v1, v2, v3, v5, v6, v7, ve_1, ve_2, ve_3; VectorCopy( min, v1 ); VectorCopy( min, v2 ); VectorCopy( min, v3 ); VectorCopy( max, v5 ); VectorCopy( max, v6 ); VectorCopy( max, v7 ); v2[0] = max[0]; v3[1] = max[1]; v6[0] = min[0]; v7[1] = min[1]; float width = ( max[xy] - min[xy] ) / 2; if ( direction == 0 ) { VectorCopy( v1, ve_1 ); VectorCopy( v3, ve_2 ); VectorCopy( v6, ve_3 ); } else { VectorCopy( v7, ve_1 ); VectorCopy( v1, ve_2 ); VectorCopy( v2, ve_3 ); } ve_1[xy] += width; ve_2[xy] += width; ve_3[xy] += width; //---------------------------------- brush_t* newBrush1 = (brush_t*)g_FuncTable.m_pfnCreateBrushHandle(); brush_t* newBrush2 = (brush_t*)g_FuncTable.m_pfnCreateBrushHandle(); AddFaceWithTexture( newBrush1, v1, v2, v3, "textures/common/caulk", FALSE ); AddFaceWithTexture( newBrush1, v5, v7, v6, "textures/common/caulk", FALSE ); AddFaceWithTexture( newBrush2, v1, v2, v3, "textures/common/caulk", FALSE ); AddFaceWithTexture( newBrush2, v5, v7, v6, "textures/common/caulk", FALSE ); if ( direction == 0 ) { AddFaceWithTexture( newBrush1, v1, v3, v6, "textures/common/caulk", FALSE ); AddFaceWithTexture( newBrush2, v5, v2, v7, "textures/common/caulk", FALSE ); } else { AddFaceWithTexture( newBrush1, v1, v7, v2, "textures/common/caulk", FALSE ); AddFaceWithTexture( newBrush2, v5, v6, v3, "textures/common/caulk", FALSE ); } if ( direction == 0 ) { AddFaceWithTextureScaled( newBrush1, v1, v7, v2, mainTexture, bSclMainVert, bSclMainHor, min[0], min[2], max[0], max[2] ); AddFaceWithTextureScaled( newBrush1, v5, v6, v3, mainTexture, bSclMainVert, bSclMainHor, max[0], min[2], min[0], max[2] ); AddFaceWithTextureScaled( newBrush2, v1, v7, v2, mainTexture, bSclMainVert, bSclMainHor, min[0], min[2], max[0], max[2] ); AddFaceWithTextureScaled( newBrush2, v5, v6, v3, mainTexture, bSclMainVert, bSclMainHor, max[0], min[2], min[0], max[2] ); // flip max/min to reverse tex dir AddFaceWithTextureScaled( newBrush1, ve_3, ve_2, ve_1, trimTexture, bSclTrimVert, bSclTrimHor, min[1], min[2], max[1], max[2] ); AddFaceWithTextureScaled( newBrush2, ve_1, ve_2, ve_3, trimTexture, bSclTrimVert, bSclTrimHor, max[1], min[2], min[1], max[2] ); } else { AddFaceWithTextureScaled( newBrush1, v1, v3, v6, mainTexture, bSclMainVert, bSclMainHor, min[1], min[2], max[1], max[2] ); AddFaceWithTextureScaled( newBrush1, v5, v2, v7, mainTexture, bSclMainVert, bSclMainHor, max[1], min[2], min[1], max[2] ); AddFaceWithTextureScaled( newBrush2, v1, v3, v6, mainTexture, bSclMainVert, bSclMainHor, min[1], min[2], max[1], max[2] ); AddFaceWithTextureScaled( newBrush2, v5, v2, v7, mainTexture, bSclMainVert, bSclMainHor, max[1], min[2], min[1], max[2] ); // flip max/min to reverse tex dir AddFaceWithTextureScaled( newBrush1, ve_1, ve_2, ve_3, trimTexture, bSclTrimVert, bSclTrimHor, min[0], min[2], max[0], max[2] ); AddFaceWithTextureScaled( newBrush2, ve_3, ve_2, ve_1, trimTexture, bSclTrimVert, bSclTrimHor, max[0], min[2], min[0], max[2] ); } //---------------------------------- entity_t* pEDoor1 = (entity_t*)g_FuncTable.m_pfnCreateEntityHandle(); entity_t* pEDoor2 = (entity_t*)g_FuncTable.m_pfnCreateEntityHandle(); epair_t* epDoor11 = GetNextChainItem( NULL, "classname", "func_door" ); epair_t* epDoor21 = GetNextChainItem( NULL, "classname", "func_door" ); epair_t* epDoor12; epair_t* epDoor22; if ( direction == 0 ) { epDoor12 = GetNextChainItem( epDoor11, "angle", "180" ); epDoor22 = GetNextChainItem( epDoor21, "angle", "360" ); } else { epDoor12 = GetNextChainItem( epDoor11, "angle", "270" ); epDoor22 = GetNextChainItem( epDoor21, "angle", "90" ); } srand( (unsigned)time( NULL ) ); char teamname[256]; sprintf( teamname, "t%i", rand() ); /*epair_t* epDoor13 = */ GetNextChainItem( epDoor12, "team", teamname ); /*epair_t* epDoor23 = */ GetNextChainItem( epDoor22, "team", teamname ); g_FuncTable.m_pfnCommitBrushHandleToEntity( newBrush1, pEDoor1 ); g_FuncTable.m_pfnCommitBrushHandleToEntity( newBrush2, pEDoor2 ); g_EntityTable.m_pfnSetEntityKeyValList( pEDoor1, epDoor11 ); g_EntityTable.m_pfnSetEntityKeyValList( pEDoor2, epDoor21 ); g_FuncTable.m_pfnCommitEntityHandleToMap( pEDoor1 ); g_FuncTable.m_pfnCommitEntityHandleToMap( pEDoor2 ); // ResetCurrentTexture(); }
void Build_Wedge(int dir, vec3_t min, vec3_t max, bool bUp) { scene::Node* newBrush = Brush_AllocNode(); vec3_t v1, v2, v3, v5, v6, v7, v8; VectorCopy(min, v1); VectorCopy(min, v2); VectorCopy(min, v3); VectorCopy(max, v5); VectorCopy(max, v6); VectorCopy(max, v7); VectorCopy(max, v8); v2[0] = max[0]; v3[1] = max[1]; v6[0] = min[0]; v7[1] = min[1]; v8[2] = min[2]; if(bUp) { if(dir != MOVE_EAST) AddFaceWithTexture(newBrush, v1, v3, v6, "textures/common/caulk", FALSE); if(dir != MOVE_WEST) AddFaceWithTexture(newBrush, v7, v5, v8, "textures/common/caulk", FALSE); if(dir != MOVE_NORTH) AddFaceWithTexture(newBrush, v1, v7, v2, "textures/common/caulk", FALSE); if(dir != MOVE_SOUTH) AddFaceWithTexture(newBrush, v3, v8, v6, "textures/common/caulk", FALSE); AddFaceWithTexture(newBrush, v1, v2, v3, "textures/common/caulk", FALSE); if(dir == MOVE_EAST) AddFaceWithTexture(newBrush, v1, v3, v5, "textures/common/caulk", FALSE); if(dir == MOVE_WEST) AddFaceWithTexture(newBrush, v2, v6, v8, "textures/common/caulk", FALSE); if(dir == MOVE_NORTH) AddFaceWithTexture(newBrush, v1, v6, v5, "textures/common/caulk", FALSE); if(dir == MOVE_SOUTH) AddFaceWithTexture(newBrush, v7, v3, v8, "textures/common/caulk", FALSE); } else { if(dir != MOVE_WEST) AddFaceWithTexture(newBrush, v7, v5, v8, "textures/common/caulk", FALSE); if(dir != MOVE_EAST) AddFaceWithTexture(newBrush, v1, v3, v6, "textures/common/caulk", FALSE); if(dir != MOVE_NORTH) AddFaceWithTexture(newBrush, v3, v8, v6, "textures/common/caulk", FALSE); if(dir != MOVE_SOUTH) AddFaceWithTexture(newBrush, v1, v7, v2, "textures/common/caulk", FALSE); AddFaceWithTexture(newBrush, v6, v5, v7, "textures/common/caulk", FALSE); if(dir == MOVE_WEST) AddFaceWithTexture(newBrush, v1, v5, v3, "textures/common/caulk", FALSE); if(dir == MOVE_EAST) AddFaceWithTexture(newBrush, v2, v8, v6, "textures/common/caulk", FALSE); if(dir == MOVE_NORTH) AddFaceWithTexture(newBrush, v1, v5, v6, "textures/common/caulk", FALSE); if(dir == MOVE_SOUTH) AddFaceWithTexture(newBrush, v7, v8, v3, "textures/common/caulk", FALSE); } GetWorldspawn()->m_traverse->insert(newBrush); }
void BuildCornerStairs(vec3_t vMin, vec3_t vMax, int nSteps, const char* mainTexture, const char* riserTex) { vec3_t* topPoints = new vec3_t[nSteps+1]; vec3_t* botPoints = new vec3_t[nSteps+1]; //bool bFacesUse[6] = {true, true, false, true, false, false}; vec3_t centre; VectorCopy(vMin, centre); centre[0] = vMax[0]; int height = (int)(vMax[2] - vMin[2]) / nSteps; vec3_t vTop, vBot; VectorCopy(vMax, vTop); VectorCopy(vMin, vBot); vTop[2] = vMin[2] + height; int i; for(i = 0; i <= nSteps; i++) { VectorCopy(centre, topPoints[i]); VectorCopy(centre, botPoints[i]); topPoints[i][2] = vMax[2]; botPoints[i][2] = vMin[2]; topPoints[i][0] -= 10 * sinf( Q_PI * i / ( 2 * nSteps ) ); topPoints[i][1] += 10 * cosf( Q_PI * i / ( 2 * nSteps ) ); botPoints[i][0] = topPoints[i][0]; botPoints[i][1] = topPoints[i][1]; } vec3_t tp[3]; for(int j = 0; j < 3; j++) VectorCopy(topPoints[j], tp[j]); for(i = 0; i < nSteps; i++) { NodeSmartReference brush(GlobalBrushCreator().createBrush()); vec3_t v1, v2, v3, v5, v6, v7; VectorCopy(vBot, v1); VectorCopy(vBot, v2); VectorCopy(vBot, v3); VectorCopy(vTop, v5); VectorCopy(vTop, v6); VectorCopy(vTop, v7); v2[0] = vTop[0]; v3[1] = vTop[1]; v6[0] = vBot[0]; v7[1] = vBot[1]; AddFaceWithTexture(brush, v1, v2, v3, "textures/common/caulk", false); AddFaceWithTexture(brush, v1, v3, v6, "textures/common/caulk", false); AddFaceWithTexture(brush, v5, v6, v3, "textures/common/caulk", false); for(int j = 0; j < 3; j++) tp[j][2] = vTop[2]; AddFaceWithTexture(brush, tp[2], tp[1], tp[0], mainTexture, false); AddFaceWithTexture(brush, centre, botPoints[i+1], topPoints[i+1], "textures/common/caulk", false); AddFaceWithTexture(brush, centre, topPoints[i], botPoints[i], riserTex, false); Node_getTraversable(GlobalRadiant().getMapWorldEntity())->insert(brush); vTop[2] += height; vBot[2] += height; } delete[] topPoints; delete[] botPoints; vMin[2] += height; vMax[2] += height; MakeBevel(vMin, vMax); }
void BuildDoorsX2(vec3_t min, vec3_t max, bool bSclMainHor, bool bSclMainVert, bool bSclTrimHor, bool bSclTrimVert, const char* mainTexture, const char* trimTexture, int direction) { int xy; if(direction == 0) xy = 0; else xy = 1; //----- Build Outer Bounds --------- vec3_t v1, v2, v3, v5, v6, v7, ve_1, ve_2, ve_3; VectorCopy(min, v1); VectorCopy(min, v2); VectorCopy(min, v3); VectorCopy(max, v5); VectorCopy(max, v6); VectorCopy(max, v7); v2[0] = max[0]; v3[1] = max[1]; v6[0] = min[0]; v7[1] = min[1]; float width = (max[xy] - min[xy])/2; if(direction == 0) { VectorCopy(v1, ve_1); VectorCopy(v3, ve_2); VectorCopy(v6, ve_3); } else { VectorCopy(v7, ve_1); VectorCopy(v1, ve_2); VectorCopy(v2, ve_3); } ve_1[xy] += width; ve_2[xy] += width; ve_3[xy] += width; //---------------------------------- NodeSmartReference newBrush1(GlobalBrushCreator().createBrush()); NodeSmartReference newBrush2(GlobalBrushCreator().createBrush()); AddFaceWithTexture(newBrush1, v1, v2, v3, "textures/common/caulk", false); AddFaceWithTexture(newBrush1, v5, v7, v6, "textures/common/caulk", false); AddFaceWithTexture(newBrush2, v1, v2, v3, "textures/common/caulk", false); AddFaceWithTexture(newBrush2, v5, v7, v6, "textures/common/caulk", false); if(direction == 0) { AddFaceWithTexture(newBrush1, v1, v3, v6, "textures/common/caulk", false); AddFaceWithTexture(newBrush2, v5, v2, v7, "textures/common/caulk", false); } else { AddFaceWithTexture(newBrush1, v1, v7, v2, "textures/common/caulk", false); AddFaceWithTexture(newBrush2, v5, v6, v3, "textures/common/caulk", false); } if(direction == 0) { AddFaceWithTextureScaled(newBrush1, v1, v7, v2, mainTexture, bSclMainVert, bSclMainHor, min[0], min[2], max[0], max[2]); AddFaceWithTextureScaled(newBrush1, v5, v6, v3, mainTexture, bSclMainVert, bSclMainHor, max[0], min[2], min[0], max[2]); AddFaceWithTextureScaled(newBrush2, v1, v7, v2, mainTexture, bSclMainVert, bSclMainHor, min[0], min[2], max[0], max[2]); AddFaceWithTextureScaled(newBrush2, v5, v6, v3, mainTexture, bSclMainVert, bSclMainHor, max[0], min[2], min[0], max[2]); // flip max/min to reverse tex dir AddFaceWithTextureScaled(newBrush1, ve_3, ve_2, ve_1, trimTexture, bSclTrimVert, bSclTrimHor, min[1], min[2], max[1], max[2]); AddFaceWithTextureScaled(newBrush2, ve_1, ve_2, ve_3, trimTexture, bSclTrimVert, bSclTrimHor, max[1], min[2], min[1], max[2]); } else { AddFaceWithTextureScaled(newBrush1, v1, v3, v6, mainTexture, bSclMainVert, bSclMainHor, min[1], min[2], max[1], max[2]); AddFaceWithTextureScaled(newBrush1, v5, v2, v7, mainTexture, bSclMainVert, bSclMainHor, max[1], min[2], min[1], max[2]); AddFaceWithTextureScaled(newBrush2, v1, v3, v6, mainTexture, bSclMainVert, bSclMainHor, min[1], min[2], max[1], max[2]); AddFaceWithTextureScaled(newBrush2, v5, v2, v7, mainTexture, bSclMainVert, bSclMainHor, max[1], min[2], min[1], max[2]); // flip max/min to reverse tex dir AddFaceWithTextureScaled(newBrush1, ve_1, ve_2, ve_3, trimTexture, bSclTrimVert, bSclTrimHor, min[0], min[2], max[0], max[2]); AddFaceWithTextureScaled(newBrush2, ve_3, ve_2, ve_1, trimTexture, bSclTrimVert, bSclTrimHor, max[0], min[2], min[0], max[2]); } //---------------------------------- EntityClass* doorClass = GlobalEntityClassManager().findOrInsert("func_door", true); NodeSmartReference pEDoor1(GlobalEntityCreator().createEntity(doorClass)); NodeSmartReference pEDoor2(GlobalEntityCreator().createEntity(doorClass)); if(direction == 0) { Node_getEntity(pEDoor1)->setKeyValue("angle", "180"); Node_getEntity(pEDoor2)->setKeyValue("angle", "360"); } else { Node_getEntity(pEDoor1)->setKeyValue("angle", "270"); Node_getEntity(pEDoor2)->setKeyValue("angle", "90"); } srand((unsigned)time(NULL)); char teamname[256]; sprintf(teamname, "t%i", rand()); Node_getEntity(pEDoor1)->setKeyValue("team", teamname); Node_getEntity(pEDoor2)->setKeyValue("team", teamname); Node_getTraversable(pEDoor1)->insert(newBrush1); Node_getTraversable(pEDoor2)->insert(newBrush2); Node_getTraversable(GlobalSceneGraph().root())->insert(pEDoor1); Node_getTraversable(GlobalSceneGraph().root())->insert(pEDoor2); // ResetCurrentTexture(); }
void Build_StairStep( vec3_t min, vec3_t max, const char* mainTexture, const char* riserTexture, int direction ){ brush_t* newBrush = (brush_t*)g_FuncTable.m_pfnCreateBrushHandle(); //----- Build Outer Bounds --------- vec3_t v1, v2, v3, v5, v6, v7; VectorCopy( min, v1 ); VectorCopy( min, v2 ); VectorCopy( min, v3 ); VectorCopy( max, v5 ); VectorCopy( max, v6 ); VectorCopy( max, v7 ); v2[0] = max[0]; v3[1] = max[1]; v6[0] = min[0]; v7[1] = min[1]; //---------------------------------- AddFaceWithTexture( newBrush, v6, v5, v7, mainTexture, FALSE ); // top gets current texture if ( direction == MOVE_EAST ) { AddFaceWithTexture( newBrush, v1, v3, v6, riserTexture, FALSE ); } else{ AddFaceWithTexture( newBrush, v1, v3, v6, "textures/common/caulk", FALSE ); } // west facing side, etc... if ( direction == MOVE_NORTH ) { AddFaceWithTexture( newBrush, v1, v7, v2, riserTexture, FALSE ); } else{ AddFaceWithTexture( newBrush, v1, v7, v2, "textures/common/caulk", FALSE ); } if ( direction == MOVE_SOUTH ) { AddFaceWithTexture( newBrush, v3, v5, v6, riserTexture, FALSE ); } else{ AddFaceWithTexture( newBrush, v3, v5, v6, "textures/common/caulk", FALSE ); } if ( direction == MOVE_WEST ) { AddFaceWithTexture( newBrush, v7, v5, v2, riserTexture, FALSE ); } else{ AddFaceWithTexture( newBrush, v7, v5, v2, "textures/common/caulk", FALSE ); } AddFaceWithTexture( newBrush, v1, v2, v3, "textures/common/caulk", FALSE ); // base is caulked g_FuncTable.m_pfnCommitBrushHandle( newBrush ); // finish brush }
void Build_StairStep_Wedge(int dir, vec3_t min, vec3_t max, const char* mainTexture, const char* riserTexture, bool detail) { scene::Node* newBrush = Brush_AllocNode(); //----- Build Outer Bounds --------- vec3_t v1, v2, v3, v5, v6, v7, v8; VectorCopy(min, v1); VectorCopy(min, v2); VectorCopy(min, v3); VectorCopy(max, v5); VectorCopy(max, v6); VectorCopy(max, v7); VectorCopy(max, v8); v2[0] = max[0]; v3[1] = max[1]; v6[0] = min[0]; v7[1] = min[1]; v8[2] = min[2]; //v8 needed this time, becoz of sloping faces (2-4-6-8) //---------------------------------- AddFaceWithTexture(newBrush, v6, v5, v7, mainTexture, detail); if(dir != MOVE_EAST) { if(dir == MOVE_WEST) AddFaceWithTexture(newBrush, v5, v2, v7, riserTexture, detail); else AddFaceWithTexture(newBrush, v5, v2, v7, "textures/common/caulk", detail); } if(dir != MOVE_WEST) { if(dir == MOVE_EAST) AddFaceWithTexture(newBrush, v1, v3, v6, riserTexture, detail); else AddFaceWithTexture(newBrush, v1, v3, v6, "textures/common/caulk", detail); } if(dir != MOVE_NORTH) { if(dir == MOVE_SOUTH) AddFaceWithTexture(newBrush, v3, v5, v6, riserTexture, detail); else AddFaceWithTexture(newBrush, v3, v5, v6, "textures/common/caulk", detail); } if(dir != MOVE_SOUTH) { if(dir == MOVE_NORTH) AddFaceWithTexture(newBrush, v1, v7, v2, riserTexture, detail); else AddFaceWithTexture(newBrush, v1, v7, v2, "textures/common/caulk", detail); } if(dir == MOVE_EAST) AddFaceWithTexture(newBrush, v1, v5, v3, "textures/common/caulk", detail); if(dir == MOVE_WEST) AddFaceWithTexture(newBrush, v2, v8, v6, "textures/common/caulk", detail); if(dir == MOVE_NORTH) AddFaceWithTexture(newBrush, v1, v5, v6, "textures/common/caulk", detail); if(dir == MOVE_SOUTH) AddFaceWithTexture(newBrush, v7, v8, v3, "textures/common/caulk", detail); GetWorldspawn()->m_traverse->insert(newBrush); }
void BuildCornerStairs( vec3_t vMin, vec3_t vMax, int nSteps, const char* mainTexture, const char* riserTex ){ vec3_t* topPoints = new vec3_t[nSteps + 1]; vec3_t* botPoints = new vec3_t[nSteps + 1]; bool bFacesUse[6] = {TRUE, TRUE, FALSE, TRUE, FALSE, FALSE}; vec3_t centre; VectorCopy( vMin, centre ); centre[0] = vMax[0]; int height = (int)( vMax[2] - vMin[2] ) / nSteps; vec3_t vTop, vBot; VectorCopy( vMax, vTop ); VectorCopy( vMin, vBot ); vTop[2] = vMin[2] + height; int i; for ( i = 0; i <= nSteps; i++ ) { VectorCopy( centre, topPoints[i] ); VectorCopy( centre, botPoints[i] ); topPoints[i][2] = vMax[2]; botPoints[i][2] = vMin[2]; topPoints[i][0] -= 10 * sinf( Q_PI * i / ( 2 * nSteps ) ); topPoints[i][1] += 10 * cosf( Q_PI * i / ( 2 * nSteps ) ); botPoints[i][0] = topPoints[i][0]; botPoints[i][1] = topPoints[i][1]; } vec3_t tp[3]; for ( int j = 0; j < 3; j++ ) VectorCopy( topPoints[j], tp[j] ); for ( i = 0; i < nSteps; i++ ) { brush_t* brush = Build_Get_BoundingCube_Selective( vBot, vTop, "textures/common/caulk", bFacesUse ); for ( int j = 0; j < 3; j++ ) tp[j][2] = vTop[2]; AddFaceWithTexture( brush, tp[2], tp[1], tp[0], mainTexture, FALSE ); AddFaceWithTexture( brush, centre, botPoints[i + 1], topPoints[i + 1], "textures/common/caulk", FALSE ); AddFaceWithTexture( brush, centre, topPoints[i], botPoints[i], riserTex, FALSE ); g_FuncTable.m_pfnCommitBrushHandle( brush ); vTop[2] += height; vBot[2] += height; } delete[] topPoints; delete[] botPoints; vMin[2] += height; vMax[2] += height; MakeBevel( vMin, vMax ); }
void Build_Wedge(int dir, vec3_t min, vec3_t max, bool bUp) { NodeSmartReference newBrush(GlobalBrushCreator().createBrush()); vec3_t v1, v2, v3, v5, v6, v7, v8; VectorCopy(min, v1); VectorCopy(min, v2); VectorCopy(min, v3); VectorCopy(max, v5); VectorCopy(max, v6); VectorCopy(max, v7); VectorCopy(max, v8); v2[0] = max[0]; v3[1] = max[1]; v6[0] = min[0]; v7[1] = min[1]; v8[2] = min[2]; if(bUp) { if(dir != MOVE_EAST) AddFaceWithTexture(newBrush, v1, v3, v6, "textures/common/caulk", false); if(dir != MOVE_WEST) AddFaceWithTexture(newBrush, v7, v5, v8, "textures/common/caulk", false); if(dir != MOVE_NORTH) AddFaceWithTexture(newBrush, v1, v7, v2, "textures/common/caulk", false); if(dir != MOVE_SOUTH) AddFaceWithTexture(newBrush, v3, v8, v6, "textures/common/caulk", false); AddFaceWithTexture(newBrush, v1, v2, v3, "textures/common/caulk", false); if(dir == MOVE_EAST) AddFaceWithTexture(newBrush, v1, v3, v5, "textures/common/caulk", false); if(dir == MOVE_WEST) AddFaceWithTexture(newBrush, v2, v6, v8, "textures/common/caulk", false); if(dir == MOVE_NORTH) AddFaceWithTexture(newBrush, v1, v6, v5, "textures/common/caulk", false); if(dir == MOVE_SOUTH) AddFaceWithTexture(newBrush, v7, v3, v8, "textures/common/caulk", false); } else { if(dir != MOVE_WEST) AddFaceWithTexture(newBrush, v7, v5, v8, "textures/common/caulk", false); if(dir != MOVE_EAST) AddFaceWithTexture(newBrush, v1, v3, v6, "textures/common/caulk", false); if(dir != MOVE_NORTH) AddFaceWithTexture(newBrush, v3, v8, v6, "textures/common/caulk", false); if(dir != MOVE_SOUTH) AddFaceWithTexture(newBrush, v1, v7, v2, "textures/common/caulk", false); AddFaceWithTexture(newBrush, v6, v5, v7, "textures/common/caulk", false); if(dir == MOVE_WEST) AddFaceWithTexture(newBrush, v1, v5, v3, "textures/common/caulk", false); if(dir == MOVE_EAST) AddFaceWithTexture(newBrush, v2, v8, v6, "textures/common/caulk", false); if(dir == MOVE_NORTH) AddFaceWithTexture(newBrush, v1, v5, v6, "textures/common/caulk", false); if(dir == MOVE_SOUTH) AddFaceWithTexture(newBrush, v7, v8, v3, "textures/common/caulk", false); } Node_getTraversable(GlobalRadiant().getMapWorldEntity())->insert(newBrush); }