bool AddSubmeshMaterials(ref TexBlend_t texBlend, int num, int max) { var blend = texBlend; for (int i = 0; i < num; ++i) { if (!AddSubmeshTexture(ref blend, _materials[i], max)) { return(false); } } texBlend = blend; return(true); }
Vector4 SetMaterialBlendFactor(Vector4 blendFactor, TexBlend_t blend, int m, float frac) { if (blend.x == m) { blendFactor.x = frac; return(blendFactor); } if (blend.y == m) { blendFactor.y = frac; return(blendFactor); } if (blend.z == m) { blendFactor.z = frac; return(blendFactor); } blendFactor.w = frac; return(blendFactor); }
Vector4 GetTriVertTexBlendFactor(TexBlend_t blend, int layer, int v0) { var num = 0; AddVertexMaterials(layer, v0, ref num); float total = 0f; for (int i = 0; i < num; ++i) { total += _matrefcounts[i]; } var blendFactor = Vector4.zero; for (int i = 0; i < num; ++i) { var frac = _matrefcounts[i] / total; blendFactor = SetMaterialBlendFactor(blendFactor, blend, _materials[i], frac); } return(blendFactor); }
static bool AddSubmeshTexture(ref TexBlend_t blend, int material, int max) { if (max > 0) { if (blend.count < 1) { blend.x = material; blend.count = 1; return(true); } if (blend.x == material) { return(true); } ; if (max > 1) { if (blend.count < 2) { blend.y = material; blend.count = 2; return(true); } if (blend.y == material) { return(true); } if (max > 2) { if (blend.count < 3) { blend.z = material; blend.count = 3; return(true); } if (blend.z == material) { return(true); } if (max > 3) { if (blend.count < 4) { blend.w = material; blend.count = 4; return(true); } if (blend.w == material) { return(true); } } } } } return(false); }