Made loop and polygonal private so that setting them would trip the dirty flag.
This commit is contained in:
@@ -65,7 +65,6 @@ ActorMultiVertex::ActorMultiVertex()
|
||||
_TextureMode = TextureMode_Modulate;
|
||||
_using_spline= false;
|
||||
_spline.redimension(3);
|
||||
_spline.loop= false;
|
||||
_spline.m_owned_by_actor= true;
|
||||
}
|
||||
|
||||
@@ -252,10 +251,6 @@ void ActorMultiVertex::SplineSolve()
|
||||
case DrawMode_LineStrip:
|
||||
{
|
||||
float conversion= static_cast<float>(_spline.size()-1) / static_cast<float>(num_verts-1);
|
||||
if(_spline.loop)
|
||||
{
|
||||
conversion= static_cast<float>(_spline.size()) / static_cast<float>(num_verts-1);
|
||||
}
|
||||
for(size_t i= 0; i < num_verts; ++i)
|
||||
{
|
||||
float t= i * conversion;
|
||||
@@ -735,12 +730,6 @@ public:
|
||||
return 1;
|
||||
}
|
||||
DEFINE_METHOD(GetUseSpline, GetUseSpline());
|
||||
DEFINE_METHOD(SplineGetLoop, SplineGetLoop());
|
||||
static int SplineSetLoop(T* p, lua_State* L)
|
||||
{
|
||||
p->SplineSetLoop(lua_toboolean(L, 1));
|
||||
COMMON_RETURN_SELF;
|
||||
}
|
||||
static int SplineSize(T* p, lua_State* L)
|
||||
{
|
||||
lua_pushnumber(L, p->SplineSize());
|
||||
@@ -799,8 +788,6 @@ public:
|
||||
|
||||
ADD_METHOD(GetUseSpline);
|
||||
ADD_METHOD(SetUseSpline);
|
||||
ADD_METHOD(SplineGetLoop);
|
||||
ADD_METHOD(SplineSetLoop);
|
||||
ADD_METHOD(SplineSize);
|
||||
ADD_METHOD(SplineResize);
|
||||
ADD_METHOD(SplineSetPoint);
|
||||
|
||||
@@ -106,8 +106,6 @@ public:
|
||||
|
||||
bool GetUseSpline();
|
||||
void SetUseSpline(bool use);
|
||||
bool SplineGetLoop() { return _spline.loop; }
|
||||
void SplineSetLoop(bool loop) { _spline.loop= loop; }
|
||||
void SplineSetPoint(size_t i, float x , float y , float z);
|
||||
void SplineResize(size_t s);
|
||||
size_t SplineSize();
|
||||
|
||||
+39
-23
@@ -526,13 +526,13 @@ void CubicSplineN::solve()
|
||||
{ \
|
||||
spline->solvent(); \
|
||||
}
|
||||
if(polygonal)
|
||||
if(m_polygonal)
|
||||
{
|
||||
SOLVE_LOOP(solve_polygonal);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(loop)
|
||||
if(m_loop)
|
||||
{
|
||||
SOLVE_LOOP(solve_looped);
|
||||
}
|
||||
@@ -551,7 +551,7 @@ void CubicSplineN::something(float t, vector<float>& v) const \
|
||||
for(spline_cont_t::const_iterator spline= m_splines.begin(); \
|
||||
spline != m_splines.end(); ++spline) \
|
||||
{ \
|
||||
v.push_back(spline->something(t, loop)); \
|
||||
v.push_back(spline->something(t, m_loop)); \
|
||||
} \
|
||||
}
|
||||
|
||||
@@ -647,6 +647,25 @@ size_t CubicSplineN::dimension() const
|
||||
return m_splines.size();
|
||||
}
|
||||
|
||||
// m_dirty is set before the member so that the set_dirty that is created
|
||||
// can actually be used to set the dirty flag. -Kyz
|
||||
#define SET_GET_MEM(member, name) \
|
||||
void CubicSplineN::set_##name(bool b) \
|
||||
{ \
|
||||
m_dirty= true; \
|
||||
member= b; \
|
||||
} \
|
||||
bool CubicSplineN::get_##name() \
|
||||
{ \
|
||||
return member; \
|
||||
}
|
||||
|
||||
SET_GET_MEM(m_loop, loop);
|
||||
SET_GET_MEM(m_polygonal, polygonal);
|
||||
SET_GET_MEM(m_dirty, dirty);
|
||||
|
||||
#undef SET_GET_MEM
|
||||
|
||||
#include "LuaBinding.h"
|
||||
|
||||
struct LunaCubicSplineN : Luna<CubicSplineN>
|
||||
@@ -780,7 +799,7 @@ struct LunaCubicSplineN : Luna<CubicSplineN>
|
||||
}
|
||||
static int get_max_t(T* p, lua_State* L)
|
||||
{
|
||||
lua_pushnumber(L, p->size() - 1 + p->loop);
|
||||
lua_pushnumber(L, p->size() - 1 + p->get_loop());
|
||||
return 1;
|
||||
}
|
||||
static int resize(T* p, lua_State* L)
|
||||
@@ -823,26 +842,21 @@ struct LunaCubicSplineN : Luna<CubicSplineN>
|
||||
lua_pushboolean(L, p->empty());
|
||||
return 1;
|
||||
}
|
||||
static int set_loop(T* p, lua_State* L)
|
||||
{
|
||||
p->loop= lua_toboolean(L, 1);
|
||||
COMMON_RETURN_SELF;
|
||||
}
|
||||
static int get_loop(T* p, lua_State* L)
|
||||
{
|
||||
lua_pushboolean(L, p->loop);
|
||||
return 1;
|
||||
}
|
||||
static int set_polygonal(T* p, lua_State* L)
|
||||
{
|
||||
p->polygonal= lua_toboolean(L, 1);
|
||||
COMMON_RETURN_SELF;
|
||||
}
|
||||
static int get_polygonal(T* p, lua_State* L)
|
||||
{
|
||||
lua_pushboolean(L, p->polygonal);
|
||||
return 1;
|
||||
#define SET_GET_LUA(name) \
|
||||
static int set_##name(T* p, lua_State* L) \
|
||||
{ \
|
||||
p->set_##name(lua_toboolean(L, 1)); \
|
||||
COMMON_RETURN_SELF; \
|
||||
} \
|
||||
static int get_##name(T* p, lua_State* L) \
|
||||
{ \
|
||||
lua_pushboolean(L, p->get_##name()); \
|
||||
return 1; \
|
||||
}
|
||||
SET_GET_LUA(loop);
|
||||
SET_GET_LUA(polygonal);
|
||||
SET_GET_LUA(dirty);
|
||||
#undef SET_GET_LUA
|
||||
static int destroy(T* p, lua_State* L)
|
||||
{
|
||||
if(p->m_owned_by_actor)
|
||||
@@ -875,6 +889,8 @@ struct LunaCubicSplineN : Luna<CubicSplineN>
|
||||
ADD_METHOD(get_loop);
|
||||
ADD_METHOD(set_polygonal);
|
||||
ADD_METHOD(get_polygonal);
|
||||
ADD_METHOD(set_dirty);
|
||||
ADD_METHOD(get_dirty);
|
||||
ADD_METHOD(destroy);
|
||||
}
|
||||
};
|
||||
|
||||
+9
-3
@@ -38,7 +38,7 @@ private:
|
||||
struct CubicSplineN
|
||||
{
|
||||
CubicSplineN()
|
||||
:loop(false), polygonal(false), m_owned_by_actor(false), m_dirty(true)
|
||||
:m_owned_by_actor(false), m_loop(false), m_polygonal(false), m_dirty(true)
|
||||
{}
|
||||
void solve();
|
||||
void evaluate(float t, vector<float>& v) const;
|
||||
@@ -58,12 +58,18 @@ struct CubicSplineN
|
||||
size_t dimension() const;
|
||||
bool empty() const;
|
||||
typedef vector<CubicSpline> spline_cont_t;
|
||||
bool loop;
|
||||
bool polygonal;
|
||||
void set_loop(bool l);
|
||||
bool get_loop();
|
||||
void set_polygonal(bool p);
|
||||
bool get_polygonal();
|
||||
void set_dirty(bool d);
|
||||
bool get_dirty();
|
||||
bool m_owned_by_actor;
|
||||
|
||||
void PushSelf(lua_State* L);
|
||||
private:
|
||||
bool m_loop;
|
||||
bool m_polygonal;
|
||||
bool m_dirty;
|
||||
spline_cont_t m_splines;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user