diff --git a/src/CRE/auth_3d.cpp b/src/CRE/auth_3d.cpp index efae5924..389a4c2a 100644 --- a/src/CRE/auth_3d.cpp +++ b/src/CRE/auth_3d.cpp @@ -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) diff --git a/src/CRE/auth_3d.hpp b/src/CRE/auth_3d.hpp index 47de5ac5..8a63d94a 100644 --- a/src/CRE/auth_3d.hpp +++ b/src/CRE/auth_3d.hpp @@ -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; diff --git a/src/CRE/pv_param.cpp b/src/CRE/pv_param.cpp index 3787f3ed..b6d5c363 100644 --- a/src/CRE/pv_param.cpp +++ b/src/CRE/pv_param.cpp @@ -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) { diff --git a/src/CRE/render_context.cpp b/src/CRE/render_context.cpp index e99f4c78..ba1232af 100644 --- a/src/CRE/render_context.cpp +++ b/src/CRE/render_context.cpp @@ -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(), diff --git a/src/CRE/render_context.hpp b/src/CRE/render_context.hpp index de2fee41..c10de89f 100644 --- a/src/CRE/render_context.hpp +++ b/src/CRE/render_context.hpp @@ -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); diff --git a/src/CRE/rob/rob.cpp b/src/CRE/rob/rob.cpp index 89894a02..d6165335 100644 --- a/src/CRE/rob/rob.cpp +++ b/src/CRE/rob/rob.cpp @@ -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) { diff --git a/src/CRE/rob/rob.hpp b/src/CRE/rob/rob.hpp index eb7c17ac..bb4d5f0a 100644 --- a/src/CRE/rob/rob.hpp +++ b/src/CRE/rob/rob.hpp @@ -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); diff --git a/src/CRE/stage.cpp b/src/CRE/stage.cpp index 05033a5e..e328216c 100644 --- a/src/CRE/stage.cpp +++ b/src/CRE/stage.cpp @@ -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(); } diff --git a/src/CRE/stage_modern.cpp b/src/CRE/stage_modern.cpp index e1a29920..c4348486 100644 --- a/src/CRE/stage_modern.cpp +++ b/src/CRE/stage_modern.cpp @@ -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(); } diff --git a/src/DivaGL/bone_data.hpp b/src/DivaGL/bone_data.hpp index 3b480fb0..ecb43179 100644 --- a/src/DivaGL/bone_data.hpp +++ b/src/DivaGL/bone_data.hpp @@ -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; diff --git a/src/ReDIVA/x_pv_game.cpp b/src/ReDIVA/x_pv_game.cpp index fa886bae..4479c359 100644 --- a/src/ReDIVA/x_pv_game.cpp +++ b/src/ReDIVA/x_pv_game.cpp @@ -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,