mirror of
https://github.com/korenkonder/ReDIVA.git
synced 2026-10-11 00:28:21 +03:00
Changed std::vector<mdl::ObjData*> to std::list<mdl::ObjData*>
This commit is contained in:
@@ -366,7 +366,6 @@ namespace Glitter {
|
||||
&& flags & EFFECT_INST_HAS_EXT_ANIM_TRANS))
|
||||
return;
|
||||
|
||||
mat4 mat;
|
||||
int32_t chara_id;
|
||||
|
||||
if (flags & EFFECT_INST_CHARA_ANIM) {
|
||||
@@ -374,7 +373,7 @@ namespace Glitter {
|
||||
if (!rob_chr)
|
||||
return;
|
||||
|
||||
mat4& mat = rob_chr->data.adjust_data.mat;
|
||||
mat4 mat = rob_chr->data.adjust_data.mat;
|
||||
|
||||
vec3 scale;
|
||||
mat4_get_scale(&mat, &scale);
|
||||
@@ -419,7 +418,7 @@ namespace Glitter {
|
||||
return;
|
||||
}
|
||||
|
||||
mat = mat4_identity;
|
||||
mat4 mat = mat4_identity;
|
||||
chara_id = auth_3d_id(ext_anim->a3da_id).get_chara_id();
|
||||
if (chara_id >= 0 && chara_id < ROB_CHARA_COUNT) {
|
||||
rob_chara* rob_chr = rob_chara_array_get(chara_id);
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
*/
|
||||
|
||||
#include "disp_manager.hpp"
|
||||
#include "../../KKdLib/sort.hpp"
|
||||
#include "../Glitter/glitter.hpp"
|
||||
#include "../render_context.hpp"
|
||||
#include "../shader_ft.hpp"
|
||||
@@ -3114,43 +3113,28 @@ namespace mdl {
|
||||
return wet_param;
|
||||
}
|
||||
|
||||
static int mdl_obj_data_sort_quicksort_compare0(void const* src1, void const* src2) {
|
||||
float_t d1 = (*(ObjData**)src1)->view_z;
|
||||
float_t d2 = (*(ObjData**)src2)->view_z;
|
||||
return d1 > d2 ? -1 : (d1 < d2 ? 1 : 0);
|
||||
}
|
||||
|
||||
static int mdl_obj_data_sort_quicksort_compare1(void const* src1, void const* src2) {
|
||||
float_t d1 = (*(ObjData**)src1)->view_z;
|
||||
float_t d2 = (*(ObjData**)src2)->view_z;
|
||||
return d1 < d2 ? -1 : (d1 > d2 ? 1 : 0);
|
||||
}
|
||||
|
||||
static int mdl_obj_data_sort_quicksort_compare2(void const* src1, void const* src2) {
|
||||
float_t r1 = (*(ObjData**)src1)->radius;
|
||||
float_t r2 = (*(ObjData**)src2)->radius;
|
||||
return r1 > r2 ? -1 : (r1 < r2 ? 1 : 0);
|
||||
}
|
||||
|
||||
void DispManager::obj_sort(const mat4* view, ObjType type, int32_t compare_func) {
|
||||
std::vector<ObjData*>& vec = obj[type];
|
||||
if (vec.size() < 1)
|
||||
std::list<ObjData*>& list = obj[type];
|
||||
if (list.size() < 1)
|
||||
return;
|
||||
|
||||
calc_obj_radius(view, type);
|
||||
|
||||
switch (compare_func) {
|
||||
case 0:
|
||||
quicksort_custom(vec.data(), vec.size(),
|
||||
sizeof(ObjData*), mdl_obj_data_sort_quicksort_compare0);
|
||||
list.sort([](ObjData* left, ObjData* right) {
|
||||
return left->view_z > right->view_z;
|
||||
});
|
||||
break;
|
||||
case 1:
|
||||
quicksort_custom(vec.data(), vec.size(),
|
||||
sizeof(ObjData*), mdl_obj_data_sort_quicksort_compare1);
|
||||
list.sort([](ObjData* left, ObjData* right) {
|
||||
return left->view_z < right->view_z;
|
||||
});
|
||||
break;
|
||||
case 2:
|
||||
quicksort_custom(vec.data(), vec.size(),
|
||||
sizeof(ObjData*), mdl_obj_data_sort_quicksort_compare2);
|
||||
list.sort([](ObjData* left, ObjData* right) {
|
||||
return left->radius > right->radius;
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -3174,7 +3158,7 @@ namespace mdl {
|
||||
texture_specular_coefficients = 1.0f;
|
||||
texture_specular_offset = 0.0f;
|
||||
|
||||
for (std::vector<ObjData*>& i : obj)
|
||||
for (std::list<ObjData*>& i : obj)
|
||||
i.clear();
|
||||
|
||||
buffer_reset();
|
||||
|
||||
@@ -420,7 +420,7 @@ namespace mdl {
|
||||
shadow_type_enum shadow_type;
|
||||
int32_t field_8;
|
||||
int32_t field_C;
|
||||
std::vector<mdl::ObjData*> obj[mdl::OBJ_TYPE_MAX];
|
||||
std::list<mdl::ObjData*> obj[mdl::OBJ_TYPE_MAX];
|
||||
mdl::CullingCheck culling;
|
||||
int32_t put_index;
|
||||
bool show_alpha_center;
|
||||
|
||||
@@ -1764,7 +1764,7 @@ static int32_t draw_pass_3d_translucent_count_layers(render_context* rctx,
|
||||
|
||||
static void draw_pass_3d_translucent_has_objects(render_context* rctx, bool* arr, mdl::ObjType type) {
|
||||
rctx->disp_manager->calc_obj_radius(&rctx->view_mat, type);
|
||||
std::vector<mdl::ObjData*>& vec = rctx->disp_manager->obj[type];
|
||||
std::list<mdl::ObjData*>& vec = rctx->disp_manager->obj[type];
|
||||
for (mdl::ObjData*& i : vec)
|
||||
switch (i->kind) {
|
||||
case mdl::OBJ_KIND_NORMAL: {
|
||||
|
||||
@@ -109,7 +109,7 @@ void data_view_draw_task_imgui(class_data* data) {
|
||||
}
|
||||
|
||||
render_context* rctx = data_view->rctx;
|
||||
std::vector<mdl::ObjData*>* obj = rctx->disp_manager->obj;
|
||||
std::list<mdl::ObjData*>* obj = rctx->disp_manager->obj;
|
||||
auto& obj_data = data_view->obj_data;
|
||||
|
||||
ImGuiTreeNodeFlags tree_node_base_flags = 0;
|
||||
@@ -123,7 +123,7 @@ void data_view_draw_task_imgui(class_data* data) {
|
||||
tree_node_flags = tree_node_base_flags;
|
||||
|
||||
ImGui::PushID(i);
|
||||
std::vector<mdl::ObjData*>& draw_tasks = obj[i];
|
||||
std::list<mdl::ObjData*>& draw_tasks = obj[i];
|
||||
size_t count = draw_tasks.size();
|
||||
bool enable = count > 0;
|
||||
ImGui::DisableElementPush(enable);
|
||||
|
||||
Reference in New Issue
Block a user