Skip to content

Commit adc343f

Browse files
committed
added sprite lua bindings for corner rounding, gradient control
1 parent ae80513 commit adc343f

4 files changed

Lines changed: 83 additions & 2 deletions

File tree

WickedEngine/wiImageParams_BindLua.cpp

Lines changed: 75 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,12 @@ namespace wi::lua
6363
lunamethod(ImageParams_BindLua, DisableAngularSoftnessDoubleSided),
6464
lunamethod(ImageParams_BindLua, DisableAngularSoftnessInverse),
6565

66+
lunamethod(ImageParams_BindLua, EnableCornerRounding),
67+
lunamethod(ImageParams_BindLua, DisableCornerRounding),
68+
lunamethod(ImageParams_BindLua, SetCornerRounding),
69+
70+
lunamethod(ImageParams_BindLua, SetGradient),
71+
6672
{ nullptr, nullptr }
6773
};
6874
Luna<ImageParams_BindLua>::PropertyType ImageParams_BindLua::properties[] = {
@@ -560,7 +566,7 @@ namespace wi::lua
560566
}
561567
int ImageParams_BindLua::EnableAngularSoftnessDoubleSided(lua_State* L)
562568
{
563-
params.disableAngularSoftnessDoubleSided();
569+
params.enableAngularSoftnessDoubleSided();
564570
return 0;
565571
}
566572
int ImageParams_BindLua::EnableAngularSoftnessInverse(lua_State* L)
@@ -579,6 +585,67 @@ namespace wi::lua
579585
return 0;
580586
}
581587

588+
int ImageParams_BindLua::EnableCornerRounding(lua_State* L)
589+
{
590+
params.enableCornerRounding();
591+
return 0;
592+
}
593+
int ImageParams_BindLua::DisableCornerRounding(lua_State* L)
594+
{
595+
params.disableCornerRounding();
596+
return 0;
597+
}
598+
int ImageParams_BindLua::SetCornerRounding(lua_State* L)
599+
{
600+
int argc = wi::lua::SGetArgCount(L);
601+
if (argc < 2)
602+
{
603+
wi::lua::SError(L, "SetCornerRounding(int corner, float rounding, opt int segments = 18): not enough arguments!");
604+
return 0;
605+
}
606+
int corner = clamp(wi::lua::SGetInt(L, 1), 0, (int)arraysize(params.corners_rounding) - 1);
607+
params.corners_rounding[corner].radius = wi::lua::SGetFloat(L, 2);
608+
if (argc > 2)
609+
{
610+
params.corners_rounding[corner].segments = wi::lua::SGetInt(L, 3);
611+
}
612+
return 0;
613+
}
614+
615+
int ImageParams_BindLua::SetGradient(lua_State* L)
616+
{
617+
int argc = wi::lua::SGetArgCount(L);
618+
if (argc < 4)
619+
{
620+
wi::lua::SError(L, "SetGradient(ImageGradientType type, Vector uv_start, Vector uv_end, Vector color): not enough arguments!");
621+
return 0;
622+
}
623+
int type = wi::lua::SGetInt(L, 1);
624+
Vector_BindLua* s = Luna<Vector_BindLua>::lightcheck(L, 2);
625+
if (s == nullptr)
626+
{
627+
wi::lua::SError(L, "SetGradient(ImageGradientType type, Vector uv_start, Vector uv_end, Vector color): second argument is not a Vector!");
628+
return 0;
629+
}
630+
Vector_BindLua* e = Luna<Vector_BindLua>::lightcheck(L, 3);
631+
if (s == nullptr)
632+
{
633+
wi::lua::SError(L, "SetGradient(ImageGradientType type, Vector uv_start, Vector uv_end, Vector color): third argument is not a Vector!");
634+
return 0;
635+
}
636+
Vector_BindLua* c = Luna<Vector_BindLua>::lightcheck(L, 4);
637+
if (s == nullptr)
638+
{
639+
wi::lua::SError(L, "SetGradient(ImageGradientType type, Vector uv_start, Vector uv_end, Vector color): fourth argument is not a Vector!");
640+
return 0;
641+
}
642+
params.gradient = (wi::image::Params::Gradient)type;
643+
params.gradient_uv_start = s->GetFloat2();
644+
params.gradient_uv_end = e->GetFloat2();
645+
params.gradient_color = c->GetFloat4();
646+
return 0;
647+
}
648+
582649
ImageParams_BindLua::ImageParams_BindLua(lua_State* L)
583650
{
584651
float x = 0, y = 0, w = 100, h = 100;
@@ -642,6 +709,13 @@ BLENDMODE_OPAQUE = 0
642709
BLENDMODE_ALPHA = 1
643710
BLENDMODE_PREMULTIPLIED = 2
644711
BLENDMODE_ADDITIVE = 3
712+
713+
ImageGradientType = {
714+
None = 0,
715+
Linear = 1,
716+
LinearReflected = 2,
717+
Circular = 3,
718+
}
645719
)");
646720

647721
}

WickedEngine/wiImageParams_BindLua.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,12 @@ namespace wi::lua
7676
int DisableAngularSoftnessDoubleSided(lua_State* L);
7777
int DisableAngularSoftnessInverse(lua_State* L);
7878

79+
int EnableCornerRounding(lua_State* L);
80+
int DisableCornerRounding(lua_State* L);
81+
int SetCornerRounding(lua_State* L);
82+
83+
int SetGradient(lua_State* L);
84+
7985
static void Bind();
8086
};
8187
}

WickedEngine/wiMath_BindLua.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ namespace wi::lua
2323

2424
XMFLOAT2 GetFloat2() { return XMFLOAT2(data.x, data.y); }
2525
XMFLOAT3 GetFloat3() { return XMFLOAT3(data.x, data.y, data.z); }
26+
XMFLOAT4 GetFloat4() { return data; }
2627

2728
int GetX(lua_State* L);
2829
int GetY(lua_State* L);

WickedEngine/wiVersion.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace wi::version
99
// minor features, major updates, breaking compatibility changes
1010
const int minor = 72;
1111
// minor bug fixes, alterations, refactors, updates
12-
const int revision = 78;
12+
const int revision = 79;
1313

1414
const std::string version_string = std::to_string(major) + "." + std::to_string(minor) + "." + std::to_string(revision);
1515

0 commit comments

Comments
 (0)