mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 21:27:52 -04:00
bdded9ad8c
This refactors some of the texture animation code a bit to better support multiple games and adds most of the missing texture animations for Jak 3 with a couple of exceptions/bugs: - `hanga-sprite`: Despite `move_to_pool` being set for this anim, it's not showing up in-game, but it does display properly in the ImGUI debug window. ![image](https://github.com/open-goal/jak-project/assets/6624576/29df8e17-8831-412b-b9b7-7704d6bd7813) - `factoryc-alpha`: Some conveyors do not have the animation for some reason. ![image](https://github.com/open-goal/jak-project/assets/6624576/209ef073-2a81-4e2c-b020-dc2ae0b01196) - This spot in Spargus seems to use texture animations, but it looks like it maps to the `fora-water-dest` texture/slot, which comes from `foresta-water`. Because the texture is not initialized, the texture shows up black on first load, but it does show up after loading `foresta`. ![image](https://github.com/open-goal/jak-project/assets/6624576/1e54bab2-f97c-47d5-a92a-a98a52c30178) ![image](https://github.com/open-goal/jak-project/assets/6624576/240b0137-1e9e-4e65-8446-0f78df9802dd) - `hfrag` texture anim is not handled yet. Probably needs some special casing.
2168 lines
76 KiB
C++
2168 lines
76 KiB
C++
#include "game/graphics/opengl_renderer/TextureAnimator.h"
|
|
|
|
void TextureAnimator::setup_texture_anims_jak3() {
|
|
m_darkjak_clut_blender_idx = create_clut_blender_group(
|
|
{"jakc-arm", "jakc-eyebrow", "jakc-face", "jakc-finger", "jakc-hair"}, "-norm", "-dark", {});
|
|
|
|
// default-water
|
|
{
|
|
FixedAnimDef bomb_gradient;
|
|
bomb_gradient.tex_name = "bomb-gradient";
|
|
bomb_gradient.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
bomb_gradient.override_size = math::Vector2<int>(64, 64);
|
|
|
|
auto& bomb_rim = bomb_gradient.layers.emplace_back();
|
|
bomb_rim.tex_name = "bomb-gradient-rim";
|
|
bomb_rim.end_time = 300.f;
|
|
bomb_rim.set_blend_b2_d1();
|
|
bomb_rim.set_no_z_write_no_z_test();
|
|
bomb_rim.channel_masks[3] = false; // no alpha writes.
|
|
|
|
auto& bomb_flames = bomb_gradient.layers.emplace_back();
|
|
bomb_flames.tex_name = "bomb-gradient-flames";
|
|
bomb_flames.end_time = 300.f;
|
|
bomb_flames.set_blend_b2_d1();
|
|
bomb_flames.set_no_z_write_no_z_test();
|
|
bomb_flames.channel_masks[3] = false; // no alpha writes.
|
|
|
|
FixedAnimDef blue_beam_dest;
|
|
blue_beam_dest.tex_name = "blue-beam-dest";
|
|
blue_beam_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
blue_beam_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
auto& beam01 = blue_beam_dest.layers.emplace_back();
|
|
beam01.tex_name = "lightning-beam-01";
|
|
beam01.end_time = 300.f;
|
|
beam01.set_blend_b2_d1();
|
|
beam01.set_no_z_write_no_z_test();
|
|
beam01.channel_masks[3] = false; // no alpha writes.
|
|
|
|
auto& beam02 = blue_beam_dest.layers.emplace_back();
|
|
beam02.tex_name = "lightning-beam-02";
|
|
beam02.end_time = 300.f;
|
|
beam02.set_blend_b2_d1();
|
|
beam02.set_no_z_write_no_z_test();
|
|
beam02.channel_masks[3] = false; // no alpha writes.
|
|
|
|
FixedAnimDef lightjak_wings;
|
|
lightjak_wings.tex_name = "lightjak-wings";
|
|
lightjak_wings.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
lightjak_wings.override_size = math::Vector2<int>(64, 16);
|
|
|
|
auto& u_src = lightjak_wings.layers.emplace_back();
|
|
u_src.tex_name = "lightjak-wings-u-src";
|
|
u_src.end_time = 300.f;
|
|
u_src.set_blend_b2_d1();
|
|
u_src.set_no_z_write_no_z_test();
|
|
u_src.set_clamp();
|
|
u_src.channel_masks[3] = false; // no alpha writes.
|
|
|
|
auto& v_src = lightjak_wings.layers.emplace_back();
|
|
v_src.tex_name = "lightjak-wings-v-src";
|
|
v_src.end_time = 300.f;
|
|
v_src.set_blend_b2_d1();
|
|
v_src.set_no_z_write_no_z_test();
|
|
v_src.set_clamp();
|
|
v_src.channel_masks[3] = false; // no alpha writes.
|
|
|
|
FixedAnimDef mushroom_dest;
|
|
mushroom_dest.tex_name = "mushroom-dest";
|
|
mushroom_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
mushroom_dest.override_size = math::Vector2<int>(128, 64);
|
|
|
|
auto& mushroom_src0 = mushroom_dest.layers.emplace_back();
|
|
mushroom_src0.tex_name = "mushroom-src";
|
|
mushroom_src0.end_time = 1200.f;
|
|
mushroom_src0.set_blend_b1_d1();
|
|
mushroom_src0.set_no_z_write_no_z_test();
|
|
mushroom_src0.set_clamp();
|
|
|
|
auto& mushroom_src1 = mushroom_dest.layers.emplace_back();
|
|
mushroom_src1.tex_name = "mushroom-src";
|
|
mushroom_src1.end_time = 1200.f;
|
|
// :alpha (new 'static 'gs-alpha :b #x2 :c #x2 :d #x2 :fix #x80)
|
|
mushroom_src1.set_blend(GsAlpha::BlendMode::SOURCE, GsAlpha::BlendMode::ZERO_OR_FIXED,
|
|
GsAlpha::BlendMode::ZERO_OR_FIXED, GsAlpha::BlendMode::ZERO_OR_FIXED,
|
|
0x80);
|
|
mushroom_src1.set_no_z_write_no_z_test();
|
|
mushroom_src1.set_clamp();
|
|
mushroom_src1.channel_masks[3] = false; // no alpha writes.
|
|
|
|
m_default_water_anim_array_idx =
|
|
create_fixed_anim_array({bomb_gradient, blue_beam_dest, lightjak_wings, mushroom_dest});
|
|
}
|
|
|
|
// default-warp
|
|
{
|
|
FixedAnimDef shield_env_rim_dest;
|
|
shield_env_rim_dest.tex_name = "shield-env-rim-dest";
|
|
shield_env_rim_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
shield_env_rim_dest.override_size = math::Vector2<int>(64, 64);
|
|
shield_env_rim_dest.move_to_pool = true;
|
|
|
|
auto& cwhite = shield_env_rim_dest.layers.emplace_back();
|
|
cwhite.tex_name = "common-white";
|
|
cwhite.end_time = 1200.f;
|
|
cwhite.set_blend_b2_d1();
|
|
cwhite.set_no_z_write_no_z_test();
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
auto& uscroll = shield_env_rim_dest.layers.emplace_back();
|
|
uscroll.tex_name = "shield-env-uscroll";
|
|
uscroll.end_time = 1200.f;
|
|
uscroll.set_blend_b2_d1();
|
|
uscroll.set_no_z_write_no_z_test();
|
|
uscroll.channel_masks[3] = false; // no alpha writes.
|
|
}
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
auto& rim_src = shield_env_rim_dest.layers.emplace_back();
|
|
rim_src.tex_name = "shield-env-rim-src";
|
|
rim_src.end_time = 1200.f;
|
|
rim_src.set_blend_b2_d1();
|
|
rim_src.set_no_z_write_no_z_test();
|
|
rim_src.channel_masks[3] = false; // no alpha writes.
|
|
}
|
|
|
|
m_default_warp_anim_array_idx = create_fixed_anim_array({shield_env_rim_dest});
|
|
}
|
|
|
|
// templea-water
|
|
{
|
|
FixedAnimDef templea_waterfall_dest;
|
|
templea_waterfall_dest.tex_name = "templea-waterfall-dest";
|
|
templea_waterfall_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
templea_waterfall_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = templea_waterfall_dest.layers.emplace_back();
|
|
water.tex_name = "templea-waterfall";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef lightjak_wings;
|
|
lightjak_wings.tex_name = "lightjak-wings";
|
|
lightjak_wings.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
lightjak_wings.override_size = math::Vector2<int>(64, 16);
|
|
|
|
auto& u_src = lightjak_wings.layers.emplace_back();
|
|
u_src.tex_name = "lightjak-wings-u-src";
|
|
u_src.end_time = 300.f;
|
|
u_src.set_blend_b2_d1();
|
|
u_src.set_no_z_write_no_z_test();
|
|
u_src.set_clamp();
|
|
u_src.channel_masks[3] = false; // no alpha writes.
|
|
|
|
auto& v_src = lightjak_wings.layers.emplace_back();
|
|
v_src.tex_name = "lightjak-wings-v-src";
|
|
v_src.end_time = 300.f;
|
|
v_src.set_blend_b2_d1();
|
|
v_src.set_no_z_write_no_z_test();
|
|
v_src.set_clamp();
|
|
v_src.channel_masks[3] = false; // no alpha writes.
|
|
|
|
m_templea_water_anim_array_idx =
|
|
create_fixed_anim_array({templea_waterfall_dest, lightjak_wings});
|
|
}
|
|
|
|
// hanga-sprite
|
|
{
|
|
FixedAnimDef dest2;
|
|
dest2.move_to_pool = true;
|
|
dest2.color = math::Vector4<u8>(0, 0, 0, 0x80);
|
|
dest2.tex_name = "glider-ring-dest2";
|
|
dest2.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 17; i++) {
|
|
auto& foam = dest2.layers.emplace_back();
|
|
foam.tex_name = "splash-foam";
|
|
// :test (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))
|
|
foam.set_no_z_write_no_z_test();
|
|
foam.channel_masks[3] = false; // no alpha writes.
|
|
// :alpha (new 'static 'gs-alpha :b #x2 :d #x1)
|
|
foam.set_clamp();
|
|
foam.set_blend_b2_d1();
|
|
}
|
|
dest2.set_times({
|
|
{0.f, 25.f},
|
|
{25.f, 150.f},
|
|
{25.f, 50.f},
|
|
{50.f, 150.f},
|
|
{0.f, 25.f},
|
|
{50.f, 75.f},
|
|
{75.f, 150.f},
|
|
{0.f, 50.f},
|
|
{75.f, 100.f},
|
|
{100.f, 150.f},
|
|
{0.f, 75.f},
|
|
{100.f, 125.f},
|
|
{125.f, 150.f},
|
|
{0.f, 100.f},
|
|
{125.f, 150.f},
|
|
{0.f, 125.f},
|
|
{0.f, 150.f},
|
|
});
|
|
|
|
FixedAnimDef dest;
|
|
dest.color = math::Vector4<u8>(0, 0, 0, 0x80);
|
|
dest.tex_name = "glider-ring-dest";
|
|
dest.override_size = math::Vector2<int>(128, 128);
|
|
dest.move_to_pool = true;
|
|
|
|
auto& ring_dest2 = dest.layers.emplace_back();
|
|
ring_dest2.set_blend_b2_d1();
|
|
ring_dest2.set_no_z_write_no_z_test();
|
|
ring_dest2.tex_name = "glider-ring-dest2";
|
|
ring_dest2.end_time = 9000.f;
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
auto& dsrc = dest.layers.emplace_back();
|
|
dsrc.set_blend_b2_d1();
|
|
dsrc.set_no_z_write_no_z_test();
|
|
dsrc.end_time = 9000.f;
|
|
dsrc.tex_name = "racegate";
|
|
}
|
|
|
|
m_hanga_sprite_anim_array_idx = create_fixed_anim_array({dest2, dest});
|
|
}
|
|
|
|
// foresta-water
|
|
{
|
|
FixedAnimDef fora_water_dest;
|
|
fora_water_dest.tex_name = "fora-water-dest";
|
|
fora_water_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
fora_water_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = fora_water_dest.layers.emplace_back();
|
|
water.tex_name = "fora-water";
|
|
water.end_time = 2100.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef fora_waterfall_dest;
|
|
fora_waterfall_dest.tex_name = "fora-waterfall-01-dest";
|
|
fora_waterfall_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
fora_waterfall_dest.override_size = math::Vector2<int>(64, 64);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = fora_waterfall_dest.layers.emplace_back();
|
|
water.tex_name = "fora-waterfall-01";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef fora_water_wave_dest;
|
|
fora_water_wave_dest.tex_name = "fora-water-wave-01-dest";
|
|
fora_water_wave_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
fora_water_wave_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = fora_water_wave_dest.layers.emplace_back();
|
|
water.tex_name = "fora-water-wave-01";
|
|
water.end_time = 1800.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_foresta_water_anim_array_idx =
|
|
create_fixed_anim_array({fora_water_dest, fora_waterfall_dest, fora_water_wave_dest});
|
|
}
|
|
|
|
// forestb-water
|
|
{
|
|
FixedAnimDef forb_water_dest;
|
|
forb_water_dest.tex_name = "forb-water-dest";
|
|
forb_water_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
forb_water_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = forb_water_dest.layers.emplace_back();
|
|
water.tex_name = "forb-water";
|
|
water.end_time = 2100.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef forb_waterfall_dest;
|
|
forb_waterfall_dest.tex_name = "forb-waterfall-01-dest";
|
|
forb_waterfall_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
forb_waterfall_dest.override_size = math::Vector2<int>(64, 64);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = forb_waterfall_dest.layers.emplace_back();
|
|
water.tex_name = "forb-waterfall-01";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef forb_water_wave_dest;
|
|
forb_water_wave_dest.tex_name = "forb-water-wave-01-dest";
|
|
forb_water_wave_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
forb_water_wave_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = forb_water_wave_dest.layers.emplace_back();
|
|
water.tex_name = "forb-water-wave-01";
|
|
water.end_time = 1800.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_forestb_water_anim_array_idx =
|
|
create_fixed_anim_array({forb_water_dest, forb_waterfall_dest, forb_water_wave_dest});
|
|
}
|
|
|
|
// lforplnt-pris
|
|
{
|
|
FixedAnimDef gem_dest;
|
|
gem_dest.tex_name = "mh-gem-dest";
|
|
gem_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
gem_dest.override_size = math::Vector2<int>(32, 32);
|
|
|
|
auto& gem0 = gem_dest.layers.emplace_back();
|
|
gem0.tex_name = "mh-gem";
|
|
gem0.end_time = 300.f;
|
|
gem0.set_blend_b2_d1();
|
|
gem0.set_no_z_write_no_z_test();
|
|
|
|
auto& gem1 = gem_dest.layers.emplace_back();
|
|
gem1.tex_name = "mh-gem-alpha-01";
|
|
gem1.end_time = 300.f;
|
|
gem1.set_blend_b2_d1();
|
|
gem1.set_no_z_write_no_z_test();
|
|
|
|
auto& gem2 = gem_dest.layers.emplace_back();
|
|
gem2.tex_name = "mh-gem-alpha-02";
|
|
gem2.end_time = 300.f;
|
|
gem2.set_blend_b2_d1();
|
|
gem2.set_no_z_write_no_z_test();
|
|
|
|
m_lforplnt_pris_anim_array_idx = create_fixed_anim_array({gem_dest});
|
|
}
|
|
|
|
// lmhcitya-tfrag
|
|
{
|
|
FixedAnimDef base_goo_dest;
|
|
base_goo_dest.tex_name = "mhcitya-base-goo-01-dest";
|
|
base_goo_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
base_goo_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (size_t i = 0; i < 3; i++) {
|
|
auto& goo = base_goo_dest.layers.emplace_back();
|
|
goo.tex_name = "mhcitya-base-goo-01";
|
|
goo.end_time = 6000.f;
|
|
goo.set_no_z_write_no_z_test();
|
|
// :alpha (new 'static 'gs-alpha :b #x2 :c #x2 :d #x1 :fix #x2b)
|
|
goo.blend_modes[0] = GsAlpha::BlendMode::SOURCE;
|
|
goo.blend_modes[1] = GsAlpha::BlendMode::ZERO_OR_FIXED;
|
|
goo.blend_modes[2] = GsAlpha::BlendMode::ZERO_OR_FIXED;
|
|
goo.blend_modes[3] = GsAlpha::BlendMode::DEST;
|
|
goo.blend_fix = 0x2b;
|
|
}
|
|
|
|
m_lmhcitya_tfrag_anim_array_idx = create_fixed_anim_array({base_goo_dest});
|
|
}
|
|
|
|
// lmhcityb-tfrag
|
|
{
|
|
FixedAnimDef base_goo_dest;
|
|
base_goo_dest.tex_name = "mhcityb-base-goo-01-dest";
|
|
base_goo_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
base_goo_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (size_t i = 0; i < 3; i++) {
|
|
auto& goo = base_goo_dest.layers.emplace_back();
|
|
goo.tex_name = "mhcityb-base-goo-01";
|
|
goo.end_time = 6000.f;
|
|
goo.set_no_z_write_no_z_test();
|
|
// :alpha (new 'static 'gs-alpha :b #x2 :c #x2 :d #x1 :fix #x2b)
|
|
goo.set_blend(GsAlpha::BlendMode::SOURCE, GsAlpha::BlendMode::ZERO_OR_FIXED,
|
|
GsAlpha::BlendMode::ZERO_OR_FIXED, GsAlpha::BlendMode::DEST, 0x2b);
|
|
}
|
|
m_lmhcityb_tfrag_anim_array_idx = create_fixed_anim_array({base_goo_dest});
|
|
}
|
|
|
|
// mhcitya-pris
|
|
// destination texture is missing
|
|
// {
|
|
// FixedAnimDef door_skin_dest;
|
|
// door_skin_dest.tex_name = "mhcity-de-door-skin-01-dest";
|
|
// door_skin_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
// door_skin_dest.override_size = math::Vector2<int>(128, 128);
|
|
//
|
|
// auto& door0 = door_skin_dest.layers.emplace_back();
|
|
// door0.tex_name = "mhcity-de-door-skin-01";
|
|
// door0.end_time = 1.f;
|
|
// door0.set_no_z_write_no_z_test();
|
|
// // :alpha (new 'static 'gs-alpha :b #x2 :c #x2 :d #x1 :fix #x80)
|
|
// door0.set_blend(GsAlpha::BlendMode::SOURCE, GsAlpha::BlendMode::ZERO_OR_FIXED,
|
|
// GsAlpha::BlendMode::ZERO_OR_FIXED, GsAlpha::BlendMode::DEST, 0x80);
|
|
//
|
|
// auto& door1 = door_skin_dest.layers.emplace_back();
|
|
// door1.tex_name = "mhcity-de-door-skin-02";
|
|
// door1.end_time = 1.f;
|
|
// door1.set_no_z_write_no_z_test();
|
|
// // :alpha (new 'static 'gs-alpha :b #x2 :c #x2 :d #x1 :fix #x80)
|
|
// door0.set_blend(GsAlpha::BlendMode::SOURCE, GsAlpha::BlendMode::ZERO_OR_FIXED,
|
|
// GsAlpha::BlendMode::ZERO_OR_FIXED, GsAlpha::BlendMode::DEST, 0x80);
|
|
//
|
|
// auto& door2 = door_skin_dest.layers.emplace_back();
|
|
// door2.tex_name = "mhcity-de-door-skin-01";
|
|
// door2.end_time = 1.f;
|
|
// door2.set_no_z_write_no_z_test();
|
|
// door1.set_blend_b1_d1();
|
|
//
|
|
// m_mhcitya_pris_anim_array_idx = create_fixed_anim_array({door_skin_dest});
|
|
// }
|
|
|
|
// templec-water
|
|
{
|
|
FixedAnimDef tplc_water;
|
|
tplc_water.tex_name = "tplc-water-dest";
|
|
tplc_water.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
tplc_water.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = tplc_water.layers.emplace_back();
|
|
water.tex_name = "tplc-water";
|
|
water.end_time = 2100.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_templec_water_anim_array_idx = create_fixed_anim_array({tplc_water});
|
|
}
|
|
|
|
// sewc-water
|
|
{
|
|
FixedAnimDef sewer_water_01_dest;
|
|
sewer_water_01_dest.tex_name = "sewer-water-01-c-dest";
|
|
sewer_water_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_water_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-01-c";
|
|
water.end_time = 900.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_waterfall_01_dest;
|
|
sewer_waterfall_01_dest.tex_name = "sewer-waterfall-01-c-dest";
|
|
sewer_waterfall_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_waterfall_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_waterfall_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-waterfall-01-c";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_waterfall_02_dest;
|
|
sewer_waterfall_02_dest.tex_name = "sewer-waterfall-02-c-dest";
|
|
sewer_waterfall_02_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_waterfall_02_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_waterfall_02_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-waterfall-02-c";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_water_wave_01_dest;
|
|
sewer_water_wave_01_dest.tex_name = "sewer-water-wave-01-c-dest";
|
|
sewer_water_wave_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_wave_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_water_wave_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-wave-01-c";
|
|
water.end_time = 1800.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_water_highlight_01_dest;
|
|
sewer_water_highlight_01_dest.tex_name = "sewer-water-highlight-01-c-dest";
|
|
sewer_water_highlight_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_highlight_01_dest.override_size = math::Vector2<int>(64, 32);
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
auto& water = sewer_water_highlight_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-highlight-01-c";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b1_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_sewc_water_anim_array_idx = create_fixed_anim_array(
|
|
{sewer_water_01_dest, sewer_waterfall_01_dest, sewer_waterfall_02_dest,
|
|
sewer_water_wave_01_dest, sewer_water_highlight_01_dest});
|
|
}
|
|
|
|
// sewd-water
|
|
{
|
|
FixedAnimDef sewer_water_01_dest;
|
|
sewer_water_01_dest.tex_name = "sewer-water-01-d-dest";
|
|
sewer_water_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_water_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-01-d";
|
|
water.end_time = 900.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_waterfall_02_dest;
|
|
sewer_waterfall_02_dest.tex_name = "sewer-waterfall-02-d-dest";
|
|
sewer_waterfall_02_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_waterfall_02_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_waterfall_02_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-waterfall-02-d";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_water_highlight_01_dest;
|
|
sewer_water_highlight_01_dest.tex_name = "sewer-water-highlight-01-d-dest";
|
|
sewer_water_highlight_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_highlight_01_dest.override_size = math::Vector2<int>(64, 32);
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
auto& water = sewer_water_highlight_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-highlight-01-d";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b1_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_water_wave_01_dest;
|
|
sewer_water_wave_01_dest.tex_name = "sewer-water-wave-01-d-dest";
|
|
sewer_water_wave_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_wave_01_dest.override_size = math::Vector2<int>(64, 64);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_water_wave_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-wave-01-d";
|
|
water.end_time = 1800.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_water_wave_02_dest;
|
|
sewer_water_wave_02_dest.tex_name = "sewer-water-wave-02-d-dest";
|
|
sewer_water_wave_02_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_wave_02_dest.override_size = math::Vector2<int>(64, 64);
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
auto& water = sewer_water_wave_02_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-wave-02-d";
|
|
water.end_time = 300.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_water_still_01_dest;
|
|
sewer_water_still_01_dest.tex_name = "sewer-water-still-01-d-dest";
|
|
sewer_water_still_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_still_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_water_still_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-still-01-d";
|
|
water.end_time = 4500.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_sewd_water_anim_array_idx = create_fixed_anim_array(
|
|
{sewer_water_01_dest, sewer_waterfall_02_dest, sewer_water_highlight_01_dest,
|
|
sewer_water_wave_01_dest, sewer_water_wave_02_dest, sewer_water_still_01_dest});
|
|
}
|
|
|
|
// sewe-water
|
|
{
|
|
FixedAnimDef sewer_water_01_dest;
|
|
sewer_water_01_dest.tex_name = "sewer-water-01-e-dest";
|
|
sewer_water_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_water_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-01-e";
|
|
water.end_time = 900.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_waterfall_01_dest;
|
|
sewer_waterfall_01_dest.tex_name = "sewer-waterfall-01-e-dest";
|
|
sewer_waterfall_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_waterfall_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_waterfall_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-waterfall-01-e";
|
|
water.end_time = 450.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_waterfall_02_dest;
|
|
sewer_waterfall_02_dest.tex_name = "sewer-waterfall-02-e-dest";
|
|
sewer_waterfall_02_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_waterfall_02_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_waterfall_02_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-waterfall-02-e";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_water_highlight_01_dest;
|
|
sewer_water_highlight_01_dest.tex_name = "sewer-water-highlight-01-e-dest";
|
|
sewer_water_highlight_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_highlight_01_dest.override_size = math::Vector2<int>(64, 32);
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
auto& water = sewer_water_highlight_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-highlight-01-e";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b1_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_sewe_water_anim_array_idx =
|
|
create_fixed_anim_array({sewer_water_01_dest, sewer_waterfall_01_dest,
|
|
sewer_waterfall_02_dest, sewer_water_highlight_01_dest});
|
|
}
|
|
|
|
// sewg-water
|
|
{
|
|
FixedAnimDef sewer_water_01_dest;
|
|
sewer_water_01_dest.tex_name = "sewer-water-01-g-dest";
|
|
sewer_water_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_water_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-01-g";
|
|
water.end_time = 900.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_waterfall_02_dest;
|
|
sewer_waterfall_02_dest.tex_name = "sewer-waterfall-02-g-dest";
|
|
sewer_waterfall_02_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_waterfall_02_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_waterfall_02_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-waterfall-02-g";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_water_wave_01_dest;
|
|
sewer_water_wave_01_dest.tex_name = "sewer-water-wave-01-g-dest";
|
|
sewer_water_wave_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_wave_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_water_wave_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-wave-01-g";
|
|
water.end_time = 1800.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_sewg_water_anim_array_idx = create_fixed_anim_array(
|
|
{sewer_water_01_dest, sewer_waterfall_02_dest, sewer_water_wave_01_dest});
|
|
}
|
|
|
|
// sewh-water
|
|
{
|
|
FixedAnimDef sewer_water_01_dest;
|
|
sewer_water_01_dest.tex_name = "sewer-water-01-h-dest";
|
|
sewer_water_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_water_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-01-h";
|
|
water.end_time = 900.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_waterfall_02_dest;
|
|
sewer_waterfall_02_dest.tex_name = "sewer-waterfall-02-h-dest";
|
|
sewer_waterfall_02_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_waterfall_02_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_waterfall_02_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-waterfall-02-h";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_water_wave_02_dest;
|
|
sewer_water_wave_02_dest.tex_name = "sewer-water-wave-02-h-dest";
|
|
sewer_water_wave_02_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_wave_02_dest.override_size = math::Vector2<int>(64, 64);
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
auto& water = sewer_water_wave_02_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-wave-02-h";
|
|
water.end_time = 1800.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_watefall_froth_01_dest;
|
|
sewer_watefall_froth_01_dest.tex_name = "sewer-watefall-froth-01-h-dest";
|
|
sewer_watefall_froth_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_watefall_froth_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_watefall_froth_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-watefall-froth-01-h";
|
|
water.end_time = 525.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_sewh_water_anim_array_idx =
|
|
create_fixed_anim_array({sewer_water_01_dest, sewer_waterfall_02_dest,
|
|
sewer_water_wave_02_dest, sewer_watefall_froth_01_dest});
|
|
}
|
|
|
|
// sewi-water
|
|
{
|
|
FixedAnimDef sewer_water_still_01_dest;
|
|
sewer_water_still_01_dest.tex_name = "sewer-water-still-01-i-dest";
|
|
sewer_water_still_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_still_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_water_still_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-still-01-i";
|
|
water.end_time = 4500.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_waterfall_02_dest;
|
|
sewer_waterfall_02_dest.tex_name = "sewer-waterfall-02-i-dest";
|
|
sewer_waterfall_02_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_waterfall_02_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_waterfall_02_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-waterfall-02-i";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_water_wave_01_dest;
|
|
sewer_water_wave_01_dest.tex_name = "sewer-water-wave-01-i-dest";
|
|
sewer_water_wave_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_wave_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_water_wave_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-wave-01-i";
|
|
water.end_time = 1800.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_sewi_water_anim_array_idx = create_fixed_anim_array(
|
|
{sewer_water_still_01_dest, sewer_waterfall_02_dest, sewer_water_wave_01_dest});
|
|
}
|
|
|
|
// sewj-water
|
|
{
|
|
FixedAnimDef sewer_waterfall_02_dest;
|
|
sewer_waterfall_02_dest.tex_name = "sewer-waterfall-02-j-dest";
|
|
sewer_waterfall_02_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_waterfall_02_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_waterfall_02_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-waterfall-02-j";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_watefall_froth_01_dest;
|
|
sewer_watefall_froth_01_dest.tex_name = "sewer-watefall-froth-01-j-dest";
|
|
sewer_watefall_froth_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_watefall_froth_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_watefall_froth_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-watefall-froth-01-j";
|
|
water.end_time = 525.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_sewj_water_anim_array_idx =
|
|
create_fixed_anim_array({sewer_waterfall_02_dest, sewer_watefall_froth_01_dest});
|
|
}
|
|
|
|
// sewl-water
|
|
{
|
|
FixedAnimDef sewer_waterfall_02_dest;
|
|
sewer_waterfall_02_dest.tex_name = "sewer-waterfall-02-l-dest";
|
|
sewer_waterfall_02_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_waterfall_02_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_waterfall_02_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-waterfall-02-l";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_watefall_froth_01_dest;
|
|
sewer_watefall_froth_01_dest.tex_name = "sewer-watefall-froth-01-l-dest";
|
|
sewer_watefall_froth_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_watefall_froth_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_watefall_froth_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-watefall-froth-01-l";
|
|
water.end_time = 525.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_sewl_water_anim_array_idx =
|
|
create_fixed_anim_array({sewer_waterfall_02_dest, sewer_watefall_froth_01_dest});
|
|
}
|
|
|
|
// sewm-water
|
|
{
|
|
FixedAnimDef sewer_water_01_dest;
|
|
sewer_water_01_dest.tex_name = "sewer-water-01-m-dest";
|
|
sewer_water_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_water_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-01-m";
|
|
water.end_time = 900.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_waterfall_01_dest;
|
|
sewer_waterfall_01_dest.tex_name = "sewer-waterfall-01-m-dest";
|
|
sewer_waterfall_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_waterfall_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_waterfall_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-waterfall-01-m";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_waterfall_02_dest;
|
|
sewer_waterfall_02_dest.tex_name = "sewer-waterfall-02-m-dest";
|
|
sewer_waterfall_02_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_waterfall_02_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_waterfall_02_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-waterfall-02-m";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_water_highlight_01_dest;
|
|
sewer_water_highlight_01_dest.tex_name = "sewer-water-highlight-01-m-dest";
|
|
sewer_water_highlight_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_highlight_01_dest.override_size = math::Vector2<int>(64, 32);
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
auto& water = sewer_water_highlight_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-highlight-01-m";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b1_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_water_wave_01_dest;
|
|
sewer_water_wave_01_dest.tex_name = "sewer-water-wave-01-m-dest";
|
|
sewer_water_wave_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_wave_01_dest.override_size = math::Vector2<int>(64, 64);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_water_wave_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-wave-01-m";
|
|
water.end_time = 1800.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_water_still_01_dest;
|
|
sewer_water_still_01_dest.tex_name = "sewer-water-still-01-m-dest";
|
|
sewer_water_still_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_still_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_water_still_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-still-01-m";
|
|
water.end_time = 4500.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_watefall_froth_01_dest;
|
|
sewer_watefall_froth_01_dest.tex_name = "sewer-watefall-froth-01-m-dest";
|
|
sewer_watefall_froth_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_watefall_froth_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_watefall_froth_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-watefall-froth-01-m";
|
|
water.end_time = 525.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_sewm_water_anim_array_idx = create_fixed_anim_array(
|
|
{sewer_water_01_dest, sewer_waterfall_01_dest, sewer_waterfall_02_dest,
|
|
sewer_water_highlight_01_dest, sewer_water_wave_01_dest, sewer_water_still_01_dest,
|
|
sewer_watefall_froth_01_dest});
|
|
}
|
|
|
|
// sewn-water
|
|
{
|
|
FixedAnimDef sewer_waterfall_01_dest;
|
|
sewer_waterfall_01_dest.tex_name = "sewer-waterfall-01-n-dest";
|
|
sewer_waterfall_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_waterfall_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_waterfall_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-waterfall-01-n";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_waterfall_02_dest;
|
|
sewer_waterfall_02_dest.tex_name = "sewer-waterfall-02-n-dest";
|
|
sewer_waterfall_02_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_waterfall_02_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_waterfall_02_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-waterfall-02-n";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
// destination texture is missing
|
|
// FixedAnimDef sewer_water_highlight_01_dest;
|
|
// sewer_water_highlight_01_dest.tex_name = "sewer-water-highlight-01-m-dest";
|
|
// sewer_water_highlight_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
// sewer_water_highlight_01_dest.override_size = math::Vector2<int>(64, 32);
|
|
//
|
|
// for (int i = 0; i < 2; i++) {
|
|
// auto& water = sewer_water_highlight_01_dest.layers.emplace_back();
|
|
// water.tex_name = "sewer-water-highlight-01-n";
|
|
// water.end_time = 600.f;
|
|
// water.set_blend_b1_d1();
|
|
// water.set_no_z_write_no_z_test();
|
|
// }
|
|
|
|
FixedAnimDef sewer_water_wave_01_dest;
|
|
sewer_water_wave_01_dest.tex_name = "sewer-water-wave-01-n-dest";
|
|
sewer_water_wave_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_wave_01_dest.override_size = math::Vector2<int>(64, 64);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_water_wave_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-wave-01-n";
|
|
water.end_time = 1800.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef sewer_water_still_01_dest;
|
|
sewer_water_still_01_dest.tex_name = "sewer-water-still-01-n-dest";
|
|
sewer_water_still_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sewer_water_still_01_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = sewer_water_still_01_dest.layers.emplace_back();
|
|
water.tex_name = "sewer-water-still-01-n";
|
|
water.end_time = 4500.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_sewn_water_anim_array_idx = create_fixed_anim_array(
|
|
{sewer_waterfall_01_dest, sewer_waterfall_02_dest, // sewer_water_highlight_01_dest,
|
|
sewer_water_wave_01_dest, sewer_water_still_01_dest});
|
|
}
|
|
|
|
// hanga-water
|
|
// destination texture is missing
|
|
// {
|
|
// FixedAnimDef des_thermal_01_dest;
|
|
// des_thermal_01_dest.tex_name = "des-thermal-01-dest";
|
|
// des_thermal_01_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
// des_thermal_01_dest.override_size = math::Vector2<int>(128, 64);
|
|
//
|
|
// for (int i = 0; i < 3; i++) {
|
|
// auto& water = des_thermal_01_dest.layers.emplace_back();
|
|
// water.tex_name = "des-thermal-01";
|
|
// water.end_time = 1200.f;
|
|
// water.set_blend_b2_d1();
|
|
// water.set_no_z_write_no_z_test();
|
|
// }
|
|
//
|
|
// m_hanga_water_anim_array_idx = create_fixed_anim_array({des_thermal_01_dest});
|
|
// }
|
|
|
|
// desresc-warp
|
|
{
|
|
FixedAnimDef sat_shield_dest;
|
|
sat_shield_dest.tex_name = "sat-shield-dest";
|
|
sat_shield_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
sat_shield_dest.override_size = math::Vector2<int>(64, 64);
|
|
sat_shield_dest.move_to_pool = true;
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
auto& env_uvscroll = sat_shield_dest.layers.emplace_back();
|
|
env_uvscroll.tex_name = "sat-shield-env-uvscroll";
|
|
env_uvscroll.end_time = 300.f;
|
|
env_uvscroll.set_blend_b2_d1();
|
|
env_uvscroll.set_no_z_write_no_z_test();
|
|
env_uvscroll.channel_masks[3] = false;
|
|
}
|
|
|
|
auto& shield = sat_shield_dest.layers.emplace_back();
|
|
shield.tex_name = "sat-shield";
|
|
shield.end_time = 300.f;
|
|
shield.set_blend_b2_d1();
|
|
shield.set_no_z_write_no_z_test();
|
|
shield.channel_masks[3] = false;
|
|
|
|
m_desresc_warp_anim_array_idx = create_fixed_anim_array({sat_shield_dest});
|
|
}
|
|
|
|
// templea-warp
|
|
// templeb-warp
|
|
// volcanox-warp
|
|
// deshover
|
|
// ljkdxvin
|
|
// ltnfxhip
|
|
{
|
|
FixedAnimDef holograph_env_rim_dest;
|
|
holograph_env_rim_dest.tex_name = "holograph-env-rim-dest";
|
|
holograph_env_rim_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
holograph_env_rim_dest.move_to_pool = true;
|
|
|
|
auto& env_noise = holograph_env_rim_dest.layers.emplace_back();
|
|
env_noise.tex_name = "holograph-env-noise";
|
|
env_noise.end_time = 1200.f;
|
|
env_noise.set_blend_b2_d1();
|
|
env_noise.set_no_z_write_no_z_test();
|
|
env_noise.channel_masks[3] = false; // no alpha writes.
|
|
|
|
auto& env_scan = holograph_env_rim_dest.layers.emplace_back();
|
|
env_scan.tex_name = "holograph-env-scan";
|
|
env_scan.end_time = 1200.f;
|
|
env_scan.set_blend_b2_d1();
|
|
env_scan.set_no_z_write_no_z_test();
|
|
env_scan.channel_masks[3] = false; // no alpha writes.
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
auto& rim = holograph_env_rim_dest.layers.emplace_back();
|
|
rim.tex_name = "holograph-env-rim";
|
|
rim.end_time = 1200.f;
|
|
rim.set_blend_b2_d1();
|
|
rim.set_no_z_write_no_z_test();
|
|
rim.channel_masks[3] = false; // no alpha writes.
|
|
}
|
|
|
|
auto& phong_rim = holograph_env_rim_dest.layers.emplace_back();
|
|
phong_rim.tex_name = "environment-phong-rim";
|
|
phong_rim.end_time = 1200.f;
|
|
phong_rim.set_blend_b2_d1();
|
|
phong_rim.set_no_z_write_no_z_test();
|
|
phong_rim.channel_masks[3] = false; // no alpha writes.
|
|
|
|
m_templea_warp_anim_array_idx = create_fixed_anim_array({holograph_env_rim_dest});
|
|
m_templeb_warp_anim_array_idx = create_fixed_anim_array({holograph_env_rim_dest});
|
|
m_volcanox_warp_anim_array_idx = create_fixed_anim_array({holograph_env_rim_dest});
|
|
m_deshover_anim_array_idx = create_fixed_anim_array({holograph_env_rim_dest});
|
|
m_ljkdxvin_anim_array_idx = create_fixed_anim_array({holograph_env_rim_dest});
|
|
m_ltnfxhip_anim_array_idx = create_fixed_anim_array({holograph_env_rim_dest});
|
|
}
|
|
|
|
// lgunnorm-water
|
|
{
|
|
FixedAnimDef kg_target_forcefield_dest;
|
|
kg_target_forcefield_dest.tex_name = "kg-target-c-forcefield-01-dest";
|
|
kg_target_forcefield_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
kg_target_forcefield_dest.override_size = math::Vector2<int>(64, 64);
|
|
|
|
for (int i = 0; i < 6; i++) {
|
|
auto& forcefield = kg_target_forcefield_dest.layers.emplace_back();
|
|
forcefield.tex_name = "kg-target-c-forcefield-01";
|
|
forcefield.set_blend_b2_d1();
|
|
forcefield.set_no_z_write_no_z_test();
|
|
forcefield.channel_masks[3] = false;
|
|
}
|
|
|
|
kg_target_forcefield_dest.set_times({
|
|
{0.f, 75.f},
|
|
{0.f, 75.f},
|
|
{0.f, 75.f},
|
|
{75.f, 150.f},
|
|
{75.f, 150.f},
|
|
{75.f, 150.f},
|
|
});
|
|
|
|
m_lgunnorm_water_anim_array_idx = create_fixed_anim_array({kg_target_forcefield_dest});
|
|
}
|
|
|
|
// templex-water
|
|
{
|
|
FixedAnimDef temple_waterfall_dest;
|
|
temple_waterfall_dest.tex_name = "temple-waterfall-dest";
|
|
temple_waterfall_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
temple_waterfall_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& waterfall = temple_waterfall_dest.layers.emplace_back();
|
|
waterfall.tex_name = "temple-waterfall";
|
|
waterfall.end_time = 600.f;
|
|
waterfall.set_blend_b2_d1();
|
|
waterfall.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_templex_water_anim_array_idx = create_fixed_anim_array({temple_waterfall_dest});
|
|
}
|
|
|
|
// desertd-water
|
|
{
|
|
FixedAnimDef des_waterfall_dest;
|
|
des_waterfall_dest.tex_name = "des-waterfall-dest";
|
|
des_waterfall_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
des_waterfall_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& waterfall = des_waterfall_dest.layers.emplace_back();
|
|
waterfall.tex_name = "des-waterfall";
|
|
waterfall.end_time = 600.f;
|
|
waterfall.set_blend_b2_d1();
|
|
waterfall.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_desertd_water_anim_array_idx = create_fixed_anim_array({des_waterfall_dest});
|
|
}
|
|
|
|
// towerb-water
|
|
{
|
|
FixedAnimDef tow_energy_bridge_dest;
|
|
tow_energy_bridge_dest.tex_name = "tow-energy-bridge-dest";
|
|
tow_energy_bridge_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
tow_energy_bridge_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& bridge = tow_energy_bridge_dest.layers.emplace_back();
|
|
bridge.tex_name = "tow-energy-bridge";
|
|
bridge.end_time = 2100.f;
|
|
bridge.set_blend_b2_d1();
|
|
bridge.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_towerb_water_anim_array_idx = create_fixed_anim_array({tow_energy_bridge_dest});
|
|
}
|
|
|
|
// factoryb-water
|
|
{
|
|
FixedAnimDef hemi_gradient_dest;
|
|
hemi_gradient_dest.tex_name = "hemi-gradient-dest";
|
|
hemi_gradient_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
hemi_gradient_dest.override_size = math::Vector2<int>(64, 64);
|
|
|
|
auto& rim = hemi_gradient_dest.layers.emplace_back();
|
|
rim.tex_name = "hemi-gradient-rim";
|
|
rim.end_time = 600.f;
|
|
rim.set_blend_b2_d1();
|
|
rim.set_no_z_write_no_z_test();
|
|
rim.channel_masks[3] = false;
|
|
|
|
auto& flames = hemi_gradient_dest.layers.emplace_back();
|
|
flames.tex_name = "hemi-gradient-flames";
|
|
flames.end_time = 600.f;
|
|
flames.set_blend_b2_d1();
|
|
flames.set_no_z_write_no_z_test();
|
|
flames.channel_masks[3] = false;
|
|
|
|
FixedAnimDef hemi_gradient_flames_dest;
|
|
hemi_gradient_flames_dest.tex_name = "hemi-gradient-dest";
|
|
hemi_gradient_flames_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
hemi_gradient_flames_dest.override_size = math::Vector2<int>(64, 64);
|
|
|
|
auto& flames0 = hemi_gradient_dest.layers.emplace_back();
|
|
flames0.tex_name = "hemi-gradient-flames";
|
|
flames0.end_time = 600.f;
|
|
flames0.set_blend_b2_d1();
|
|
flames0.set_no_z_write_no_z_test();
|
|
flames0.channel_masks[3] = false;
|
|
|
|
m_factoryb_water_anim_array_idx =
|
|
create_fixed_anim_array({hemi_gradient_dest, hemi_gradient_flames_dest});
|
|
}
|
|
|
|
// factoryc-alpha
|
|
{
|
|
FixedAnimDef facc_convey_dest;
|
|
facc_convey_dest.tex_name = "facc-convey-dest";
|
|
facc_convey_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
facc_convey_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
auto& convey = facc_convey_dest.layers.emplace_back();
|
|
convey.tex_name = "facc-convey";
|
|
convey.end_time = 300.f;
|
|
convey.set_blend_b2_d1();
|
|
convey.set_no_z_write_no_z_test();
|
|
convey.channel_masks[3] = false;
|
|
|
|
FixedAnimDef facc_convey_02_dest;
|
|
facc_convey_02_dest.tex_name = "facc-convey-02-dest";
|
|
facc_convey_02_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
facc_convey_02_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
auto& convey_02 = facc_convey_02_dest.layers.emplace_back();
|
|
convey_02.tex_name = "facc-convey-02";
|
|
convey_02.end_time = 300.f;
|
|
convey_02.set_blend_b2_d1();
|
|
convey_02.set_no_z_write_no_z_test();
|
|
convey_02.channel_masks[3] = false;
|
|
|
|
m_factoryc_alpha_anim_array_idx =
|
|
create_fixed_anim_array({facc_convey_dest, facc_convey_02_dest});
|
|
}
|
|
|
|
// waspala-water
|
|
{
|
|
FixedAnimDef waspala_water_dest;
|
|
waspala_water_dest.tex_name = "waspala-water-dest";
|
|
waspala_water_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
waspala_water_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = waspala_water_dest.layers.emplace_back();
|
|
water.tex_name = "waspala-water";
|
|
water.end_time = 2100.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef waspala_waterfall_dest;
|
|
waspala_waterfall_dest.tex_name = "waspala-waterfall-dest";
|
|
waspala_waterfall_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
waspala_waterfall_dest.override_size = math::Vector2<int>(64, 64);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& waterfall = waspala_waterfall_dest.layers.emplace_back();
|
|
waterfall.tex_name = "waspala-waterfall";
|
|
waterfall.end_time = 600.f;
|
|
waterfall.set_blend_b2_d1();
|
|
waterfall.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_waspal_water_anim_array_idx =
|
|
create_fixed_anim_array({waspala_water_dest, waspala_waterfall_dest});
|
|
}
|
|
|
|
// rubblea-water
|
|
{
|
|
FixedAnimDef rub_water_dest;
|
|
rub_water_dest.tex_name = "rub-water-dest";
|
|
rub_water_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
rub_water_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = rub_water_dest.layers.emplace_back();
|
|
water.tex_name = "rub-water";
|
|
water.end_time = 2100.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_rubblea_water_anim_array_idx = create_fixed_anim_array({rub_water_dest});
|
|
}
|
|
|
|
// rubblea2-water
|
|
{
|
|
FixedAnimDef ruba2_water_dest;
|
|
ruba2_water_dest.tex_name = "rub-water-desta2";
|
|
ruba2_water_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
ruba2_water_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = ruba2_water_dest.layers.emplace_back();
|
|
water.tex_name = "rub-watera2";
|
|
water.end_time = 2100.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_rubblea2_water_anim_array_idx = create_fixed_anim_array({ruba2_water_dest});
|
|
}
|
|
|
|
// rubbleb-water
|
|
{
|
|
FixedAnimDef rubb_water_dest;
|
|
rubb_water_dest.tex_name = "rub-water-destb";
|
|
rubb_water_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
rubb_water_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = rubb_water_dest.layers.emplace_back();
|
|
water.tex_name = "rub-waterb";
|
|
water.end_time = 2100.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_rubbleb_water_anim_array_idx = create_fixed_anim_array({rubb_water_dest});
|
|
}
|
|
|
|
// rubblec-water
|
|
{
|
|
FixedAnimDef rubc_water_dest;
|
|
rubc_water_dest.tex_name = "rub-water-destc";
|
|
rubc_water_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
rubc_water_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = rubc_water_dest.layers.emplace_back();
|
|
water.tex_name = "rub-waterc";
|
|
water.end_time = 2100.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_rubblec_water_anim_array_idx = create_fixed_anim_array({rubc_water_dest});
|
|
}
|
|
|
|
// nstb-quicksand
|
|
{
|
|
FixedAnimDef quicksand_dest;
|
|
quicksand_dest.tex_name = "nstb-quicksand-dest";
|
|
quicksand_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
|
|
auto& scroll = quicksand_dest.layers.emplace_back();
|
|
scroll.tex_name = "nstb-quicksand-scroll";
|
|
scroll.end_time = 1200.f;
|
|
scroll.set_blend_b2_d1();
|
|
scroll.set_no_z_write_no_z_test();
|
|
scroll.channel_masks[3] = false;
|
|
|
|
m_nstb_quicksand_anim_array_idx = create_fixed_anim_array({quicksand_dest});
|
|
}
|
|
|
|
// ctyslumb-water
|
|
{
|
|
FixedAnimDef ctyslumb_water_dest;
|
|
ctyslumb_water_dest.tex_name = "ctyslumb-water-dest";
|
|
ctyslumb_water_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
ctyslumb_water_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = ctyslumb_water_dest.layers.emplace_back();
|
|
water.tex_name = "ctyslumb-water";
|
|
water.end_time = 2100.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef ctyslumb_fountain_fall_dest;
|
|
ctyslumb_fountain_fall_dest.tex_name = "ctyslumb-fountain-fall-dest";
|
|
ctyslumb_fountain_fall_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
ctyslumb_fountain_fall_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = ctyslumb_fountain_fall_dest.layers.emplace_back();
|
|
water.tex_name = "ctyslumb-fountain-fall";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_ctyslumb_water_anim_array_idx =
|
|
create_fixed_anim_array({ctyslumb_water_dest, ctyslumb_fountain_fall_dest});
|
|
}
|
|
|
|
// ctyslumc-water
|
|
{
|
|
FixedAnimDef ctyslumc_water_dest;
|
|
ctyslumc_water_dest.tex_name = "ctyslumc-water-dest";
|
|
ctyslumc_water_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
ctyslumc_water_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = ctyslumc_water_dest.layers.emplace_back();
|
|
water.tex_name = "ctyslumc-water";
|
|
water.end_time = 2100.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
FixedAnimDef ctyslumc_fountain_fall_dest;
|
|
ctyslumc_fountain_fall_dest.tex_name = "ctyslumc-fountain-fall-dest";
|
|
ctyslumc_fountain_fall_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
ctyslumc_fountain_fall_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& water = ctyslumc_fountain_fall_dest.layers.emplace_back();
|
|
water.tex_name = "ctyslumc-fountain-fall";
|
|
water.end_time = 600.f;
|
|
water.set_blend_b2_d1();
|
|
water.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
m_ctyslumc_water_anim_array_idx =
|
|
create_fixed_anim_array({ctyslumc_water_dest, ctyslumc_fountain_fall_dest});
|
|
}
|
|
|
|
// mined-tfrag
|
|
{
|
|
FixedAnimDef mined_pillar_side_dest;
|
|
mined_pillar_side_dest.tex_name = "mined-pillar-side-dest";
|
|
mined_pillar_side_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
mined_pillar_side_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
auto& side_cold = mined_pillar_side_dest.layers.emplace_back();
|
|
side_cold.tex_name = "mined-pillar-side-cold";
|
|
side_cold.end_time = 300.f;
|
|
// no alpha
|
|
side_cold.blend_enable = false;
|
|
side_cold.set_no_z_write_no_z_test();
|
|
side_cold.channel_masks[3] = false;
|
|
|
|
auto& side_cooling = mined_pillar_side_dest.layers.emplace_back();
|
|
side_cooling.tex_name = "mined-pillar-side-cooling";
|
|
side_cooling.end_time = 300.f;
|
|
side_cooling.set_blend_b1_d1();
|
|
side_cooling.set_no_z_write_no_z_test();
|
|
side_cooling.channel_masks[3] = false;
|
|
|
|
auto& side_hot = mined_pillar_side_dest.layers.emplace_back();
|
|
side_hot.tex_name = "mined-pillar-side-hot";
|
|
side_hot.end_time = 300.f;
|
|
side_hot.set_blend_b1_d1();
|
|
side_hot.set_no_z_write_no_z_test();
|
|
side_hot.channel_masks[3] = false;
|
|
|
|
auto& molten = mined_pillar_side_dest.layers.emplace_back();
|
|
molten.tex_name = "mined-pillar-molten";
|
|
molten.end_time = 300.f;
|
|
molten.set_blend_b2_d1();
|
|
molten.set_no_z_write_no_z_test();
|
|
molten.channel_masks[3] = false;
|
|
|
|
auto& side_cold1 = mined_pillar_side_dest.layers.emplace_back();
|
|
side_cold1.tex_name = "mined-pillar-side-cold";
|
|
side_cold1.end_time = 300.f;
|
|
side_cold1.set_blend_b1_d1();
|
|
side_cold1.set_no_z_write_no_z_test();
|
|
|
|
FixedAnimDef mined_pillar_top2side_dest;
|
|
mined_pillar_top2side_dest.tex_name = "mined-pillar-top2side-dest";
|
|
mined_pillar_top2side_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
mined_pillar_top2side_dest.override_size = math::Vector2<int>(128, 64);
|
|
|
|
auto& top2side_cold = mined_pillar_top2side_dest.layers.emplace_back();
|
|
top2side_cold.tex_name = "mined-pillar-top2side-cold";
|
|
top2side_cold.end_time = 300.f;
|
|
// no alpha
|
|
top2side_cold.blend_enable = false;
|
|
top2side_cold.set_no_z_write_no_z_test();
|
|
top2side_cold.channel_masks[3] = false;
|
|
|
|
auto& top2side_cooling = mined_pillar_top2side_dest.layers.emplace_back();
|
|
top2side_cooling.tex_name = "mined-pillar-top2side-cooling";
|
|
top2side_cooling.end_time = 300.f;
|
|
top2side_cooling.set_blend_b1_d1();
|
|
top2side_cooling.set_no_z_write_no_z_test();
|
|
top2side_cooling.channel_masks[3] = false;
|
|
|
|
auto& top2side_hot = mined_pillar_top2side_dest.layers.emplace_back();
|
|
top2side_hot.tex_name = "mined-pillar-top2side-hot";
|
|
top2side_hot.end_time = 300.f;
|
|
top2side_hot.set_blend_b1_d1();
|
|
top2side_hot.set_no_z_write_no_z_test();
|
|
top2side_hot.channel_masks[3] = false;
|
|
|
|
auto& top2side_molten = mined_pillar_top2side_dest.layers.emplace_back();
|
|
top2side_molten.tex_name = "mined-pillar-molten";
|
|
top2side_molten.end_time = 300.f;
|
|
top2side_molten.set_blend_b2_d1();
|
|
top2side_molten.set_no_z_write_no_z_test();
|
|
top2side_molten.channel_masks[3] = false;
|
|
|
|
auto& top2side_cold1 = mined_pillar_top2side_dest.layers.emplace_back();
|
|
top2side_cold1.tex_name = "mined-pillar-side-cold";
|
|
top2side_cold1.end_time = 300.f;
|
|
top2side_cold1.set_blend_b1_d1();
|
|
top2side_cold1.set_no_z_write_no_z_test();
|
|
|
|
FixedAnimDef mined_pillar_top_dest;
|
|
mined_pillar_top_dest.tex_name = "mined-pillar-top-dest";
|
|
mined_pillar_top_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
mined_pillar_top_dest.override_size = math::Vector2<int>(128, 128);
|
|
|
|
auto& top_cold = mined_pillar_top_dest.layers.emplace_back();
|
|
top_cold.tex_name = "mined-pillar-top-cold";
|
|
// no alpha
|
|
top_cold.blend_enable = false;
|
|
top_cold.set_no_z_write_no_z_test();
|
|
top_cold.channel_masks[3] = false;
|
|
|
|
auto& top_cooling = mined_pillar_top_dest.layers.emplace_back();
|
|
top_cooling.tex_name = "mined-pillar-top-cooling";
|
|
top_cooling.set_blend_b1_d1();
|
|
top_cooling.set_no_z_write_no_z_test();
|
|
top_cooling.channel_masks[3] = false;
|
|
|
|
for (size_t i = 0; i < 4; i++) {
|
|
auto& top_hot = mined_pillar_top_dest.layers.emplace_back();
|
|
top_hot.tex_name = "mined-pillar-top-hot";
|
|
top_hot.set_blend_b1_d1();
|
|
top_hot.set_no_z_write_no_z_test();
|
|
top_hot.channel_masks[3] = false;
|
|
}
|
|
|
|
auto& top_molten = mined_pillar_top_dest.layers.emplace_back();
|
|
top_molten.tex_name = "mined-pillar-molten-top";
|
|
top_molten.set_blend_b2_d1();
|
|
top_molten.set_no_z_write_no_z_test();
|
|
top_molten.channel_masks[3] = false;
|
|
|
|
auto& top_cold1 = mined_pillar_top_dest.layers.emplace_back();
|
|
top_cold1.tex_name = "mined-pillar-top-cold";
|
|
top_cold1.set_blend_b1_d1();
|
|
top_cold1.set_no_z_write_no_z_test();
|
|
|
|
mined_pillar_top_dest.set_times({
|
|
{0.f, 300.f},
|
|
{0.f, 300.f},
|
|
{0.f, 300.f},
|
|
{0.f, 150.f},
|
|
{150.f, 300.f},
|
|
{0.f, 150.f},
|
|
{150.f, 300.f},
|
|
{0.f, 300.f},
|
|
});
|
|
|
|
m_mined_tfrag_anim_array_idx = create_fixed_anim_array(
|
|
{mined_pillar_side_dest, mined_pillar_top2side_dest, mined_pillar_top_dest});
|
|
}
|
|
|
|
// volcanoa-alpha
|
|
{
|
|
FixedAnimDef vola_lava_dest;
|
|
vola_lava_dest.tex_name = "vola-lava-01-dest";
|
|
vola_lava_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
vola_lava_dest.override_size = math::Vector2<int>(128, 128);
|
|
vola_lava_dest.set_alpha = true;
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& lava_fall = vola_lava_dest.layers.emplace_back();
|
|
lava_fall.tex_name = "vola-lava-fall";
|
|
lava_fall.end_time = 6000.f;
|
|
lava_fall.set_blend_b2_d1();
|
|
lava_fall.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
// auto& alpha = vola_lava_dest.layers.emplace_back();
|
|
// alpha.tex_name = "";
|
|
// alpha.end_time = 2100.f;
|
|
// alpha.set_blend_b1_d1();
|
|
// alpha.set_no_z_write_no_z_test();
|
|
// alpha.channel_masks[3] = false;
|
|
|
|
FixedAnimDef vola_lava_fall_dest;
|
|
vola_lava_fall_dest.tex_name = "vola-lava-fall-dest";
|
|
vola_lava_fall_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
vola_lava_fall_dest.override_size = math::Vector2<int>(128, 128);
|
|
vola_lava_fall_dest.set_alpha = true;
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& lava_fall = vola_lava_fall_dest.layers.emplace_back();
|
|
lava_fall.tex_name = "vola-lava-fall";
|
|
lava_fall.end_time = 6000.f;
|
|
lava_fall.set_blend_b2_d1();
|
|
lava_fall.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
// auto& alpha1 = vola_lava_fall_dest.layers.emplace_back();
|
|
// alpha1.tex_name = "";
|
|
// alpha1.end_time = 2100.f;
|
|
// alpha1.set_blend_b1_d1();
|
|
// alpha1.set_no_z_write_no_z_test();
|
|
// alpha1.channel_masks[3] = false;
|
|
|
|
m_volcanoa_anim_array_idx = create_fixed_anim_array({vola_lava_dest, vola_lava_fall_dest});
|
|
}
|
|
|
|
// wasstada-alpha
|
|
{
|
|
FixedAnimDef wstd_lava_base_dest;
|
|
wstd_lava_base_dest.tex_name = "wstd-lava-base-dest";
|
|
wstd_lava_base_dest.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
wstd_lava_base_dest.override_size = math::Vector2<int>(128, 128);
|
|
wstd_lava_base_dest.set_alpha = true;
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
auto& lava_base = wstd_lava_base_dest.layers.emplace_back();
|
|
lava_base.tex_name = "wstd-lava-base";
|
|
lava_base.end_time = 6000.f;
|
|
lava_base.set_blend_b2_d1();
|
|
lava_base.set_no_z_write_no_z_test();
|
|
}
|
|
|
|
// auto& alpha = wstd_lava_base_dest.layers.emplace_back();
|
|
// alpha.tex_name = "";
|
|
// alpha.end_time = 2100.f;
|
|
// alpha.set_blend_b1_d1();
|
|
// alpha.set_no_z_write_no_z_test();
|
|
// alpha.channel_masks[3] = false;
|
|
|
|
m_wasstada_alpha_anim_array_idx = create_fixed_anim_array({wstd_lava_base_dest});
|
|
}
|
|
}
|
|
|
|
void TextureAnimator::setup_texture_anims_common() {
|
|
// Skull Gem
|
|
{
|
|
FixedAnimDef skull_gem;
|
|
skull_gem.move_to_pool = true;
|
|
skull_gem.tex_name = "skull-gem-dest";
|
|
skull_gem.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
// overriden in texture-finish.gc
|
|
skull_gem.override_size = math::Vector2<int>(32, 32);
|
|
|
|
auto& skull_gem_0 = skull_gem.layers.emplace_back();
|
|
skull_gem_0.end_time = 300.;
|
|
skull_gem_0.tex_name = "skull-gem-alpha-00";
|
|
skull_gem_0.set_blend_b2_d1();
|
|
skull_gem_0.set_no_z_write_no_z_test();
|
|
|
|
auto& skull_gem_1 = skull_gem.layers.emplace_back();
|
|
skull_gem_1.end_time = 300.;
|
|
skull_gem_1.tex_name = "skull-gem-alpha-01";
|
|
skull_gem_1.set_blend_b2_d1();
|
|
skull_gem_1.set_no_z_write_no_z_test();
|
|
|
|
auto& skull_gem_2 = skull_gem.layers.emplace_back();
|
|
skull_gem_2.end_time = 300.;
|
|
skull_gem_2.tex_name = "skull-gem-alpha-02";
|
|
skull_gem_2.set_blend_b2_d1();
|
|
skull_gem_2.set_no_z_write_no_z_test();
|
|
|
|
m_skull_gem_fixed_anim_array_idx = create_fixed_anim_array({skull_gem});
|
|
}
|
|
|
|
// SECURITY
|
|
{
|
|
FixedAnimDef env;
|
|
env.color = math::Vector4<u8>(0, 0, 0, 0x80);
|
|
env.tex_name = "security-env-dest";
|
|
for (int i = 0; i < 2; i++) {
|
|
auto& env1 = env.layers.emplace_back();
|
|
env1.tex_name = "security-env-uscroll";
|
|
// :test (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))
|
|
env1.set_no_z_write_no_z_test();
|
|
env1.channel_masks[3] = false; // no alpha writes.
|
|
// :alpha (new 'static 'gs-alpha :b #x2 :d #x1)
|
|
env1.set_blend_b2_d1();
|
|
env1.end_time = 4800.f;
|
|
}
|
|
|
|
FixedAnimDef dot;
|
|
dot.color = math::Vector4<u8>(0, 0, 0, 0x80);
|
|
dot.tex_name = "security-dot-dest";
|
|
|
|
auto& cwhite = dot.layers.emplace_back();
|
|
cwhite.set_blend_b2_d1();
|
|
cwhite.set_no_z_write_no_z_test();
|
|
cwhite.tex_name = "common-white";
|
|
cwhite.end_time = 4800.f;
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
auto& dsrc = dot.layers.emplace_back();
|
|
dsrc.set_blend_b2_d1();
|
|
dsrc.set_no_z_write_no_z_test();
|
|
dsrc.end_time = 600.f;
|
|
dsrc.tex_name = "security-dot-src";
|
|
}
|
|
|
|
m_security_anim_array_idx = create_fixed_anim_array({env, dot});
|
|
if (this->m_version == GameVersion::Jak3) {
|
|
m_comb_field_anim_array_idx = create_fixed_anim_array({env, dot});
|
|
}
|
|
}
|
|
}
|
|
|
|
void TextureAnimator::setup_texture_anims_jak2() {
|
|
// DARKJAK
|
|
m_darkjak_clut_blender_idx = create_clut_blender_group(
|
|
{"jakbsmall-eyebrow", "jakbsmall-face", "jakbsmall-finger", "jakbsmall-hair"}, "-norm",
|
|
"-dark", {});
|
|
|
|
// PRISON
|
|
// MISSING EYELID
|
|
m_jakb_prison_clut_blender_idx = create_clut_blender_group(
|
|
{"jak-orig-arm-formorph", "jak-orig-eyebrow-formorph", "jak-orig-finger-formorph"}, "-start",
|
|
"-end", "LDJAKBRN.DGO");
|
|
add_to_clut_blender_group(m_jakb_prison_clut_blender_idx,
|
|
{"jakb-facelft", "jakb-facert", "jakb-hairtrans"}, "-norm", "-dark",
|
|
"LDJAKBRN.DGO");
|
|
|
|
// ORACLE
|
|
// MISSING FINGER
|
|
m_jakb_oracle_clut_blender_idx = create_clut_blender_group(
|
|
{"jakb-eyebrow", "jakb-eyelid", "jakb-facelft", "jakb-facert", "jakb-hairtrans"}, "-norm",
|
|
"-dark", "ORACLE.DGO");
|
|
|
|
// NEST
|
|
// MISSING FINGER
|
|
m_jakb_nest_clut_blender_idx = create_clut_blender_group(
|
|
{"jakb-eyebrow", "jakb-eyelid", "jakb-facelft", "jakb-facert", "jakb-hairtrans"}, "-norm",
|
|
"-dark", "NEB.DGO");
|
|
|
|
// KOR (doesn't work??)
|
|
m_kor_transform_clut_blender_idx = create_clut_blender_group(
|
|
{
|
|
// "kor-eyeeffect-formorph",
|
|
// "kor-hair-formorph",
|
|
// "kor-head-formorph",
|
|
// "kor-head-formorph-noreflect",
|
|
// "kor-lowercaps-formorph",
|
|
// "kor-uppercaps-formorph",
|
|
},
|
|
"-start", "-end", {});
|
|
|
|
// Bomb
|
|
{
|
|
FixedAnimDef bomb;
|
|
bomb.tex_name = "bomb-gradient";
|
|
bomb.color = math::Vector4<u8>{0, 0, 0, 0x80};
|
|
|
|
auto& bomb_0 = bomb.layers.emplace_back();
|
|
bomb_0.end_time = 300.;
|
|
bomb_0.tex_name = "bomb-gradient-rim";
|
|
bomb_0.set_blend_b2_d1();
|
|
bomb_0.set_no_z_write_no_z_test();
|
|
// :test (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))
|
|
bomb_0.channel_masks[3] = false; // no alpha writes.
|
|
|
|
auto& bomb_1 = bomb.layers.emplace_back();
|
|
bomb_1.end_time = 300.;
|
|
bomb_1.tex_name = "bomb-gradient-flames";
|
|
bomb_1.set_blend_b2_d1();
|
|
bomb_1.set_no_z_write_no_z_test();
|
|
// :test (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))
|
|
bomb_1.channel_masks[3] = false; // no alpha writes.
|
|
|
|
m_bomb_fixed_anim_array_idx = create_fixed_anim_array({bomb});
|
|
}
|
|
|
|
// CAS conveyor
|
|
{
|
|
FixedAnimDef conveyor_0;
|
|
conveyor_0.tex_name = "cas-conveyor-dest";
|
|
conveyor_0.color = math::Vector4<u8>(0, 0, 0, 0x80);
|
|
conveyor_0.override_size = math::Vector2<int>(64, 32);
|
|
auto& c0 = conveyor_0.layers.emplace_back();
|
|
c0.set_blend_b2_d1();
|
|
c0.set_no_z_write_no_z_test();
|
|
// :test (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))
|
|
c0.channel_masks[3] = false; // no alpha writes.
|
|
c0.end_time = 300.;
|
|
c0.tex_name = "cas-conveyor";
|
|
|
|
FixedAnimDef conveyor_1;
|
|
conveyor_1.tex_name = "cas-conveyor-dest-01";
|
|
conveyor_1.color = math::Vector4<u8>(0, 0, 0, 0x80);
|
|
conveyor_1.override_size = math::Vector2<int>(64, 32);
|
|
auto& c1 = conveyor_1.layers.emplace_back();
|
|
c1.set_blend_b2_d1();
|
|
c1.set_no_z_write_no_z_test();
|
|
// :test (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))
|
|
c1.channel_masks[3] = false; // no alpha writes.
|
|
c1.end_time = 300.;
|
|
c1.tex_name = "cas-conveyor";
|
|
|
|
FixedAnimDef conveyor_2;
|
|
conveyor_2.tex_name = "cas-conveyor-dest-02";
|
|
conveyor_2.color = math::Vector4<u8>(0, 0, 0, 0x80);
|
|
conveyor_2.override_size = math::Vector2<int>(64, 32);
|
|
auto& c2 = conveyor_2.layers.emplace_back();
|
|
c2.set_blend_b2_d1();
|
|
c2.set_no_z_write_no_z_test();
|
|
// :test (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))
|
|
c2.channel_masks[3] = false; // no alpha writes.
|
|
c2.end_time = 300.;
|
|
c2.tex_name = "cas-conveyor";
|
|
|
|
FixedAnimDef conveyor_3;
|
|
conveyor_3.tex_name = "cas-conveyor-dest-03";
|
|
conveyor_3.color = math::Vector4<u8>(0, 0, 0, 0x80);
|
|
conveyor_3.override_size = math::Vector2<int>(64, 32);
|
|
auto& c3 = conveyor_3.layers.emplace_back();
|
|
c3.set_blend_b2_d1();
|
|
c3.set_no_z_write_no_z_test();
|
|
// :test (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))
|
|
c3.channel_masks[3] = false; // no alpha writes.
|
|
c3.end_time = 300.;
|
|
c3.tex_name = "cas-conveyor";
|
|
|
|
m_cas_conveyor_anim_array_idx =
|
|
create_fixed_anim_array({conveyor_0, conveyor_1, conveyor_2, conveyor_3});
|
|
}
|
|
|
|
// WATERFALL
|
|
{
|
|
FixedAnimDef waterfall;
|
|
waterfall.color = math::Vector4<u8>(0, 0, 0, 0x80);
|
|
waterfall.tex_name = "waterfall-dest";
|
|
for (int i = 0; i < 4; i++) {
|
|
auto& src = waterfall.layers.emplace_back();
|
|
src.set_blend_b1_d1();
|
|
src.set_no_z_write_no_z_test();
|
|
src.end_time = 450.f;
|
|
src.tex_name = "waterfall";
|
|
}
|
|
m_waterfall_anim_array_idx = create_fixed_anim_array({waterfall});
|
|
}
|
|
|
|
{
|
|
FixedAnimDef waterfall;
|
|
waterfall.color = math::Vector4<u8>(0, 0, 0, 0x80);
|
|
waterfall.tex_name = "waterfall-dest";
|
|
for (int i = 0; i < 4; i++) {
|
|
auto& src = waterfall.layers.emplace_back();
|
|
src.set_blend_b1_d1();
|
|
src.set_no_z_write_no_z_test();
|
|
src.end_time = 450.f;
|
|
src.tex_name = "waterfall";
|
|
}
|
|
m_waterfall_b_anim_array_idx = create_fixed_anim_array({waterfall});
|
|
}
|
|
|
|
// LAVA
|
|
{
|
|
FixedAnimDef lava;
|
|
lava.color = math::Vector4<u8>(0, 0, 0, 0x80);
|
|
lava.tex_name = "dig-lava-01-dest";
|
|
for (int i = 0; i < 2; i++) {
|
|
auto& src = lava.layers.emplace_back();
|
|
src.set_blend_b1_d1();
|
|
src.set_no_z_write_no_z_test();
|
|
src.end_time = 3600.f;
|
|
src.tex_name = "dig-lava-01";
|
|
}
|
|
m_lava_anim_array_idx = create_fixed_anim_array({lava});
|
|
}
|
|
|
|
{
|
|
FixedAnimDef lava;
|
|
lava.color = math::Vector4<u8>(0, 0, 0, 0x80);
|
|
lava.tex_name = "dig-lava-01-dest";
|
|
for (int i = 0; i < 2; i++) {
|
|
auto& src = lava.layers.emplace_back();
|
|
src.set_blend_b1_d1();
|
|
src.set_no_z_write_no_z_test();
|
|
src.end_time = 3600.f;
|
|
src.tex_name = "dig-lava-01";
|
|
}
|
|
m_lava_b_anim_array_idx = create_fixed_anim_array({lava});
|
|
}
|
|
|
|
// Stadiumb
|
|
{
|
|
FixedAnimDef def;
|
|
def.color = math::Vector4<u8>(0, 0, 0, 0x80);
|
|
def.tex_name = "stdmb-energy-wall-01-dest";
|
|
for (int i = 0; i < 2; i++) {
|
|
auto& src = def.layers.emplace_back();
|
|
src.set_blend_b1_d1();
|
|
src.set_no_z_write_no_z_test();
|
|
src.end_time = 300.f;
|
|
src.tex_name = "stdmb-energy-wall-01";
|
|
}
|
|
m_stadiumb_anim_array_idx = create_fixed_anim_array({def});
|
|
}
|
|
|
|
// Fortress pris
|
|
{
|
|
FixedAnimDef l_tread;
|
|
l_tread.color = math::Vector4<u8>(0, 0, 0, 0x80);
|
|
l_tread.tex_name = "robotank-tread-l-dest";
|
|
auto& l_src = l_tread.layers.emplace_back();
|
|
l_src.set_blend_b1_d1();
|
|
l_src.set_no_z_write_no_z_test();
|
|
l_src.channel_masks[3] = false; // no alpha writes.
|
|
l_src.end_time = 1.f;
|
|
l_src.tex_name = "robotank-tread";
|
|
|
|
FixedAnimDef r_tread;
|
|
r_tread.color = math::Vector4<u8>(0, 0, 0, 0x80);
|
|
r_tread.tex_name = "robotank-tread-r-dest";
|
|
auto& r_src = r_tread.layers.emplace_back();
|
|
r_src.set_blend_b1_d1();
|
|
r_src.set_no_z_write_no_z_test();
|
|
r_src.channel_masks[3] = false; // no alpha writes.
|
|
r_src.end_time = 1.f;
|
|
r_src.tex_name = "robotank-tread";
|
|
|
|
m_fortress_pris_anim_array_idx = create_fixed_anim_array({l_tread, r_tread});
|
|
}
|
|
|
|
// Fortress Warp
|
|
{
|
|
FixedAnimDef def;
|
|
def.color = math::Vector4<u8>(0, 0, 0, 0x80);
|
|
def.move_to_pool = true;
|
|
def.tex_name = "fort-roboscreen-dest";
|
|
auto& src = def.layers.emplace_back();
|
|
src.set_blend_b2_d1();
|
|
src.channel_masks[3] = false; // no alpha writes.
|
|
src.set_no_z_write_no_z_test();
|
|
src.end_time = 300.f;
|
|
src.tex_name = "fort-roboscreen-env";
|
|
m_fortress_warp_anim_array_idx = create_fixed_anim_array({def});
|
|
}
|
|
|
|
// metkor
|
|
{
|
|
FixedAnimDef def;
|
|
def.color = math::Vector4<u8>(0, 0, 0, 0x80);
|
|
def.tex_name = "squid-env-rim-dest";
|
|
def.move_to_pool = true;
|
|
{
|
|
auto& src = def.layers.emplace_back();
|
|
src.set_blend_b2_d1();
|
|
src.channel_masks[3] = false; // no alpha writes.
|
|
src.set_no_z_write_no_z_test();
|
|
src.set_clamp();
|
|
src.end_time = 1200.f;
|
|
src.tex_name = "metkor-head-env-noise";
|
|
}
|
|
{
|
|
auto& src = def.layers.emplace_back();
|
|
src.set_blend_b2_d1();
|
|
src.channel_masks[3] = false; // no alpha writes.
|
|
src.set_no_z_write_no_z_test();
|
|
src.set_clamp();
|
|
src.end_time = 1200.f;
|
|
src.tex_name = "metkor-head-env-scan";
|
|
}
|
|
{
|
|
auto& src = def.layers.emplace_back();
|
|
src.set_blend_b2_d1();
|
|
src.channel_masks[3] = false; // no alpha writes.
|
|
src.set_no_z_write_no_z_test();
|
|
src.set_clamp();
|
|
src.end_time = 1200.f;
|
|
src.tex_name = "metkor-head-env-rim";
|
|
}
|
|
{
|
|
auto& src = def.layers.emplace_back();
|
|
src.set_blend_b2_d1();
|
|
src.channel_masks[3] = false; // no alpha writes.
|
|
src.set_no_z_write_no_z_test();
|
|
src.set_clamp();
|
|
src.end_time = 1200.f;
|
|
src.tex_name = "metkor-head-env-rim";
|
|
}
|
|
{
|
|
auto& src = def.layers.emplace_back();
|
|
src.set_blend_b2_d1();
|
|
src.channel_masks[3] = false; // no alpha writes.
|
|
src.set_no_z_write_no_z_test();
|
|
src.set_clamp();
|
|
src.end_time = 1200.f;
|
|
src.tex_name = "environment-phong-rim";
|
|
}
|
|
m_metkor_anim_array_idx = create_fixed_anim_array({def});
|
|
}
|
|
|
|
// shield
|
|
{
|
|
FixedAnimDef def;
|
|
def.color = math::Vector4<u8>(0, 0, 0, 0x80);
|
|
def.tex_name = "squid-env-rim-dest";
|
|
def.move_to_pool = true;
|
|
|
|
{
|
|
auto& src = def.layers.emplace_back();
|
|
src.set_blend_b2_d1();
|
|
src.set_no_z_write_no_z_test();
|
|
src.set_clamp();
|
|
src.end_time = 1200.f;
|
|
src.tex_name = "common-white";
|
|
}
|
|
|
|
{
|
|
auto& src = def.layers.emplace_back();
|
|
src.set_blend_b2_d1();
|
|
src.channel_masks[3] = false; // no alpha writes.
|
|
src.set_no_z_write_no_z_test();
|
|
src.set_clamp();
|
|
src.end_time = 1200.f;
|
|
src.tex_name = "squid-env-uscroll";
|
|
}
|
|
|
|
{
|
|
auto& src = def.layers.emplace_back();
|
|
src.set_blend_b2_d1();
|
|
src.channel_masks[3] = false; // no alpha writes.
|
|
src.set_no_z_write_no_z_test();
|
|
src.set_clamp();
|
|
src.end_time = 1200.f;
|
|
src.tex_name = "squid-env-uscroll";
|
|
}
|
|
|
|
{
|
|
auto& src = def.layers.emplace_back();
|
|
src.set_blend_b2_d1();
|
|
src.channel_masks[3] = false; // no alpha writes.
|
|
src.set_no_z_write_no_z_test();
|
|
src.set_clamp();
|
|
src.end_time = 1200.f;
|
|
src.tex_name = "squid-env-rim-src";
|
|
}
|
|
|
|
{
|
|
auto& src = def.layers.emplace_back();
|
|
src.set_blend_b2_d1();
|
|
src.channel_masks[3] = false; // no alpha writes.
|
|
src.set_no_z_write_no_z_test();
|
|
src.set_clamp();
|
|
src.end_time = 1200.f;
|
|
src.tex_name = "squid-env-rim-src";
|
|
}
|
|
m_shield_anim_array_idx = create_fixed_anim_array({def});
|
|
}
|
|
|
|
// krew
|
|
{
|
|
FixedAnimDef def;
|
|
def.color = math::Vector4<u8>(0, 0, 0, 0x80);
|
|
def.tex_name = "krew-holo-dest";
|
|
def.move_to_pool = true;
|
|
{
|
|
auto& src = def.layers.emplace_back();
|
|
src.set_blend_b2_d1();
|
|
src.channel_masks[3] = false; // no alpha writes.
|
|
src.set_no_z_write_no_z_test();
|
|
src.set_clamp();
|
|
src.end_time = 1200.f;
|
|
src.tex_name = "metkor-head-env-noise";
|
|
}
|
|
{
|
|
auto& src = def.layers.emplace_back();
|
|
src.set_blend_b2_d1();
|
|
src.channel_masks[3] = false; // no alpha writes.
|
|
src.set_no_z_write_no_z_test();
|
|
src.set_clamp();
|
|
src.end_time = 1200.f;
|
|
src.tex_name = "metkor-head-env-scan";
|
|
}
|
|
{
|
|
auto& src = def.layers.emplace_back();
|
|
src.set_blend_b2_d1();
|
|
src.channel_masks[3] = false; // no alpha writes.
|
|
src.set_no_z_write_no_z_test();
|
|
src.set_clamp();
|
|
src.end_time = 1200.f;
|
|
src.tex_name = "metkor-head-env-rim";
|
|
}
|
|
{
|
|
auto& src = def.layers.emplace_back();
|
|
src.set_blend_b2_d1();
|
|
src.channel_masks[3] = false; // no alpha writes.
|
|
src.set_no_z_write_no_z_test();
|
|
src.set_clamp();
|
|
src.end_time = 1200.f;
|
|
src.tex_name = "metkor-head-env-rim";
|
|
}
|
|
{
|
|
auto& src = def.layers.emplace_back();
|
|
src.set_blend_b2_d1();
|
|
src.channel_masks[3] = false; // no alpha writes.
|
|
src.set_no_z_write_no_z_test();
|
|
src.set_clamp();
|
|
src.end_time = 1200.f;
|
|
src.tex_name = "metkor-phong-env";
|
|
}
|
|
m_krew_holo_anim_array_idx = create_fixed_anim_array({def});
|
|
}
|
|
|
|
{
|
|
m_slime_output_slot = output_slot_by_idx(m_version, "cas-toxic-slime-dest");
|
|
m_slime_scroll_output_slot = output_slot_by_idx(m_version, "cas-toxic-slime-scroll-dest");
|
|
const float max_times[4] = {600.f, 300.f, 150.f, 75.f};
|
|
const float scales[4] = {0.55, 0.6, 0.3, 0.1f};
|
|
for (int i = 0, dim = kFinalSlimeTextureSize >> (kNumSlimeNoiseLayers - 1);
|
|
i < kNumSlimeNoiseLayers; i++, dim *= 2) {
|
|
auto& tex = m_slime_noise_textures[i];
|
|
tex.temp_data.resize(dim * dim);
|
|
tex.max_time = max_times[i];
|
|
tex.scale = scales[i];
|
|
tex.dim = dim;
|
|
glGenTextures(1, &tex.new_tex);
|
|
m_random_index = update_opengl_noise_texture(tex.new_tex, tex.temp_data.data(),
|
|
m_random_table, dim, m_random_index);
|
|
glGenTextures(1, &tex.old_tex);
|
|
m_random_index = update_opengl_noise_texture(tex.old_tex, tex.temp_data.data(),
|
|
m_random_table, dim, m_random_index);
|
|
}
|
|
}
|
|
} |