// 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.282012f, -0.363694f, 0.0f, -0.284733f, -0.355972f, 0.0f, -0.289172f, -0.349585f, 0.0f, -0.295233f, -0.344457f, 0.0f, -0.30139f, -0.341187f, 0.0f, -0.308407f, -0.338851f, 0.0f, -0.316704f, -0.337449f, 0.0f, -0.326699f, -0.336982f, 0.0f, -0.374965f, -0.336982f, 0.0f, -0.374965f, -0.450602f, 0.0f, -0.345705f, -0.450602f, 0.0f, -0.345705f, -0.413552f, 0.0f, -0.327432f, -0.413552f, 0.0f, -0.315994f, -0.412694f, 0.0f, -0.306601f, -0.41012f, 0.0f, -0.298621f, -0.405868f, 0.0f, -0.291424f, -0.399976f, 0.0f, -0.28703f, -0.394439f, 0.0f, -0.283781f, -0.387737f, 0.0f, -0.281774f, -0.380368f, 0.0f, -0.281105f, -0.372827f, 0.0f, -0.31182f, -0.378067f, 0.0f, -0.312765f, -0.381789f, 0.0f, -0.314416f, -0.384909f, 0.0f, -0.316849f, -0.387558f, 0.0f, -0.320523f, -0.389819f, 0.0f, -0.324979f, -0.391177f, 0.0f, -0.330484f, -0.391856f, 0.0f, -0.337306f, -0.392082f, 0.0f, -0.345705f, -0.392082f, 0.0f, -0.345705f, -0.358452f, 0.0f, -0.340667f, -0.358452f, 0.0f, -0.329064f, -0.35864f, 0.0f, -0.324655f, -0.359235f, 0.0f, -0.320132f, -0.36064f, 0.0f, -0.316907f, -0.362515f, 0.0f, -0.314101f, -0.365427f, 0.0f, -0.312154f, -0.369187f, 0.0f, -0.311505f, -0.373607f, 0.0f, -0.196908f, -0.375972f, 0.0f, -0.197967f, -0.379299f, 0.0f, -0.199789f, -0.382019f, 0.0f, -0.202433f, -0.384491f, 0.0f, -0.206021f, -0.386481f, 0.0f, -0.210371f, -0.387599f, 0.0f, -0.215677f, -0.388111f, 0.0f, -0.222128f, -0.388282f, 0.0f, -0.231135f, -0.388282f, 0.0f, -0.231135f, -0.357882f, 0.0f, -0.220525f, -0.357882f, 0.0f, -0.211289f, -0.358148f, 0.0f, -0.207567f, -0.35865f, 0.0f, -0.204342f, -0.359625f, 0.0f, -0.200697f, -0.361692f, 0.0f, -0.198311f, -0.364403f, 0.0f, -0.196994f, -0.367739f, 0.0f, -0.196555f, -0.371681f, 0.0f, -0.188762f, -0.401968f, 0.0f, -0.179134f, -0.39603f, 0.0f, -0.172017f, -0.388757f, 0.0f, -0.16762f, -0.379651f, 0.0f, -0.166155f, -0.368216f, 0.0f, -0.167102f, -0.359825f, 0.0f, -0.169942f, -0.352981f, 0.0f, -0.174388f, -0.347473f, 0.0f, -0.180153f, -0.343092f, 0.0f, -0.186732f, -0.339942f, 0.0f, -0.193769f, -0.338128f, 0.0f, -0.201743f, -0.337268f, 0.0f, -0.211134f, -0.336982f, 0.0f, -0.260395f, -0.336982f, 0.0f, -0.260395f, -0.450602f, 0.0f, -0.231135f, -0.450602f, 0.0f, -0.231135f, -0.408992f, 0.0f, -0.217645f, -0.408992f, 0.0f, -0.18669f, -0.450602f, 0.0f, -0.150765f, -0.450602f, 0.0f, -0.0491149f, -0.336982f, 0.0f, -0.149435f, -0.336982f, 0.0f, -0.149435f, -0.359022f, 0.0f, -0.113905f, -0.359022f, 0.0f, -0.113905f, -0.450602f, 0.0f, -0.0846449f, -0.450602f, 0.0f, -0.0846449f, -0.359022f, 0.0f, -0.0491149f, -0.359022f, 0.0f, 0.127585f, -0.336982f, 0.0f, 0.0983251f, -0.336982f, 0.0f, 0.0983251f, -0.378592f, 0.0f, 0.0548151f, -0.378592f, 0.0f, 0.0548151f, -0.336982f, 0.0f, 0.0255551f, -0.336982f, 0.0f, 0.0255551f, -0.450602f, 0.0f, 0.0548151f, -0.450602f, 0.0f, 0.0548151f, -0.400632f, 0.0f, 0.0983251f, -0.400632f, 0.0f, 0.0983251f, -0.450602f, 0.0f, 0.127585f, -0.450602f, 0.0f, 0.203539f, -0.43064f, 0.0f, 0.199558f, -0.432585f, 0.0f, 0.195348f, -0.433843f, 0.0f, 0.191194f, -0.434262f, 0.0f, 0.186688f, -0.434081f, 0.0f, 0.183556f, -0.433538f, 0.0f, 0.181283f, -0.432613f, 0.0f, 0.179354f, -0.431287f, 0.0f, 0.177866f, -0.429726f, 0.0f, 0.177064f, -0.428087f, 0.0f, 0.17672f, -0.426162f, 0.0f, 0.176605f, -0.423741f, 0.0f, 0.177149f, -0.420091f, 0.0f, 0.178783f, -0.417223f, 0.0f, 0.181447f, -0.41504f, 0.0f, 0.185084f, -0.413448f, 0.0f, 0.189227f, -0.412446f, 0.0f, 0.194937f, -0.411579f, 0.0f, 0.207005f, -0.410322f, 0.0f, 0.207005f, -0.428161f, 0.0f, 0.207005f, -0.450602f, 0.0f, 0.234175f, -0.450602f, 0.0f, 0.234175f, -0.392162f, 0.0f, 0.23157f, -0.378766f, 0.0f, 0.223755f, -0.369481f, 0.0f, 0.210081f, -0.364059f, 0.0f, 0.189902f, -0.362252f, 0.0f, 0.180064f, -0.362639f, 0.0f, 0.170246f, -0.3638f, 0.0f, 0.161801f, -0.365245f, 0.0f, 0.156085f, -0.366482f, 0.0f, 0.156085f, -0.386952f, 0.0f, 0.158609f, -0.386952f, 0.0f, 0.169694f, -0.383266f, 0.0f, 0.177186f, -0.381471f, 0.0f, 0.18422f, -0.380872f, 0.0f, 0.19416f, -0.381566f, 0.0f, 0.201347f, -0.383649f, 0.0f, 0.205704f, -0.387551f, 0.0f, 0.207157f, -0.393703f, 0.0f, 0.207157f, -0.394172f, 0.0f, 0.195227f, -0.395052f, 0.0f, 0.183718f, -0.396312f, 0.0f, 0.173335f, -0.398261f, 0.0f, 0.164784f, -0.401205f, 0.0f, 0.157951f, -0.405276f, 0.0f, 0.152874f, -0.410608f, 0.0f, 0.149725f, -0.417431f, 0.0f, 0.148675f, -0.425973f, 0.0f, 0.150737f, -0.436694f, 0.0f, 0.156921f, -0.445313f, 0.0f, 0.166159f, -0.45099f, 0.0f, 0.177383f, -0.452882f, 0.0f, 0.182363f, -0.452663f, 0.0f, 0.186924f, -0.452008f, 0.0f, 0.1912f, -0.450895f, 0.0f, 0.195323f, -0.449305f, 0.0f, 0.198321f, -0.447682f, 0.0f, 0.201508f, -0.445563f, 0.0f, 0.207005f, -0.441515f, 0.0f, 0.286995f, -0.364912f, 0.0f, 0.259445f, -0.364912f, 0.0f, 0.259445f, -0.450602f, 0.0f, 0.286995f, -0.450602f, 0.0f, 0.287755f, -0.331852f, 0.0f, 0.258685f, -0.331852f, 0.0f, 0.258685f, -0.352752f, 0.0f, 0.287755f, -0.352752f, 0.0f, 0.374965f, -0.364838f, 0.0f, 0.37348f, -0.364703f, 0.0f, 0.371766f, -0.364608f, 0.0f, 0.36849f, -0.364532f, 0.0f, 0.362588f, -0.365181f, 0.0f, 0.356152f, -0.367127f, 0.0f, 0.348859f, -0.371019f, 0.0f, 0.340385f, -0.377508f, 0.0f, 0.340385f, -0.364912f, 0.0f, 0.312835f, -0.364912f, 0.0f, 0.312835f, -0.450602f, 0.0f, 0.340385f, -0.450602f, 0.0f, 0.340385f, -0.393163f, 0.0f, 0.345394f, -0.391598f, 0.0f, 0.350059f, -0.390566f, 0.0f, 0.354895f, -0.389993f, 0.0f, 0.360418f, -0.389802f, 0.0f, 0.363331f, -0.389873f, 0.0f, 0.366892f, -0.390087f, 0.0f, 0.370243f, -0.390443f, 0.0f, 0.372528f, -0.390942f, 0.0f, 0.374965f, -0.390942f, 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, 95, 96, 85, 0, 3, 94, 95, 85, 0, 1, 91, 92, 93, 0, 3, 90, 91, 93, 0, 1, 88, 89, 90, 0, 3, 88, 90, 93, 0, 0, 87, 88, 93, 0, 1, 87, 93, 94, 0, 2, 87, 94, 85, 0, 0, 86, 87, 85, 0, 5, 97, 98, 118, 0, 1, 116, 97, 118, 0, 1, 116, 118, 119, 0, 2, 115, 116, 119, 0, 1, 127, 128, 129, 0, 3, 127, 129, 130, 0, 2, 126, 127, 130, 0, 1, 125, 126, 130, 0, 1, 125, 130, 131, 0, 2, 124, 125, 131, 0, 1, 124, 131, 132, 0, 2, 123, 124, 132, 0, 1, 123, 132, 133, 0, 2, 122, 123, 133, 0, 1, 122, 133, 134, 0, 2, 156, 117, 118, 0, 3, 156, 118, 98, 0, 0, 155, 156, 98, 0, 1, 155, 98, 99, 0, 2, 121, 122, 134, 0, 1, 121, 134, 135, 0, 2, 120, 121, 135, 0, 1, 119, 120, 135, 0, 1, 119, 135, 136, 0, 2, 119, 136, 137, 0, 2, 115, 119, 137, 0, 0, 115, 137, 138, 0, 2, 114, 115, 138, 0, 1, 114, 138, 139, 0, 2, 113, 114, 139, 0, 1, 112, 113, 139, 0, 1, 112, 139, 140, 0, 2, 111, 112, 140, 0, 1, 154, 155, 99, 0, 1, 154, 99, 100, 0, 2, 153, 154, 100, 0, 1, 152, 153, 100, 0, 1, 152, 100, 101, 0, 2, 151, 152, 101, 0, 1, 111, 140, 141, 0, 2, 110, 111, 141, 0, 1, 150, 151, 101, 0, 1, 150, 101, 102, 0, 2, 149, 150, 102, 0, 1, 149, 102, 103, 0, 2, 148, 149, 103, 0, 1, 148, 103, 104, 0, 2, 147, 148, 104, 0, 1, 147, 104, 105, 0, 2, 146, 147, 105, 0, 1, 146, 105, 106, 0, 2, 145, 146, 106, 0, 1, 145, 106, 107, 0, 2, 144, 145, 107, 0, 1, 144, 107, 108, 0, 2, 143, 144, 108, 0, 1, 143, 108, 109, 0, 2, 142, 143, 109, 0, 1, 141, 142, 109, 0, 1, 110, 141, 109, 0, 4, 159, 160, 157, 0, 3, 158, 159, 157, 0, 5, 163, 164, 161, 0, 3, 163, 161, 162, 0, 6, 185, 186, 165, 0, 3, 184, 185, 165, 0, 1, 184, 165, 166, 0, 2, 184, 166, 167, 0, 2, 183, 184, 167, 0, 1, 183, 167, 168, 0, 2, 183, 168, 169, 0, 2, 182, 183, 169, 0, 1, 182, 169, 170, 0, 2, 181, 182, 170, 0, 1, 181, 170, 171, 0, 2, 180, 181, 171, 0, 1, 180, 171, 172, 0, 2, 179, 180, 172, 0, 1, 178, 179, 172, 0, 1, 177, 178, 172, 0, 1, 175, 176, 177, 0, 3, 174, 175, 177, 0, 1, 174, 177, 172, 0, 0, 173, 174, 172, 0, 5, }; #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* GetPRTHairIconMesh() { InitializeIconMesh(); return g_globalMesh->GetMeshPtr(); } MaxSDK::SharedMeshPtr GetPRTHairIconMeshShared() { InitializeIconMesh(); return g_globalMesh; } #else Mesh* GetPRTHairIconMesh() { 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