mirror of
https://github.com/nunuhara/xsystem4.git
synced 2026-09-22 23:18:01 +03:00
Merge pull request #347 from brombrom-hani/parts-sprite-deform
parts: impl sprite_deform for SetPartsCG
This commit is contained in:
+6
-3
@@ -1188,12 +1188,13 @@ int PE_GetDelegateIndex(int parts_no)
|
||||
return parts ? parts->delegate_index : -1;
|
||||
}
|
||||
|
||||
bool PE_SetPartsCG(int parts_no, struct string *cg_name, possibly_unused int sprite_deform, int state)
|
||||
bool PE_SetPartsCG(int parts_no, struct string *cg_name, int sprite_deform, int state)
|
||||
{
|
||||
if (!parts_state_valid(--state))
|
||||
return false;
|
||||
|
||||
struct parts *parts = parts_get(parts_no);
|
||||
parts->sprite_deform = sprite_deform;
|
||||
if (!cg_name || *(cg_name->text) == '\0') {
|
||||
parts_state_reset(&parts->states[state], PARTS_CG);
|
||||
parts_dirty(parts);
|
||||
@@ -1204,12 +1205,13 @@ bool PE_SetPartsCG(int parts_no, struct string *cg_name, possibly_unused int spr
|
||||
return parts_cg_set(parts, cg, cg_name);
|
||||
}
|
||||
|
||||
bool PE_SetPartsCG_by_index(int parts_no, int cg_no, possibly_unused int sprite_deform, int state)
|
||||
bool PE_SetPartsCG_by_index(int parts_no, int cg_no, int sprite_deform, int state)
|
||||
{
|
||||
if (!parts_state_valid(--state))
|
||||
return false;
|
||||
|
||||
struct parts *parts = parts_get(parts_no);
|
||||
parts->sprite_deform = sprite_deform;
|
||||
if (!cg_no) {
|
||||
parts_state_reset(&parts->states[state], PARTS_CG);
|
||||
parts_dirty(parts);
|
||||
@@ -1222,12 +1224,13 @@ bool PE_SetPartsCG_by_index(int parts_no, int cg_no, possibly_unused int sprite_
|
||||
|
||||
// XXX: Rance Quest
|
||||
bool PE_SetPartsCG_by_string_index(int parts_no, struct string *cg_name,
|
||||
possibly_unused int sprite_deform, int state)
|
||||
int sprite_deform, int state)
|
||||
{
|
||||
if (!parts_state_valid(--state))
|
||||
return false;
|
||||
|
||||
struct parts *parts = parts_get(parts_no);
|
||||
parts->sprite_deform = sprite_deform;
|
||||
if (!cg_name) {
|
||||
parts_state_reset(&parts->states[state], PARTS_CG);
|
||||
parts_dirty(parts);
|
||||
|
||||
+19
-1
@@ -153,7 +153,25 @@ static void parts_render_cg(struct parts *parts, struct parts_common *common)
|
||||
glm_rotate_z(mw_transform, glm_rad(parts->local.rotation.z), mw_transform);
|
||||
glm_scale(mw_transform, (vec3){ parts->global.scale.x, parts->global.scale.y, 1.0 });
|
||||
glm_translate(mw_transform, (vec3){ common->origin_offset.x, common->origin_offset.y, 0 });
|
||||
glm_scale(mw_transform, (vec3){ common->w, common->h, 1.0 });
|
||||
|
||||
switch (parts->sprite_deform) {
|
||||
// Flip horizontally
|
||||
case 1:
|
||||
glm_translate(mw_transform, (vec3){ common->w, 0.0f, 0.0f });
|
||||
glm_scale(mw_transform, (vec3){ -common->w, common->h, 1.0f });
|
||||
break;
|
||||
// Flip vertically
|
||||
case 2:
|
||||
glm_translate(mw_transform, (vec3){ 0.0f, common->h, 0.0f });
|
||||
glm_scale(mw_transform, (vec3){ common->w, -common->h, 1.0f });
|
||||
break;
|
||||
default:
|
||||
WARNING("Invalid sprite_deform: %d", parts->sprite_deform);
|
||||
// No deform
|
||||
case 0:
|
||||
glm_scale(mw_transform, (vec3){ common->w, common->h, 1.0 });
|
||||
break;
|
||||
}
|
||||
|
||||
Rectangle r = common->surface_area;
|
||||
if (!r.w && !r.h) {
|
||||
|
||||
Reference in New Issue
Block a user