inline void DrawTreeVertexFar(CVertexArray* va, const float3& pos, const float3& swd, float dx, float dy, bool enlarge = true) { if (enlarge) va->EnlargeArrays(4, 0, VA_SIZE_T); float3 base = pos + swd; SetArrayQ(va, TEX_LEAF_START_X1 + dx, TEX_LEAF_START_Y4 + dy, base); base.y += MAX_TREE_HEIGHT; SetArrayQ(va, TEX_LEAF_START_X1 + dx, TEX_LEAF_END_Y4 + dy, base); base -= (swd * 2.0f); SetArrayQ(va, TEX_LEAF_END_X1 + dx, TEX_LEAF_END_Y4 + dy, base); base.y -= MAX_TREE_HEIGHT; SetArrayQ(va, TEX_LEAF_END_X1 + dx, TEX_LEAF_START_Y4 + dy, base); }
inline void DrawTreeVertexFar(float3 pos, float3 swd, float dx, float dy, bool enlarge=true) { if(enlarge) va->EnlargeArrays(4,0,VA_SIZE_T); float3 base=pos+swd; SetArrayQ(TEX_LEAF_START_X1+dx,TEX_LEAF_START_Y4+dy,base); base.y+=MAX_TREE_HEIGHT; SetArrayQ(TEX_LEAF_START_X1+dx,TEX_LEAF_END_Y4+dy,base); base-=swd; base-=swd; SetArrayQ(TEX_LEAF_END_X1+dx,TEX_LEAF_END_Y4+dy,base); base.y-=MAX_TREE_HEIGHT; SetArrayQ(TEX_LEAF_END_X1+dx,TEX_LEAF_START_Y4+dy,base); }
inline void DrawTreeVertexFar2(float3 pos, float3 swd, bool enlarge=true) { if(enlarge) va->EnlargeArrays(4,0,VA_SIZE_T); float3 base=pos+swd; SetArrayQ(0,0.25f,base); base.y+=MAX_TREE_HEIGHT; SetArrayQ(0,0.5f,base); base-=swd; base-=swd; SetArrayQ(0.25f,0.5f,base); base.y-=MAX_TREE_HEIGHT; SetArrayQ(0.25f,0.25f,base); }
void DrawTreeVertexFar2(const float3& pos, const float3& swd, bool enlarge = true) { if (enlarge) va->EnlargeArrays(4, 0, VA_SIZE_T); float3 base = pos + swd; SetArrayQ(va, 0, 0.5f, base); base.y += MAX_TREE_HEIGHT; SetArrayQ(va, 0, 1.0f, base); base -= swd; base -= swd; SetArrayQ(va, 0.25f, 1.0f, base); base.y -= MAX_TREE_HEIGHT; SetArrayQ(va, 0.25f, 0.5f, base); }
inline void DrawTreeVertex(float3 pos, float dx, float dy, bool enlarge=true) { if(enlarge) va->EnlargeArrays(12,0,VA_SIZE_T); float3 ftpos=pos; ftpos.x+=HALF_MAX_TREE_HEIGHT; DrawTreeVertexA(ftpos, dx, dy); ftpos.z+=MAX_TREE_HEIGHT; SetArrayQ(TEX_LEAF_START_X3+dx,TEX_LEAF_START_Y3+dy,ftpos); ftpos.z-=MAX_TREE_HEIGHT; SetArrayQ(TEX_LEAF_START_X3+dx,TEX_LEAF_END_Y3+dy,ftpos); ftpos.x-=MAX_TREE_HEIGHT; SetArrayQ(TEX_LEAF_END_X3+dx,TEX_LEAF_END_Y3+dy,ftpos); ftpos.z+=MAX_TREE_HEIGHT; SetArrayQ(TEX_LEAF_END_X3+dx,TEX_LEAF_START_Y3+dy,ftpos); }
void CAdvTreeDrawer::DrawTreeVertex(CVertexArray* va, const float3& pos, float dx, float dy, bool enlarge) { if (enlarge) va->EnlargeArrays(12, 0, VA_SIZE_T); float3 ftpos = pos; ftpos.x += HALF_MAX_TREE_HEIGHT; DrawTreeVertexA(va, ftpos, dx, dy); ftpos.z += MAX_TREE_HEIGHT; SetArrayQ(va, TEX_LEAF_START_X3 + dx, TEX_LEAF_START_Y3 + dy, ftpos); ftpos.z -= MAX_TREE_HEIGHT; SetArrayQ(va, TEX_LEAF_START_X3 + dx, TEX_LEAF_END_Y3 + dy, ftpos); ftpos.x -= MAX_TREE_HEIGHT; SetArrayQ(va, TEX_LEAF_END_X3 + dx, TEX_LEAF_END_Y3 + dy, ftpos); ftpos.z += MAX_TREE_HEIGHT; SetArrayQ(va, TEX_LEAF_END_X3 + dx, TEX_LEAF_START_Y3 + dy, ftpos); }
inline void DrawTreeVertexA(CVertexArray* va, float3& ftpos, float dx, float dy) { SetArrayQ(va, TEX_LEAF_START_X1 + dx, TEX_LEAF_START_Y1 + dy, ftpos); ftpos.y += MAX_TREE_HEIGHT; SetArrayQ(va, TEX_LEAF_START_X1 + dx, TEX_LEAF_END_Y1 + dy, ftpos); ftpos.x -= MAX_TREE_HEIGHT; SetArrayQ(va, TEX_LEAF_END_X1 + dx, TEX_LEAF_END_Y1 + dy, ftpos); ftpos.y -= MAX_TREE_HEIGHT; SetArrayQ(va, TEX_LEAF_END_X1 + dx, TEX_LEAF_START_Y1 + dy, ftpos); ftpos.x += HALF_MAX_TREE_HEIGHT; ftpos.z += HALF_MAX_TREE_HEIGHT; SetArrayQ(va, TEX_LEAF_START_X2 + dx, TEX_LEAF_START_Y2 + dy, ftpos); ftpos.y += MAX_TREE_HEIGHT; SetArrayQ(va, TEX_LEAF_START_X2 + dx, TEX_LEAF_END_Y2 + dy, ftpos); ftpos.z -= MAX_TREE_HEIGHT; SetArrayQ(va, TEX_LEAF_END_X2 + dx, TEX_LEAF_END_Y2 + dy, ftpos); ftpos.y -= MAX_TREE_HEIGHT; SetArrayQ(va, TEX_LEAF_END_X2 + dx, TEX_LEAF_START_Y2 + dy, ftpos); ftpos.x += HALF_MAX_TREE_HEIGHT; ftpos.y += PART_MAX_TREE_HEIGHT; }
inline void DrawTreeVertexMid2(float3 pos, bool enlarge=true) { if(enlarge) va->EnlargeArrays(12,0,VA_SIZE_T); float3 base=pos; base.x+=MAX_TREE_HEIGHT_3; SetArrayQ(0,0.25f,base); base.y+=MAX_TREE_HEIGHT; SetArrayQ(0,0.5f,base); base.x-=MAX_TREE_HEIGHT_6; SetArrayQ(0.25f,0.5f,base); base.y-=MAX_TREE_HEIGHT; SetArrayQ(0.25f,0.25f,base); base.x+=MAX_TREE_HEIGHT_3; base.z+=MAX_TREE_HEIGHT_3; SetArrayQ(0.25f,0.25f,base); base.y+=MAX_TREE_HEIGHT; SetArrayQ(0.25f,0.5f,base); base.z-=MAX_TREE_HEIGHT_6; SetArrayQ(0.5f,0.5f,base); base.y-=MAX_TREE_HEIGHT; SetArrayQ(0.5f,0.25f,base); base.z+=MAX_TREE_HEIGHT_3; base.x+=MAX_TREE_HEIGHT_36; base.y+=MAX_TREE_HEIGHT_3; SetArrayQ(0.5f,0.25f,base); base.x-=MAX_TREE_HEIGHT_36; base.z-=MAX_TREE_HEIGHT_36; SetArrayQ(0.5f,0.5f,base); base.x-=MAX_TREE_HEIGHT_36; base.z+=MAX_TREE_HEIGHT_36; SetArrayQ(1,0.5f,base); base.x+=MAX_TREE_HEIGHT_36; base.z+=MAX_TREE_HEIGHT_36; SetArrayQ(1,0.25f,base); }
void DrawTreeVertexMid1(const float3& pos, bool enlarge = true) { if (enlarge) va->EnlargeArrays(12, 0, VA_SIZE_T); float3 base = pos; base.x += MAX_TREE_HEIGHT_3; SetArrayQ(va, 0.0f, 0.0f, base); base.y += MAX_TREE_HEIGHT; SetArrayQ(va, 0.0f, 0.5f, base); base.x -= MAX_TREE_HEIGHT_6; SetArrayQ(va, 0.5f, 0.5f, base); base.y -= MAX_TREE_HEIGHT; SetArrayQ(va, 0.5f, 0.0f, base); base.x += MAX_TREE_HEIGHT_3; base.z += MAX_TREE_HEIGHT_3; SetArrayQ(va, 0.0f, 0.0f, base); base.y += MAX_TREE_HEIGHT; SetArrayQ(va, 0.0f, 0.5f, base); base.z -= MAX_TREE_HEIGHT_6; SetArrayQ(va, 0.5f, 0.5f, base); base.y -= MAX_TREE_HEIGHT; SetArrayQ(va, 0.5f, 0.0f, base); base.z += MAX_TREE_HEIGHT_3; base.x += MAX_TREE_HEIGHT_36; base.y += MAX_TREE_HEIGHT_25; SetArrayQ(va, 0.5f, 0.0f, base); base.x -= MAX_TREE_HEIGHT_36; base.z -= MAX_TREE_HEIGHT_36; SetArrayQ(va, 0.5f, 0.5f, base); base.x -= MAX_TREE_HEIGHT_36; base.z += MAX_TREE_HEIGHT_36; SetArrayQ(va, 1.0f, 0.5f, base); base.x += MAX_TREE_HEIGHT_36; base.z += MAX_TREE_HEIGHT_36; SetArrayQ(va, 1.0f, 0.0f, base); }