| 689 | |
| 690 | |
| 691 | void GetLargeJungleTreeImage(int a_BlockX, int a_BlockY, int a_BlockZ, cNoise & a_Noise, int a_Seq, sSetBlockVector & a_LogBlocks, sSetBlockVector & a_OtherBlocks) |
| 692 | { |
| 693 | // TODO: Generate proper jungle trees with branches |
| 694 | |
| 695 | // Vines are around the BigO4, but not in the corners; need proper meta for direction |
| 696 | static const sMetaCoords Vines[] = |
| 697 | { |
| 698 | {-2, -5, 1}, {-1, -5, 1}, {0, -5, 1}, {1, -5, 1}, {2, -5, 1}, // North face |
| 699 | {-2, 5, 4}, {-1, 5, 4}, {0, 5, 4}, {1, 5, 4}, {2, 5, 4}, // South face |
| 700 | {5, -2, 2}, {5, -1, 2}, {5, 0, 2}, {5, 1, 2}, {5, 2, 2}, // East face |
| 701 | {-5, -2, 8}, {-5, -1, 8}, {-5, 0, 8}, {-5, 1, 8}, {-5, 2, 8}, // West face |
| 702 | // TODO: vines around the trunk, proper metas and height |
| 703 | } ; |
| 704 | |
| 705 | int Height = 24 + (a_Noise.IntNoise3DInt(a_BlockX + 32 * a_Seq, a_BlockY, a_BlockZ + 32 * a_Seq) / 11) % 24; |
| 706 | |
| 707 | a_LogBlocks.reserve(Height * 4); |
| 708 | a_OtherBlocks.reserve(2 * ARRAYCOUNT(BigO4) + ARRAYCOUNT(BigO3) + Height * ARRAYCOUNT(Vines) + 50); |
| 709 | |
| 710 | for (int i = 0; i < Height; i++) |
| 711 | { |
| 712 | a_LogBlocks.push_back(sSetBlock(a_BlockX, a_BlockY + i, a_BlockZ, E_BLOCK_LOG, E_META_LOG_JUNGLE)); |
| 713 | a_LogBlocks.push_back(sSetBlock(a_BlockX + 1, a_BlockY + i, a_BlockZ, E_BLOCK_LOG, E_META_LOG_JUNGLE)); |
| 714 | a_LogBlocks.push_back(sSetBlock(a_BlockX, a_BlockY + i, a_BlockZ + 1, E_BLOCK_LOG, E_META_LOG_JUNGLE)); |
| 715 | a_LogBlocks.push_back(sSetBlock(a_BlockX + 1, a_BlockY + i, a_BlockZ + 1, E_BLOCK_LOG, E_META_LOG_JUNGLE)); |
| 716 | } |
| 717 | int hei = a_BlockY + Height - 2; |
| 718 | |
| 719 | // Put vines around the lowermost leaves layer: |
| 720 | PushSomeColumns(a_BlockX, hei, a_BlockZ, Height, a_Seq, a_Noise, 0x3fffffff, a_OtherBlocks, Vines, ARRAYCOUNT(Vines), E_BLOCK_VINES); |
| 721 | |
| 722 | // The lower two leaves layers are BigO4 with log in the middle and possibly corners: |
| 723 | for (int i = 0; i < 2; i++) |
| 724 | { |
| 725 | PushCoordBlocks(a_BlockX, hei, a_BlockZ, a_OtherBlocks, BigO4, ARRAYCOUNT(BigO4), E_BLOCK_LEAVES, E_META_LEAVES_JUNGLE); |
| 726 | PushCornerBlocks(a_BlockX, hei, a_BlockZ, a_Seq, a_Noise, 0x5fffffff, a_OtherBlocks, 3, E_BLOCK_LEAVES, E_META_LEAVES_JUNGLE); |
| 727 | hei++; |
| 728 | } // for i - 2* |
| 729 | |
| 730 | // The top leaves layer is a BigO3 with leaves in the middle and possibly corners: |
| 731 | PushCoordBlocks(a_BlockX, hei, a_BlockZ, a_OtherBlocks, BigO3, ARRAYCOUNT(BigO3), E_BLOCK_LEAVES, E_META_LEAVES_JUNGLE); |
| 732 | PushCornerBlocks(a_BlockX, hei, a_BlockZ, a_Seq, a_Noise, 0x5fffffff, a_OtherBlocks, 3, E_BLOCK_LEAVES, E_META_LEAVES_JUNGLE); |
| 733 | a_OtherBlocks.push_back(sSetBlock(a_BlockX, hei, a_BlockZ, E_BLOCK_LEAVES, E_META_LEAVES_JUNGLE)); |
| 734 | } |
| 735 | |
| 736 | |
| 737 |
no test coverage detected