Polygon2D
-=-=-=-=- Another gift for those who make 2D games: -Edit polygons, concave or convex, color them, texture them and uv-map them -Corresponding editor -Can have a custom pivot, so they are compatible with bones and IK
This commit is contained in:
@ -3354,7 +3354,59 @@ void Variant::interpolate(const Variant& a, const Variant& b, float c,Variant &r
|
||||
case INT_ARRAY:{ r_dst=a; } return;
|
||||
case REAL_ARRAY:{ r_dst=a; } return;
|
||||
case STRING_ARRAY:{ r_dst=a; } return;
|
||||
case VECTOR3_ARRAY:{ r_dst=a; } return;
|
||||
case VECTOR2_ARRAY:{
|
||||
const DVector<Vector2> *arr_a=reinterpret_cast<const DVector<Vector2>* >(a._data._mem);
|
||||
const DVector<Vector2> *arr_b=reinterpret_cast<const DVector<Vector2>* >(b._data._mem);
|
||||
int sz = arr_a->size();
|
||||
if (sz==0 || arr_b->size()!=sz) {
|
||||
|
||||
r_dst=a;
|
||||
} else {
|
||||
|
||||
DVector<Vector2> v;
|
||||
v.resize(sz);
|
||||
{
|
||||
DVector<Vector2>::Write vw=v.write();
|
||||
DVector<Vector2>::Read ar=arr_a->read();
|
||||
DVector<Vector2>::Read br=arr_b->read();
|
||||
|
||||
for(int i=0;i<sz;i++) {
|
||||
vw[i]=ar[i].linear_interpolate(br[i],c);
|
||||
}
|
||||
}
|
||||
r_dst=v;
|
||||
|
||||
}
|
||||
|
||||
|
||||
} return;
|
||||
case VECTOR3_ARRAY:{
|
||||
|
||||
|
||||
const DVector<Vector3> *arr_a=reinterpret_cast<const DVector<Vector3>* >(a._data._mem);
|
||||
const DVector<Vector3> *arr_b=reinterpret_cast<const DVector<Vector3>* >(b._data._mem);
|
||||
int sz = arr_a->size();
|
||||
if (sz==0 || arr_b->size()!=sz) {
|
||||
|
||||
r_dst=a;
|
||||
} else {
|
||||
|
||||
DVector<Vector3> v;
|
||||
v.resize(sz);
|
||||
{
|
||||
DVector<Vector3>::Write vw=v.write();
|
||||
DVector<Vector3>::Read ar=arr_a->read();
|
||||
DVector<Vector3>::Read br=arr_b->read();
|
||||
|
||||
for(int i=0;i<sz;i++) {
|
||||
vw[i]=ar[i].linear_interpolate(br[i],c);
|
||||
}
|
||||
}
|
||||
r_dst=v;
|
||||
|
||||
}
|
||||
|
||||
} return;
|
||||
case COLOR_ARRAY:{ r_dst=a; } return;
|
||||
default: {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user