// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 #include "stdafx.h" #include #include #if MAX_VERSION_MAJOR >= 25 #include #endif namespace { float verts[] = { -0.382369f, -0.368268f, 0.0f, -0.384947f, -0.360952f, 0.0f, -0.389152f, -0.354901f, 0.0f, -0.394895f, -0.350044f, 0.0f, -0.400727f, -0.346946f, 0.0f, -0.407375f, -0.344732f, 0.0f, -0.415235f, -0.343405f, 0.0f, -0.424704f, -0.342962f, 0.0f, -0.47043f, -0.342962f, 0.0f, -0.47043f, -0.450602f, 0.0f, -0.44271f, -0.450602f, 0.0f, -0.44271f, -0.415502f, 0.0f, -0.425399f, -0.415502f, 0.0f, -0.414563f, -0.414689f, 0.0f, -0.405664f, -0.412251f, 0.0f, -0.398104f, -0.408223f, 0.0f, -0.391286f, -0.40264f, 0.0f, -0.387123f, -0.397395f, 0.0f, -0.384045f, -0.391046f, 0.0f, -0.382144f, -0.384064f, 0.0f, -0.38151f, -0.37692f, 0.0f, -0.410608f, -0.381884f, 0.0f, -0.411504f, -0.385411f, 0.0f, -0.413068f, -0.388366f, 0.0f, -0.415372f, -0.390876f, 0.0f, -0.418853f, -0.393018f, 0.0f, -0.423074f, -0.394304f, 0.0f, -0.42829f, -0.394948f, 0.0f, -0.434753f, -0.395162f, 0.0f, -0.44271f, -0.395162f, 0.0f, -0.44271f, -0.363302f, 0.0f, -0.437937f, -0.363302f, 0.0f, -0.426944f, -0.363481f, 0.0f, -0.422768f, -0.364043f, 0.0f, -0.418483f, -0.365375f, 0.0f, -0.415428f, -0.367151f, 0.0f, -0.412769f, -0.36991f, 0.0f, -0.410925f, -0.373472f, 0.0f, -0.41031f, -0.37766f, 0.0f, -0.306744f, -0.3799f, 0.0f, -0.307747f, -0.383051f, 0.0f, -0.309474f, -0.385628f, 0.0f, -0.311979f, -0.38797f, 0.0f, -0.315378f, -0.389855f, 0.0f, -0.319499f, -0.390915f, 0.0f, -0.324525f, -0.3914f, 0.0f, -0.330637f, -0.391562f, 0.0f, -0.33917f, -0.391562f, 0.0f, -0.33917f, -0.362762f, 0.0f, -0.329118f, -0.362762f, 0.0f, -0.320368f, -0.363014f, 0.0f, -0.316843f, -0.363489f, 0.0f, -0.313787f, -0.364413f, 0.0f, -0.310334f, -0.366371f, 0.0f, -0.308074f, -0.36894f, 0.0f, -0.306826f, -0.3721f, 0.0f, -0.30641f, -0.375834f, 0.0f, -0.299027f, -0.404528f, 0.0f, -0.289906f, -0.398903f, 0.0f, -0.283163f, -0.392012f, 0.0f, -0.278998f, -0.383385f, 0.0f, -0.27761f, -0.372552f, 0.0f, -0.278507f, -0.364603f, 0.0f, -0.281197f, -0.358119f, 0.0f, -0.285409f, -0.352901f, 0.0f, -0.290871f, -0.34875f, 0.0f, -0.297104f, -0.345766f, 0.0f, -0.30377f, -0.344048f, 0.0f, -0.311325f, -0.343233f, 0.0f, -0.320222f, -0.342962f, 0.0f, -0.36689f, -0.342962f, 0.0f, -0.36689f, -0.450602f, 0.0f, -0.33917f, -0.450602f, 0.0f, -0.33917f, -0.411182f, 0.0f, -0.32639f, -0.411182f, 0.0f, -0.297064f, -0.450602f, 0.0f, -0.26303f, -0.450602f, 0.0f, -0.17173f, -0.342962f, 0.0f, -0.26677f, -0.342962f, 0.0f, -0.26677f, -0.363842f, 0.0f, -0.23311f, -0.363842f, 0.0f, -0.23311f, -0.450602f, 0.0f, -0.20539f, -0.450602f, 0.0f, -0.20539f, -0.363842f, 0.0f, -0.17173f, -0.363842f, 0.0f, -0.0416084f, -0.342962f, 0.0f, -0.0676774f, -0.418652f, 0.0f, -0.0937465f, -0.342962f, 0.0f, -0.12287f, -0.342962f, 0.0f, -0.0836074f, -0.450602f, 0.0f, -0.0525124f, -0.450602f, 0.0f, -0.0132499f, -0.342962f, 0.0f, 0.0760434f, -0.392143f, 0.0f, 0.0673232f, -0.378466f, 0.0f, 0.053279f, -0.369793f, 0.0f, 0.0344f, -0.366902f, 0.0f, 0.0157022f, -0.369775f, 0.0f, 0.00162179f, -0.378394f, 0.0f, -0.007207f, -0.392053f, 0.0f, -0.0101499f, -0.410049f, 0.0f, -0.00722527f, -0.427945f, 0.0f, 0.00154868f, -0.441595f, 0.0f, 0.0156108f, -0.45024f, 0.0f, 0.0344f, -0.453122f, 0.0f, 0.0531893f, -0.45024f, 0.0f, 0.0672515f, -0.441595f, 0.0f, 0.0760254f, -0.427945f, 0.0f, 0.0789501f, -0.410049f, 0.0f, 0.0443813f, -0.432154f, 0.0f, 0.041399f, -0.433751f, 0.0f, 0.0380897f, -0.434644f, 0.0f, 0.0346167f, -0.434942f, 0.0f, 0.0307111f, -0.434617f, 0.0f, 0.0272577f, -0.433643f, 0.0f, 0.0242572f, -0.431965f, 0.0f, 0.0217101f, -0.429531f, 0.0f, 0.0196067f, -0.426094f, 0.0f, 0.0180833f, -0.421701f, 0.0f, 0.0171584f, -0.416388f, 0.0f, 0.0168501f, -0.410192f, 0.0f, 0.0172037f, -0.403392f, 0.0f, 0.0182648f, -0.397854f, 0.0f, 0.0199241f, -0.39347f, 0.0f, 0.0220729f, -0.390133f, 0.0f, 0.0248193f, -0.387607f, 0.0f, 0.0276923f, -0.386092f, 0.0f, 0.0308373f, -0.385334f, 0.0f, 0.0344f, -0.385082f, 0.0f, 0.0380444f, -0.385389f, 0.0f, 0.0414341f, -0.386308f, 0.0f, 0.0444618f, -0.387968f, 0.0f, 0.0470198f, -0.390493f, 0.0f, 0.0490862f, -0.393866f, 0.0f, 0.0506451f, -0.398214f, 0.0f, 0.0516238f, -0.403626f, 0.0f, 0.0519501f, -0.410192f, 0.0f, 0.051633f, -0.417074f, 0.0f, 0.0506817f, -0.422279f, 0.0f, 0.0490954f, -0.426329f, 0.0f, 0.0468735f, -0.429747f, 0.0f, 0.11859f, -0.338102f, 0.0f, 0.0924901f, -0.338102f, 0.0f, 0.0924901f, -0.450602f, 0.0f, 0.11859f, -0.450602f, 0.0f, 0.21907f, -0.369422f, 0.0f, 0.19297f, -0.369422f, 0.0f, 0.19297f, -0.426867f, 0.0f, 0.18914f, -0.428961f, 0.0f, 0.185165f, -0.430476f, 0.0f, 0.181299f, -0.431395f, 0.0f, 0.177794f, -0.431702f, 0.0f, 0.173359f, -0.431395f, 0.0f, 0.170026f, -0.430476f, 0.0f, 0.167596f, -0.428888f, 0.0f, 0.165872f, -0.426578f, 0.0f, 0.164688f, -0.423556f, 0.0f, 0.164028f, -0.41983f, 0.0f, 0.16373f, -0.415238f, 0.0f, 0.16363f, -0.409618f, 0.0f, 0.16363f, -0.369422f, 0.0f, 0.13753f, -0.369422f, 0.0f, 0.13753f, -0.422213f, 0.0f, 0.139344f, -0.435466f, 0.0f, 0.144785f, -0.445035f, 0.0f, 0.153583f, -0.45083f, 0.0f, 0.165467f, -0.452762f, 0.0f, 0.173191f, -0.452049f, 0.0f, 0.17976f, -0.449909f, 0.0f, 0.186058f, -0.446397f, 0.0f, 0.19297f, -0.441568f, 0.0f, 0.19297f, -0.450602f, 0.0f, 0.21907f, -0.450602f, 0.0f, 0.322069f, -0.390757f, 0.0f, 0.325521f, -0.389264f, 0.0f, 0.328665f, -0.388423f, 0.0f, 0.331883f, -0.388142f, 0.0f, 0.336184f, -0.38844f, 0.0f, 0.339401f, -0.389336f, 0.0f, 0.341713f, -0.390883f, 0.0f, 0.343302f, -0.393137f, 0.0f, 0.344342f, -0.396122f, 0.0f, 0.344857f, -0.399867f, 0.0f, 0.34511f, -0.410001f, 0.0f, 0.34511f, -0.450602f, 0.0f, 0.37121f, -0.450602f, 0.0f, 0.37121f, -0.397696f, 0.0f, 0.369505f, -0.384597f, 0.0f, 0.364388f, -0.374971f, 0.0f, 0.355988f, -0.369054f, 0.0f, 0.34443f, -0.367082f, 0.0f, 0.337282f, -0.368023f, 0.0f, 0.32999f, -0.370845f, 0.0f, 0.322519f, -0.375314f, 0.0f, 0.314831f, -0.381195f, 0.0f, 0.310698f, -0.375089f, 0.0f, 0.305229f, -0.370665f, 0.0f, 0.298622f, -0.367978f, 0.0f, 0.291076f, -0.367082f, 0.0f, 0.283965f, -0.367824f, 0.0f, 0.277502f, -0.370049f, 0.0f, 0.27122f, -0.373596f, 0.0f, 0.26465f, -0.378301f, 0.0f, 0.26465f, -0.369422f, 0.0f, 0.23855f, -0.369422f, 0.0f, 0.23855f, -0.450602f, 0.0f, 0.26465f, -0.450602f, 0.0f, 0.26465f, -0.392991f, 0.0f, 0.267722f, -0.3913f, 0.0f, 0.271155f, -0.389699f, 0.0f, 0.274824f, -0.388531f, 0.0f, 0.278603f, -0.388142f, 0.0f, 0.28284f, -0.38844f, 0.0f, 0.286011f, -0.389336f, 0.0f, 0.288315f, -0.390883f, 0.0f, 0.289951f, -0.393137f, 0.0f, 0.290998f, -0.396131f, 0.0f, 0.29154f, -0.399902f, 0.0f, 0.291758f, -0.404508f, 0.0f, 0.29183f, -0.410001f, 0.0f, 0.29183f, -0.450602f, 0.0f, 0.31793f, -0.450602f, 0.0f, 0.31793f, -0.392991f, 0.0f, 0.47043f, -0.405684f, 0.0f, 0.467932f, -0.389101f, 0.0f, 0.460436f, -0.376905f, 0.0f, 0.447979f, -0.369403f, 0.0f, 0.430597f, -0.366902f, 0.0f, 0.411377f, -0.369838f, 0.0f, 0.396738f, -0.378647f, 0.0f, 0.387477f, -0.392478f, 0.0f, 0.38439f, -0.410482f, 0.0f, 0.387652f, -0.42846f, 0.0f, 0.397439f, -0.441776f, 0.0f, 0.413351f, -0.450016f, 0.0f, 0.43499f, -0.452762f, 0.0f, 0.44407f, -0.452363f, 0.0f, 0.452316f, -0.451166f, 0.0f, 0.460399f, -0.44908f, 0.0f, 0.46899f, -0.446015f, 0.0f, 0.46899f, -0.425042f, 0.0f, 0.466076f, -0.425042f, 0.0f, 0.46074f, -0.428407f, 0.0f, 0.453765f, -0.43155f, 0.0f, 0.445842f, -0.433824f, 0.0f, 0.437665f, -0.434582f, 0.0f, 0.426144f, -0.433308f, 0.0f, 0.417811f, -0.429486f, 0.0f, 0.412611f, -0.423262f, 0.0f, 0.41049f, -0.414782f, 0.0f, 0.47043f, -0.414782f, 0.0f, 0.410417f, -0.399482f, 0.0f, 0.41207f, -0.392068f, 0.0f, 0.415863f, -0.386999f, 0.0f, 0.4214f, -0.384076f, 0.0f, 0.428282f, -0.383102f, 0.0f, 0.435345f, -0.38413f, 0.0f, 0.440265f, -0.387215f, 0.0f, 0.443206f, -0.392339f, 0.0f, 0.44433f, -0.399482f, 0.0f }; int faces[] = { 21, 22, 1, 0, 1, 38, 21, 1, 0, 1, 37, 38, 1, 0, 1, 0, 1, 22, 0, 1, 20, 0, 22, 0, 1, 19, 20, 22, 0, 1, 18, 19, 22, 0, 1, 17, 18, 22, 0, 1, 16, 17, 22, 0, 1, 16, 22, 23, 0, 2, 15, 16, 23, 0, 1, 15, 23, 24, 0, 2, 14, 15, 24, 0, 1, 13, 14, 24, 0, 1, 13, 24, 25, 0, 2, 37, 1, 2, 0, 2, 36, 37, 2, 0, 1, 36, 2, 3, 0, 2, 36, 3, 4, 0, 2, 35, 36, 4, 0, 1, 35, 4, 5, 0, 2, 34, 35, 5, 0, 1, 34, 5, 6, 0, 2, 33, 34, 6, 0, 1, 33, 6, 7, 0, 2, 32, 33, 7, 0, 1, 12, 13, 25, 0, 1, 12, 25, 26, 0, 2, 12, 26, 27, 0, 2, 11, 12, 27, 0, 1, 11, 27, 28, 0, 2, 11, 28, 29, 0, 2, 32, 7, 8, 0, 2, 31, 32, 8, 0, 1, 30, 31, 8, 0, 1, 30, 8, 9, 0, 2, 29, 30, 9, 0, 1, 11, 29, 9, 0, 0, 10, 11, 9, 0, 5, 75, 76, 57, 0, 3, 74, 75, 57, 0, 1, 57, 40, 41, 0, 2, 74, 57, 41, 0, 0, 74, 41, 42, 0, 2, 74, 42, 43, 0, 2, 74, 43, 44, 0, 2, 74, 44, 45, 0, 2, 40, 57, 58, 0, 2, 74, 45, 46, 0, 2, 73, 74, 46, 0, 1, 73, 46, 47, 0, 2, 71, 72, 73, 0, 3, 70, 71, 73, 0, 1, 70, 73, 47, 0, 0, 70, 47, 48, 0, 2, 69, 70, 48, 0, 1, 69, 48, 49, 0, 2, 69, 49, 50, 0, 2, 68, 69, 50, 0, 1, 68, 50, 51, 0, 2, 68, 51, 52, 0, 2, 67, 68, 52, 0, 1, 40, 58, 59, 0, 2, 39, 40, 59, 0, 1, 39, 59, 60, 0, 2, 39, 60, 61, 0, 2, 56, 39, 61, 0, 1, 55, 56, 61, 0, 1, 55, 61, 62, 0, 2, 55, 62, 63, 0, 2, 55, 63, 64, 0, 2, 54, 55, 64, 0, 1, 54, 64, 65, 0, 2, 54, 65, 66, 0, 2, 53, 54, 66, 0, 1, 53, 66, 67, 0, 2, 53, 67, 52, 0, 4, 83, 84, 77, 0, 3, 83, 77, 78, 0, 2, 81, 82, 83, 0, 3, 80, 81, 83, 0, 1, 80, 83, 78, 0, 0, 79, 80, 78, 0, 5, 90, 91, 85, 0, 3, 90, 85, 86, 0, 2, 89, 90, 86, 0, 1, 88, 89, 86, 0, 1, 88, 86, 87, 0, 6, 93, 127, 128, 0, 2, 93, 128, 129, 0, 2, 127, 93, 94, 0, 2, 93, 129, 130, 0, 2, 127, 94, 95, 0, 2, 93, 130, 131, 0, 2, 127, 95, 96, 0, 2, 126, 127, 96, 0, 1, 125, 126, 96, 0, 1, 124, 125, 96, 0, 1, 124, 96, 97, 0, 2, 123, 124, 97, 0, 1, 122, 123, 97, 0, 1, 122, 97, 98, 0, 2, 121, 122, 98, 0, 1, 121, 98, 99, 0, 2, 120, 121, 99, 0, 1, 119, 120, 99, 0, 1, 119, 99, 100, 0, 2, 118, 119, 100, 0, 1, 117, 118, 100, 0, 1, 117, 100, 101, 0, 2, 116, 117, 101, 0, 1, 116, 101, 102, 0, 2, 115, 116, 102, 0, 1, 114, 115, 102, 0, 1, 114, 102, 103, 0, 2, 113, 114, 103, 0, 1, 112, 113, 103, 0, 1, 111, 112, 103, 0, 1, 111, 103, 104, 0, 2, 110, 111, 104, 0, 1, 109, 110, 104, 0, 1, 108, 109, 104, 0, 1, 108, 104, 105, 0, 2, 139, 108, 105, 0, 1, 138, 139, 105, 0, 1, 138, 105, 106, 0, 2, 137, 138, 106, 0, 1, 137, 106, 107, 0, 2, 136, 137, 107, 0, 1, 135, 136, 107, 0, 1, 135, 107, 92, 0, 2, 134, 135, 92, 0, 1, 133, 134, 92, 0, 1, 133, 92, 93, 0, 2, 132, 133, 93, 0, 1, 132, 93, 131, 0, 4, 142, 143, 140, 0, 3, 141, 142, 140, 0, 5, 170, 171, 144, 0, 3, 169, 170, 144, 0, 1, 159, 160, 161, 0, 3, 158, 159, 161, 0, 1, 157, 158, 161, 0, 1, 156, 157, 161, 0, 1, 156, 161, 162, 0, 2, 155, 156, 162, 0, 1, 155, 162, 163, 0, 2, 154, 155, 163, 0, 1, 154, 163, 164, 0, 2, 153, 154, 164, 0, 1, 153, 164, 165, 0, 2, 152, 153, 165, 0, 1, 152, 165, 166, 0, 2, 151, 152, 166, 0, 1, 151, 166, 167, 0, 2, 150, 151, 167, 0, 1, 150, 167, 168, 0, 2, 149, 150, 168, 0, 1, 149, 168, 169, 0, 2, 148, 149, 169, 0, 1, 147, 148, 169, 0, 1, 144, 145, 146, 0, 3, 169, 144, 146, 0, 0, 147, 169, 146, 0, 4, 219, 220, 221, 0, 3, 218, 219, 221, 0, 1, 217, 218, 221, 0, 1, 216, 217, 221, 0, 1, 215, 216, 221, 0, 1, 204, 205, 206, 0, 3, 203, 204, 206, 0, 1, 201, 202, 203, 0, 3, 201, 203, 206, 0, 0, 201, 206, 207, 0, 2, 201, 207, 208, 0, 2, 183, 184, 185, 0, 3, 182, 183, 185, 0, 1, 181, 182, 185, 0, 1, 181, 185, 186, 0, 2, 180, 181, 186, 0, 1, 179, 180, 186, 0, 1, 179, 186, 187, 0, 2, 179, 187, 188, 0, 2, 178, 179, 188, 0, 1, 178, 188, 189, 0, 2, 177, 178, 189, 0, 1, 177, 189, 190, 0, 2, 176, 177, 190, 0, 1, 176, 190, 191, 0, 2, 175, 176, 191, 0, 1, 175, 191, 192, 0, 2, 174, 175, 192, 0, 1, 174, 192, 193, 0, 2, 173, 174, 193, 0, 1, 172, 173, 193, 0, 1, 221, 172, 193, 0, 1, 215, 221, 193, 0, 0, 214, 215, 193, 0, 1, 214, 193, 194, 0, 2, 214, 194, 195, 0, 2, 213, 214, 195, 0, 1, 213, 195, 196, 0, 2, 213, 196, 197, 0, 2, 212, 213, 197, 0, 1, 212, 197, 198, 0, 2, 211, 212, 198, 0, 1, 211, 198, 199, 0, 2, 210, 211, 199, 0, 1, 210, 199, 200, 0, 2, 209, 210, 200, 0, 1, 209, 200, 201, 0, 2, 209, 201, 208, 0, 4, 258, 250, 222, 0, 1, 258, 222, 223, 0, 2, 257, 258, 223, 0, 1, 257, 223, 224, 0, 2, 257, 224, 225, 0, 2, 256, 257, 225, 0, 1, 256, 225, 226, 0, 2, 255, 256, 226, 0, 1, 254, 255, 226, 0, 1, 254, 226, 227, 0, 2, 253, 254, 227, 0, 1, 252, 253, 227, 0, 1, 252, 227, 228, 0, 2, 251, 252, 228, 0, 1, 251, 228, 229, 0, 2, 250, 251, 229, 0, 1, 250, 229, 230, 0, 2, 248, 249, 222, 0, 3, 248, 222, 250, 0, 0, 248, 250, 230, 0, 0, 248, 230, 231, 0, 2, 247, 248, 231, 0, 1, 247, 231, 232, 0, 2, 247, 232, 233, 0, 2, 246, 247, 233, 0, 1, 245, 246, 233, 0, 1, 245, 233, 234, 0, 2, 244, 245, 234, 0, 1, 244, 234, 235, 0, 2, 243, 244, 235, 0, 1, 243, 235, 236, 0, 2, 242, 243, 236, 0, 1, 242, 236, 237, 0, 2, 238, 239, 240, 0, 3, 238, 240, 241, 0, 2, 237, 238, 241, 0, 1, 242, 237, 241, 0, 4, }; #if MAX_VERSION_MAJOR >= 25 MaxSDK::SharedMeshPtr g_globalMesh; #else Mesh g_globalMesh; #endif } // namespace namespace krakatoa { namespace max3d { extern void build_icon_mesh( Mesh& outMesh, float verts[], int faces[], int vertCount, int faceCount ); } } // namespace krakatoa #if MAX_VERSION_MAJOR >= 25 static void InitializeIconMesh() { if( !g_globalMesh ) { g_globalMesh = new MaxSDK::SharedMesh(); int vertCount = sizeof( verts ) / sizeof( verts[0] ) / 3; int faceCount = sizeof( faces ) / sizeof( faces[0] ) / 5; krakatoa::max3d::build_icon_mesh( g_globalMesh->GetMesh(), verts, faces, vertCount, faceCount ); g_globalMesh->GetMesh().buildBoundingBox(); } } Mesh* GetPRTVolumeIconMesh() { InitializeIconMesh(); return g_globalMesh->GetMeshPtr(); } MaxSDK::SharedMeshPtr GetPRTVolumeIconMeshShared() { InitializeIconMesh(); return g_globalMesh; } #else Mesh* GetPRTVolumeIconMesh() { if( g_globalMesh.getNumVerts() == 0 ) { int vertCount = sizeof( verts ) / sizeof( verts[0] ) / 3; int faceCount = sizeof( faces ) / sizeof( faces[0] ) / 5; krakatoa::max3d::build_icon_mesh( g_globalMesh, verts, faces, vertCount, faceCount ); g_globalMesh.buildBoundingBox(); } return &g_globalMesh; } #endif