mirror of
https://github.com/korenkonder/ReDIVA.git
synced 2026-10-04 20:58:03 +03:00
Enums, enums, enums...
This commit is contained in:
+27
-27
@@ -436,7 +436,7 @@ struct ripple_emit_draw_data {
|
||||
};
|
||||
|
||||
struct RippleRobColli {
|
||||
ROB_COLLI_ID colli_id;
|
||||
CB cb;
|
||||
vec3 old_pos;
|
||||
|
||||
RippleRobColli();
|
||||
@@ -606,7 +606,7 @@ public:
|
||||
class ParticleEmitterRob : public ParticleEmitter {
|
||||
private:
|
||||
ROB_ID m_rob_id;
|
||||
ROB_COLLI_ID m_colli_id;
|
||||
CB m_cb;
|
||||
vec3 m_old_pos;
|
||||
vec3 m_velocity;
|
||||
vec3 m_old_velocity;
|
||||
@@ -628,7 +628,7 @@ public:
|
||||
void get_trans();
|
||||
void reset_data();
|
||||
void reset_data_base();
|
||||
void set_chara(ROB_ID rob_id, ROB_COLLI_ID colli_id, bool in_water);
|
||||
void set_chara(ROB_ID rob_id, CB cb, bool in_water);
|
||||
void set_emit_num(int32_t value);
|
||||
void set_emission_ratio_attn(float_t value);
|
||||
void set_emission_velocity_scale(float_t value);
|
||||
@@ -3187,7 +3187,7 @@ ripple_emit_draw_data::ripple_emit_draw_data() : data() {
|
||||
}
|
||||
|
||||
RippleRobColli::RippleRobColli() {
|
||||
colli_id = ROB_COLLI_ID_DUMMY;
|
||||
cb = CB_NONE;
|
||||
}
|
||||
|
||||
EffectRipple::Params::Params() {
|
||||
@@ -3383,12 +3383,12 @@ void EffectRipple::set_stage_index(int32_t stage_index) {
|
||||
}
|
||||
|
||||
void EffectRipple::set_stage_indices(const std::vector<int32_t>& stage_indices) {
|
||||
static const ROB_COLLI_ID ripple_colli_id[] = {
|
||||
ROB_COLLI_ID_KOSHI, ROB_COLLI_ID_MUNE_L, ROB_COLLI_ID_MUNE_R, ROB_COLLI_ID_KAO,
|
||||
ROB_COLLI_ID_KATA_L1, ROB_COLLI_ID_KATA_R1, ROB_COLLI_ID_UDE_L1, ROB_COLLI_ID_UDE_R1,
|
||||
ROB_COLLI_ID_TE_L, ROB_COLLI_ID_TE_R, ROB_COLLI_ID_MOMO_L1, ROB_COLLI_ID_MOMO_R1,
|
||||
ROB_COLLI_ID_SUNE_L1, ROB_COLLI_ID_SUNE_R1,
|
||||
ROB_COLLI_ID_ASI_L, ROB_COLLI_ID_ASI_R, ROB_COLLI_ID_TOE_L, ROB_COLLI_ID_TOE_R
|
||||
static const CB ripple_cb[] = {
|
||||
CB_KOSI, CB_MUNE1, CB_MUNE2, CB_KAO,
|
||||
CB_KATA_L1, CB_KATA_R1, CB_UDE_L1, CB_UDE_R1,
|
||||
CB_TE_L, CB_TE_R, CB_MOMO_L1, CB_MOMO_R1,
|
||||
CB_SUNE_L1, CB_SUNE_R1,
|
||||
CB_ASI_L, CB_ASI_R, CB_TOE_L, CB_TOE_R
|
||||
};
|
||||
|
||||
stage_set = false;
|
||||
@@ -3426,7 +3426,7 @@ void EffectRipple::set_stage_indices(const std::vector<int32_t>& stage_indices)
|
||||
num_rob_colli = 18;
|
||||
for (auto& i : rob_colli)
|
||||
for (int32_t j = 0; j < num_rob_colli; j++) {
|
||||
i[j].colli_id = ripple_colli_id[j];
|
||||
i[j].cb = ripple_cb[j];
|
||||
i[j].old_pos = 0.0f;
|
||||
}
|
||||
|
||||
@@ -3617,7 +3617,7 @@ void EffectRipple::sub_14035AED0() {
|
||||
for (int32_t j = 0; j < num_rob_colli; j++) {
|
||||
RippleRobColli& rob_colli = i[j];
|
||||
vec3 pos = 0.0f;
|
||||
float_t scale = rob_chr->get_pos_scale(rob_colli.colli_id, pos);
|
||||
float_t scale = rob_chr->get_pos_scale(rob_colli.cb, pos);
|
||||
if (pos.y - ground_y < scale) {
|
||||
if (use_float_ripplemap)
|
||||
sub_1403587C0(pos, rob_colli.old_pos, scale, v2.data, v3.data);
|
||||
@@ -3958,7 +3958,7 @@ void ParticleEmitter::reset_data() {
|
||||
m_initial_size = 1.0f;
|
||||
}
|
||||
|
||||
ParticleEmitterRob::ParticleEmitterRob() : m_rob_id(), m_colli_id(),
|
||||
ParticleEmitterRob::ParticleEmitterRob() : m_rob_id(), m_cb(),
|
||||
m_emit_num(), m_emission_ratio(), m_emission_ratio_attn(),
|
||||
m_emission_velocity_scale(), m_flag_in_water(), m_set_old_pos() {
|
||||
reset_data();
|
||||
@@ -4065,7 +4065,7 @@ void ParticleEmitterRob::restart() {
|
||||
|
||||
void ParticleEmitterRob::get_trans() {
|
||||
vec3 pos;
|
||||
get_rob_management()->get_rob(m_rob_id)->get_pos_scale(m_colli_id, pos);
|
||||
get_rob_management()->get_rob(m_rob_id)->get_pos_scale(m_cb, pos);
|
||||
|
||||
if (m_set_old_pos) {
|
||||
m_old_pos = pos;
|
||||
@@ -4084,7 +4084,7 @@ void ParticleEmitterRob::get_velocity(float_t delta_time) {
|
||||
|
||||
void ParticleEmitterRob::reset_data() {
|
||||
m_rob_id = (ROB_ID)0;
|
||||
m_colli_id = ROB_COLLI_ID_DUMMY;
|
||||
m_cb = CB_NONE;
|
||||
m_old_pos = 0.0f;
|
||||
m_velocity = 0.0f;
|
||||
m_old_velocity = 0.0f;
|
||||
@@ -4100,12 +4100,12 @@ void ParticleEmitterRob::reset_data_base() {
|
||||
ParticleEmitter::reset_data();
|
||||
}
|
||||
|
||||
void ParticleEmitterRob::set_chara(ROB_ID rob_id, ROB_COLLI_ID colli_id, bool in_water) {
|
||||
void ParticleEmitterRob::set_chara(ROB_ID rob_id, CB cb, bool in_water) {
|
||||
reset_data_base();
|
||||
reset_data();
|
||||
|
||||
m_rob_id = rob_id;
|
||||
m_colli_id = colli_id;
|
||||
m_cb = cb;
|
||||
m_old_pos = 0.0f;
|
||||
m_velocity = 0.0f;
|
||||
m_old_velocity = 0.0f;
|
||||
@@ -4440,12 +4440,12 @@ void EffectSplashParticle::disp() {
|
||||
}
|
||||
|
||||
bool EffectSplashParticle::init(int32_t splash_tex_id, object_info splash_obj_id, bool in_water, bool blink) {
|
||||
static const ROB_COLLI_ID splash_colli_id[] = {
|
||||
ROB_COLLI_ID_TOE_L, ROB_COLLI_ID_TOE_R,
|
||||
ROB_COLLI_ID_TE_L, ROB_COLLI_ID_TE_R, ROB_COLLI_ID_KOSHI,
|
||||
static const CB splash_cb[] = {
|
||||
CB_TOE_L, CB_TOE_R,
|
||||
CB_TE_L, CB_TE_R, CB_KOSI,
|
||||
};
|
||||
|
||||
static const int32_t splash_colli_id_count = sizeof(splash_colli_id) / sizeof(BONE_ID);
|
||||
static const int32_t splash_cb_count = sizeof(splash_cb) / sizeof(BONE_ID);
|
||||
|
||||
splash_count = 1;
|
||||
splash = new splash_particle[splash_count];
|
||||
@@ -4453,7 +4453,7 @@ bool EffectSplashParticle::init(int32_t splash_tex_id, object_info splash_obj_id
|
||||
if (!splash)
|
||||
return false;
|
||||
|
||||
emitter_rob_count = splash_colli_id_count * ROB_ID_MAX;
|
||||
emitter_rob_count = splash_cb_count * ROB_ID_MAX;
|
||||
emitter_rob = new ParticleEmitterRob[emitter_rob_count];
|
||||
|
||||
if (!emitter_rob)
|
||||
@@ -4469,9 +4469,9 @@ bool EffectSplashParticle::init(int32_t splash_tex_id, object_info splash_obj_id
|
||||
splash[i].init(5000);
|
||||
|
||||
for (int32_t rob_id = 0, j = 0; rob_id < ROB_ID_MAX; rob_id++)
|
||||
for (const ROB_COLLI_ID colli_id : splash_colli_id) {
|
||||
for (const CB cb : splash_cb) {
|
||||
ParticleEmitterRob& ptcl_emit_rob = emitter_rob[j++];
|
||||
ptcl_emit_rob.set_chara((ROB_ID)rob_id, colli_id, in_water);
|
||||
ptcl_emit_rob.set_chara((ROB_ID)rob_id, cb, in_water);
|
||||
ptcl_emit_rob.set_splash(splash);
|
||||
}
|
||||
|
||||
@@ -4483,16 +4483,16 @@ bool EffectSplashParticle::init(int32_t splash_tex_id, object_info splash_obj_id
|
||||
if (splash_obj_id.not_null()) {
|
||||
splash_object.init(100);
|
||||
|
||||
object_emitter_rob_count = splash_colli_id_count * ROB_ID_MAX;
|
||||
object_emitter_rob_count = splash_cb_count * ROB_ID_MAX;
|
||||
object_emitter_rob = new ParticleEmitterRob[object_emitter_rob_count];
|
||||
|
||||
if (!object_emitter_rob)
|
||||
return false;
|
||||
|
||||
for (int32_t rob_id = 0, j = 0; rob_id < ROB_ID_MAX; rob_id++)
|
||||
for (const ROB_COLLI_ID colli_id : splash_colli_id) {
|
||||
for (const CB cb : splash_cb) {
|
||||
ParticleEmitterRob& ptcl_emit_rob = object_emitter_rob[j++];
|
||||
ptcl_emit_rob.set_chara((ROB_ID)rob_id, colli_id, in_water);
|
||||
ptcl_emit_rob.set_chara((ROB_ID)rob_id, cb, in_water);
|
||||
ptcl_emit_rob.set_splash(&splash_object);
|
||||
ptcl_emit_rob.set_emit_num(10);
|
||||
ptcl_emit_rob.set_initial_life(1.0f);
|
||||
|
||||
@@ -38,6 +38,8 @@ static const GLuint BONE_INDEX_INDEX = 15;
|
||||
|
||||
static void sub_140436760(const cam_data& cam);
|
||||
|
||||
extern int32_t get_texcoord(TextureAttributeTextureType tex_type, int32_t index);
|
||||
|
||||
RobSkinCol::RobSkinCol() : type() {
|
||||
|
||||
}
|
||||
@@ -1092,14 +1094,13 @@ namespace mdl {
|
||||
if (i.tex_index == -1)
|
||||
continue;
|
||||
|
||||
int32_t texcoord_index = obj_material_texture_type_get_texcoord_index(
|
||||
i.shader_info.m.tex_type, color_tex_index);
|
||||
int32_t texcoord_index = get_texcoord(i.shader_info.m.tex_type, color_tex_index);
|
||||
if (texcoord_index < 0)
|
||||
continue;
|
||||
|
||||
texcoord_array[texcoord_index] = sub_mesh->uv_index[&i - material->material.texdata];
|
||||
|
||||
if (i.shader_info.m.tex_type == OBJ_MATERIAL_TEXTURE_COLOR)
|
||||
if (i.shader_info.m.tex_type == TEX_SHDATTR_TEXTURE_COLOR)
|
||||
color_tex_index++;
|
||||
}
|
||||
|
||||
@@ -3047,14 +3048,13 @@ namespace mdl {
|
||||
if (i.tex_index == -1)
|
||||
continue;
|
||||
|
||||
int32_t texcoord_index = obj_material_texture_type_get_texcoord_index(
|
||||
i.shader_info.m.tex_type, color_tex_index);
|
||||
int32_t texcoord_index = get_texcoord(i.shader_info.m.tex_type, color_tex_index);
|
||||
if (texcoord_index < 0)
|
||||
continue;
|
||||
|
||||
texcoord_array[texcoord_index] = sub_mesh->uv_index[&i - material->material.texdata];
|
||||
|
||||
if (i.shader_info.m.tex_type == OBJ_MATERIAL_TEXTURE_COLOR)
|
||||
if (i.shader_info.m.tex_type == TEX_SHDATTR_TEXTURE_COLOR)
|
||||
color_tex_index++;
|
||||
}
|
||||
|
||||
@@ -3783,8 +3783,8 @@ static void sub_140436760(const cam_data& cam) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (i->args.sub_mesh.material->material.attrib.m.src_blend_factor == OBJ_MATERIAL_BLEND_ZERO
|
||||
&& i->args.sub_mesh.material->material.attrib.m.dst_blend_factor == OBJ_MATERIAL_BLEND_ONE
|
||||
if (i->args.sub_mesh.material->material.attrib.m.src_blend_factor == MAT_ATTR_BLEND_ZERO
|
||||
&& i->args.sub_mesh.material->material.attrib.m.dst_blend_factor == MAT_ATTR_BLEND_ONE
|
||||
&& aabb->size.y > 2.0f && aabb->size.y < 2.5f) {
|
||||
if (strcmp(mesh->name, "STGD2NS064_EFF_DISPLAY_MZ_000") && strcmp(mesh->name, "STGD2NS064_EFF_RAY_B_MZ_000"))
|
||||
continue;
|
||||
|
||||
+112
-40
@@ -9,8 +9,16 @@
|
||||
#include "../static_var.hpp"
|
||||
#include "../texture.hpp"
|
||||
|
||||
enum MaterialLightingType {
|
||||
MAT_SHADER_LIGHTING_LAMBERT = 0,
|
||||
MAT_SHADER_LIGHTING_CONSTANT,
|
||||
MAT_SHADER_LIGHTING_PHONG,
|
||||
};
|
||||
|
||||
static MaterialLightingType get_lighting_type(const obj_material_shader_attrib* attrib);
|
||||
|
||||
static bool draw_object_blend_set(render_data_context& rend_data_ctx,
|
||||
const mdl::ObjSubMeshArgs* args, obj_material_shader_lighting_type lighting_type);
|
||||
const mdl::ObjSubMeshArgs* args, MaterialLightingType lighting_type);
|
||||
static bool draw_object_blend_set_check_use_default_blend(int32_t index);
|
||||
static void draw_object_chara_color_fog_set(render_data_context& rend_data_ctx,
|
||||
const mdl::ObjSubMeshArgs* args, bool disable_fog);
|
||||
@@ -20,7 +28,7 @@ static void draw_object_material_reset_default(
|
||||
static void draw_object_material_set_cheap(
|
||||
render_data_context& rend_data_ctx, const mdl::ObjSubMeshArgs* args);
|
||||
static void draw_object_material_set_default(render_data_context& rend_data_ctx,
|
||||
const mdl::ObjSubMeshArgs* args, bool use_shader);
|
||||
const mdl::ObjSubMeshArgs* args, bool shader_sw);
|
||||
static void draw_object_material_set_parameter(
|
||||
render_data_context& rend_data_ctx, const obj_material_data* mat_data);
|
||||
static void draw_object_material_set_uniform(render_data_context& rend_data_ctx,
|
||||
@@ -34,6 +42,10 @@ static void draw_object_vertex_attrib_set_default(
|
||||
static void draw_object_vertex_attrib_set_cheap(
|
||||
render_data_context& rend_data_ctx, const mdl::ObjSubMeshArgs* args);
|
||||
|
||||
static int32_t get_tex_unit(TextureAttributeTextureType tex_type, int32_t tex_unit);
|
||||
int32_t get_texcoord(TextureAttributeTextureType tex_type, int32_t index);
|
||||
static int32_t get_uniform_blend(const obj_texture_attrib* attrib);
|
||||
|
||||
extern render_context* rctx_ptr;
|
||||
|
||||
namespace mdl {
|
||||
@@ -166,8 +178,7 @@ namespace mdl {
|
||||
const ObjSubMeshArgs* args, const cam_data& cam, const mat4* mat) {
|
||||
const obj_material_data* material = args->material;
|
||||
draw_object_vertex_attrib_set_cheap(rend_data_ctx, args);
|
||||
obj_material_shader_lighting_type lighting_type
|
||||
= material->material.shader_info.get_lighting_type();
|
||||
MaterialLightingType lighting_type = get_lighting_type(&material->material.shader_info);
|
||||
bool disable_fog = draw_object_blend_set(rend_data_ctx, args, lighting_type);
|
||||
draw_object_chara_color_fog_set(rend_data_ctx, args, disable_fog);
|
||||
draw_object_material_set_cheap(rend_data_ctx, args);
|
||||
@@ -299,7 +310,7 @@ namespace mdl {
|
||||
uint32_t texture_id = -1;
|
||||
if (!material->material.shader_compo.m.transparency) {
|
||||
for (int32_t i = 0; i < 8; i++, texdata++)
|
||||
if (texdata->shader_info.m.tex_type == OBJ_MATERIAL_TEXTURE_COLOR) {
|
||||
if (texdata->shader_info.m.tex_type == TEX_SHDATTR_TEXTURE_COLOR) {
|
||||
texture_id = texdata->tex_index;
|
||||
break;
|
||||
}
|
||||
@@ -307,7 +318,7 @@ namespace mdl {
|
||||
}
|
||||
else {
|
||||
for (int32_t i = 0; i < 8; i++, texdata++)
|
||||
if (texdata->shader_info.m.tex_type == OBJ_MATERIAL_TEXTURE_TRANSPARENCY) {
|
||||
if (texdata->shader_info.m.tex_type == TEX_SHDATTR_TEXTURE_TRNSP_MAP) {
|
||||
if (texdata->attrib.m.ignore) {
|
||||
texture_id = texdata->tex_index;
|
||||
}
|
||||
@@ -408,7 +419,7 @@ namespace mdl {
|
||||
switch (material->material.shader.index) {
|
||||
case SHADER_FT_CLOTH:
|
||||
if (!rctx_ptr->render_manager->npr_param && material->material.color.ambient.w < 1.0f
|
||||
&& material->material.shader_info.m.aniso_direction == OBJ_MATERIAL_ANISO_DIRECTION_NORMAL)
|
||||
&& material->material.shader_info.m.aniso_direction == MAT_SHDATTR_ANISO_DIRECTION_NORMAL)
|
||||
chara = true;
|
||||
break;
|
||||
case SHADER_FT_TIGHTS:
|
||||
@@ -470,7 +481,7 @@ inline void model_mat_face_camera_view(const cam_data& cam, const mat4* src, mat
|
||||
}
|
||||
|
||||
static bool draw_object_blend_set(render_data_context& rend_data_ctx,
|
||||
const mdl::ObjSubMeshArgs* args, obj_material_shader_lighting_type lighting_type) {
|
||||
const mdl::ObjSubMeshArgs* args, MaterialLightingType lighting_type) {
|
||||
static const GLenum blend_factor_table[] = {
|
||||
GL_ZERO,
|
||||
GL_ONE,
|
||||
@@ -508,9 +519,9 @@ static bool draw_object_blend_set(render_data_context& rend_data_ctx,
|
||||
if (shader_index == -1) {
|
||||
shader_index = material->material.shader.index;
|
||||
if (shader_index == SHADER_FT_BLINN) {
|
||||
if (lighting_type == OBJ_MATERIAL_SHADER_LIGHTING_CONSTANT)
|
||||
if (lighting_type == MAT_SHADER_LIGHTING_CONSTANT)
|
||||
shader_index = SHADER_FT_CONSTANT;
|
||||
if (lighting_type == OBJ_MATERIAL_SHADER_LIGHTING_LAMBERT)
|
||||
if (lighting_type == MAT_SHADER_LIGHTING_LAMBERT)
|
||||
shader_index = SHADER_FT_LAMBERT;
|
||||
}
|
||||
}
|
||||
@@ -653,11 +664,10 @@ static void draw_object_material_set_cheap(
|
||||
}
|
||||
|
||||
static void draw_object_material_set_default(render_data_context& rend_data_ctx,
|
||||
const mdl::ObjSubMeshArgs* args, bool use_shader) {
|
||||
const mdl::ObjSubMeshArgs* args, bool shader_sw) {
|
||||
const std::vector<GLuint>* textures = args->textures;
|
||||
const obj_material_data* material = args->material;
|
||||
obj_material_shader_lighting_type lighting_type =
|
||||
material->material.shader_info.get_lighting_type();
|
||||
MaterialLightingType lighting_type = get_lighting_type(&material->material.shader_info);
|
||||
bool disable_fog = draw_object_blend_set(rend_data_ctx, args, lighting_type);
|
||||
draw_object_material_set_uniform(rend_data_ctx, material, false);
|
||||
if (!rctx_ptr->draw_state->rend_data[rend_data_ctx.index].shadow)
|
||||
@@ -694,38 +704,38 @@ static void draw_object_material_set_default(render_data_context& rend_data_ctx,
|
||||
if (tex_id == -1)
|
||||
continue;
|
||||
|
||||
int32_t tex_index = obj_material_texture_type_get_texture_index(texdata->shader_info.m.tex_type, j);
|
||||
if (tex_index < 0)
|
||||
int32_t tex_unit = get_tex_unit(texdata->shader_info.m.tex_type, j);
|
||||
if (tex_unit < 0)
|
||||
continue;
|
||||
|
||||
obj_material_texture_type tex_type = texdata->shader_info.m.tex_type;
|
||||
if (tex_type == OBJ_MATERIAL_TEXTURE_COLOR)
|
||||
TextureAttributeTextureType tex_type = texdata->shader_info.m.tex_type;
|
||||
if (tex_type == TEX_SHDATTR_TEXTURE_COLOR)
|
||||
j++;
|
||||
|
||||
if (texdata->attrib.m.ignore) {
|
||||
switch (tex_type) {
|
||||
case OBJ_MATERIAL_TEXTURE_NORMAL:
|
||||
case TEX_SHDATTR_TEXTURE_NORMAL_MAP:
|
||||
rend_data_ctx.shader_flags.arr[U_NORMAL] = 0;
|
||||
break;
|
||||
case OBJ_MATERIAL_TEXTURE_SPECULAR:
|
||||
case TEX_SHDATTR_TEXTURE_SPECULAR_MAP:
|
||||
rend_data_ctx.shader_flags.arr[U_SPECULAR] = 0;
|
||||
break;
|
||||
case OBJ_MATERIAL_TEXTURE_TRANSLUCENCY:
|
||||
case TEX_SHDATTR_TEXTURE_TRNSL_MAP:
|
||||
rend_data_ctx.shader_flags.arr[U_TRANSLUCENCY] = 0;
|
||||
break;
|
||||
case OBJ_MATERIAL_TEXTURE_TRANSPARENCY:
|
||||
case TEX_SHDATTR_TEXTURE_TRNSP_MAP:
|
||||
rend_data_ctx.shader_flags.arr[U_TRANSPARENCY] = 0;
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if (tex_type == OBJ_MATERIAL_TEXTURE_ENVIRONMENT_CUBE) {
|
||||
rend_data_ctx.state.active_bind_texture_cube_map(tex_index, tex_id);
|
||||
rend_data_ctx.state.bind_sampler(tex_index, 0);
|
||||
if (tex_type == TEX_SHDATTR_TEXTURE_ENV_CUBE) {
|
||||
rend_data_ctx.state.active_bind_texture_cube_map(tex_unit, tex_id);
|
||||
rend_data_ctx.state.bind_sampler(tex_unit, 0);
|
||||
}
|
||||
else {
|
||||
rend_data_ctx.state.active_bind_texture_2d(tex_index, tex_id);
|
||||
rend_data_ctx.state.active_bind_texture_2d(tex_unit, tex_id);
|
||||
|
||||
int32_t wrap_s;
|
||||
if (texdata->attrib.m.mirror_u)
|
||||
@@ -744,13 +754,13 @@ static void draw_object_material_set_default(render_data_context& rend_data_ctx,
|
||||
wrap_t = 0;
|
||||
|
||||
texture* tex = texture_manager_get_texture(texture_id);
|
||||
rend_data_ctx.state.bind_sampler(tex_index, rctx_ptr->samplers[(wrap_t * 3 + wrap_s) * 2
|
||||
rend_data_ctx.state.bind_sampler(tex_unit, rctx_ptr->samplers[(wrap_t * 3 + wrap_s) * 2
|
||||
+ (!tex || tex->max_mipmap_level > 0 ? 1 : 0)]);
|
||||
}
|
||||
|
||||
if (material->material.shader.index == SHADER_FT_SKY) {
|
||||
uniform_name uni_type = U_TEX_0_TYPE;
|
||||
if (tex_index == 1)
|
||||
if (tex_unit == 1)
|
||||
uni_type = U_TEX_1_TYPE;
|
||||
|
||||
texture* tex = texture_manager_get_texture(texdata->tex_index);
|
||||
@@ -764,8 +774,8 @@ static void draw_object_material_set_default(render_data_context& rend_data_ctx,
|
||||
rend_data_ctx.shader_flags.arr[uni_type] = 1;
|
||||
}
|
||||
|
||||
if (tex_index >= 0 && tex_index <= 1)
|
||||
rend_data_ctx.shader_flags.arr[U_TEXTURE_BLEND] = texdata->attrib.get_blend();
|
||||
if (tex_unit >= 0 && tex_unit < 2)
|
||||
rend_data_ctx.shader_flags.arr[U_TEXTURE_BLEND] = get_uniform_blend(&texdata->attrib);
|
||||
}
|
||||
|
||||
if (material->material.attrib.m.double_sided) {
|
||||
@@ -786,7 +796,7 @@ static void draw_object_material_set_default(render_data_context& rend_data_ctx,
|
||||
vec4 specular = { 0.0f, 0.0f, 0.0f, 1.0f };
|
||||
|
||||
float_t line_light;
|
||||
if (lighting_type == OBJ_MATERIAL_SHADER_LIGHTING_PHONG) {
|
||||
if (lighting_type == MAT_SHADER_LIGHTING_PHONG) {
|
||||
specular = material->material.color.specular;
|
||||
|
||||
float_t luma = vec3::dot(*(vec3*)&specular, { 0.30f, 0.59f, 0.11f });
|
||||
@@ -810,7 +820,7 @@ static void draw_object_material_set_default(render_data_context& rend_data_ctx,
|
||||
vec4 texture_color_offset;
|
||||
vec4 texture_specular_coefficients;
|
||||
vec4 texture_specular_offset;
|
||||
if (lighting_type != OBJ_MATERIAL_SHADER_LIGHTING_CONSTANT) {
|
||||
if (lighting_type != MAT_SHADER_LIGHTING_CONSTANT) {
|
||||
if (material->material.shader.index == SHADER_FT_GLASEYE)
|
||||
material_shininess = 10.0f;
|
||||
else {
|
||||
@@ -853,16 +863,16 @@ static void draw_object_material_set_default(render_data_context& rend_data_ctx,
|
||||
specular, fresnel_coefficients, texture_color_coefficients, texture_color_offset,
|
||||
texture_specular_coefficients, texture_specular_offset, shininess);
|
||||
|
||||
if (!use_shader)
|
||||
if (!shader_sw)
|
||||
rend_data_ctx.set_shader(SHADER_FT_SIMPLE);
|
||||
else if (rctx_ptr->draw_state->rend_data[rend_data_ctx.index].shader_index != -1)
|
||||
rend_data_ctx.set_shader(rctx_ptr->draw_state->rend_data[rend_data_ctx.index].shader_index);
|
||||
else if (material->material.shader.index != -1) {
|
||||
if (material->material.shader.index != SHADER_FT_BLINN)
|
||||
rend_data_ctx.set_shader(material->material.shader.index);
|
||||
else if (lighting_type == OBJ_MATERIAL_SHADER_LIGHTING_LAMBERT)
|
||||
else if (lighting_type == MAT_SHADER_LIGHTING_LAMBERT)
|
||||
rend_data_ctx.set_shader(SHADER_FT_LAMBERT);
|
||||
else if (lighting_type == OBJ_MATERIAL_SHADER_LIGHTING_PHONG)
|
||||
else if (lighting_type == MAT_SHADER_LIGHTING_PHONG)
|
||||
rend_data_ctx.set_shader(SHADER_FT_BLINN);
|
||||
else
|
||||
rend_data_ctx.set_shader(SHADER_FT_CONSTANT);
|
||||
@@ -953,7 +963,7 @@ static void draw_object_material_set_uniform(render_data_context& rend_data_ctx,
|
||||
if (shader_compo.env_cube)
|
||||
rend_data_ctx.shader_flags.arr[U_ENV_MAP] = 1;
|
||||
|
||||
if (shader_info.aniso_direction != OBJ_MATERIAL_ANISO_DIRECTION_NORMAL)
|
||||
if (shader_info.aniso_direction != MAT_SHDATTR_ANISO_DIRECTION_NORMAL)
|
||||
rend_data_ctx.shader_flags.arr[U_ANISO] = shader_info.aniso_direction;
|
||||
|
||||
if (v4 == 1)
|
||||
@@ -1010,7 +1020,7 @@ static void draw_object_vertex_attrib_set_cheap(
|
||||
uint32_t tex_index = material->material.texdata[0].tex_index;
|
||||
|
||||
mats[0] = material->material.texdata[0].tex_coord_mat;
|
||||
if (material->material.texdata[0].shader_info.m.tex_type == OBJ_MATERIAL_TEXTURE_COLOR)
|
||||
if (material->material.texdata[0].shader_info.m.tex_type == TEX_SHDATTR_TEXTURE_COLOR)
|
||||
for (int32_t j = 0; j < args->texture_transform_count; j++)
|
||||
if (args->texture_transform_array[j].texid == tex_index) {
|
||||
mats[0] = args->texture_transform_array[j].mat;
|
||||
@@ -1056,12 +1066,11 @@ static void draw_object_vertex_attrib_set_default(
|
||||
if (texdata->tex_index == -1)
|
||||
continue;
|
||||
|
||||
int32_t texcoord_index = obj_material_texture_type_get_texcoord_index(
|
||||
texdata->shader_info.m.tex_type, j);
|
||||
int32_t texcoord_index = get_texcoord(texdata->shader_info.m.tex_type, j);
|
||||
if (texcoord_index < 0)
|
||||
continue;
|
||||
|
||||
if (texdata->shader_info.m.tex_type == OBJ_MATERIAL_TEXTURE_COLOR)
|
||||
if (texdata->shader_info.m.tex_type == TEX_SHDATTR_TEXTURE_COLOR)
|
||||
j++;
|
||||
|
||||
l++;
|
||||
@@ -1072,7 +1081,7 @@ static void draw_object_vertex_attrib_set_default(
|
||||
uint32_t texture_id = texdata->tex_index;
|
||||
|
||||
mats[texcoord_index] = texdata->tex_coord_mat;
|
||||
if (texdata->shader_info.m.tex_type == OBJ_MATERIAL_TEXTURE_COLOR)
|
||||
if (texdata->shader_info.m.tex_type == TEX_SHDATTR_TEXTURE_COLOR)
|
||||
for (int32_t k = 0; k < args->texture_transform_count; k++)
|
||||
if (args->texture_transform_array[k].texid == texture_id) {
|
||||
mats[texcoord_index] = args->texture_transform_array[k].mat;
|
||||
@@ -1108,3 +1117,66 @@ static void draw_object_vertex_attrib_set_default(
|
||||
else
|
||||
rend_data_ctx.shader_flags.arr[U_INSTANCE] = 0;*/
|
||||
}
|
||||
|
||||
// 0x140440E00
|
||||
static MaterialLightingType get_lighting_type(const obj_material_shader_attrib* attrib) {
|
||||
if (!attrib->m.is_lgt_diffuse && !attrib->m.is_lgt_specular)
|
||||
return MAT_SHADER_LIGHTING_CONSTANT;
|
||||
else if (!attrib->m.is_lgt_specular)
|
||||
return MAT_SHADER_LIGHTING_LAMBERT;
|
||||
else
|
||||
return MAT_SHADER_LIGHTING_PHONG;
|
||||
}
|
||||
|
||||
// 0x140440E40
|
||||
static int32_t get_tex_unit(TextureAttributeTextureType tex_type, int32_t tex_unit) {
|
||||
switch (tex_type) {
|
||||
case TEX_SHDATTR_TEXTURE_COLOR:
|
||||
case TEX_SHDATTR_TEXTURE_ENV_SPHERE: // XHD
|
||||
if (tex_unit < 2)
|
||||
return tex_unit;
|
||||
case TEX_SHDATTR_TEXTURE_NORMAL_MAP:
|
||||
return 2;
|
||||
case TEX_SHDATTR_TEXTURE_SPECULAR_MAP:
|
||||
return 3;
|
||||
case TEX_SHDATTR_TEXTURE_TRNSL_MAP:
|
||||
return 1;
|
||||
case TEX_SHDATTR_TEXTURE_TRNSP_MAP:
|
||||
return 4;
|
||||
//case TEX_SHDATTR_TEXTURE_ENV_SPHERE: // AFT
|
||||
case TEX_SHDATTR_TEXTURE_ENV_CUBE:
|
||||
return 5;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
// 0x140440EB0
|
||||
int32_t get_texcoord(TextureAttributeTextureType tex_type, int32_t index) {
|
||||
switch (tex_type) {
|
||||
case TEX_SHDATTR_TEXTURE_COLOR:
|
||||
case TEX_SHDATTR_TEXTURE_ENV_SPHERE: // XHD
|
||||
if (index < 2)
|
||||
return index;
|
||||
case TEX_SHDATTR_TEXTURE_NORMAL_MAP:
|
||||
case TEX_SHDATTR_TEXTURE_SPECULAR_MAP:
|
||||
return 0;
|
||||
case TEX_SHDATTR_TEXTURE_TRNSL_MAP:
|
||||
case TEX_SHDATTR_TEXTURE_TRNSP_MAP:
|
||||
return 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
// 0x140440EE0
|
||||
static int32_t get_uniform_blend(const obj_texture_attrib* attrib) {
|
||||
switch (attrib->m.blend) {
|
||||
case 4:
|
||||
return 2;
|
||||
case 6:
|
||||
return 1;
|
||||
case 16:
|
||||
return 3;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
+26
-58
@@ -105,45 +105,6 @@ ObjsetInfo::~ObjsetInfo() {
|
||||
farc_file_handler.reset();
|
||||
}
|
||||
|
||||
inline int32_t obj_material_texture_type_get_texcoord_index(
|
||||
obj_material_texture_type type, int32_t index) {
|
||||
switch (type) {
|
||||
case OBJ_MATERIAL_TEXTURE_COLOR:
|
||||
case OBJ_MATERIAL_TEXTURE_ENVIRONMENT_SPHERE: // XHD
|
||||
if (index < 2)
|
||||
return index;
|
||||
case OBJ_MATERIAL_TEXTURE_NORMAL:
|
||||
case OBJ_MATERIAL_TEXTURE_SPECULAR:
|
||||
return 0;
|
||||
case OBJ_MATERIAL_TEXTURE_TRANSLUCENCY:
|
||||
case OBJ_MATERIAL_TEXTURE_TRANSPARENCY:
|
||||
return 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
inline int32_t obj_material_texture_type_get_texture_index(
|
||||
obj_material_texture_type type, int32_t base_index) {
|
||||
switch (type) {
|
||||
case OBJ_MATERIAL_TEXTURE_COLOR:
|
||||
case OBJ_MATERIAL_TEXTURE_ENVIRONMENT_SPHERE: // XHD
|
||||
if (base_index < 2)
|
||||
return base_index;
|
||||
case OBJ_MATERIAL_TEXTURE_NORMAL:
|
||||
return 2;
|
||||
case OBJ_MATERIAL_TEXTURE_SPECULAR:
|
||||
return 3;
|
||||
case OBJ_MATERIAL_TEXTURE_TRANSLUCENCY:
|
||||
return 1;
|
||||
case OBJ_MATERIAL_TEXTURE_TRANSPARENCY:
|
||||
return 4;
|
||||
//case OBJ_MATERIAL_TEXTURE_ENVIRONMENT_SPHERE: // AFT
|
||||
case OBJ_MATERIAL_TEXTURE_ENVIRONMENT_CUBE:
|
||||
return 5;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
// 0x1405E9250
|
||||
void obj_skin_set_matrix_buffer(const obj_skin* s, const mat4* matrices,
|
||||
const mat4* ex_data_matrices, mat4* matrix_buffer, const mat4* mat, const mat4& global_mat) {
|
||||
@@ -341,13 +302,13 @@ void object_material_msgpack_read(const char* path, const char* set_name,
|
||||
if (shader_info) {
|
||||
msgpack* vtx_trans_type = shader_info->read("vtx_trans_type");
|
||||
if (vtx_trans_type)
|
||||
mat.shader_info.m.vtx_trans_type = (obj_material_vertex_translation_type)
|
||||
mat.shader_info.m.vtx_trans_type = (MaterialAttributeVertexTransType)
|
||||
vtx_trans_type->read_uint32_t();
|
||||
|
||||
msgpack* col_src = shader_info->read("col_src");
|
||||
if (col_src)
|
||||
mat.shader_info.m.col_src
|
||||
= (obj_material_color_source_type)col_src->read_uint32_t("col_src");
|
||||
= (MaterialAttributeColorSourceType)col_src->read_uint32_t("col_src");
|
||||
|
||||
msgpack* is_lgt_diffuse = shader_info->read("is_lgt_diffuse");
|
||||
if (is_lgt_diffuse)
|
||||
@@ -366,17 +327,22 @@ void object_material_msgpack_read(const char* path, const char* set_name,
|
||||
mat.shader_info.m.is_lgt_double = is_lgt_double->read_bool() ? 1 : 0;
|
||||
|
||||
msgpack* bump_map_type = shader_info->read("bump_map_type");
|
||||
if (bump_map_type)
|
||||
mat.shader_info.m.bump_map_type = (obj_material_bump_map_type)
|
||||
bump_map_type->read_uint32_t();
|
||||
if (bump_map_type) {
|
||||
mat.shader_info.m.bump_map_type
|
||||
= (MaterialAttributeBumpMapType)bump_map_type->read_uint32_t();
|
||||
}
|
||||
|
||||
msgpack* fresnel_type = shader_info->read("fresnel_type");
|
||||
if (fresnel_type)
|
||||
mat.shader_info.m.fresnel_type = fresnel_type->read_uint32_t();
|
||||
if (fresnel_type) {
|
||||
mat.shader_info.m.fresnel_type
|
||||
= (MaterialAttributeFresnelType)fresnel_type->read_uint32_t();
|
||||
}
|
||||
|
||||
msgpack* line_light = shader_info->read("line_light");
|
||||
if (line_light)
|
||||
mat.shader_info.m.line_light = line_light->read_uint32_t();
|
||||
if (line_light) {
|
||||
mat.shader_info.m.line_light
|
||||
= (MaterialAttributeLineLightType)line_light->read_uint32_t();
|
||||
}
|
||||
|
||||
msgpack* receive_shadow = shader_info->read({ "receive_shadow", "recieve_shadow" });
|
||||
if (receive_shadow)
|
||||
@@ -387,14 +353,16 @@ void object_material_msgpack_read(const char* path, const char* set_name,
|
||||
mat.shader_info.m.cast_shadow = cast_shadow->read_bool() ? 1 : 0;
|
||||
|
||||
msgpack* specular_quality = shader_info->read("specular_quality");
|
||||
if (specular_quality)
|
||||
mat.shader_info.m.specular_quality = (obj_material_specular_quality)
|
||||
specular_quality->read_uint32_t();
|
||||
if (specular_quality) {
|
||||
mat.shader_info.m.specular_quality
|
||||
= (MaterialAttributeSpecularQuality)specular_quality->read_uint32_t();
|
||||
}
|
||||
|
||||
msgpack* aniso_direction = shader_info->read("aniso_direction");
|
||||
if (aniso_direction)
|
||||
mat.shader_info.m.aniso_direction = (obj_material_aniso_direction)
|
||||
aniso_direction->read_uint32_t();
|
||||
if (aniso_direction) {
|
||||
mat.shader_info.m.aniso_direction
|
||||
= (MaterialAttributeAnisoDirection)aniso_direction->read_uint32_t();
|
||||
}
|
||||
|
||||
msgpack* dummy = shader_info->read("dummy");
|
||||
if (dummy)
|
||||
@@ -479,10 +447,10 @@ void object_material_msgpack_read(const char* path, const char* set_name,
|
||||
|
||||
msgpack* shader_info = tex->read("shader_info");
|
||||
if (shader_info) {
|
||||
l.shader_info.m.tex_type = (obj_material_texture_type)
|
||||
l.shader_info.m.tex_type = (TextureAttributeTextureType)
|
||||
shader_info->read_uint32_t("tex_type");
|
||||
l.shader_info.m.uv_idx = shader_info->read_uint32_t("uv_idx");
|
||||
l.shader_info.m.texcoord_trans = (obj_material_texture_coordinate_translation_type)
|
||||
l.shader_info.m.texcoord_trans = (TextureAttributeTextureCoordTransType)
|
||||
shader_info->read_uint32_t("texcoord_trans");
|
||||
l.shader_info.m.dummy = shader_info->read_uint32_t("dummy");
|
||||
}
|
||||
@@ -577,12 +545,12 @@ void object_material_msgpack_read(const char* path, const char* set_name,
|
||||
|
||||
msgpack* src_blend_factor = attrib->read("src_blend_factor");
|
||||
if (src_blend_factor)
|
||||
mat.attrib.m.src_blend_factor = (obj_material_blend_factor)
|
||||
mat.attrib.m.src_blend_factor = (MaterialAttributeBlendFactor)
|
||||
src_blend_factor->read_uint32_t();
|
||||
|
||||
msgpack* dst_blend_factor = attrib->read("dst_blend_factor");
|
||||
if (dst_blend_factor)
|
||||
mat.attrib.m.dst_blend_factor = (obj_material_blend_factor)
|
||||
mat.attrib.m.dst_blend_factor = (MaterialAttributeBlendFactor)
|
||||
dst_blend_factor->read_uint32_t();
|
||||
|
||||
msgpack* blend_operation = attrib->read("blend_operation");
|
||||
|
||||
@@ -69,11 +69,6 @@ struct ObjsetInfoObject {
|
||||
int32_t index;
|
||||
};
|
||||
|
||||
extern int32_t obj_material_texture_type_get_texcoord_index(
|
||||
obj_material_texture_type type, int32_t index);
|
||||
extern int32_t obj_material_texture_type_get_texture_index(
|
||||
obj_material_texture_type type, int32_t base_index);
|
||||
|
||||
extern void obj_skin_set_matrix_buffer(const obj_skin* s, const mat4* matrices,
|
||||
const mat4* ex_data_matrices, mat4* matrix_buffer, const mat4* mat, const mat4& global_mat);
|
||||
|
||||
|
||||
+16
-16
@@ -3086,12 +3086,12 @@ float_t rob_chara::get_face_depth() const {
|
||||
return item.get_face_depth();
|
||||
}
|
||||
|
||||
float_t rob_chara::get_pos_scale(ROB_COLLI_ID colli_id, vec3& center) {
|
||||
if (colli_id < 0 || colli_id >= ROB_COLLI_ID_MAX)
|
||||
float_t rob_chara::get_pos_scale(CB cb, vec3& center) {
|
||||
if (cb < 0 || cb >= CB_NUM)
|
||||
return 0.0f;
|
||||
|
||||
center = rob_base.collision.cb_hit[colli_id].ball.c;
|
||||
return rob_base.collision.cb_hit[colli_id].ball.r;
|
||||
center = rob_base.collision.cb_hit[cb].ball.c;
|
||||
return rob_base.collision.cb_hit[cb].ball.r;
|
||||
}
|
||||
|
||||
// 0x140532090
|
||||
@@ -3170,7 +3170,7 @@ void rob_chara::init_colli_every_frame() {
|
||||
prj::BallCollision* cb_rob = collision.cb_rob;
|
||||
prj::BallCollision* cb_stg = collision.cb_stg;
|
||||
|
||||
for (int32_t i = 0; i < ROB_COLLI_ID_MAX; i++, cb_hit++, cb_rob++, cb_stg++) {
|
||||
for (int32_t i = 0; i < CB_NUM; i++, cb_hit++, cb_rob++, cb_stg++) {
|
||||
if (max_ypos < cb_hit->ball.c.y) {
|
||||
max_ypos = cb_hit->ball.c.y;
|
||||
max_idx = i;
|
||||
@@ -3868,7 +3868,7 @@ void rob_chara::ctrl_rob_disp_main() {
|
||||
disp->set_opd_blend_data(&bone_data->motion_loaded);
|
||||
|
||||
vec3 pos = 0.0f;
|
||||
get_pos_scale(ROB_COLLI_ID_KOSHI, pos);
|
||||
get_pos_scale(CB_KOSI, pos);
|
||||
disp->position = pos;
|
||||
RobDisp_ctrl(disp);
|
||||
if (check_for_ageageagain_module()) {
|
||||
@@ -5624,7 +5624,7 @@ void rob_chara::calc_rob_colli_matrix() {
|
||||
const RobCollisionData* colli = rob_data->colli_data;
|
||||
const RobCollisionData* push_colli = rob_data->push_colli_data;
|
||||
mat4 m;
|
||||
for (int32_t i = 0; i < ROB_COLLI_ID_MAX; i++) {
|
||||
for (int32_t i = 0; i < CB_NUM; i++) {
|
||||
mat4_mul_translate(bone_data->get_mats_mat(colli->bone), &colli->trans, &m);
|
||||
*mat = m;
|
||||
|
||||
@@ -6843,17 +6843,17 @@ void RobMhPp::func_31(
|
||||
|
||||
static int32_t sub_140533440(int32_t a1) {
|
||||
static const uint8_t byte_140A2D538[] = {
|
||||
ROB_COLLI_ID_KOSHI, ROB_COLLI_ID_MUNE_L, ROB_COLLI_ID_MUNE_R, ROB_COLLI_ID_KUBI, ROB_COLLI_ID_KAO,
|
||||
ROB_COLLI_ID_KATA_L1, ROB_COLLI_ID_KATA_L2, ROB_COLLI_ID_UDE_L1, ROB_COLLI_ID_UDE_L2, ROB_COLLI_ID_TE_L,
|
||||
ROB_COLLI_ID_KATA_R1, ROB_COLLI_ID_KATA_R2, ROB_COLLI_ID_UDE_R1, ROB_COLLI_ID_UDE_R2, ROB_COLLI_ID_TE_R,
|
||||
ROB_COLLI_ID_MOMO_L1, ROB_COLLI_ID_MOMO_L2, ROB_COLLI_ID_SUNE_L1,
|
||||
ROB_COLLI_ID_SUNE_L2, ROB_COLLI_ID_ASI_L, ROB_COLLI_ID_TOE_L,
|
||||
ROB_COLLI_ID_MOMO_R1, ROB_COLLI_ID_MOMO_R2, ROB_COLLI_ID_SUNE_R1,
|
||||
ROB_COLLI_ID_SUNE_R2, ROB_COLLI_ID_ASI_R, ROB_COLLI_ID_TOE_R,
|
||||
CB_KOSI, CB_MUNE1, CB_MUNE2, CB_KUBI, CB_KAO,
|
||||
CB_KATA_L1, CB_KATA_L2, CB_UDE_L1, CB_UDE_L2, CB_TE_L,
|
||||
CB_KATA_R1, CB_KATA_R2, CB_UDE_R1, CB_UDE_R2, CB_TE_R,
|
||||
CB_MOMO_L1, CB_MOMO_L2, CB_SUNE_L1,
|
||||
CB_SUNE_L2, CB_ASI_L, CB_TOE_L,
|
||||
CB_MOMO_R1, CB_MOMO_R2, CB_SUNE_R1,
|
||||
CB_SUNE_R2, CB_ASI_R, CB_TOE_R,
|
||||
};
|
||||
|
||||
int32_t v3 = a1 & 0xF800001F;
|
||||
for (int32_t i = 0; i < ROB_COLLI_ID_MAX; i++)
|
||||
for (int32_t i = 0; i < CB_NUM; i++)
|
||||
if (a1 & (1 << i))
|
||||
v3 |= 1 << byte_140A2D538[i];
|
||||
return v3;
|
||||
@@ -6887,7 +6887,7 @@ void RobMhPp::func_32(
|
||||
if (!(v10 & (1 << i)))
|
||||
continue;
|
||||
|
||||
for (int32_t j = 0; j < ROB_COLLI_ID_MAX; j++) {
|
||||
for (int32_t j = 0; j < CB_NUM; j++) {
|
||||
if (!(v5 & (1 << j)))
|
||||
continue;
|
||||
|
||||
|
||||
+54
-48
@@ -728,12 +728,52 @@ enum BONE_NODE {
|
||||
BONE_NODE_MAX = 0xC9,
|
||||
};
|
||||
|
||||
enum CB {
|
||||
CB_NONE = -1,
|
||||
|
||||
CB_KOSI = 0,
|
||||
CB_MUNE1,
|
||||
CB_MUNE2,
|
||||
CB_KUBI,
|
||||
CB_KAO,
|
||||
CB_KATA_R1,
|
||||
CB_KATA_R2,
|
||||
CB_UDE_R1,
|
||||
CB_UDE_R2,
|
||||
CB_TE_R,
|
||||
CB_KATA_L1,
|
||||
CB_KATA_L2,
|
||||
CB_UDE_L1,
|
||||
CB_UDE_L2,
|
||||
CB_TE_L,
|
||||
CB_MOMO_R1,
|
||||
CB_MOMO_R2,
|
||||
CB_SUNE_R1,
|
||||
CB_SUNE_R2,
|
||||
CB_ASI_R,
|
||||
CB_TOE_R,
|
||||
CB_MOMO_L1,
|
||||
CB_MOMO_L2,
|
||||
CB_SUNE_L1,
|
||||
CB_SUNE_L2,
|
||||
CB_ASI_L,
|
||||
CB_TOE_L,
|
||||
CB_NUM,
|
||||
};
|
||||
|
||||
enum CCmdYkType {
|
||||
CCMD_YK_TYPE_NON = 0,
|
||||
CCMD_YK_TYPE_R,
|
||||
CCMD_YK_TYPE_L,
|
||||
};
|
||||
|
||||
enum ColliBallType {
|
||||
CB_TYPE_HIT = 0,
|
||||
CB_TYPE_ROB,
|
||||
CB_TYPE_STG,
|
||||
CB_TYPE_MAX,
|
||||
};
|
||||
|
||||
enum Expr_type {
|
||||
Expr_constant = 0,
|
||||
Expr_variable,
|
||||
@@ -1795,40 +1835,6 @@ enum ReviseType {
|
||||
REVISE_TYPE_MAX,
|
||||
};
|
||||
|
||||
// Pure assumption
|
||||
enum ROB_COLLI_ID {
|
||||
ROB_COLLI_ID_DUMMY = -1,
|
||||
|
||||
ROB_COLLI_ID_KOSHI = 0,
|
||||
ROB_COLLI_ID_MUNE_L,
|
||||
ROB_COLLI_ID_MUNE_R,
|
||||
ROB_COLLI_ID_KUBI,
|
||||
ROB_COLLI_ID_KAO,
|
||||
ROB_COLLI_ID_KATA_R1,
|
||||
ROB_COLLI_ID_KATA_R2,
|
||||
ROB_COLLI_ID_UDE_R1,
|
||||
ROB_COLLI_ID_UDE_R2,
|
||||
ROB_COLLI_ID_TE_R,
|
||||
ROB_COLLI_ID_KATA_L1,
|
||||
ROB_COLLI_ID_KATA_L2,
|
||||
ROB_COLLI_ID_UDE_L1,
|
||||
ROB_COLLI_ID_UDE_L2,
|
||||
ROB_COLLI_ID_TE_L,
|
||||
ROB_COLLI_ID_MOMO_R1,
|
||||
ROB_COLLI_ID_MOMO_R2,
|
||||
ROB_COLLI_ID_SUNE_R1,
|
||||
ROB_COLLI_ID_SUNE_R2,
|
||||
ROB_COLLI_ID_ASI_R,
|
||||
ROB_COLLI_ID_TOE_R,
|
||||
ROB_COLLI_ID_MOMO_L1,
|
||||
ROB_COLLI_ID_MOMO_L2,
|
||||
ROB_COLLI_ID_SUNE_L1,
|
||||
ROB_COLLI_ID_SUNE_L2,
|
||||
ROB_COLLI_ID_ASI_L,
|
||||
ROB_COLLI_ID_TOE_L,
|
||||
ROB_COLLI_ID_MAX,
|
||||
};
|
||||
|
||||
enum ROB_ID {
|
||||
ROB_ID_1P = 0,
|
||||
ROB_ID_2P,
|
||||
@@ -4699,9 +4705,9 @@ struct RobMotData {
|
||||
prj::BitArray<17> revise_flag;
|
||||
uint32_t rob_cam_flag;
|
||||
RobTarget target;
|
||||
bool colliball_flag[3][ROB_COLLI_ID_MAX];
|
||||
float_t colliball_ratio[3][ROB_COLLI_ID_MAX];
|
||||
float_t colliball_timer[3][ROB_COLLI_ID_MAX];
|
||||
bool colliball_flag[3][CB_NUM];
|
||||
float_t colliball_ratio[3][CB_NUM];
|
||||
float_t colliball_timer[3][CB_NUM];
|
||||
prj::BitArray<41> touch_nage_mask;
|
||||
float_t arm_adjust_next_value; // X
|
||||
float_t arm_adjust_prev_value; // X
|
||||
@@ -4845,21 +4851,21 @@ struct RobCollision {
|
||||
float_t sink_wall;
|
||||
int32_t wall_idx;
|
||||
vec3 wall_hit_pos;
|
||||
mat4 mat[ROB_COLLI_ID_MAX];
|
||||
mat4 push_mat[ROB_COLLI_ID_MAX];
|
||||
prj::BallCollision cb_hit[ROB_COLLI_ID_MAX];
|
||||
prj::BallCollision cb_rob[ROB_COLLI_ID_MAX];
|
||||
prj::BallCollision cb_stg[ROB_COLLI_ID_MAX];
|
||||
pos_scale field_1AA0[ROB_COLLI_ID_MAX];
|
||||
float_t field_1BE4[ROB_COLLI_ID_MAX];
|
||||
mat4 mat[CB_NUM];
|
||||
mat4 push_mat[CB_NUM];
|
||||
prj::BallCollision cb_hit[CB_NUM];
|
||||
prj::BallCollision cb_rob[CB_NUM];
|
||||
prj::BallCollision cb_stg[CB_NUM];
|
||||
pos_scale field_1AA0[CB_NUM];
|
||||
float_t field_1BE4[CB_NUM];
|
||||
prj::vector_pair<int64_t, float_t> field_1C50;
|
||||
int64_t field_1C68;
|
||||
int64_t field_1C70;
|
||||
int64_t field_1C78;
|
||||
int64_t field_1C80;
|
||||
int32_t field_1C88[ROB_COLLI_ID_MAX];
|
||||
int32_t field_1CF4[ROB_COLLI_ID_MAX];
|
||||
int32_t field_1D60[ROB_COLLI_ID_MAX];
|
||||
int32_t field_1C88[CB_NUM];
|
||||
int32_t field_1CF4[CB_NUM];
|
||||
int32_t field_1D60[CB_NUM];
|
||||
int32_t field_1DCC;
|
||||
int32_t field_1DD0;
|
||||
int32_t field_1DD4;
|
||||
@@ -5040,7 +5046,7 @@ public:
|
||||
const vec3* get_gpos() const;
|
||||
object_info get_rob_data_face_object(int32_t index);
|
||||
float_t get_face_depth() const;
|
||||
float_t get_pos_scale(ROB_COLLI_ID colli_id, vec3& center);
|
||||
float_t get_pos_scale(CB cb, vec3& center);
|
||||
const RobData* get_rob_data() const;
|
||||
const RobInit* get_rob_init() const;
|
||||
void init_colli_every_frame();
|
||||
|
||||
@@ -329,28 +329,6 @@ obj_bounding_sphere::obj_bounding_sphere(vec3 center, float_t radius) {
|
||||
this->radius = radius;
|
||||
}
|
||||
|
||||
obj_material_shader_lighting_type obj_material_shader_attrib::get_lighting_type() const {
|
||||
if (!m.is_lgt_diffuse && !m.is_lgt_specular)
|
||||
return OBJ_MATERIAL_SHADER_LIGHTING_CONSTANT;
|
||||
else if (!m.is_lgt_specular)
|
||||
return OBJ_MATERIAL_SHADER_LIGHTING_LAMBERT;
|
||||
else
|
||||
return OBJ_MATERIAL_SHADER_LIGHTING_PHONG;
|
||||
}
|
||||
|
||||
int32_t obj_texture_attrib::get_blend() const {
|
||||
switch (m.blend) {
|
||||
case 4:
|
||||
return 2;
|
||||
case 6:
|
||||
return 1;
|
||||
case 16:
|
||||
return 3;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
obj_material_texture_data::obj_material_texture_data() : attrib(),
|
||||
tex_index(), shader_info(), ex_shader(), weight(), reserved() {
|
||||
|
||||
|
||||
+135
-85
@@ -11,82 +11,136 @@
|
||||
#include "mat.hpp"
|
||||
#include "vec.hpp"
|
||||
|
||||
enum MaterialAttributeAnisoDirection : uint32_t {
|
||||
MAT_SHDATTR_ANISO_DIRECTION_DEFAULT = 0,
|
||||
|
||||
MAT_SHDATTR_ANISO_DIRECTION_NORMAL = 0,
|
||||
MAT_SHDATTR_ANISO_DIRECTION_U,
|
||||
MAT_SHDATTR_ANISO_DIRECTION_V,
|
||||
MAT_SHDATTR_ANISO_DIRECTION_RADIAL,
|
||||
MAT_SHDATTR_ANISO_DIRECTION_MAX,
|
||||
};
|
||||
|
||||
enum MaterialAttributeBlendFactor : uint32_t {
|
||||
MAT_ATTR_BLEND_DEFAULT = 0,
|
||||
|
||||
MAT_ATTR_BLEND_ZERO = 0,
|
||||
MAT_ATTR_BLEND_ONE,
|
||||
MAT_ATTR_BLEND_SRC_COLOR,
|
||||
MAT_ATTR_BLEND_INVERSE_SRC_COLOR,
|
||||
MAT_ATTR_BLEND_SRC_ALPHA,
|
||||
MAT_ATTR_BLEND_INVERSE_SRC_ALPHA,
|
||||
MAT_ATTR_BLEND_DST_ALPHA,
|
||||
MAT_ATTR_BLEND_INVERSE_DST_ALPHA,
|
||||
MAT_ATTR_BLEND_DST_COLOR,
|
||||
MAT_ATTR_BLEND_INVERSE_DST_COLOR,
|
||||
MAT_ATTR_BLEND_ALPHA_SATURATE,
|
||||
MAT_ATTR_BLEND_MAX,
|
||||
};
|
||||
|
||||
enum MaterialAttributeBumpMapType : uint32_t {
|
||||
MAT_SHDATTR_BUMP_DEFAULT = 0,
|
||||
|
||||
MAT_SHDATTR_BUMP_NONE = 0,
|
||||
MAT_SHDATTR_BUMP_DOT,
|
||||
MAT_SHDATTR_BUMP_ENV,
|
||||
MAT_SHDATTR_BUMP_MAX,
|
||||
};
|
||||
|
||||
enum MaterialAttributeColorSourceType : uint32_t {
|
||||
MAT_SHDATTR_COL_SRC_DEFAULT = 0,
|
||||
|
||||
MAT_SHDATTR_COL_SRC_MATCOL = 0,
|
||||
MAT_SHDATTR_COL_SRC_VTXCOL,
|
||||
MAT_SHDATTR_COL_SRC_VTXMORPH,
|
||||
MAT_SHDATTR_COL_SRC_MAX,
|
||||
};
|
||||
|
||||
enum MaterialAttributeFresnelType : uint32_t {
|
||||
MAT_SHDATTR_FRESNEL_DEFAULT = 0,
|
||||
|
||||
MAT_SHDATTR_FRESNEL_NONE = 0,
|
||||
MAT_SHDATTR_FRESNEL_TYPE1,
|
||||
MAT_SHDATTR_FRESNEL_TYPE2,
|
||||
MAT_SHDATTR_FRESNEL_TYPE3,
|
||||
MAT_SHDATTR_FRESNEL_TYPE4,
|
||||
MAT_SHDATTR_FRESNEL_TYPE5,
|
||||
MAT_SHDATTR_FRESNEL_TYPE6,
|
||||
MAT_SHDATTR_FRESNEL_TYPE7,
|
||||
MAT_SHDATTR_FRESNEL_TYPE8,
|
||||
MAT_SHDATTR_FRESNEL_TYPE9,
|
||||
MAT_SHDATTR_FRESNEL_TYPE10,
|
||||
MAT_SHDATTR_FRESNEL_TYPE11,
|
||||
MAT_SHDATTR_FRESNEL_TYPE12,
|
||||
MAT_SHDATTR_FRESNEL_TYPE13,
|
||||
MAT_SHDATTR_FRESNEL_TYPE14,
|
||||
MAT_SHDATTR_FRESNEL_TYPE15,
|
||||
MAT_SHDATTR_FRESNEL_MAX,
|
||||
};
|
||||
|
||||
enum MaterialAttributeLineLightType : uint32_t {
|
||||
MAT_SHDATTR_LINELIGHT_DEFAULT = 0,
|
||||
|
||||
MAT_SHDATTR_LINELIGHT_NONE = 0,
|
||||
MAT_SHDATTR_LINELIGHT_TYPE1,
|
||||
MAT_SHDATTR_LINELIGHT_TYPE2,
|
||||
MAT_SHDATTR_LINELIGHT_TYPE3,
|
||||
MAT_SHDATTR_LINELIGHT_TYPE4,
|
||||
MAT_SHDATTR_LINELIGHT_TYPE5,
|
||||
MAT_SHDATTR_LINELIGHT_TYPE6,
|
||||
MAT_SHDATTR_LINELIGHT_TYPE7,
|
||||
MAT_SHDATTR_LINELIGHT_TYPE8,
|
||||
MAT_SHDATTR_LINELIGHT_TYPE9,
|
||||
MAT_SHDATTR_LINELIGHT_MAX,
|
||||
};
|
||||
|
||||
enum MaterialAttributeSpecularQuality : uint32_t {
|
||||
MAT_SHDATTR_SPECULAR_QUALITY_DEFAULT = 0,
|
||||
|
||||
MAT_SHDATTR_SPECULAR_QUALITY_LOW = 0,
|
||||
MAT_SHDATTR_SPECULAR_QUALITY_HIGH,
|
||||
MAT_SHDATTR_SPECULAR_QUALITY_MAX,
|
||||
};
|
||||
|
||||
enum TextureAttributeTextureCoordTransType : uint32_t {
|
||||
TEX_SHDATTR_TEXCOORD_TRANS_DEFAULT = 0,
|
||||
|
||||
TEX_SHDATTR_TEXCOORD_TRANS_NONE = 0,
|
||||
TEX_SHDATTR_TEXCOORD_TRANS_UV,
|
||||
TEX_SHDATTR_TEXCOORD_TRANS_ENV_SPHERE,
|
||||
TEX_SHDATTR_TEXCOORD_TRANS_ENV_CUBE,
|
||||
TEX_SHDATTR_TEXCOORD_TRANS_MAX,
|
||||
};
|
||||
|
||||
enum TextureAttributeTextureType : uint32_t {
|
||||
TEX_SHDATTR_TEXTURE_DEFAULT = 0,
|
||||
|
||||
TEX_SHDATTR_TEXTURE_NONE = 0,
|
||||
TEX_SHDATTR_TEXTURE_COLOR,
|
||||
TEX_SHDATTR_TEXTURE_NORMAL_MAP,
|
||||
TEX_SHDATTR_TEXTURE_SPECULAR_MAP,
|
||||
TEX_SHDATTR_TEXTURE_HEIGHT_MAP,
|
||||
TEX_SHDATTR_TEXTURE_REFLECT_MAP,
|
||||
TEX_SHDATTR_TEXTURE_TRNSL_MAP,
|
||||
TEX_SHDATTR_TEXTURE_TRNSP_MAP,
|
||||
TEX_SHDATTR_TEXTURE_ENV_SPHERE,
|
||||
TEX_SHDATTR_TEXTURE_ENV_CUBE,
|
||||
TEX_SHDATTR_TEXTURE_TRANS_MAX,
|
||||
};
|
||||
|
||||
enum MaterialAttributeVertexTransType : uint32_t {
|
||||
MAT_SHDATTR_VERTEX_TRANS_DEFAULT = 0,
|
||||
MAT_SHDATTR_VERTEX_TRANS_ENVELOPE,
|
||||
MAT_SHDATTR_VERTEX_TRANS_MORPHING,
|
||||
MAT_SHDATTR_VERTEX_TRANS_MAX,
|
||||
};
|
||||
|
||||
enum obj_index_format : uint32_t {
|
||||
OBJ_INDEX_U8 = 0x00,
|
||||
OBJ_INDEX_U16 = 0x01,
|
||||
OBJ_INDEX_U32 = 0x02,
|
||||
};
|
||||
|
||||
enum obj_material_aniso_direction : uint32_t {
|
||||
OBJ_MATERIAL_ANISO_DIRECTION_NORMAL = 0,
|
||||
OBJ_MATERIAL_ANISO_DIRECTION_U = 1,
|
||||
OBJ_MATERIAL_ANISO_DIRECTION_V = 2,
|
||||
OBJ_MATERIAL_ANISO_DIRECTION_RADIAL = 3,
|
||||
};
|
||||
|
||||
enum obj_material_blend_factor : uint32_t {
|
||||
OBJ_MATERIAL_BLEND_ZERO = 0,
|
||||
OBJ_MATERIAL_BLEND_ONE = 1,
|
||||
OBJ_MATERIAL_BLEND_SRC_COLOR = 2,
|
||||
OBJ_MATERIAL_BLEND_INVERSE_SRC_COLOR = 3,
|
||||
OBJ_MATERIAL_BLEND_SRC_ALPHA = 4,
|
||||
OBJ_MATERIAL_BLEND_INVERSE_SRC_ALPHA = 5,
|
||||
OBJ_MATERIAL_BLEND_DST_ALPHA = 6,
|
||||
OBJ_MATERIAL_BLEND_INVERSE_DST_ALPHA = 7,
|
||||
OBJ_MATERIAL_BLEND_DST_COLOR = 8,
|
||||
OBJ_MATERIAL_BLEND_INVERSE_DST_COLOR = 9,
|
||||
OBJ_MATERIAL_BLEND_ALPHA_SATURATE = 10,
|
||||
};
|
||||
|
||||
enum obj_material_bump_map_type : uint32_t {
|
||||
OBJ_MATERIAL_BUMP_MAP_NONE = 0,
|
||||
OBJ_MATERIAL_BUMP_MAP_DOT = 1,
|
||||
OBJ_MATERIAL_BUMP_MAP_ENV = 2,
|
||||
};
|
||||
|
||||
enum obj_material_color_source_type : uint32_t {
|
||||
OBJ_MATERIAL_COLOR_SOURCE_MATERIAL_COLOR = 0,
|
||||
OBJ_MATERIAL_COLOR_SOURCE_VERTEX_COLOR = 1,
|
||||
OBJ_MATERIAL_COLOR_SOURCE_VERTEX_MORPH = 2,
|
||||
};
|
||||
|
||||
enum obj_material_shader_lighting_type : uint32_t {
|
||||
OBJ_MATERIAL_SHADER_LIGHTING_LAMBERT = 0x00,
|
||||
OBJ_MATERIAL_SHADER_LIGHTING_CONSTANT = 0x01,
|
||||
OBJ_MATERIAL_SHADER_LIGHTING_PHONG = 0x02,
|
||||
};
|
||||
|
||||
enum obj_material_specular_quality : uint32_t {
|
||||
OBJ_MATERIAL_SPECULAR_QUALITY_LOW = 0,
|
||||
OBJ_MATERIAL_SPECULAR_QUALITY_HIGH = 1,
|
||||
};
|
||||
|
||||
enum obj_material_texture_type : uint32_t {
|
||||
OBJ_MATERIAL_TEXTURE_NONE = 0x00,
|
||||
OBJ_MATERIAL_TEXTURE_COLOR = 0x01,
|
||||
OBJ_MATERIAL_TEXTURE_NORMAL = 0x02,
|
||||
OBJ_MATERIAL_TEXTURE_SPECULAR = 0x03,
|
||||
OBJ_MATERIAL_TEXTURE_HEIGHT = 0x04,
|
||||
OBJ_MATERIAL_TEXTURE_REFLECTION = 0x05,
|
||||
OBJ_MATERIAL_TEXTURE_TRANSLUCENCY = 0x06,
|
||||
OBJ_MATERIAL_TEXTURE_TRANSPARENCY = 0x07,
|
||||
OBJ_MATERIAL_TEXTURE_ENVIRONMENT_SPHERE = 0x08,
|
||||
OBJ_MATERIAL_TEXTURE_ENVIRONMENT_CUBE = 0x09,
|
||||
};
|
||||
|
||||
enum obj_material_texture_coordinate_translation_type : uint32_t {
|
||||
OBJ_MATERIAL_TEXTURE_COORDINATE_TRANSLATION_NONE = 0x00,
|
||||
OBJ_MATERIAL_TEXTURE_COORDINATE_TRANSLATION_UV = 0x01,
|
||||
OBJ_MATERIAL_TEXTURE_COORDINATE_TRANSLATION_SPHERE = 0x02,
|
||||
OBJ_MATERIAL_TEXTURE_COORDINATE_TRANSLATION_CUBE = 0x03,
|
||||
};
|
||||
|
||||
enum obj_material_vertex_translation_type : uint32_t {
|
||||
OBJ_MATERIAL_VERTEX_TRANSLATION_DEFAULT = 0,
|
||||
OBJ_MATERIAL_VERTEX_TRANSLATION_ENVELOPE = 1,
|
||||
OBJ_MATERIAL_VERTEX_TRANSLATION_MORPHING = 2,
|
||||
};
|
||||
|
||||
enum obj_primitive_type : uint32_t {
|
||||
OBJ_PRIMITIVE_POINTS = 0x00,
|
||||
OBJ_PRIMITIVE_LINES = 0x01,
|
||||
@@ -194,27 +248,25 @@ union obj_shader_compo {
|
||||
};
|
||||
|
||||
struct obj_material_shader_attrib_member {
|
||||
obj_material_vertex_translation_type vtx_trans_type : 2;
|
||||
obj_material_color_source_type col_src : 2;
|
||||
MaterialAttributeVertexTransType vtx_trans_type : 2;
|
||||
MaterialAttributeColorSourceType col_src : 2;
|
||||
uint32_t is_lgt_diffuse : 1;
|
||||
uint32_t is_lgt_specular : 1;
|
||||
uint32_t is_lgt_per_pixel : 1;
|
||||
uint32_t is_lgt_double : 1;
|
||||
obj_material_bump_map_type bump_map_type : 2;
|
||||
uint32_t fresnel_type : 4;
|
||||
uint32_t line_light : 4;
|
||||
MaterialAttributeBumpMapType bump_map_type : 2;
|
||||
MaterialAttributeFresnelType fresnel_type : 4;
|
||||
MaterialAttributeLineLightType line_light : 4;
|
||||
uint32_t receive_shadow : 1;
|
||||
uint32_t cast_shadow : 1;
|
||||
obj_material_specular_quality specular_quality : 1;
|
||||
obj_material_aniso_direction aniso_direction : 2;
|
||||
MaterialAttributeSpecularQuality specular_quality : 1;
|
||||
MaterialAttributeAnisoDirection aniso_direction : 2;
|
||||
uint32_t dummy : 9;
|
||||
};
|
||||
|
||||
union obj_material_shader_attrib {
|
||||
obj_material_shader_attrib_member m;
|
||||
uint32_t w;
|
||||
|
||||
obj_material_shader_lighting_type get_lighting_type() const;
|
||||
};
|
||||
|
||||
struct obj_texture_attrib_member {
|
||||
@@ -237,14 +289,12 @@ struct obj_texture_attrib_member {
|
||||
union obj_texture_attrib {
|
||||
obj_texture_attrib_member m;
|
||||
uint32_t w;
|
||||
|
||||
int32_t get_blend() const;
|
||||
};
|
||||
|
||||
struct obj_texture_shader_attrib_member {
|
||||
obj_material_texture_type tex_type : 4;
|
||||
TextureAttributeTextureType tex_type : 4;
|
||||
int32_t uv_idx : 4;
|
||||
obj_material_texture_coordinate_translation_type texcoord_trans : 3;
|
||||
TextureAttributeTextureCoordTransType texcoord_trans : 3;
|
||||
uint32_t dummy : 21;
|
||||
};
|
||||
|
||||
@@ -274,8 +324,8 @@ struct obj_material_attrib_member {
|
||||
uint32_t punch_through : 1;
|
||||
uint32_t double_sided : 1;
|
||||
uint32_t normal_dir_light : 1;
|
||||
obj_material_blend_factor src_blend_factor : 4;
|
||||
obj_material_blend_factor dst_blend_factor : 4;
|
||||
MaterialAttributeBlendFactor src_blend_factor : 4;
|
||||
MaterialAttributeBlendFactor dst_blend_factor : 4;
|
||||
uint32_t blend_operation : 3;
|
||||
uint32_t zbias : 4;
|
||||
uint32_t no_z_fog : 1;
|
||||
|
||||
@@ -639,7 +639,7 @@ void MaterialDw::AnisoDirectionCallback(dw::ListBox* data) {
|
||||
obj_material_data* material_data = material_dw->GetMaterial();
|
||||
if (material_data)
|
||||
material_data->material.shader_info.m.aniso_direction
|
||||
= (obj_material_aniso_direction)data->list->selected_item;
|
||||
= (MaterialAttributeAnisoDirection)data->list->selected_item;
|
||||
}
|
||||
|
||||
void MaterialDw::AnisoFilterCallback(dw::Slider* data) {
|
||||
@@ -710,7 +710,7 @@ void MaterialDw::DstBlendFactorCallback(dw::ListBox* data) {
|
||||
obj_material_data* material_data = material_dw->GetMaterial();
|
||||
if (material_data)
|
||||
material_data->material.attrib.m.dst_blend_factor
|
||||
= (obj_material_blend_factor)data->list->selected_item;
|
||||
= (MaterialAttributeBlendFactor)data->list->selected_item;
|
||||
}
|
||||
|
||||
void MaterialDw::EmissionACallback(dw::Slider* data) {
|
||||
@@ -745,7 +745,7 @@ void MaterialDw::FresnelCallback(dw::Slider* data) {
|
||||
MaterialDw* material_dw = (MaterialDw*)data->callback_data.v64;
|
||||
obj_material_data* material_data = material_dw->GetMaterial();
|
||||
if (material_data)
|
||||
material_data->material.shader_info.m.fresnel_type = (int32_t)data->GetValue();
|
||||
material_data->material.shader_info.m.fresnel_type = (MaterialAttributeFresnelType)data->GetValue();
|
||||
}
|
||||
|
||||
void MaterialDw::IntensityCallback(dw::Slider* data) {
|
||||
@@ -759,7 +759,7 @@ void MaterialDw::LineLightCallback(dw::Slider* data) {
|
||||
MaterialDw* material_dw = (MaterialDw*)data->callback_data.v64;
|
||||
obj_material_data* material_data = material_dw->GetMaterial();
|
||||
if (material_data)
|
||||
material_data->material.shader_info.m.line_light = (int32_t)data->GetValue();
|
||||
material_data->material.shader_info.m.line_light = (MaterialAttributeLineLightType)data->GetValue();
|
||||
}
|
||||
|
||||
void MaterialDw::MipmapBiasCallback(dw::Slider* data) {
|
||||
@@ -853,12 +853,14 @@ void MaterialDw::ResetCallback(dw::Widget* data) {
|
||||
material.color.shininess = material_dw->shininess->GetValue();
|
||||
material.color.intensity = material_dw->intensity->GetValue();
|
||||
material.bump_depth = material_dw->bump_depth->GetValue();
|
||||
material.shader_info.m.fresnel_type = (int32_t)material_dw->fresnel->GetValue();
|
||||
material.shader_info.m.line_light = (int32_t)material_dw->line_light->GetValue();
|
||||
material.shader_info.m.fresnel_type
|
||||
= (MaterialAttributeFresnelType)material_dw->fresnel->GetValue();
|
||||
material.shader_info.m.line_light
|
||||
= (MaterialAttributeLineLightType)material_dw->line_light->GetValue();
|
||||
material.shader_info.m.specular_quality
|
||||
= (obj_material_specular_quality)material_dw->specular_quality->list->selected_item;
|
||||
= (MaterialAttributeSpecularQuality)material_dw->specular_quality->list->selected_item;
|
||||
material.shader_info.m.aniso_direction
|
||||
= (obj_material_aniso_direction)material_dw->aniso_direction->list->selected_item;
|
||||
= (MaterialAttributeAnisoDirection)material_dw->aniso_direction->list->selected_item;
|
||||
switch (material_dw->double_sided->list->selected_item) {
|
||||
case 0:
|
||||
material.attrib.m.double_sided = 0;
|
||||
@@ -868,9 +870,9 @@ void MaterialDw::ResetCallback(dw::Widget* data) {
|
||||
break;
|
||||
}
|
||||
material.attrib.m.src_blend_factor
|
||||
= (obj_material_blend_factor)material_dw->src_blend_factor->list->selected_item;
|
||||
= (MaterialAttributeBlendFactor)material_dw->src_blend_factor->list->selected_item;
|
||||
material.attrib.m.dst_blend_factor
|
||||
= (obj_material_blend_factor)material_dw->dst_blend_factor->list->selected_item;
|
||||
= (MaterialAttributeBlendFactor)material_dw->dst_blend_factor->list->selected_item;
|
||||
material.attrib.m.zbias = (int32_t)material_dw->zbias->GetValue();
|
||||
material.texdata[0].attrib.m.mipmap_bias = (int32_t)material_dw->mipmap_bias->GetValue();
|
||||
material.texdata[0].attrib.m.aniso = (int32_t)material_dw->aniso_filter->GetValue();
|
||||
@@ -902,7 +904,7 @@ void MaterialDw::SpecularQualityCallback(dw::ListBox* data) {
|
||||
obj_material_data* material_data = material_dw->GetMaterial();
|
||||
if (material_data)
|
||||
material_data->material.shader_info.m.specular_quality
|
||||
= (obj_material_specular_quality)data->list->selected_item;
|
||||
= (MaterialAttributeSpecularQuality)data->list->selected_item;
|
||||
}
|
||||
|
||||
void MaterialDw::SpecularRCallback(dw::Slider* data) {
|
||||
@@ -917,7 +919,7 @@ void MaterialDw::SrcBlendFactorCallback(dw::ListBox* data) {
|
||||
obj_material_data* material_data = material_dw->GetMaterial();
|
||||
if (material_data)
|
||||
material_data->material.attrib.m.src_blend_factor
|
||||
= (obj_material_blend_factor)data->list->selected_item;
|
||||
= (MaterialAttributeBlendFactor)data->list->selected_item;
|
||||
}
|
||||
|
||||
void MaterialDw::TransparencyCallback(dw::Slider* data) {
|
||||
|
||||
+26
-19
@@ -10635,13 +10635,13 @@ static void x_pv_game_read_object_reflect(const char* path, const char* set_name
|
||||
if (shader_info) {
|
||||
msgpack* vtx_trans_type = shader_info->read("vtx_trans_type");
|
||||
if (vtx_trans_type)
|
||||
mat->shader_info.m.vtx_trans_type = (obj_material_vertex_translation_type)
|
||||
mat->shader_info.m.vtx_trans_type = (MaterialAttributeVertexTransType)
|
||||
vtx_trans_type->read_uint32_t();
|
||||
|
||||
msgpack* col_src = shader_info->read("col_src");
|
||||
if (col_src)
|
||||
mat->shader_info.m.col_src
|
||||
= (obj_material_color_source_type)col_src->read_uint32_t("col_src");
|
||||
= (MaterialAttributeColorSourceType)col_src->read_uint32_t("col_src");
|
||||
|
||||
msgpack* is_lgt_diffuse = shader_info->read("is_lgt_diffuse");
|
||||
if (is_lgt_diffuse)
|
||||
@@ -10660,17 +10660,22 @@ static void x_pv_game_read_object_reflect(const char* path, const char* set_name
|
||||
mat->shader_info.m.is_lgt_double = is_lgt_double->read_bool() ? 1 : 0;
|
||||
|
||||
msgpack* bump_map_type = shader_info->read("bump_map_type");
|
||||
if (bump_map_type)
|
||||
mat->shader_info.m.bump_map_type = (obj_material_bump_map_type)
|
||||
bump_map_type->read_uint32_t();
|
||||
if (bump_map_type) {
|
||||
mat->shader_info.m.bump_map_type
|
||||
= (MaterialAttributeBumpMapType)bump_map_type->read_uint32_t();
|
||||
}
|
||||
|
||||
msgpack* fresnel_type = shader_info->read("fresnel_type");
|
||||
if (fresnel_type)
|
||||
mat->shader_info.m.fresnel_type = fresnel_type->read_uint32_t();
|
||||
if (fresnel_type) {
|
||||
mat->shader_info.m.fresnel_type
|
||||
= (MaterialAttributeFresnelType)fresnel_type->read_uint32_t();
|
||||
}
|
||||
|
||||
msgpack* line_light = shader_info->read("line_light");
|
||||
if (line_light)
|
||||
mat->shader_info.m.line_light = line_light->read_uint32_t();
|
||||
if (line_light) {
|
||||
mat->shader_info.m.line_light
|
||||
= (MaterialAttributeLineLightType)line_light->read_uint32_t();
|
||||
}
|
||||
|
||||
msgpack* receive_shadow = shader_info->read({ "receive_shadow", "recieve_shadow" });
|
||||
if (receive_shadow)
|
||||
@@ -10681,14 +10686,16 @@ static void x_pv_game_read_object_reflect(const char* path, const char* set_name
|
||||
mat->shader_info.m.cast_shadow = cast_shadow->read_bool() ? 1 : 0;
|
||||
|
||||
msgpack* specular_quality = shader_info->read("specular_quality");
|
||||
if (specular_quality)
|
||||
mat->shader_info.m.specular_quality = (obj_material_specular_quality)
|
||||
specular_quality->read_uint32_t();
|
||||
if (specular_quality) {
|
||||
mat->shader_info.m.specular_quality
|
||||
= (MaterialAttributeSpecularQuality)specular_quality->read_uint32_t();
|
||||
}
|
||||
|
||||
msgpack* aniso_direction = shader_info->read("aniso_direction");
|
||||
if (aniso_direction)
|
||||
mat->shader_info.m.aniso_direction = (obj_material_aniso_direction)
|
||||
aniso_direction->read_uint32_t();
|
||||
if (aniso_direction) {
|
||||
mat->shader_info.m.aniso_direction
|
||||
= (MaterialAttributeAnisoDirection)aniso_direction->read_uint32_t();
|
||||
}
|
||||
|
||||
msgpack* dummy = shader_info->read("dummy");
|
||||
if (dummy)
|
||||
@@ -10774,7 +10781,7 @@ static void x_pv_game_read_object_reflect(const char* path, const char* set_name
|
||||
if (shader_info) {
|
||||
msgpack* tex_type = shader_info->read("tex_type");
|
||||
if (tex_type)
|
||||
l.shader_info.m.tex_type = (obj_material_texture_type)
|
||||
l.shader_info.m.tex_type = (TextureAttributeTextureType)
|
||||
tex_type->read_uint32_t();
|
||||
|
||||
msgpack* uv_idx = shader_info->read("uv_idx");
|
||||
@@ -10783,7 +10790,7 @@ static void x_pv_game_read_object_reflect(const char* path, const char* set_name
|
||||
|
||||
msgpack* texcoord_trans = shader_info->read("texcoord_trans");
|
||||
if (texcoord_trans)
|
||||
l.shader_info.m.texcoord_trans = (obj_material_texture_coordinate_translation_type)
|
||||
l.shader_info.m.texcoord_trans = (TextureAttributeTextureCoordTransType)
|
||||
texcoord_trans->read_uint32_t();
|
||||
|
||||
msgpack* dummy = shader_info->read("dummy");
|
||||
@@ -10880,12 +10887,12 @@ static void x_pv_game_read_object_reflect(const char* path, const char* set_name
|
||||
|
||||
msgpack* src_blend_factor = attrib->read("src_blend_factor");
|
||||
if (src_blend_factor)
|
||||
mat->attrib.m.src_blend_factor = (obj_material_blend_factor)
|
||||
mat->attrib.m.src_blend_factor = (MaterialAttributeBlendFactor)
|
||||
src_blend_factor->read_uint32_t();
|
||||
|
||||
msgpack* dst_blend_factor = attrib->read("dst_blend_factor");
|
||||
if (dst_blend_factor)
|
||||
mat->attrib.m.dst_blend_factor = (obj_material_blend_factor)
|
||||
mat->attrib.m.dst_blend_factor = (MaterialAttributeBlendFactor)
|
||||
dst_blend_factor->read_uint32_t();
|
||||
|
||||
msgpack* blend_operation = attrib->read("blend_operation");
|
||||
|
||||
Reference in New Issue
Block a user