3template<size_t materialCount>
4MaterialAnimator<materialCount>::MaterialAnimator() {}
6template<size_t materialCount>
7void MaterialAnimator<materialCount>::SetBaseMaterial(Material::Method method, Material* material) {
9 combineMaterial.SetMaterial(0, material);
10 combineMaterial.SetMethod(0, method);
11 combineMaterial.SetOpacity(0, 1.0f);
14 baseMaterialSet = true;
15 AddMaterial(method, material, 1, 1.0f, 1.0f);
19template<size_t materialCount>
20void MaterialAnimator<materialCount>::AddMaterial(Material::Method method, Material* material, uint16_t frames, float minOpacity, float maxOpacity) {
21 if (currentMaterials <= materialCount && baseMaterialSet) {
23 for (uint16_t i = 1; i < currentMaterials; i++) {
24 if (dictionary[i] == material) {
31 eEA.AddParameter(&materialRatios[currentMaterials], currentMaterials, frames, minOpacity, maxOpacity);
32 combineMaterial.AddMaterial(method, material, minOpacity);
33 dictionary[currentMaterials] = material;
39template<size_t materialCount>
40void MaterialAnimator<materialCount>::AddMaterialFrame(Material& material, float opacity) {
41 for (uint8_t i = 0; i <= currentMaterials; i++) {
42 if (dictionary[i] == &material) {
43 eEA.AddParameterFrame(i, opacity);
49template<size_t materialCount>
50float MaterialAnimator<materialCount>::GetMaterialOpacity(Material& material) {
51 for (uint8_t i = 0; i <= currentMaterials; i++) {
52 if (dictionary[i] == &material) {
53 return eEA.GetValue(i);
61template<size_t materialCount>
62void MaterialAnimator<materialCount>::Update() {
63 eEA.Update(); // update material opacities
65 for (uint8_t i = 1; i <= currentMaterials; i++) { // link opacities
66 combineMaterial.SetOpacity(i, materialRatios[i]);
70template<size_t materialCount>
71RGBColor MaterialAnimator<materialCount>::GetRGB(const Vector3D& position, const Vector3D& normal, const Vector3D& uvw) {
72 return combineMaterial.GetRGB(position, normal, uvw);