Rename draw_task_flags to mdl::ObjFlags

This commit is contained in:
korenkonder
2023-02-12 13:58:11 +03:00
parent df3167787f
commit cf806af8b7
11 changed files with 166 additions and 197 deletions
+23 -23
View File
@@ -706,7 +706,7 @@ void auth_3d::reset() {
once = false;
mat = mat4_identity;
alpha = 1.0f;
draw_task_flags = DRAW_TASK_ALPHA_ORDER_1;
obj_flags = mdl::OBJ_ALPHA_ORDER_1;
chara_id = -1;
chara_item = false;
shadow = false;
@@ -2403,11 +2403,11 @@ void auth_3d_id::set_chara_item(bool value) {
}
}
void auth_3d_id::set_draw_task_flags_alpha(draw_task_flags draw_task_flags, float_t alpha) {
void auth_3d_id::set_obj_flags_alpha(mdl::ObjFlags obj_flags, float_t alpha) {
if (id >= 0 && ((id & 0x7FFF) < AUTH_3D_DATA_COUNT)) {
auth_3d* auth = &auth_3d_data->data[id & 0x7FFF];
if (auth->id == id) {
auth->draw_task_flags = draw_task_flags;
auth->obj_flags = obj_flags;
auth->alpha = alpha;
}
}
@@ -3836,20 +3836,20 @@ static void auth_3d_m_object_hrc_disp(auth_3d_m_object_hrc* moh, auth_3d* auth,
if (!i.model_transform.visible)
return;
draw_task_flags flags = DRAW_TASK_SSS;
mdl::ObjFlags flags = mdl::OBJ_SSS;
shadow_type_enum shadow_type = SHADOW_CHARA;
if (auth->shadow || i.shadow) {
enum_or(flags, DRAW_TASK_4 | DRAW_TASK_SHADOW);
enum_or(flags, mdl::OBJ_4 | mdl::OBJ_SHADOW);
shadow_type = SHADOW_STAGE;
}
if (auth->alpha < 1.0f)
enum_or(flags, auth->draw_task_flags);
enum_or(flags, auth->obj_flags);
disp_manager.set_draw_task_flags((draw_task_flags)flags);
disp_manager.set_obj_flags(flags);
disp_manager.set_shadow_type(shadow_type);
shadow* shad = rctx->render_manager.shadow_ptr;
if (shad && flags & DRAW_TASK_SHADOW) {
if (shad && flags & mdl::OBJ_SHADOW) {
disp_manager.set_shadow_type(SHADOW_STAGE);
mat4* m = &moh->model_transform.mat;
@@ -3873,7 +3873,7 @@ static void auth_3d_m_object_hrc_disp(auth_3d_m_object_hrc* moh, auth_3d* auth,
i.object_info, 0, 0, auth->alpha, i.mats.data(), 0, 0, &i.model_transform.mat);
}
disp_manager.set_draw_task_flags();
disp_manager.set_obj_flags();
disp_manager.set_shadow_type(SHADOW_CHARA);
}
@@ -5436,15 +5436,15 @@ static void auth_3d_object_disp(auth_3d_object* o, auth_3d* auth, render_context
disp_manager.set_shadow_type(auth->chara_id ? SHADOW_STAGE : SHADOW_CHARA);
}
draw_task_flags flags = (draw_task_flags)0;
mdl::ObjFlags flags = (mdl::ObjFlags)0;
if (auth->shadow)
enum_or(flags, DRAW_TASK_4 | DRAW_TASK_SHADOW);
enum_or(flags, mdl::OBJ_4 | mdl::OBJ_SHADOW);
if (o->reflect)
enum_or(flags, DRAW_TASK_NO_TRANSLUCENCY | DRAW_TASK_REFLECT);
enum_or(flags, mdl::OBJ_NO_TRANSLUCENCY | mdl::OBJ_REFLECT);
if (o->refract)
enum_or(flags, DRAW_TASK_NO_TRANSLUCENCY | DRAW_TASK_REFRACT);
enum_or(flags, mdl::OBJ_NO_TRANSLUCENCY | mdl::OBJ_REFRACT);
disp_manager.set_draw_task_flags((draw_task_flags)flags);
disp_manager.set_obj_flags(flags);
char buf[0x80];
int32_t tex_pat_count = 0;
@@ -5536,7 +5536,7 @@ static void auth_3d_object_disp(auth_3d_object* o, auth_3d* auth, render_context
disp_manager.set_texture_transform();
disp_manager.set_texture_pattern();
disp_manager.set_draw_task_flags();
disp_manager.set_obj_flags();
for (auth_3d_object*& i : o->children_object)
auth_3d_object_disp(i, auth, rctx);
@@ -5597,17 +5597,17 @@ static void auth_3d_object_hrc_disp(auth_3d_object_hrc* oh, auth_3d* auth, rende
object_database* obj_db = auth->obj_db;
texture_database* tex_db = auth->tex_db;
draw_task_flags flags = DRAW_TASK_SSS;
mdl::ObjFlags flags = mdl::OBJ_SSS;
if (auth->shadow | oh->shadow)
enum_or(flags, DRAW_TASK_4 | DRAW_TASK_SHADOW);
enum_or(flags, mdl::OBJ_4 | mdl::OBJ_SHADOW);
if (oh->reflect)
enum_or(flags, DRAW_TASK_NO_TRANSLUCENCY | DRAW_TASK_REFLECT);
enum_or(flags, mdl::OBJ_NO_TRANSLUCENCY | mdl::OBJ_REFLECT);
if (oh->refract)
enum_or(flags, DRAW_TASK_NO_TRANSLUCENCY | DRAW_TASK_REFRACT);
enum_or(flags, mdl::OBJ_NO_TRANSLUCENCY | mdl::OBJ_REFRACT);
if (auth->alpha < 1.0f)
enum_or(flags, auth->draw_task_flags);
enum_or(flags, auth->obj_flags);
disp_manager.set_draw_task_flags(flags);
disp_manager.set_obj_flags(flags);
disp_manager.set_shadow_type(SHADOW_CHARA);
mat4 mat = mat4_identity;
@@ -5622,7 +5622,7 @@ static void auth_3d_object_hrc_disp(auth_3d_object_hrc* oh, auth_3d* auth, rende
disp_manager.set_shadow_type(SHADOW_STAGE);
}
}
else if (flags & DRAW_TASK_SHADOW) {
else if (flags & mdl::OBJ_SHADOW) {
disp_manager.set_shadow_type(SHADOW_STAGE);
mat4* m = &oh->node.front().model_transform.mat;
@@ -5644,7 +5644,7 @@ static void auth_3d_object_hrc_disp(auth_3d_object_hrc* oh, auth_3d* auth, rende
disp_manager.entry_obj_by_object_info_object_skin(
oh->object_info, 0, 0, auth->alpha, oh->mats.data(), 0, 0, &mat);
disp_manager.set_draw_task_flags();
disp_manager.set_obj_flags();
disp_manager.set_shadow_type(SHADOW_CHARA);
for (auth_3d_object*& i : oh->children_object)
+2 -2
View File
@@ -832,7 +832,7 @@ struct auth_3d_id {
void set_camera_root_update(bool value);
void set_chara_id(int32_t value);
void set_chara_item(bool value);
void set_draw_task_flags_alpha(draw_task_flags draw_task_flags, float_t alpha);
void set_obj_flags_alpha(mdl::ObjFlags obj_flags, float_t alpha);
void set_enable(bool value);
void set_frame_rate(FrameRateControl* value);
void set_last_frame(float_t value);
@@ -860,7 +860,7 @@ struct auth_3d {
bool once;
mat4 mat;
float_t alpha;
draw_task_flags draw_task_flags;
mdl::ObjFlags obj_flags;
int32_t chara_id;
bool chara_item;
bool shadow;
+5 -5
View File
@@ -589,21 +589,21 @@ namespace pv_param_task {
else
value = lerp_def(i.prev_alpha, i.alpha, i.frame / i.duration);
draw_task_flags draw_task_flags;
mdl::ObjFlags obj_flags;
switch (i.type) {
case 0:
default:
draw_task_flags = DRAW_TASK_ALPHA_ORDER_1;
obj_flags = mdl::OBJ_ALPHA_ORDER_1;
break;
case 1:
draw_task_flags = DRAW_TASK_ALPHA_ORDER_2;
obj_flags = mdl::OBJ_ALPHA_ORDER_2;
break;
case 2:
draw_task_flags = DRAW_TASK_ALPHA_ORDER_3;
obj_flags = mdl::OBJ_ALPHA_ORDER_3;
break;
}
rob_chara_array_set_alpha_draw_task_flags(index, value, draw_task_flags);
rob_chara_array_set_alpha_obj_flags(index, value, obj_flags);
i.frame += get_delta_frame();
if (i.frame > i.duration) {
+45 -70
View File
@@ -195,7 +195,7 @@ namespace mdl {
args->emission = *emission;
args->chara_color = disp_manager->chara_color;
args->self_shadow = disp_manager->draw_task_flags & (DRAW_TASK_8 | DRAW_TASK_4) ? 1 : 0;
args->self_shadow = disp_manager->obj_flags & (mdl::OBJ_8 | mdl::OBJ_4) ? 1 : 0;
args->shadow = disp_manager->shadow_type;
args->texture_color_coefficients = disp_manager->texture_color_coefficients;
args->texture_color_coefficients.w = disp_manager->wet_param;
@@ -325,7 +325,7 @@ texture_data_struct::texture_data_struct() : field_0() {
}
namespace mdl {
DispManager::DispManager() : draw_task_flags(), shadow_type(), field_8(), field_C(),
DispManager::DispManager() : obj_flags(), shadow_type(), field_8(), field_C(),
culling(), show_alpha_center(), show_mat_center(), texture_pattern_count(),
texture_pattern_array(), wet_param(), texture_transform_count(),
texture_transform_array(), material_list_count(), material_list_array() {
@@ -1434,47 +1434,47 @@ namespace mdl {
mesh, material, textures, num_bone_index, mats, array_buffer, element_array_buffer,
&_blend_color, &_emission, morph_array_buffer, instances_count, instances_mat, func);
if (draw_task_flags & DRAW_TASK_SHADOW_OBJECT) {
if (obj_flags & mdl::OBJ_SHADOW_OBJECT) {
entry_list((ObjType)(OBJ_TYPE_SHADOW_OBJECT_CHARA
+ shadow_type), data);
if (draw_task_flags & DRAW_TASK_USER)
if (obj_flags & mdl::OBJ_USER)
entry_list(OBJ_TYPE_USER, data);
continue;
}
obj_material_attrib_member attrib = material->material.attrib.m;
if (draw_task_flags & (DRAW_TASK_ALPHA_ORDER_1 | DRAW_TASK_ALPHA_ORDER_2 | DRAW_TASK_ALPHA_ORDER_3)
if (obj_flags & (mdl::OBJ_ALPHA_ORDER_1 | mdl::OBJ_ALPHA_ORDER_2 | mdl::OBJ_ALPHA_ORDER_3)
&& data->args.sub_mesh.blend_color.w < 1.0f) {
if (!(draw_task_flags & DRAW_TASK_NO_TRANSLUCENCY)) {
if (!(obj_flags & mdl::OBJ_NO_TRANSLUCENCY)) {
if (attrib.flag_28 || (attrib.punch_through
|| !(attrib.alpha_texture | attrib.alpha_material))
&& !sub_mesh->attrib.m.transparent) {
if (!attrib.punch_through) {
if (draw_task_flags & DRAW_TASK_ALPHA_ORDER_1)
if (obj_flags & mdl::OBJ_ALPHA_ORDER_1)
entry_list(OBJ_TYPE_OPAQUE_ALPHA_ORDER_1, data);
else if (draw_task_flags & DRAW_TASK_ALPHA_ORDER_2)
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_2)
entry_list(local ? OBJ_TYPE_OPAQUE_ALPHA_ORDER_2_LOCAL
: OBJ_TYPE_OPAQUE_ALPHA_ORDER_2, data);
else
entry_list(OBJ_TYPE_OPAQUE_ALPHA_ORDER_3, data);
}
else {
if (draw_task_flags & DRAW_TASK_ALPHA_ORDER_1)
if (obj_flags & mdl::OBJ_ALPHA_ORDER_1)
entry_list(OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_1, data);
else if (draw_task_flags & DRAW_TASK_ALPHA_ORDER_2)
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_2)
entry_list(local ? OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_2_LOCAL
: OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_2, data);
else
entry_list(OBJ_TYPE_TRANSPARENT_ALPHA_ORDER_3, data);
}
if (draw_task_flags & DRAW_TASK_SSS)
if (obj_flags & mdl::OBJ_SSS)
entry_list(OBJ_TYPE_SSS, data);
}
if (draw_task_flags & DRAW_TASK_ALPHA_ORDER_1)
if (obj_flags & mdl::OBJ_ALPHA_ORDER_1)
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_1, data);
else if (draw_task_flags & DRAW_TASK_ALPHA_ORDER_2)
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_2)
entry_list(local ? OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2_LOCAL
: OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2, data);
else
@@ -1485,54 +1485,54 @@ namespace mdl {
if (attrib.flag_28 || data->args.sub_mesh.blend_color.w >= 1.0f
&& (attrib.punch_through || !(attrib.alpha_texture | attrib.alpha_material))
&& !sub_mesh->attrib.m.transparent) {
if (draw_task_flags & DRAW_TASK_SHADOW)
if (obj_flags & mdl::OBJ_SHADOW)
entry_list((ObjType)(OBJ_TYPE_SHADOW_CHARA + shadow_type), data);
if (draw_task_flags & DRAW_TASK_SSS)
if (obj_flags & mdl::OBJ_SSS)
entry_list(OBJ_TYPE_SSS, data);
if (attrib.punch_through) {
if (!(draw_task_flags & DRAW_TASK_NO_TRANSLUCENCY))
if (!(obj_flags & mdl::OBJ_NO_TRANSLUCENCY))
entry_list(local ? OBJ_TYPE_TRANSPARENT_LOCAL
: OBJ_TYPE_TRANSPARENT, data);
if (draw_task_flags & DRAW_TASK_CHARA_REFLECT)
if (obj_flags & mdl::OBJ_CHARA_REFLECT)
entry_list(OBJ_TYPE_REFLECT_CHARA_OPAQUE, data);
if (draw_task_flags & DRAW_TASK_REFLECT)
if (obj_flags & mdl::OBJ_REFLECT)
entry_list(OBJ_TYPE_REFLECT_OPAQUE, data);
if (draw_task_flags & DRAW_TASK_REFRACT)
if (obj_flags & mdl::OBJ_REFRACT)
entry_list(OBJ_TYPE_REFRACT_TRANSPARENT, data);
}
else {
if (!(draw_task_flags & DRAW_TASK_NO_TRANSLUCENCY))
if (!(obj_flags & mdl::OBJ_NO_TRANSLUCENCY))
entry_list(local ? OBJ_TYPE_OPAQUE_LOCAL
: OBJ_TYPE_OPAQUE, data);
if (draw_task_flags & DRAW_TASK_20)
if (obj_flags & mdl::OBJ_20)
entry_list(OBJ_TYPE_TYPE_6, data);
if (draw_task_flags & DRAW_TASK_CHARA_REFLECT)
if (obj_flags & mdl::OBJ_CHARA_REFLECT)
entry_list(OBJ_TYPE_REFLECT_CHARA_OPAQUE, data);
if (draw_task_flags & DRAW_TASK_REFLECT)
if (obj_flags & mdl::OBJ_REFLECT)
entry_list(OBJ_TYPE_REFLECT_OPAQUE, data);
if (draw_task_flags & DRAW_TASK_REFRACT)
if (obj_flags & mdl::OBJ_REFRACT)
entry_list(OBJ_TYPE_REFRACT_OPAQUE, data);
}
if (draw_task_flags & DRAW_TASK_USER)
if (obj_flags & mdl::OBJ_USER)
entry_list(OBJ_TYPE_USER, data);
continue;
}
else if (!(draw_task_flags & DRAW_TASK_NO_TRANSLUCENCY)) {
else if (!(obj_flags & mdl::OBJ_NO_TRANSLUCENCY)) {
if (!attrib.translucent_priority)
if (local)
entry_list(OBJ_TYPE_TRANSLUCENT_LOCAL, data);
else if (mesh->attrib.m.translucent_no_shadow
|| draw_task_flags & DRAW_TASK_TRANSLUCENT_NO_SHADOW) {
|| obj_flags & mdl::OBJ_TRANSLUCENT_NO_SHADOW) {
entry_list(OBJ_TYPE_TRANSLUCENT_NO_SHADOW, data);
}
else {
@@ -1545,22 +1545,22 @@ namespace mdl {
}
}
if (draw_task_flags & DRAW_TASK_SHADOW)
if (obj_flags & mdl::OBJ_SHADOW)
entry_list((ObjType)(OBJ_TYPE_SHADOW_CHARA
+ shadow_type), data);
if (draw_task_flags & DRAW_TASK_40)
if (obj_flags & mdl::OBJ_40)
entry_list(OBJ_TYPE_TYPE_7, data);
if (draw_task_flags & DRAW_TASK_CHARA_REFLECT)
if (obj_flags & mdl::OBJ_CHARA_REFLECT)
entry_list(OBJ_TYPE_REFLECT_CHARA_OPAQUE, data);
if (draw_task_flags & DRAW_TASK_REFLECT) {
if (obj_flags & mdl::OBJ_REFLECT) {
if (rctx_ptr->render_manager.reflect_type != STAGE_DATA_REFLECT_REFLECT_MAP)
entry_list(OBJ_TYPE_REFLECT_OPAQUE, data);
else
entry_list(OBJ_TYPE_REFLECT_TRANSLUCENT, data);
}
if (draw_task_flags & DRAW_TASK_REFRACT)
if (obj_flags & mdl::OBJ_REFRACT)
entry_list(OBJ_TYPE_REFRACT_TRANSLUCENT, data);
if (draw_task_flags & DRAW_TASK_USER)
if (obj_flags & mdl::OBJ_USER)
entry_list(OBJ_TYPE_USER, data);
}
@@ -1584,12 +1584,12 @@ namespace mdl {
continue;
data->init_translucent(mat, &translucent_args);
if (draw_task_flags & DRAW_TASK_ALPHA_ORDER_1)
if (obj_flags & mdl::OBJ_ALPHA_ORDER_1)
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_1, data);
else if (draw_task_flags & DRAW_TASK_ALPHA_ORDER_2)
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_2)
entry_list(local ? OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2_LOCAL
: OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_2, data);
else if (draw_task_flags & DRAW_TASK_ALPHA_ORDER_3)
else if (obj_flags & mdl::OBJ_ALPHA_ORDER_3)
entry_list(OBJ_TYPE_TRANSLUCENT_ALPHA_ORDER_3, data);
else
entry_list(local ? OBJ_TYPE_TRANSLUCENT_LOCAL
@@ -1774,8 +1774,8 @@ namespace mdl {
return chara_color;
}
::draw_task_flags DispManager::get_draw_task_flags() {
return draw_task_flags;
ObjFlags DispManager::get_obj_flags() {
return obj_flags;
}
void DispManager::get_material_list(int32_t& count, material_list_struct*& value) {
@@ -1906,7 +1906,7 @@ namespace mdl {
culling.passed = {};
culling.culled = {};
draw_task_flags = (::draw_task_flags)0;
obj_flags = (::mdl::ObjFlags)0;
field_8 = 0;
field_C = 0;
@@ -1929,8 +1929,8 @@ namespace mdl {
chara_color = value;
}
void DispManager::set_draw_task_flags(::draw_task_flags flags) {
draw_task_flags = flags;
void DispManager::set_obj_flags(ObjFlags flags) {
obj_flags = flags;
}
void DispManager::set_material_list(int32_t count, material_list_struct* value) {
@@ -2429,31 +2429,6 @@ void render_context::ctrl() {
else if (1.0f - delta_frame_history < 0.001f)
delta_frame_history_int++;
/*for (int32_t i = 0; i < ROB_CHARA_COUNT; i++) {
if (!task_rob_manager_check_chara_loaded(rob_chara_array[i].chara_id)
|| rob_chara_pv_data_array[i].type == ROB_CHARA_TYPE_NONE)
continue;
float_t frame = rob_chara_get_frame(&rob_chara_array[i]);
float_t frame_count = rob_chara_get_frame_count(&rob_chara_array[i]);
frame += get_delta_frame();
if (frame >= frame_count) {
frame = 0.0f;
rob_chara_item_equip* rob_item_equip = rob_chara_array[i].item_equip;
for (int32_t j = rob_item_equip->first_item_equip_object;
j < rob_item_equip->max_item_equip_object; j++) {
rob_chara_item_equip_object* itm_eq_obj = &rob_item_equip->item_equip_object[j];
itm_eq_obj->osage_iterations = 60;
for (ExOsageBlock*& i : itm_eq_obj->osage_blocks)
if (i)
i->rob.osage_reset = true;
}
}
//rob_chara_set_frame(&rob_chara_array[i], frame);
rob_chara_set_frame(&rob_chara_array[i], rob_frame);
rob_chara_array[i].item_equip->shadow_type = SHADOW_CHARA;
}*/
rctx_ptr = this;
app::TaskWork::Ctrl();
sound_ctrl();
@@ -2666,10 +2641,10 @@ void render_context::light_param_data_wind_set(light_param_wind* w) {
}
void render_context::light_param_data_face_set(light_param_face* face) {
this->face.offset = face->offset;
this->face.scale = face->scale;
this->face.position = face->position;
this->face.direction = face->direction;
this->face.set_offset(face->offset);
this->face.set_scale(face->scale);
this->face.set_position(face->position);
this->face.set_direction(face->direction);
}
shadow::shadow() : field_8(), field_158(), view_point(), interest(),
+38 -38
View File
@@ -36,41 +36,6 @@ enum blur_filter_mode {
BLUR_FILTER_MAX,
};
enum draw_task_flags : uint32_t {
DRAW_TASK_SHADOW = 0x00000001,
DRAW_TASK_2 = 0x00000002,
DRAW_TASK_4 = 0x00000004,
DRAW_TASK_8 = 0x00000008,
DRAW_TASK_10 = 0x00000010,
DRAW_TASK_20 = 0x00000020,
DRAW_TASK_40 = 0x00000040,
DRAW_TASK_SHADOW_OBJECT = 0x00000080,
DRAW_TASK_CHARA_REFLECT = 0x00000100,
DRAW_TASK_REFLECT = 0x00000200,
DRAW_TASK_REFRACT = 0x00000400,
DRAW_TASK_800 = 0x00000800,
DRAW_TASK_TRANSLUCENT_NO_SHADOW = 0x00001000,
DRAW_TASK_SSS = 0x00002000,
DRAW_TASK_4000 = 0x00004000,
DRAW_TASK_8000 = 0x00008000,
DRAW_TASK_ALPHA_ORDER_1 = 0x00010000,
DRAW_TASK_ALPHA_ORDER_2 = 0x00020000,
DRAW_TASK_ALPHA_ORDER_3 = 0x00040000,
DRAW_TASK_80000 = 0x00080000,
DRAW_TASK_100000 = 0x00100000,
DRAW_TASK_200000 = 0x00200000,
DRAW_TASK_400000 = 0x00400000,
DRAW_TASK_800000 = 0x00800000,
DRAW_TASK_USER = 0x01000000,
DRAW_TASK_2000000 = 0x02000000,
DRAW_TASK_4000000 = 0x04000000,
DRAW_TASK_8000000 = 0x08000000,
DRAW_TASK_10000000 = 0x10000000,
DRAW_TASK_20000000 = 0x20000000,
DRAW_TASK_40000000 = 0x40000000,
DRAW_TASK_NO_TRANSLUCENCY = 0x80000000,
};
enum reflect_refract_resolution_mode {
REFLECT_REFRACT_RESOLUTION_256x256 = 0,
REFLECT_REFRACT_RESOLUTION_512x256,
@@ -105,6 +70,41 @@ namespace mdl {
OBJ_KIND_MAX,
};
enum ObjFlags : uint32_t {
OBJ_SHADOW = 0x00000001,
OBJ_2 = 0x00000002,
OBJ_4 = 0x00000004,
OBJ_8 = 0x00000008,
OBJ_10 = 0x00000010,
OBJ_20 = 0x00000020,
OBJ_40 = 0x00000040,
OBJ_SHADOW_OBJECT = 0x00000080,
OBJ_CHARA_REFLECT = 0x00000100,
OBJ_REFLECT = 0x00000200,
OBJ_REFRACT = 0x00000400,
OBJ_800 = 0x00000800,
OBJ_TRANSLUCENT_NO_SHADOW = 0x00001000,
OBJ_SSS = 0x00002000,
OBJ_4000 = 0x00004000,
OBJ_8000 = 0x00008000,
OBJ_ALPHA_ORDER_1 = 0x00010000,
OBJ_ALPHA_ORDER_2 = 0x00020000,
OBJ_ALPHA_ORDER_3 = 0x00040000,
OBJ_80000 = 0x00080000,
OBJ_100000 = 0x00100000,
OBJ_200000 = 0x00200000,
OBJ_400000 = 0x00400000,
OBJ_800000 = 0x00800000,
OBJ_USER = 0x01000000,
OBJ_2000000 = 0x02000000,
OBJ_4000000 = 0x04000000,
OBJ_8000000 = 0x08000000,
OBJ_10000000 = 0x10000000,
OBJ_20000000 = 0x20000000,
OBJ_40000000 = 0x40000000,
OBJ_NO_TRANSLUCENCY = 0x80000000,
};
enum ObjType {
OBJ_TYPE_OPAQUE = 0,
OBJ_TYPE_OPAQUE_LITPROJ_0, // Added
@@ -464,7 +464,7 @@ namespace mdl {
int32_t texcoord_array[2];
};
draw_task_flags draw_task_flags;
mdl::ObjFlags obj_flags;
shadow_type_enum shadow_type;
int32_t field_8;
int32_t field_C;
@@ -530,7 +530,7 @@ namespace mdl {
void entry_obj_user(const mat4* mat, UserArgsFunc func, void* data, ObjType type);
GLuint get_vertex_array(const ObjSubMeshArgs* args);
bool get_chara_color();
::draw_task_flags get_draw_task_flags();
ObjFlags get_obj_flags();
void get_material_list(int32_t& count, material_list_struct*& value);
void get_morph(object_info& object, float_t& weight);
int32_t get_obj_count(ObjType type);
@@ -545,7 +545,7 @@ namespace mdl {
void obj_sort(mat4* view, ObjType type, int32_t compare_func);
void refresh();
void set_chara_color(bool value = false);
void set_draw_task_flags(::draw_task_flags flags = (::draw_task_flags)0);
void set_obj_flags(ObjFlags flags = (ObjFlags)0);
void set_material_list(int32_t count = 0, material_list_struct* value = 0);
void set_morph(object_info object = {}, float_t weight = 0.0f);
void set_culling_finc(bool(*func)(obj_bounding_sphere*, mat4*) = 0);
+30 -30
View File
@@ -10988,12 +10988,12 @@ void rob_chara_array_reset_bone_data_item_equip(int32_t chara_id) {
rob_itm_equip->field_A0 = 5;
}
void rob_chara_array_set_alpha_draw_task_flags(int32_t chara_id, float_t alpha, draw_task_flags flags) {
void rob_chara_array_set_alpha_obj_flags(int32_t chara_id, float_t alpha, mdl::ObjFlags flags) {
rob_chara* rob_chr = rob_chara_array_get(chara_id);
if (!rob_chr)
return;
rob_chr->item_equip->set_alpha_draw_task_flags(alpha, flags);
rob_chr->item_equip->set_alpha_obj_flags(alpha, flags);
/*if (rob_chara_check_for_ageageagain_module(rob_chr->chara_index, rob_chr->module_index)) {
sub_140543120(chara_id, 1, alpha);
@@ -11927,7 +11927,7 @@ rob_chara_pv_data::~rob_chara_pv_data() {
rob_chara_item_equip_object::rob_chara_item_equip_object() : index(), mats(),
obj_info(), field_14(), texture_data(), null_blocks_data_set(), alpha(),
draw_task_flags(), can_disp(), field_A4(), mat(), osage_iterations(), bone_nodes(),
obj_flags(), can_disp(), field_A4(), mat(), osage_iterations(), bone_nodes(),
field_138(), field_1B8(), osage_nodes_count(), use_opd(), skin_ex_data(), skin(), item_equip() {
init_members(0x12345678);
}
@@ -12003,13 +12003,13 @@ void rob_chara_item_equip_object::disp(const mat4* mat, render_context* rctx) {
if (obj_info.is_null())
return;
::draw_task_flags v2 = rctx->disp_manager.get_draw_task_flags();
::draw_task_flags v4 = v2;
mdl::ObjFlags v2 = rctx->disp_manager.get_obj_flags();
mdl::ObjFlags v4 = v2;
if (fabsf(alpha - 1.0f) > 0.000001f)
enum_or(v4, draw_task_flags);
enum_or(v4, obj_flags);
else
enum_and(v4, ~(DRAW_TASK_ALPHA_ORDER_3 | DRAW_TASK_ALPHA_ORDER_2 | DRAW_TASK_ALPHA_ORDER_1));
rctx->disp_manager.set_draw_task_flags(v4);
enum_and(v4, ~(mdl::OBJ_ALPHA_ORDER_3 | mdl::OBJ_ALPHA_ORDER_2 | mdl::OBJ_ALPHA_ORDER_1));
rctx->disp_manager.set_obj_flags(v4);
if (can_disp) {
rctx->disp_manager.entry_obj_by_object_info_object_skin(obj_info,
&texture_pattern, &texture_data, alpha, mats, ex_data_block_mats.data(), 0, mat);
@@ -12017,7 +12017,7 @@ void rob_chara_item_equip_object::disp(const mat4* mat, render_context* rctx) {
for (ExNodeBlock*& i : node_blocks)
i->Disp(mat, rctx);
}
rctx->disp_manager.set_draw_task_flags(v2);
rctx->disp_manager.set_obj_flags(v2);
}
int32_t rob_chara_item_equip_object::get_bone_index(const char* name, bone_database* bone_data) {
@@ -12118,7 +12118,7 @@ void rob_chara_item_equip_object::init_members(size_t index) {
texture_data.texture_specular_coefficients = 1.0f;
texture_data.texture_specular_offset = 0.0f;
alpha = 1.0f;
draw_task_flags = DRAW_TASK_ALPHA_ORDER_1;
obj_flags = mdl::OBJ_ALPHA_ORDER_1;
null_blocks_data_set = 0;
can_disp = true;
field_A4 = 0;
@@ -12350,8 +12350,8 @@ void rob_chara_item_equip_object::reset_external_force() {
i->rob.ResetExtrenalForce();
}
void rob_chara_item_equip_object::set_alpha_draw_task_flags(float_t alpha, int32_t flags) {
draw_task_flags = (::draw_task_flags)flags;
void rob_chara_item_equip_object::set_alpha_obj_flags(float_t alpha, int32_t flags) {
obj_flags = (mdl::ObjFlags)flags;
this->alpha = clamp_def(alpha, 0.0f, 1.0f);
}
@@ -12638,11 +12638,11 @@ static void sub_140512C20(rob_chara_item_equip* rob_itm_equip, render_context* r
}
void rob_chara_item_equip::disp(int32_t chara_id, render_context* rctx) {
draw_task_flags v2 = (draw_task_flags)0;
mdl::ObjFlags flags = (mdl::ObjFlags)0;
if (rctx->chara_reflect)
enum_or(v2, DRAW_TASK_CHARA_REFLECT);
enum_or(flags, mdl::OBJ_CHARA_REFLECT);
if (rctx->chara_refract)
enum_or(v2, DRAW_TASK_REFRACT);
enum_or(flags, mdl::OBJ_REFRACT);
mdl::DispManager& disp_manager = rctx->disp_manager;
shadow* shad = rctx->render_manager.shadow_ptr;
@@ -12659,13 +12659,13 @@ void rob_chara_item_equip::disp(int32_t chara_id, render_context* rctx) {
v9 = 0.05f;
rctx->render_manager.shadow_ptr->field_1C0[shadow_type] = v9;
disp_manager.set_shadow_type(shadow_type);
enum_or(v2, DRAW_TASK_SHADOW);
enum_or(flags, mdl::OBJ_SHADOW);
}
if (field_A0 & 1)
enum_or(v2, DRAW_TASK_4);
enum_or(flags, mdl::OBJ_4);
}
disp_manager.set_draw_task_flags(v2);
disp_manager.set_obj_flags(flags);
disp_manager.set_chara_color(chara_color);
vec4 temp_texture_color_coeff;
@@ -12682,29 +12682,29 @@ void rob_chara_item_equip::disp(int32_t chara_id, render_context* rctx) {
item_equip_object[i].disp(&mat, rctx);
else {
for (int32_t i = ITEM_ATAMA; i < ITEM_MAX; i++) {
draw_task_flags v18 = (draw_task_flags)0;
mdl::ObjFlags v18 = (mdl::ObjFlags)0;
if (field_18[i] == 0) {
if (rctx->chara_reflect)
enum_or(v18, DRAW_TASK_CHARA_REFLECT);
enum_or(v18, mdl::OBJ_CHARA_REFLECT);
if (rctx->chara_refract)
enum_or(v18, DRAW_TASK_REFRACT);
enum_or(v18, mdl::OBJ_REFRACT);
}
draw_task_flags v19 = (draw_task_flags)(DRAW_TASK_4 | DRAW_TASK_SHADOW);
if (i == 8)
v19 = (draw_task_flags)0;
mdl::ObjFlags v19 = (mdl::ObjFlags)(mdl::OBJ_4 | mdl::OBJ_SHADOW);
if (i == ITEM_HARA)
v19 = (mdl::ObjFlags)0;
if (!(field_A0 & 0x04))
enum_and(v19, ~DRAW_TASK_SHADOW);
enum_and(v19, ~mdl::OBJ_SHADOW);
disp_manager.set_draw_task_flags((draw_task_flags)(v18 | v19 | DRAW_TASK_SSS));
disp_manager.set_obj_flags((mdl::ObjFlags)(v18 | v19 | mdl::OBJ_SSS));
item_equip_object[i].disp(&mat, rctx);
}
}
disp_manager.set_texture_color_coefficients(temp_texture_color_coeff);
disp_manager.set_wet_param();
disp_manager.set_chara_color();
disp_manager.set_draw_task_flags();
disp_manager.set_obj_flags();
disp_manager.set_shadow_type();
}
@@ -12784,13 +12784,13 @@ void rob_chara_item_equip::reset_init_data(bone_node* bone_nodes) {
mat = mat4_identity;
}
void rob_chara_item_equip::set_alpha_draw_task_flags(float_t alpha, draw_task_flags flags) {
void rob_chara_item_equip::set_alpha_obj_flags(float_t alpha, mdl::ObjFlags flags) {
if (item_equip_range)
for (int32_t i = first_item_equip_object; i < max_item_equip_object; i++)
item_equip_object[i].set_alpha_draw_task_flags(alpha, flags);
item_equip_object[i].set_alpha_obj_flags(alpha, flags);
else
for (int32_t i = ITEM_ATAMA; i < ITEM_MAX; i++)
item_equip_object[i].set_alpha_draw_task_flags(alpha, flags);
item_equip_object[i].set_alpha_obj_flags(alpha, flags);
}
void rob_chara_item_equip::set_disp(item_id id, bool value) {
+4 -4
View File
@@ -2132,7 +2132,7 @@ struct rob_chara_item_equip_object {
bool null_blocks_data_set;
bone_node_expression_data exp_data;
float_t alpha;
draw_task_flags draw_task_flags;
mdl::ObjFlags obj_flags;
bool can_disp;
int32_t field_A4;
mat4* mat;
@@ -2175,7 +2175,7 @@ struct rob_chara_item_equip_object {
void load_object_info_ex_data(object_info object_info, bone_node* bone_nodes,
bool osage_reset, bone_database* bone_data, void* data, object_database* obj_db);
void reset_external_force();
void set_alpha_draw_task_flags(float_t alpha, int32_t flags);
void set_alpha_obj_flags(float_t alpha, int32_t flags);
bool set_boc(skin_param_osage_root& skp_root, ExOsageBlock* osg);
void set_collision_target_osage(skin_param_osage_root& skp_root, skin_param* skp);
void set_motion_reset_data(int32_t motion_id, float_t frame);
@@ -2263,7 +2263,7 @@ struct rob_chara_item_equip {
void reset();
void reset_external_force();
void reset_init_data(bone_node* bone_nodes);
void set_alpha_draw_task_flags(float_t alpha, draw_task_flags flags);
void set_alpha_obj_flags(float_t alpha, mdl::ObjFlags flags);
void set_disp(item_id id, bool value);
void set_item_equip_range(bool value);
void set_motion_reset_data(int32_t motion_id, float_t frame);
@@ -3510,7 +3510,7 @@ extern int32_t rob_chara_array_init_chara_index(chara_index chara_index,
rob_chara_pv_data* pv_data, int32_t module_index, bool can_set_default);
extern void rob_chara_array_free_chara_id(int32_t chara_id);
extern void rob_chara_array_reset_bone_data_item_equip(int32_t chara_id);
extern void rob_chara_array_set_alpha_draw_task_flags(int32_t chara_id, float_t alpha, draw_task_flags flags);
extern void rob_chara_array_set_alpha_obj_flags(int32_t chara_id, float_t alpha, mdl::ObjFlags flags);
extern bool rob_chara_pv_data_array_check_chara_id(int32_t chara_id);
+6 -9
View File
@@ -497,17 +497,15 @@ static void stage_disp(stage* s) {
disp_manager.entry_obj_by_object_info(&mat, s->stage_data->object_ring);
if (s->stage_data->object_reflect.not_null()) {
disp_manager.set_draw_task_flags(
(draw_task_flags)(DRAW_TASK_NO_TRANSLUCENCY | DRAW_TASK_REFLECT));
disp_manager.set_obj_flags((mdl::ObjFlags)(mdl::OBJ_NO_TRANSLUCENCY | mdl::OBJ_REFLECT));
disp_manager.entry_obj_by_object_info(&mat, s->stage_data->object_reflect);
disp_manager.set_draw_task_flags();
disp_manager.set_obj_flags();
}
if (s->stage_data->object_refract.not_null()) {
disp_manager.set_draw_task_flags(
(draw_task_flags)(DRAW_TASK_NO_TRANSLUCENCY | DRAW_TASK_REFRACT));
disp_manager.set_obj_flags((mdl::ObjFlags)(mdl::OBJ_NO_TRANSLUCENCY | mdl::OBJ_REFRACT));
disp_manager.entry_obj_by_object_info(&mat, s->stage_data->object_refract);
disp_manager.set_draw_task_flags();
disp_manager.set_obj_flags();
}
if (s->stage_data->object_sky.not_null() && s->sky) {
@@ -548,12 +546,11 @@ static void stage_disp_shadow_object(object_info object, mat4* mat) {
disp_manager.set_culling_finc(i == SHADOW_CHARA
? object_bounding_sphere_check_visibility_shadow_chara
: object_bounding_sphere_check_visibility_shadow_stage);
disp_manager.set_draw_task_flags(
(draw_task_flags)(DRAW_TASK_NO_TRANSLUCENCY | DRAW_TASK_SHADOW_OBJECT));
disp_manager.set_obj_flags((mdl::ObjFlags)(mdl::OBJ_NO_TRANSLUCENCY | mdl::OBJ_SHADOW_OBJECT));
disp_manager.entry_obj_by_object_info(mat, object);
}
disp_manager.set_draw_task_flags();
disp_manager.set_obj_flags();
disp_manager.set_culling_finc();
disp_manager.set_shadow_type();
}
+6 -9
View File
@@ -503,17 +503,15 @@ static void stage_modern_disp(stage_modern* s) {
disp_manager.entry_obj_by_object_info(&mat, s->stage_data->object_ground);
if (s->stage_data->object_reflect.not_null_modern()) {
disp_manager.set_draw_task_flags(
(draw_task_flags)(DRAW_TASK_NO_TRANSLUCENCY | DRAW_TASK_REFRACT));
disp_manager.set_obj_flags((mdl::ObjFlags)(mdl::OBJ_NO_TRANSLUCENCY | mdl::OBJ_REFRACT));
disp_manager.entry_obj_by_object_info(&mat, s->stage_data->object_reflect);
disp_manager.set_draw_task_flags();
disp_manager.set_obj_flags();
}
if (s->stage_data->object_refract.not_null_modern()) {
disp_manager.set_draw_task_flags(
(draw_task_flags)(DRAW_TASK_NO_TRANSLUCENCY | DRAW_TASK_REFRACT));
disp_manager.set_obj_flags((mdl::ObjFlags)(mdl::OBJ_NO_TRANSLUCENCY | mdl::OBJ_REFRACT));
disp_manager.entry_obj_by_object_info(&mat, s->stage_data->object_refract);
disp_manager.set_draw_task_flags();
disp_manager.set_obj_flags();
}
if (s->stage_data->object_sky.not_null_modern() && s->sky) {
@@ -541,12 +539,11 @@ static void stage_modern_disp_shadow_object(object_info object, mat4* mat) {
disp_manager.set_culling_finc(i == SHADOW_CHARA
? object_bounding_sphere_check_visibility_shadow_chara
: object_bounding_sphere_check_visibility_shadow_stage);
disp_manager.set_draw_task_flags(
(draw_task_flags)(DRAW_TASK_NO_TRANSLUCENCY | DRAW_TASK_SHADOW_OBJECT));
disp_manager.set_obj_flags((mdl::ObjFlags)(mdl::OBJ_NO_TRANSLUCENCY | mdl::OBJ_SHADOW_OBJECT));
disp_manager.entry_obj_by_object_info(mat, object);
}
disp_manager.set_draw_task_flags();
disp_manager.set_obj_flags();
disp_manager.set_culling_finc();
disp_manager.set_shadow_type();
}
+2 -2
View File
@@ -53,7 +53,7 @@ enum chara_index {
CHARA_MAX = 10,
};
enum draw_task_flags {
enum obj_flags {
DRAW_TASK_SHADOW = 0x00000001,
DRAW_TASK_2 = 0x00000002,
DRAW_TASK_4 = 0x00000004,
@@ -4042,7 +4042,7 @@ struct rob_chara_item_equip_object {
bool null_blocks_data_set;
bone_node_expression_data exp_data;
float_t alpha;
draw_task_flags draw_task_flags;
obj_flags obj_flags;
bool disp;
int32_t field_A4;
mat4* mat;
+5 -5
View File
@@ -4935,17 +4935,17 @@ static void x_pv_game_chara_item_alpha_callback(void* data, int32_t chara_id, in
if (chara_id < 0 || chara_id >= pv_data.play_param->chara.size())
return;
draw_task_flags draw_task_flags;
mdl::ObjFlags flags;
switch (type) {
case 0:
default:
draw_task_flags = DRAW_TASK_ALPHA_ORDER_1;
flags = mdl::OBJ_ALPHA_ORDER_1;
break;
case 1:
draw_task_flags = DRAW_TASK_ALPHA_ORDER_2;
flags = mdl::OBJ_ALPHA_ORDER_2;
break;
case 2:
draw_task_flags = DRAW_TASK_ALPHA_ORDER_3;
flags = mdl::OBJ_ALPHA_ORDER_3;
break;
}
@@ -4954,7 +4954,7 @@ static void x_pv_game_chara_item_alpha_callback(void* data, int32_t chara_id, in
continue;
for (x_pv_game_song_effect_auth_3d& j : i.auth_3d)
j.id.set_draw_task_flags_alpha(draw_task_flags, alpha);
j.id.set_obj_flags_alpha(flags, alpha);
for (x_pv_game_song_effect_glitter& j : i.glitter)
Glitter::glt_particle_manager->SetSceneEffectExtColor(j.scene_counter,