Glitter: Fixed regression caused by inappropriate flags
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
|
||||
namespace Glitter {
|
||||
EffectX::Data::Data() : appear_time(), life_time(), start_time(),
|
||||
ext_anim(), flags(), emission(), seed(), ext_anim_scale_start_time() {
|
||||
ext_anim(), flags(), emission(), seed(), ext_anim_end_time() {
|
||||
color = 0xFFFFFFFF;
|
||||
name_hash = hash_murmurhash_empty;
|
||||
}
|
||||
|
||||
@@ -75,11 +75,13 @@ namespace Glitter {
|
||||
random_shared.value = random;
|
||||
|
||||
if (!(eff->data.flags & EFFECT_LOCAL) && data.ext_anim) {
|
||||
EffectInstX::ExtAnim* inst_ext_anim = new EffectInstX::ExtAnim;
|
||||
InitExtAnim();
|
||||
|
||||
EffectInstX::ExtAnim* inst_ext_anim = this->ext_anim;
|
||||
if (inst_ext_anim) {
|
||||
EffectX::ExtAnim* ext_anim = data.ext_anim;
|
||||
if (ext_anim->flags & EFFECT_EXT_ANIM_SET_ONCE)
|
||||
enum_or(flags, EFFECT_INST_SET_EXT_ANIM_ONCE);
|
||||
enum_or(flags, EFFECT_INST_EXT_ANIM_SET_ONCE);
|
||||
if (ext_anim->flags & EFFECT_EXT_ANIM_TRANS_ONLY)
|
||||
enum_or(flags, EFFECT_INST_EXT_ANIM_TRANS_ONLY);
|
||||
if (ext_anim->flags & EFFECT_EXT_ANIM_NO_TRANS_X)
|
||||
@@ -89,12 +91,12 @@ namespace Glitter {
|
||||
if (ext_anim->flags & EFFECT_EXT_ANIM_NO_TRANS_Z)
|
||||
enum_or(flags, EFFECT_INST_NO_EXT_ANIM_TRANS_Z);
|
||||
if (ext_anim->flags & EFFECT_EXT_ANIM_GET_THEN_UPDATE)
|
||||
enum_or(flags, EFFECT_INST_GET_EXT_ANIM_THEN_UPDATE);
|
||||
enum_or(flags, EFFECT_INST_EXT_ANIM_GET_THEN_UPDATE);
|
||||
|
||||
if (ext_anim->flags & EFFECT_EXT_ANIM_CHARA_ANIM) {
|
||||
if (ext_anim->flags & EFFECT_EXT_ANIM_CHARA) {
|
||||
inst_ext_anim->chara_index = ext_anim->chara_index;
|
||||
inst_ext_anim->bone_index = ext_anim->bone_index;
|
||||
enum_or(flags, EFFECT_INST_CHARA_ANIM);
|
||||
enum_or(flags, EFFECT_INST_EXT_ANIM_CHARA);
|
||||
}
|
||||
else {
|
||||
inst_ext_anim->object = ext_anim->object;
|
||||
@@ -107,10 +109,10 @@ namespace Glitter {
|
||||
else
|
||||
inst_ext_anim->mesh_name = 0;
|
||||
}
|
||||
ext_anim = inst_ext_anim;
|
||||
enum_or(flags, EFFECT_INST_HAS_EXT_ANIM);
|
||||
enum_or(flags, EFFECT_INST_HAS_EXT_ANIM_NON_INIT);
|
||||
enum_or(flags, EFFECT_INST_GET_EXT_ANIM_MAT);
|
||||
|
||||
enum_or(flags, EFFECT_INST_EXT_ANIM);
|
||||
enum_or(flags, EFFECT_INST_EXT_ANIM_NON_INIT);
|
||||
enum_or(flags, EFFECT_INST_EXT_ANIM_AUTH);
|
||||
}
|
||||
|
||||
emitters.reserve(eff->emitters.size());
|
||||
@@ -138,30 +140,30 @@ namespace Glitter {
|
||||
render_scene.CalcDisp();
|
||||
}
|
||||
|
||||
void EffectInstX::CheckDataDependency() {
|
||||
bool depends_on_ext_data = false;
|
||||
if (ext_anim)
|
||||
if (!(flags & EFFECT_INST_SET_EXT_ANIM_MAT) && !(flags & EFFECT_INST_HAS_EXT_ANIM)
|
||||
|| (flags & EFFECT_INST_HAS_EXT_ANIM_SCALE)
|
||||
|| (flags & EFFECT_INST_SET_EXT_ANIM_ONCE) && (flags & EFFECT_INST_HAS_EXT_ANIM_TRANS))
|
||||
depends_on_ext_data = true;
|
||||
void EffectInstX::CheckUpdate() {
|
||||
CheckUseCamera();
|
||||
render_scene.CheckUseCamera();
|
||||
}
|
||||
|
||||
if (!depends_on_ext_data)
|
||||
void EffectInstX::CheckUseCamera() {
|
||||
bool use_camera = false;
|
||||
if (ext_anim)
|
||||
if (!(flags & EFFECT_INST_EXT_ANIM) && !(flags & EFFECT_INST_EXT_ANIM_MAT)
|
||||
|| (flags & EFFECT_INST_EXT_ANIM_END)
|
||||
|| (flags & EFFECT_INST_EXT_ANIM_SET_ONCE) && (flags & EFFECT_INST_EXT_ANIM_TRANS))
|
||||
use_camera = true;
|
||||
|
||||
if (!use_camera)
|
||||
for (EmitterInstX*& i : emitters)
|
||||
if (i->CheckUseCamera()) {
|
||||
depends_on_ext_data = true;
|
||||
use_camera = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (depends_on_ext_data)
|
||||
enum_or(flags, EFFECT_INST_DEPENDS_ON_EXT_DATA);
|
||||
if (use_camera)
|
||||
enum_or(flags, EFFECT_INST_CAMERA);
|
||||
else
|
||||
enum_and(flags, ~EFFECT_INST_DEPENDS_ON_EXT_DATA);
|
||||
}
|
||||
|
||||
void EffectInstX::CheckUpdate() {
|
||||
CheckDataDependency();
|
||||
render_scene.CheckUseCamera();
|
||||
enum_and(flags, ~EFFECT_INST_CAMERA);
|
||||
}
|
||||
|
||||
void EffectInstX::Copy(EffectInstX* dst, float_t emission) {
|
||||
@@ -187,7 +189,7 @@ namespace Glitter {
|
||||
|
||||
void EffectInstX::Ctrl(float_t delta_frame) {
|
||||
GetExtAnim();
|
||||
if (flags & EFFECT_INST_GET_EXT_ANIM_THEN_UPDATE)
|
||||
if (flags & EFFECT_INST_EXT_ANIM_GET_THEN_UPDATE)
|
||||
return;
|
||||
|
||||
GetValue();
|
||||
@@ -231,10 +233,10 @@ namespace Glitter {
|
||||
|
||||
frame0 += delta_frame;
|
||||
|
||||
if ((flags & EFFECT_INST_HAS_EXT_ANIM) && !(flags & EFFECT_INST_HAS_EXT_ANIM_SCALE)) {
|
||||
if (data.ext_anim_scale_start_time >= 0.0f && (flags & EFFECT_INST_HAS_EXT_ANIM_TRANS)
|
||||
&& frame0 >= data.ext_anim_scale_start_time)
|
||||
enum_or(flags, EFFECT_INST_HAS_EXT_ANIM_SCALE);
|
||||
if ((flags & EFFECT_INST_EXT_ANIM) && !(flags & EFFECT_INST_EXT_ANIM_END)) {
|
||||
if ((flags & EFFECT_INST_EXT_ANIM_TRANS)
|
||||
&& data.ext_anim_end_time >= 0.0f && frame0 >= data.ext_anim_end_time)
|
||||
enum_or(flags, EFFECT_INST_EXT_ANIM_END);
|
||||
}
|
||||
|
||||
float_t life_time = (float_t)data.life_time;
|
||||
@@ -280,7 +282,7 @@ namespace Glitter {
|
||||
}
|
||||
|
||||
void EffectInstX::Emit(float_t delta_frame, float_t emission) {
|
||||
if (flags & EFFECT_INST_GET_EXT_ANIM_THEN_UPDATE)
|
||||
if (flags & EFFECT_INST_EXT_ANIM_GET_THEN_UPDATE)
|
||||
return;
|
||||
else if (flags & EFFECT_INST_NOT_ENDED) {
|
||||
if (!(data.flags & EFFECT_LOOP)) {
|
||||
@@ -350,7 +352,7 @@ namespace Glitter {
|
||||
if (ext_anim) {
|
||||
EffectX::ExtAnim* ext_anim = data.ext_anim;
|
||||
if (ext_anim->flags & EFFECT_EXT_ANIM_SET_ONCE)
|
||||
enum_or(flags, EFFECT_INST_SET_EXT_ANIM_ONCE);
|
||||
enum_or(flags, EFFECT_INST_EXT_ANIM_SET_ONCE);
|
||||
if (ext_anim->flags & EFFECT_EXT_ANIM_TRANS_ONLY)
|
||||
enum_or(flags, EFFECT_INST_EXT_ANIM_TRANS_ONLY);
|
||||
if (ext_anim->flags & EFFECT_EXT_ANIM_NO_TRANS_X)
|
||||
@@ -360,13 +362,13 @@ namespace Glitter {
|
||||
if (ext_anim->flags & EFFECT_EXT_ANIM_NO_TRANS_Z)
|
||||
enum_or(flags, EFFECT_INST_NO_EXT_ANIM_TRANS_Z);
|
||||
if (ext_anim->flags & EFFECT_EXT_ANIM_GET_THEN_UPDATE)
|
||||
enum_or(flags, EFFECT_INST_GET_EXT_ANIM_THEN_UPDATE);
|
||||
if (ext_anim->flags & EFFECT_EXT_ANIM_CHARA_ANIM)
|
||||
enum_or(flags, EFFECT_INST_CHARA_ANIM);
|
||||
enum_or(flags, EFFECT_INST_EXT_ANIM_GET_THEN_UPDATE);
|
||||
if (ext_anim->flags & EFFECT_EXT_ANIM_CHARA)
|
||||
enum_or(flags, EFFECT_INST_EXT_ANIM_CHARA);
|
||||
}
|
||||
enum_or(flags, EFFECT_INST_HAS_EXT_ANIM);
|
||||
enum_or(flags, EFFECT_INST_HAS_EXT_ANIM_NON_INIT);
|
||||
enum_or(flags, EFFECT_INST_GET_EXT_ANIM_MAT);
|
||||
enum_or(flags, EFFECT_INST_EXT_ANIM);
|
||||
enum_or(flags, EFFECT_INST_EXT_ANIM_NON_INIT);
|
||||
enum_or(flags, EFFECT_INST_EXT_ANIM_AUTH);
|
||||
}
|
||||
|
||||
for (EmitterInstX*& i : emitters)
|
||||
@@ -496,17 +498,17 @@ namespace Glitter {
|
||||
if (!ext_anim)
|
||||
return;
|
||||
|
||||
if (!(flags & EFFECT_INST_SET_EXT_ANIM_MAT) && !(flags & EFFECT_INST_HAS_EXT_ANIM)
|
||||
|| (flags & EFFECT_INST_HAS_EXT_ANIM_SCALE)
|
||||
|| (flags & EFFECT_INST_SET_EXT_ANIM_ONCE) && (flags & EFFECT_INST_HAS_EXT_ANIM_TRANS))
|
||||
if (!(flags & EFFECT_INST_EXT_ANIM) && !(flags & EFFECT_INST_EXT_ANIM_MAT)
|
||||
|| (flags & EFFECT_INST_EXT_ANIM_END)
|
||||
|| (flags & EFFECT_INST_EXT_ANIM_SET_ONCE) && (flags & EFFECT_INST_EXT_ANIM_TRANS))
|
||||
return;
|
||||
|
||||
bool set_flags = false;
|
||||
|
||||
if (data.ext_anim->flags & EFFECT_INST_CHARA_ANIM)
|
||||
enum_or(flags, EFFECT_INST_HAS_EXT_ANIM_NON_INIT);
|
||||
if (data.ext_anim->flags & EFFECT_INST_EXT_ANIM_CHARA)
|
||||
enum_or(flags, EFFECT_INST_EXT_ANIM_NON_INIT);
|
||||
|
||||
if (flags & EFFECT_INST_CHARA_ANIM) {
|
||||
if (flags & EFFECT_INST_EXT_ANIM_CHARA) {
|
||||
size_t rob_chara_smth = get_rob_chara_smth();
|
||||
rob_chara* rob_chr = rob_chara_array_get(rob_chara_smth, ext_anim->chara_index);
|
||||
if (!rob_chr)
|
||||
@@ -519,7 +521,7 @@ namespace Glitter {
|
||||
mat4_get_scale(&mat, &scale);
|
||||
ext_anim_scale = scale - 1.0f;
|
||||
ext_anim_scale.z = 0.0f;
|
||||
enum_or(flags, EFFECT_INST_HAS_EXT_ANIM_SCALE);
|
||||
enum_or(flags, EFFECT_INST_EXT_SCALE);
|
||||
|
||||
if (rob_chara_array_check_visibility(rob_chara_smth, ext_anim->chara_index)
|
||||
|| !(data.ext_anim->flags & EFFECT_EXT_ANIM_NO_DRAW_IF_NO_DATA))
|
||||
@@ -536,7 +538,7 @@ namespace Glitter {
|
||||
else
|
||||
SetExtAnim(&mat, 0, 0, set_flags);
|
||||
}
|
||||
else if (flags & EFFECT_INST_GET_EXT_ANIM_MAT) {
|
||||
else if (flags & EFFECT_INST_EXT_ANIM_AUTH) {
|
||||
const mat4* obj_mat = 0;
|
||||
if (ext_anim->a3da_id != -1)
|
||||
obj_mat = ((auth_3d_id*)&ext_anim->a3da_id)->get_auth_3d_object_mat(
|
||||
@@ -567,7 +569,7 @@ namespace Glitter {
|
||||
mat4_get_scale(&mat, &scale);
|
||||
ext_anim_scale = scale - 1.0f;
|
||||
ext_anim_scale.z = 0.0f;
|
||||
enum_or(flags, EFFECT_INST_HAS_EXT_ANIM_SCALE);
|
||||
enum_or(flags, EFFECT_INST_EXT_SCALE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -606,7 +608,7 @@ namespace Glitter {
|
||||
}
|
||||
|
||||
bool EffectInstX::GetExtAnimMat(mat4* mat) {
|
||||
if (!(flags & EFFECT_INST_HAS_EXT_ANIM_TRANS) || !ext_anim)
|
||||
if (!(flags & EFFECT_INST_EXT_ANIM_TRANS) || !ext_anim)
|
||||
return false;
|
||||
|
||||
mat4_mul_translate(&ext_anim->mat, &ext_anim->translation, mat);
|
||||
@@ -617,7 +619,7 @@ namespace Glitter {
|
||||
if (!(flags & EFFECT_INST_EXT_COLOR))
|
||||
return;
|
||||
|
||||
if (flags & EFFECT_INST_SET_EXT_COLOR) {
|
||||
if (flags & EFFECT_INST_EXT_COLOR_SET) {
|
||||
if (ext_color.x >= 0.0f)
|
||||
r = ext_color.x;
|
||||
if (ext_color.y >= 0.0f)
|
||||
@@ -656,7 +658,7 @@ namespace Glitter {
|
||||
}
|
||||
|
||||
bool EffectInstX::GetUseCamera() {
|
||||
return !!(flags & EFFECT_INST_DEPENDS_ON_EXT_DATA);
|
||||
return !!(flags & EFFECT_INST_CAMERA);
|
||||
}
|
||||
|
||||
void EffectInstX::GetValue() {
|
||||
@@ -716,7 +718,7 @@ namespace Glitter {
|
||||
}
|
||||
|
||||
bool EffectInstX::GetExtAnimScale(vec3* ext_anim_scale, float_t* ext_scale) {
|
||||
if (!(flags & EFFECT_INST_HAS_EXT_ANIM_SCALE))
|
||||
if (!(flags & EFFECT_INST_EXT_SCALE))
|
||||
return false;
|
||||
|
||||
if (ext_anim_scale)
|
||||
@@ -767,12 +769,12 @@ namespace Glitter {
|
||||
ext_anim->translation.z = trans->z;
|
||||
|
||||
if (set_flags) {
|
||||
if (flags & EFFECT_INST_GET_EXT_ANIM_THEN_UPDATE)
|
||||
enum_and(flags, ~EFFECT_INST_GET_EXT_ANIM_THEN_UPDATE);
|
||||
if (flags & EFFECT_INST_HAS_EXT_ANIM_NON_INIT)
|
||||
enum_and(flags, ~EFFECT_INST_HAS_EXT_ANIM_NON_INIT);
|
||||
if (flags & EFFECT_INST_EXT_ANIM_GET_THEN_UPDATE)
|
||||
enum_and(flags, ~EFFECT_INST_EXT_ANIM_GET_THEN_UPDATE);
|
||||
if (flags & EFFECT_INST_EXT_ANIM_NON_INIT)
|
||||
enum_and(flags, ~EFFECT_INST_EXT_ANIM_NON_INIT);
|
||||
}
|
||||
enum_or(flags, EFFECT_INST_HAS_EXT_ANIM_TRANS);
|
||||
enum_or(flags, EFFECT_INST_EXT_ANIM_TRANS);
|
||||
this->flags = flags;
|
||||
}
|
||||
|
||||
@@ -784,13 +786,13 @@ namespace Glitter {
|
||||
ext_anim->mat = *mat;
|
||||
ext_anim->translation = 0.0f;
|
||||
|
||||
if ((flags & EFFECT_INST_HAS_EXT_ANIM_NON_INIT))
|
||||
enum_and(flags, ~EFFECT_INST_HAS_EXT_ANIM_NON_INIT);
|
||||
if (!(flags & EFFECT_INST_HAS_EXT_ANIM_TRANS))
|
||||
enum_or(flags, EFFECT_INST_HAS_EXT_ANIM_TRANS);
|
||||
if ((flags & EFFECT_INST_EXT_ANIM_NON_INIT))
|
||||
enum_and(flags, ~EFFECT_INST_EXT_ANIM_NON_INIT);
|
||||
if (!(flags & EFFECT_INST_EXT_ANIM_TRANS))
|
||||
enum_or(flags, EFFECT_INST_EXT_ANIM_TRANS);
|
||||
|
||||
enum_and(flags, ~(EFFECT_INST_GET_EXT_ANIM_MAT | EFFECT_INST_CHARA_ANIM));
|
||||
enum_or(flags, EFFECT_INST_SET_EXT_ANIM_MAT);
|
||||
enum_and(flags, ~(EFFECT_INST_EXT_ANIM_AUTH | EFFECT_INST_EXT_ANIM_CHARA));
|
||||
enum_or(flags, EFFECT_INST_EXT_ANIM_MAT);
|
||||
}
|
||||
|
||||
void EffectInstX::SetExtColor(float_t r, float_t g, float_t b, float_t a, bool set) {
|
||||
@@ -799,14 +801,14 @@ namespace Glitter {
|
||||
ext_color.z = b;
|
||||
ext_color.w = a;
|
||||
if (set)
|
||||
enum_or(flags, EFFECT_INST_SET_EXT_COLOR);
|
||||
enum_or(flags, EFFECT_INST_EXT_COLOR_SET);
|
||||
else
|
||||
enum_and(flags, ~EFFECT_INST_SET_EXT_COLOR);
|
||||
enum_and(flags, ~EFFECT_INST_EXT_COLOR_SET);
|
||||
enum_or(flags, EFFECT_INST_EXT_COLOR);
|
||||
}
|
||||
|
||||
void EffectInstX::SetExtScale(float_t scale) {
|
||||
ext_scale = scale;
|
||||
enum_or(flags, EFFECT_INST_HAS_EXT_SCALE);
|
||||
enum_or(flags, EFFECT_INST_EXT_SCALE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -660,7 +660,7 @@ namespace Glitter {
|
||||
|
||||
eff->data.emission = *(float_t*)d;
|
||||
eff->data.seed = *(int32_t*)(d + 4);
|
||||
eff->data.ext_anim_scale_start_time = *(float_t*)(d + 8);
|
||||
eff->data.ext_anim_end_time = *(float_t*)(d + 8);
|
||||
d += 12;
|
||||
|
||||
if (eff->version != 8)
|
||||
@@ -686,7 +686,7 @@ namespace Glitter {
|
||||
int32_t node_index = * (int32_t*)(d + 8);
|
||||
|
||||
ext_anim->bone_index = GetEffectExtAnimBoneIndex((EffectExtAnimCharaNode)node_index);
|
||||
enum_or(ext_anim->flags, EFFECT_EXT_ANIM_CHARA_ANIM);
|
||||
enum_or(ext_anim->flags, EFFECT_EXT_ANIM_CHARA);
|
||||
}
|
||||
}
|
||||
else if (type == 3) {
|
||||
|
||||
@@ -96,7 +96,7 @@ namespace Glitter {
|
||||
EFFECT_EXT_ANIM_NO_TRANS_Z = 0x00010,
|
||||
EFFECT_EXT_ANIM_NO_DRAW_IF_NO_DATA = 0x00020,
|
||||
EFFECT_EXT_ANIM_GET_THEN_UPDATE = 0x00040,
|
||||
EFFECT_EXT_ANIM_CHARA_ANIM = 0x10000,
|
||||
EFFECT_EXT_ANIM_CHARA = 0x10000,
|
||||
};
|
||||
|
||||
enum EffectExtAnimCharaNode {
|
||||
@@ -145,26 +145,26 @@ namespace Glitter {
|
||||
EFFECT_INST_NONE = 0x0000000,
|
||||
EFFECT_INST_FREE = 0x0000001,
|
||||
EFFECT_INST_RESET_INIT = 0x0000002,
|
||||
EFFECT_INST_HAS_EXT_ANIM = 0x0000004,
|
||||
EFFECT_INST_HAS_EXT_ANIM_TRANS = 0x0000008,
|
||||
EFFECT_INST_HAS_EXT_ANIM_NON_INIT = 0x0000010,
|
||||
EFFECT_INST_CHARA_ANIM = 0x0000020,
|
||||
EFFECT_INST_GET_EXT_ANIM_MAT = 0x0000040,
|
||||
EFFECT_INST_SET_EXT_ANIM_ONCE = 0x0000080,
|
||||
EFFECT_INST_SET_EXT_COLOR = 0x0000100,
|
||||
EFFECT_INST_EXT_ANIM = 0x0000004,
|
||||
EFFECT_INST_EXT_ANIM_TRANS = 0x0000008,
|
||||
EFFECT_INST_EXT_ANIM_NON_INIT = 0x0000010,
|
||||
EFFECT_INST_EXT_ANIM_CHARA = 0x0000020,
|
||||
EFFECT_INST_EXT_ANIM_AUTH = 0x0000040,
|
||||
EFFECT_INST_EXT_ANIM_SET_ONCE = 0x0000080,
|
||||
EFFECT_INST_EXT_COLOR_SET = 0x0000100,
|
||||
EFFECT_INST_EXT_COLOR = 0x0000200,
|
||||
EFFECT_INST_HAS_EXT_SCALE = 0x0000400,
|
||||
EFFECT_INST_HAS_EXT_ANIM_SCALE = 0x0000800,
|
||||
EFFECT_INST_EXT_SCALE = 0x0000400,
|
||||
EFFECT_INST_EXT_ANIM_END = 0x0000800,
|
||||
EFFECT_INST_NO_EXT_ANIM_TRANS_X = 0x0001000,
|
||||
EFFECT_INST_NO_EXT_ANIM_TRANS_Y = 0x0002000,
|
||||
EFFECT_INST_NO_EXT_ANIM_TRANS_Z = 0x0004000,
|
||||
EFFECT_INST_EXT_ANIM_TRANS_ONLY = 0x0008000,
|
||||
EFFECT_INST_FLAG_17 = 0x0010000,
|
||||
EFFECT_INST_GET_EXT_ANIM_THEN_UPDATE = 0x0020000,
|
||||
EFFECT_INST_SET_EXT_ANIM_MAT = 0x0040000,
|
||||
EFFECT_INST_EXT_ANIM_GET_THEN_UPDATE = 0x0020000,
|
||||
EFFECT_INST_EXT_ANIM_MAT = 0x0040000,
|
||||
EFFECT_INST_DISP = 0x0080000,
|
||||
EFFECT_INST_DEPENDS_ON_EXT_DATA = 0x0100000,
|
||||
EFFECT_INST_HAS_MESH = 0x0200000,
|
||||
EFFECT_INST_CAMERA = 0x0100000,
|
||||
EFFECT_INST_MESH = 0x0200000,
|
||||
EFFECT_INST_FLAG_23 = 0x0400000,
|
||||
EFFECT_INST_JUST_INIT = 0x0800000,
|
||||
EFFECT_INST_NOT_ENDED = 0x1000000,
|
||||
@@ -522,7 +522,7 @@ namespace Glitter {
|
||||
EffectFlag flags;
|
||||
float_t emission;
|
||||
int32_t seed;
|
||||
float_t ext_anim_scale_start_time;
|
||||
float_t ext_anim_end_time;
|
||||
|
||||
Data();
|
||||
};
|
||||
@@ -714,8 +714,8 @@ namespace Glitter {
|
||||
virtual ~EffectInstX();
|
||||
|
||||
void CalcDisp();
|
||||
void CheckDataDependency();
|
||||
void CheckUpdate();
|
||||
void CheckUseCamera();
|
||||
void Copy(EffectInstX* dst, float_t emission);
|
||||
void Ctrl(float_t delta_frame);
|
||||
void CtrlFlags(float_t delta_frame);
|
||||
|
||||
@@ -206,13 +206,12 @@ namespace Glitter {
|
||||
}
|
||||
|
||||
bool RenderGroupX::CannotDisp() {
|
||||
EffectInstX* effect;
|
||||
if (!particle)
|
||||
return true;
|
||||
else if (particle->data.effect)
|
||||
return (particle->data.effect->flags & EFFECT_INST_HAS_EXT_ANIM_NON_INIT) != 0;
|
||||
else if ((particle = particle->data.parent) && (effect = particle->data.effect))
|
||||
return (effect->flags & EFFECT_INST_HAS_EXT_ANIM_NON_INIT) != 0;
|
||||
return (particle->data.effect->flags & EFFECT_INST_EXT_ANIM_NON_INIT) != 0;
|
||||
else if ((particle = particle->data.parent) && (particle->data.effect))
|
||||
return (particle->data.effect->flags & EFFECT_INST_EXT_ANIM_NON_INIT) != 0;
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user