44#undef HAVE_STRUCT_TIMESPEC
47#undef PTW32_SCHED_LEVEL
53#define pthread_mutex_unlock __gthread_mutex_unlock
54#define pthread_mutex_lock __gthread_mutex_lock
55#define PTHREAD_MUTEX_INITIALIZER __GTHREAD_MUTEX_INIT
56#define pthread_mutex_t __gthread_mutex_t
112 virtual float Time()
const {
return 5.0; }
118 virtual float XRot()
const {
return 1.0; }
119 virtual float YRot()
const {
return 1.0; }
120 virtual float ZRot()
const {
return 0.0; }
151template<
class A,
class B>
174template<
class A,
class B>
177 virtual ~DynFunction() { }
178 virtual void set(
float x,
float y)=0;
182class DynamicFunction :
public Function<float,float>,
public DynFunction<float,float>
185 float Index(
float a)
const
187 std::map<float,float>::iterator i = std::lower_bound(mymap.begin(), mymap.end(), a);
188 if (i==mymap.end())
return 0.0;
189 std::map<float,float>::iterator i2 = i+1;
190 if (i2==mymap.end())
return (*i).second;
192 a/=(*i2).first - (*i).first;
193 float val1 = (*i).second;
194 float val2 = (*i2).second;
195 return val1*(1.0-a) + val2*a;
197 void set(
float x,
float y) { mymap[x] = y; }
199 std::map<float, float> mymap;
204template<
class A,
class B>
210 int s = value.size();
213 if (a >= start_range[i] && a < end_range[i])
221 value.push_back(val);
222 start_range.push_back(start);
223 end_range.push_back(end);
228 B start = f1.value(i1);
229 B end = f1.value(i2);
230 B middle =
f2.Index(f1.end_range[i1]);
232 if (start <= middle && middle <= end)
return new std::pair<A,B>(f1.end_range[i1], middle);
233 if (end <= middle && middle <= start)
return new std::pair<A,B>(f1.end_range[i1], middle);
238 std::vector<B> value;
239 std::vector<A> start_range;
240 std::vector<A> end_range;
243template<
class A,
class B>
259 return f1.Index(x)*pos + f2.Index(x)*(1.0-pos);
267template<
class T,
class K>
286 std::vector<Point2d> p;
322template<
class T,
class A,
class B>
327 B Index(
A a)
const {
return (obj->*fptr)(a); }
330 B (
T::*fptr)(
A)
const;
332template<
class A,
class B>
342template<
class K,
class Impl>
345 FunctionImplT0() : c(0) { }
351 ~FunctionImplT0() {
delete c; }
356template<
class K,
class P1,
class Impl>
359 FunctionImplT1(P1 p1) : c(0), p1(p1) { }
365 ~FunctionImplT1() {
delete c; }
373template<
class K,
class P1,
class P2,
class Impl>
376 FunctionImplT2(P1 p1, P2 p2) : c(0), p1(p1), p2(p2) { }
382 ~FunctionImplT2() {
delete c; }
391template<
class K,
class P1,
class P2,
class P3,
class Impl>
394 FunctionImplT3(P1 p1, P2 p2, P3 p3) : c(0), p1(p1), p2(p2), p3(p3) { }
397 c =
new Impl(p1,p2, p3);
400 ~FunctionImplT3() {
delete c; }
412template<
class T,
class K,
class Impl>
429template<
class T,
class K,
class P,
class Impl>
446template<
class T,
class K,
class P1,
class P2,
class Impl>
454 c =
new Impl(a, p1, p2);
465template<
class T,
class K,
class P1,
class P2,
class P3,
class Impl>
473 c =
new Impl(a, p1, p2, p3);
488template<
class A,
class B,
class C>
493 C Index(
A a)
const {
return f2.Index(f1.Index(a)); }
499template<
class C1,
class C2,
class D>
507 return f1.Index(u.either.a);
509 return f2.Index(u.either.b);
516template<
class A,
class B,
class C>
522 C Index(
const std::pair<A,B> &p) {
return Index(p.first, p.second); }
538 for(
int i=0;i<repeat;i++)
545 for(
int i=0;i<repeat;i++)
559template<
class A,
class B,
class C>
576template<
class A,
class B>
581 B Elem()
const {
return func.Index(a); }
586template<
class A,
class B,
class C>
591 C Index(
B b)
const {
return func2.Index(a,b); }
597template<
class A,
class B,
class C>
602 C Index(
A a)
const {
return func2.Index(a,b); }
607template<
class A,
class B>
615template<
class X,
class Y,
class B>
627 return f.Index(std::make_pair(xx,b));
634template<
class X,
class Y,
class B>
642 return func2->Index(p.second);
649template<
class B,
class Y>
663 return eval.Index(p);
668template<
class A,
class B,
class C,
class D>
673 std::pair<C,D>
Index(std::pair<A,B> p)
const
675 return make_pair(f1.Index(p.first), f2.Index(p.second));
706 for(
int i=0;i<count;i++)
731template<
class N,
class A>
735 Mul(
Function<std::pair<A,A>,
A> &plus,
A zero) : exp(plus), zero(zero), expi(this) { }
741 class IteFunc :
public Function<int, A>
747 Iteration<A> ite(
func);
748 Function<A,A> *
f2 = ite.Index(a);
749 A aa =
f2->Index(zero);
761 ptr =
new IteFunc(
func, zero);
792 int Size()
const {
return size; }
793 T Index(
int i)
const {
return array[i]; }
799template<
class I,
class A,
class B>
804 I
Size()
const {
return arr.Size(); }
805 B Index(I i)
const {
return func.Index(arr.Index(i)); }
816 int Index(
int i)
const {
return a; }
817 int Sum()
const {
return a; }
826 int Index(
int i)
const {
if (i==0)
return a;
else return b; }
827 int Sum()
const {
return a+b; }
837 int Index(
int i)
const {
if (i==0)
return a;
else if (i==1)
return b;
else return c; }
838 int Sum()
const {
return a+b+c; }
848 int Size()
const {
return size; }
851 if (i < arr.Size())
return arr.Index(i);
861template<
class I,
class I2,
class T>
866 I2
Size()
const {
return arr.Index(0)->Size(); }
890template<
class P,
class T>
895 int Size()
const {
return arr.Size(); }
898 return arr.Index(i)->Index(p);
905template<
class I,
class T>
910 I
Size()
const {
return size; }
911 T Index(I i)
const {
return func.Index(i); }
917template<
class B,
class I,
class T>
922 int Size()
const {
return arr.Size(); }
923 T Index(
int i)
const {
return arr.Index(i); }
933 int Size()
const {
return a1.Size()+ a2.Size(); }
936 int size = a1.Size();
943 return a2.Index(i-
size);
948 return i < a1.Size();
967 int size = arr.Size();
969 for(
int i=0;i<
size;i++)
971 if (b.Index(arr.Index(i)))
978 int size = arr.Size();
980 for(
int i=0;i<
size;i++)
982 if (count == ii)
return arr.Index(i);
983 if (b.Index(arr.Index(i)))
993template<
class I,
class T>
998 for(
int i=0;i<50 && i<
size;i++)
1000 o << arr.
Index(i) <<
",";
1007template<
class I1,
class I2,
class T>
1015template<
class A,
class B,
class C>
1021 C Index(
A a)
const {
return a2.Index(a1.Index(a)); }
1027template<
class A,
class C>
1036 template<
class T1,
class T2>
1042 template<
class T1,
class T2,
class T3>
1049 template<
class T1,
class T2,
class T3,
class T4>
1057 template<
class T1,
class T2,
class T3,
class T4,
class T5>
1058 ComposeChain(
Array<A,T1> &a1,
Function<T1, T2> &f1,
Function<T2,T3> &
f2,
Function<T3,T4> &f3,
Function<T4,T5> &f4,
Function<T5,C> &f5)
1064 template<
class T1,
class T2,
class T3,
class T4,
class T5,
class T6>
1065 ComposeChain(
Array<A,T1> &a1,
Function<T1, T2> &f1,
Function<T2,T3> &
f2,
Function<T3,T4> &f3,
Function<T4,T5> &f4,
Function<T5,T6> &f5,
Function<T6,C> &f6)
1086 virtual int Size()
const {
return 1; }
1087 virtual T Index(
int index)
const {
return t; }
1092template<
class S,
class T>
1109 int Size()
const {
return orig.Size()*count; }
1112 int pos = i % orig.Size();
1113 return orig.Index(pos);
1127 virtual int Size()
const {
return vec.size(); }
1128 virtual T Index(
int index)
const {
return vec.at(index); }
1155 for(
int i=0;i<
size;i++)
1158 int size2 = arr.Size();
1159 for(
int ii=0;ii<size2;ii++)
1166template<
class T,
class K>
1198template<
class I,
class T>
1205 std::pair<I,I> p = arr.Size();
1206 return std::min(p.first, p.second);
1210 return arr.Index(std::make_pair(i,i));
1216template<
class I1,
class I2,
class T1,
class T2>
1223 return std::make_pair(arr1.Size(), arr2.Size());
1225 std::pair<T1,T2>
Index(std::pair<I1,I2> i)
const
1227 T1 i2 = arr1.Index(i.first);
1228 T2 i3 = arr2.Index(i.second);
1230 return std::make_pair(i2, i3); }
1236template<
class I,
class T1,
class T2>
1241 I
Size()
const {
return diag.Size(); }
1244 return diag.Index(i);
1251template<
class I,
class T1,
class T2>
1256 I
Size()
const {
return arr.Size(); }
1259 return arr.Index(i).first;
1265template<
class I,
class T1,
class T2>
1270 I
Size()
const {
return arr.Size(); }
1273 return arr.Index(i).second;
1280template<
class I,
class T>
1284 SubArray(
const Array<I,T> &arr,
int start_index,
int length) : arr(arr), start_index(start_index), length(length) { }
1288 return arr.Index(start_index+i);
1297template<
class I,
class J,
class T>
1332template<
class I,
class J,
class T>
1339 return arr.Index(i)->Size();
1341 I
Size()
const {
return arr.Size(); }
1354 int size = arr.Size();
1355 for(
int ii = 0;ii<
size;ii++)
1357 int oldindex = index;
1358 index += arr.Index(ii);
1359 if (index >= i)
return std::make_pair(ii, i - oldindex);
1361 return std::make_pair(0,0);
1365 int size = arr.Size();
1367 for(
int ii=0;ii<
size;ii++)
1369 count += arr.Index(ii);
1385 std::pair<int,int> p = sizesmap.Index(i);
1386 return arr.Index(p.first)->Index(p.second);
1404 int Size()
const {
return arr.Size(); }
1405 T Index(
float i)
const {
return arr.Index(i); }
1416 float Size()
const {
return target_length; }
1419 return curve.Index(x/target_length*curve.Size());
1423 float target_length;
1431 float Size()
const {
return size; }
1435 res += x*u_x + f.Index(x)*u_y;
1450 float Size()
const {
return c2.Size();}
1461 float Size()
const {
return size; }
1465 res += u_x*x + u_y*f.Index(x);
1481 int Size()
const {
return arr.Size(); }
1484 return arr.
Index(i);
1494 float Size()
const {
return c2.Size(); }
1504 float Size()
const {
return curve.Size(); }
1507 Point p = curve.Index(i);
1508 Point pp = curve.Index(0.0);
1510 p += new_start_point;
1515 Point new_start_point;
1529 return curve.Index(pos);
1533 float delta = curve.Size()/divs;
1536 for(
int i = 0;i<divs;i++)
1538 Point p = curve.Index(pos);
1539 Point p2 = curve.Index(pos+delta);
1541 float dist = v.
Dist();
1544 if (pos > pos2)
return len;
1551 float delta = curve.Size()/divs;
1554 for(
int i = 0;i<divs;i++)
1556 Point p = curve.Index(pos);
1557 Point p2 = curve.Index(pos+delta);
1559 float dist = v.
Dist();
1561 if (len > length)
return pos;
1593 float Size()
const {
return angle*2.0*3.14159/360.0; }
1608 start_time.push_back(starttime);
1609 end_time.push_back(starttime+len);
1610 length.push_back(c->
Size());
1615 if (end_time.Size()==0)
return 0.0;
1616 return end_time.Index(end_time.Size()-1);
1620 int s = start_time.Size();
1622 for(
int i=0;i<s;i++)
1624 float st = start_time.Index(i);
1625 float et = end_time.Index(i);
1626 if (x < st)
continue;
1627 if (x >= st && x < et)
1630 float l = length.Index(i);
1631 m = m * c->
Index((x-st)*l/(et-st));
1636 float l = length.Index(i);
1637 m = m * c->
Index(l);
1666 Point p = curve.Index(pos);
1669 float Size()
const {
return curve.Size(); }
1679 float Size()
const {
return std::min(c1.Size(), c2.Size()); }
1689 float Size()
const {
return 2.0*3.14159; }
1700 float Size()
const {
return c2.Size(); }
1712 float Size()
const {
return length; }
1725 virtual float Size()
const {
return 3.14159*2.0; }
1736 float y = 1.0+0.2*sin(pos*3.0+time);
1740 virtual float Size()
const {
return 3.14159*2.0; }
1753 return v*curve.Index(pos);
1755 float Size()
const {
return curve.Size(); }
1799template<
class T,
class Base>
1809 typedef typename std::vector<Base*>::iterator iterator;
1812 for(iterator i=vec.begin();i!=vec.end();i++,ii++)
1814 float p =
Pos(pos, ii);
1823 typedef typename std::vector<Base*>::iterator iterator;
1825 for(iterator i=vec.begin();i!=vec.end();i++)
1827 length += (*i)->Length();
1833 typedef typename std::vector<Base*>::iterator iterator;
1835 for(iterator i=vec.begin();i!=vec.end();i++)
1837 float len = (*i)->Length();
1838 float oldlength = length;
1840 if (pos < length)
return pos-oldlength;
1845 std::vector<Base*> vec;
1854 virtual Point2d
Index(
float pos)
const
1858 virtual float Size()
const {
return 1.0; }
1873 virtual float Size()
const {
return 1.0; }
1886 virtual float Attrib(
float x,
float y,
int id)
const=0;
1887 virtual int AttribI(
float x,
float y,
int id)
const=0;
1889 virtual unsigned int Color(
float x,
float y)
const =0;
1901 virtual Point Index(
float x,
float y)
const {
return next.Index(x,y); }
1903 virtual float Attrib(
float x,
float y,
int id)
const {
return next.Attrib(x,y,
id); }
1904 virtual int AttribI(
float x,
float y,
int id)
const {
return next.AttribI(x,y,
id); }
1906 virtual unsigned int Color(
float x,
float y)
const {
return next.Color(x,y); }
1907 virtual float XSize()
const {
return next.XSize(); }
1908 virtual float YSize()
const {
return next.YSize(); }
1918 Point p = next.Index(x,y);
1933 virtual float XSize()
const {
return std::min(first.Size(), second.Size()); }
1934 virtual float YSize()
const {
return 1.0; }
1938 Point p1 = first.Index(x);
1939 Point p2 = second.Index(x);
1955 Point pp1 = plane1.Index(p1.
x, p1.
y);
1956 Point pp2 = plane2.Index(p1.
x, p1.
y);
1974 void Collect(CollectVisitor &vis) {
1978 virtual Point
Index(
float x,
float y)
const
1981 Vector v = Vector(0.0,0.0,
radius);
1983 Point ps = center+pp;
1987 virtual Point2d
Texture(
float x,
float y)
const { Point2d p = { 0,0 };
return p; }
1988 virtual float Attrib(
float x,
float y,
int id)
const
1992 virtual int AttribI(
float x,
float y,
int id)
const {
return 0; }
1993 virtual Vector
Normal(
float x,
float y)
const { Vector v; v.
dx = 0.0; v.
dy=0.0;
return v; }
1994 virtual unsigned int Color(
float x,
float y)
const {
return 0; }
1995 virtual float XSize()
const {
return 2.0*3.14159; }
1996 virtual float YSize()
const {
return 3.14159; }
2007 : surf(surf), curve(curve) { }
2010 return curve.Size();
2015 return surf.Index(p.
x,p.
y);
2029 virtual unsigned int Color(
int x,
int y)
const =0;
2030 virtual float Attrib(
int x,
int y,
int id)
const = 0;
2031 virtual int AttribI(
int x,
int y,
int id)
const = 0;
2051 int Size()
const {
return c2.Size(); }
2052 float Index(
int i)
const {
return c2.Index(i);}
2062 Circle() : r(1.0) { center.x = 0; center.y = 0; }
2067 res.
x=r*cos(angle) + center.x;
2068 res.
y = r* sin(angle) + center.y;
2071 float Size()
const {
return 2.0*3.14159; }
2079class CircleFrom2Points
2082 CircleFrom2Points(
Point2d p1,
Point2d p2,
float r,
bool b) : p1(p1), p2(p2), r(r), b(b) { }
2094 float px = (p2.
x*p2.
x-p1.
x*p1.
x) / (p1.
x-p2.
x)/2.0;
2095 float py = (p2.
y*p2.
y-p1.
y*p1.
y) / (p1.
x-p2.
x)/2.0;
2096 float m = (p2.
y-p1.
y)*2/(p1.
x-p2.
x)/2.0;
2127 float Index(
float p)
const {
return p+val; }
2137 float Size()
const {
return curve.Size(); }
2140 Point2d p = curve.Index(angle);
2154 AnimCircle(
float time,
float count) : time(time), count(count) { }
2157 float r = 1.5+0.2*sin((angle+time)*count);
2163 float Size()
const {
return 2.0*3.14159; }
2178 Point p = curve2.Index(y);
2179 Matrix m = curve.Index(x);
2183 unsigned int Color(
float x,
float y)
const
2196 virtual int AttribI(
float x,
float y,
int id)
const
2200 virtual float Attrib(
float x,
float y,
int id)
const
2210 float XSize()
const {
return curve.Size(); }
2211 float YSize()
const {
return curve2.Size(); }
2223 return pl.u_p + p.
x*pl.u_x + p.y*pl.u_y;
2235 return pl.u_p + p.
x*pl.u_x+p.
y*pl.u_y;
2249 float Size()
const {
return c.Size(); }
2253 Point pp2 = p.u_p + pp.
x*p.u_x + pp.
y*p.u_y;
2276 return c1.Index(x)+c2.Index(y);
2279 virtual unsigned int Color(
float x,
float y)
const
2295 virtual int AttribI(
float x,
float y,
int id)
const
2299 virtual float Attrib(
float x,
float y,
int id)
const
2308 virtual float XSize()
const {
return c1.Size(); }
2309 virtual float YSize()
const {
return c2.Size(); }
2320 PlaneSurfaceIn3d(Plane pl)
2321 : line_x(pl.u_p, pl.u_p+pl.u_x),
2322 line_y(pl.u_p, pl.u_p+pl.u_y),
2323 mult(line_x, line_y)
2325 void Collect(CollectVisitor &vis) { }
2327 virtual Point
Index(
float x,
float y)
const {
return mult.Index(x,y); }
2328 virtual Point2d
Texture(
float x,
float y)
const {
return mult.Texture(x,y); }
2329 virtual float Attrib(
float x,
float y,
int id)
const {
return mult.Attrib(x,y,
id); }
2330 virtual int AttribI(
float x,
float y,
int id)
const {
return mult.AttribI(x,y,
id); }
2331 virtual Vector
Normal(
float x,
float y)
const {
return mult.Normal(x,y); }
2332 virtual unsigned int Color(
float x,
float y)
const {
return mult.Color(x,y); }
2333 virtual float XSize()
const
2334 {
return mult.XSize(); }
2335 virtual float YSize()
const {
return mult.YSize(); }
2340 MultiplyCurves mult;
2350 float p = time/length;
2352 float pos1 = pos*c1.Size()/
Size();
2353 float pos2 = pos*c2.Size()/
Size();
2354 return Vector(c1.Index(pos1))*p+
Vector(c2.Index(pos2))*(1.0-p);
2358 float p = time/length;
2359 return c1.Size()*p+c2.Size()*(1.0-p);
2392 for(std::vector<FramePlugin*>::iterator i=
plugins.begin();i!=
plugins.end();i++)
2396 for(std::vector<FramePlugin*>::iterator i=
plugins.begin();i!=
plugins.end();i++)
2401 for(std::vector<FramePlugin*>::iterator i=
plugins.begin();i!=
plugins.end();i++)
2402 (*i)->PreFrame(time);
2406 for(std::vector<FramePlugin*>::iterator i=
plugins.begin();i!=
plugins.end();i++)
2411 for(std::vector<FramePlugin*>::iterator i=
plugins.begin();i!=
plugins.end();i++)
2437 TexturePlugin(
BufferRef buf) : buf(buf), texture(5566) { }
2444 unsigned int Texture()
const {
return texture; }
2447 unsigned int texture;
2469 PointCollectionConvert(
const Array<int, Point> &c2) : c2(c2) { }
2470 int Size()
const {
return c2.
Size();}
2471 Point
Index(
int i)
const {
return c2.Index(i); }
2473 const Array<int, Point> &c2;
2482 int Size()
const {
return arr.Size(); }
2509 return Point(0.0,0.0,0.0);
2557 return coll.Size()+1;
2561 if (ii==0)
return 0.0;
2562 int s = coll.Size();
2563 Point old_p = coll.Index(0);
2565 for(
int i=1;i<s;i++)
2567 Point p = coll.Index(i);
2568 dist +=
Dist(old_p, p);
2569 if (i==ii)
return dist;
2572 dist+=
Dist(old_p, coll.Index(0));
2584 Point old_p = coll.Index(0);
2586 int s = coll.Size();
2587 for(
int i=1;i<s;i++)
2589 Point p = coll.Index(i);
2590 dist +=
Dist(old_p, p);
2593 dist+=
Dist(old_p, coll.Index(0));
2598 Point old_p = coll.Index(0);
2600 int s = coll.Size();
2601 for(
int i=1;i<s;i++)
2603 float old_dist = dist;
2604 Point p = coll.Index(i);
2605 dist +=
Dist(old_p, p);
2609 return line.
Index((x - old_dist)/(dist-old_dist));
2613 LineIn3d line2(old_p, coll.Index(0));
2614 return line2.
Index((x-dist)/
Dist(old_p, coll.Index(0)));
2627 array =
new Point[size];
2628 for(
int i=0;i<size;i++)
2630 array[i] = coll.
Index(i);
2636 int dist = 999999.0;
2637 Point res(0.0,0.0,0.0);
2639 for(
int i=0;i<size;i++)
2641 Point ai = array[i];
2642 float d = (ai-ref).
Dist();
2672 int Size()
const {
return vec.size(); }
2675 std::vector<Point2d> vec;
2684 int count = p.Size();
2686 for(
int i=0;i<count;i++)
2692 float bin(
float pos,
int i,
int n)
const
2694 return float(
ni(n,i)) * pow(
double(pos),
double(i))*pow(
double(1.0-pos),
double(n-i));
2696 int ni(
int n,
int i)
const
2700 return ni(n-1,i-1)+
ni(n-1,i);
2715 int Size()
const {
return p1.Size()+p2.Size(); }
2718 if (i>=0 && i<p1.Size())
return p1.Index(i);
2719 return p2.Index(i-p1.Size());
2731 int sz = vec.size();
2733 for(
int i=0;i<sz;i++) res+=vec[i]->
Size();
2740 for(
int ii=0;ii<s;ii++)
2743 sz+=vec[ii]->Size();
2745 if (i>=sz0 && i<sz1) {
2746 return vec[ii]->Index(i-sz0);
2753 std::vector<PointCollection2d*> vec;
2760 int Size()
const {
return coll.Size()+1; }
2770 int Size()
const {
return coll.Size(); }
2784 int NumFaces()
const {
return std::min(p1.Size(),p2.Size()); }
2789 case 0:
return p1.Index(face);
2790 case 1:
return p1.Index((face+1)%
NumFaces());
2791 case 2:
return p2.Index((face+1)%
NumFaces());
2792 case 3:
return p2.Index(face);
2794 std::cout <<
"Error at LinkPointCollections" << std::endl;
2796 return Point(0.0,0.0,0.0);
2803 unsigned int Color(
int face,
int point)
const {
return 0xffffffff; }
2854 int Size()
const {
return vec.size(); }
2861 std::vector<Point2d> vec;
2875 float x = i * length / count;
2876 return curve.Index(x);
2890 return sample.Index(i);
2906 return x_numpoints+2;
2912 Point2d corner = { start_x,y };
2915 if (i>0 && i<x_numpoints+1)
2918 float x = start_x + i*(end_x-start_x)/x_numpoints;
2919 float yy = curve.Index(x);
2924 if (i==x_numpoints+1)
2926 Point2d corner = { end_x, y };
2949 return std::max(f1.Index(x),f2.Index(x));
2961 float start_x,
float end_x,
int x_numpoints)
2962 : x_numpoints(x_numpoints) { }
2966 return x_numpoints*2;
2988 int Size()
const {
return pc.Size(); }
2992 Point pp2 = p.u_p + pp.
x*p.u_x + pp.
y*p.u_y;
3013 int Size()
const {
return c2.Size(); }
3047 int Size()
const {
return c2.Size(); }
3048 std::pair<Point,Vector>
Index(
int i)
const {
return c2.Index(i); }
3057 int Size()
const {
return coll.NumVectors(); }
3060 Vector v = coll.Vectors(x);
3066 for(
int i=0;i<
size;i++)
3090 int Size()
const {
return weights.NumFloats(); }
3096 for(
int i=0;i<x;i++)
3097 s+=weights.Index(i);
3112 float length = dist;
3113 length /= float(count);
3126 int Size()
const {
return grid.XSize()*grid.YSize(); }
3130 int size = grid.XSize();
3131 int y = index /
size;
3132 int x = index - y*
size;
3133 Point p = grid.Index(x,y);
3175 return coll.GetBoundingBox(success);
3179 virtual bool Ready()
const {
return coll.Ready(); }
3184 virtual int NumFaces()
const {
return coll.NumFaces(); }
3185 virtual int NumPoints(
int face)
const {
return coll.NumPoints(face); }
3186 virtual Point FacePoint(
int face,
int point)
const {
return coll.FacePoint(face,point); }
3190 virtual float Attrib(
int face,
int point,
int id)
const {
return coll.Attrib(face,point,
id); }
3191 virtual int AttribI(
int face,
int point,
int id)
const {
return coll.AttribI(face,point,
id); }
3192 virtual unsigned int Color(
int face,
int point)
const {
return coll.Color(face,point); }
3194 virtual float TexCoord3(
int face,
int point)
const {
return coll.TexCoord3(face,point); }
3195 virtual VEC4 Joints(
int face,
int point)
const {
return coll.Joints(face,point); }
3196 virtual VEC4 Weights(
int face,
int point)
const {
return coll.Weights(face,point); }
3206 virtual std::pair<int,int>
GetObject(
int o)
const {
return coll.GetObject(o); }
3211 virtual int FaceTexture(
int face)
const {
return coll.FaceTexture(face); }
3222 return coll.GetBoundingBox(success);
3229 virtual int NumFaces()
const {
return coll.NumFaces(); }
3230 virtual int NumPoints(
int face)
const {
return coll.NumPoints(face); }
3231 virtual Point FacePoint(
int face,
int point)
const {
return coll.FacePoint(face,point); }
3235 virtual float Attrib(
int face,
int point,
int id)
const {
return coll.Attrib(face,point,
id); }
3236 virtual int AttribI(
int face,
int point,
int id)
const {
return coll.AttribI(face,point,
id); }
3237 virtual unsigned int Color(
int face,
int point)
const {
return coll.Color(face,point); }
3239 virtual float TexCoord3(
int face,
int point)
const {
return coll.TexCoord3(face,point); }
3241 virtual VEC4 Joints(
int face,
int point)
const {
return coll.Joints(face,point); }
3242 virtual VEC4 Weights(
int face,
int point)
const {
return coll.Weights(face,point); }
3255 virtual int FaceTexture(
int face)
const {
return coll.FaceTexture(face); }
3258 virtual std::pair<int,int>
GetObject(
int o)
const {
return coll.GetObject(o); }
3269 virtual std::string
name()
const {
return "ShadowFaceCollection"; }
3283 virtual std::string
name()
const {
return "ReflectFaceCollection"; }
3296 CoordChangeFaceColl(FaceCollection *coll,
bool invert, Coords coordchange)
3297 : ForwardFaceCollection(*coll),
3299 coordchange(coordchange) {}
3300 virtual Point
FacePoint(
int face,
int point)
const
3304 p = coordchange.FindInternalCoords(p);
3307 p = coordchange.FindExternalCoords(p);
3321 virtual std::string
name()
const {
return "RecalculateNormals"; }
3326 if (store_face==face)
return store_res;
3338 mutable int store_face=-1;
3339 mutable Vector store_res;
3347 AverageNormals(FaceCollection *coll,
int sx,
int sy) : ForwardFaceCollection(*coll), sx(sx),sy(sy), coll(coll) { }
3350 int face_xp = face + 1;
3351 int face_xm = face - 1;
3352 int face_yp = face + sx;
3353 int face_ym = face - sx;
3354 int face_xm_ym = face - 1 - sx;
3355 int face_xp_ym = face + 1 - sx;
3356 int face_xm_yp = face - 1 + sx;
3357 int face_xp_yp = face + 1 + sx;
3359 Vector n_face = coll->PointNormal(face,point);
3360 Vector n_xm_ym = coll->PointNormal(face_xm_ym, point);
3361 Vector n_xp_ym = coll->PointNormal(face_xp_ym, point);
3362 Vector n_xm_yp = coll->PointNormal(face_xm_yp, point);
3363 Vector n_xp_yp = coll->PointNormal(face_xp_yp, point);
3364 Vector n_xp = coll->PointNormal(face_xp, point);
3365 Vector n_xm = coll->PointNormal(face_xm, point);
3366 Vector n_yp = coll->PointNormal(face_yp, point);
3367 Vector n_ym = coll->PointNormal(face_ym, point);
3373 case 0: n = n_xm_ym; n2=n_ym; p=n_xm; p2=n_face;
break;
3374 case 1: n = n_ym; n2=n_xp_ym; p=n_face; p2=n_xp;
break;
3375 case 2: n = n_face; n2=n_xp; p=n_yp; p2=n_xp_yp;
break;
3376 case 3: n = n_xm; n2=n_face; p=n_xm_yp; p2=n_yp;
break;
3378 Vector avg = n+n2+p+p2;
3384 FaceCollection *coll;
3395 int res_i = 0, res_ii = 0;
3396 bool result =
false;
3397 for(
int i=0;i<count;i++)
3399 if (i==face)
continue;
3401 for(
int ii=0;ii<count2;ii++)
3405 if (v.
Dist() < 0.001)
3407 res_i = i; res_ii = ii;
3450 virtual void Set(
int index,
bool b)=0;
3466 s.Set(index+start, b);
3479 selectarray =
new int[size];
3480 for(
int i=0;i<size;i++)
3488 if (index<0 || index >=size)
return;
3489 if (b) { selectarray[index] = 1; }
3490 else { selectarray[index] = 0; }
3505 s.Set(frame,
false);
3506 s.Set(framenum,
true);
3524 RotateAroundEdge(
Matrix m,
FaceCollection &obj,
int face,
int point1,
int point2,
float speed,
float length) : m(m), obj(obj), speed(speed), face(face), point1(point1), point2(point2), length(length) { }
3525 float Size()
const {
return length; }
3528 Point p1 = obj.FacePoint(face, point1);
3529 Point p2 = obj.FacePoint(face, point2);
3540 int face, point1, point2;
3554 int Size()
const {
return a.NumFrames(); }
3569 int Size()
const {
return arr.Size(); }
3575 virtual int NumFaces()
const {
return arr.Index(object_id)->NumFaces(); }
3576 virtual int NumPoints(
int face)
const {
return arr.Index(object_id)->NumPoints(face); }
3577 virtual Point FacePoint(
int face,
int point)
const {
return arr.Index(object_id)->FacePoint(face,point); }
3578 virtual Vector PointNormal(
int face,
int point)
const {
return arr.Index(object_id)->PointNormal(face,point); }
3579 virtual int AttribI(
int face,
int point,
int id)
const
3581 return arr.Index(object_id)->AttribI(face,point,
id);
3584 virtual float Attrib(
int face,
int point,
int id)
const
3590 return arr.Index(object_id)->Attrib(face,point,
id);
3594 mutable int object_id;
3619 for(
int i=0;i<s;i++) const_cast<FaceCollection*>(arr.Index(i))->Prepare();
3623 if (oldcount != -1)
return oldcount;
3625 int num = arr.Size();
3626 for(
int i=0;i<
num;i++)
3628 count += arr.Index(i)->NumFaces();
3636 int num = arr.Size();
3637 for (
int i=0;i<
num;i++)
3639 int oldcount = count;
3640 count += arr.Index(i)->NumFaces();
3641 if (count > face) {
return arr.Index(i)->NumPoints(face-oldcount); }
3648 int num = arr.Size();
3649 for (
int i=0;i<
num;i++)
3651 int oldcount = count;
3652 count += arr.Index(i)->NumFaces();
3653 if (count > face) {
return arr.Index(i)->FacePoint(face-oldcount, point); }
3655 std::cout <<
"CompressObject::Point" << std::endl;
3656 return Point(0.0,0.0,0.0);
3660 virtual unsigned int Color(
int face,
int point)
const
3663 int num = arr.Size();
3664 for (
int i=0;i<
num;i++)
3666 int oldcount = count;
3667 count += arr.Index(i)->NumFaces();
3668 if (count > face) {
return arr.Index(i)->Color(face-oldcount, point); }
3670 std::cout <<
"CompressObject::0" << std::endl;
3677 int num = arr.Size();
3678 for (
int i=0;i<
num;i++)
3680 int oldcount = count;
3681 count += arr.Index(i)->NumFaces();
3682 if (count > face) {
return arr.Index(i)->TexCoord(face-oldcount, point); }
3684 std::cout <<
"CompressObject::0" << std::endl;
3695 int num = arr.Size();
3696 for (
int i=0;i<
num;i++)
3698 int oldcount = count;
3699 count += arr.Index(i)->NumFaces();
3700 if (count > face) {
return arr.Index(i)->PointNormal(face-oldcount, point); }
3702 std::cout <<
"CompressObject::Vector" << std::endl;
3703 return Vector(0.0,0.0,0.0);
3706 virtual float Attrib(
int face,
int point,
int id)
const
3709 int num = arr.Size();
3710 for (
int i=0;i<
num;i++)
3712 int oldcount = count;
3713 count += arr.Index(i)->NumFaces();
3714 if (count > face) {
return arr.Index(i)->Attrib(face-oldcount, point,
id); }
3719 virtual int AttribI(
int face,
int point,
int id)
const
3722 int num = arr.Size();
3724 for (
int i=0;i<
num;i++)
3726 int oldcount = count;
3727 count += arr.Index(i)->NumFaces();
3728 if (count > face) {
return arr.Index(i)->AttribI(face-oldcount, point,
id); }
3736 mutable int oldcount;
3748 virtual unsigned int Color(
int index)
const=0;
3749 virtual float Attrib(
int index,
int id)
const=0;
3751 virtual int Index(
int face,
int point)
const=0;
3763 virtual int NumFaces()
const { arr.Index(t);
return tri.NumFaces(); }
3764 virtual int NumPoints()
const { arr.Index(t);
return tri.NumPoints(); }
3765 virtual Point FacePoint(
int index)
const { arr.Index(t);
return tri.FacePoint(index); }
3767 virtual unsigned int Color(
int index)
const { arr.Index(t);
return tri.Color(index); }
3770 virtual float Attrib(
int index,
int id)
const { arr.Index(t);
return tri.Attrib(index,
id); }
3771 virtual int AttribI(
int index,
int id)
const { arr.Index(t);
return tri.AttribI(index,
id); }
3772 virtual int Index(
int face,
int point)
const { arr.Index(t);
return tri.Index(face,point); }
3773 virtual int IndexCount()
const { arr.Index(t);
return tri.IndexCount(); }
3774 virtual int IndexToFace(
int index)
const { arr.Index(t);
return tri.IndexToFace(index); }
3780 int Size()
const {
return arr.Size(); }
3783 Arr *a =
new Arr(*arr.Index(i), arr, i);
3789 for(std::vector<Arr*>::iterator i = owner.begin();i!=owner.end();i++)
3796 mutable std::vector<Arr*> owner;
3804 virtual int NumFaces()
const {
return CurrentBatchSize(); }
3807 int i = LastIndex()-FirstIndex();
3813 return tri.FacePoint(IndexMap(index));
3817 return tri.PointNormal(IndexMap(index));
3819 virtual unsigned int Color(
int index)
const
3821 return tri.Color(IndexMap(index));
3825 return tri.TexCoord(IndexMap(index));
3827 virtual float Attrib(
int index,
int id)
const
3829 return tri.Attrib(IndexMap(index),
id);
3833 return tri.AttribI(IndexMap(index),
id);
3835 virtual int Index(
int face,
int point)
const
3838 return IndexMapI(tri.Index(FaceMap(face), point));
3840 virtual int IndexCount()
const {
return LastIndex()-FirstIndex(); }
3843 return FaceMapI(tri.IndexToFace(IndexMap(index)));
3846 int FaceMap(
int face)
const
3848 face += batchsize*currentbatch;
3851 int FaceMapI(
int face)
const
3853 face -= batchsize*currentbatch;
3856 int IndexMap(
int index)
const
3858 index += FirstIndex();
3861 int IndexMapI(
int index)
const
3863 index -= FirstIndex();
3866 int BatchFace(
int face)
const
3868 return face % batchsize;
3870 int FirstIndex()
const
3872 return tri.Index(batchsize*currentbatch,0);
3874 int LastIndex()
const
3876 return tri.Index(batchsize*currentbatch+CurrentBatchSize(),0);
3878 int CurrentBatchSize()
const
3880 int numfaces = tri.NumFaces();
3881 numfaces -= currentbatch*batchsize;
3882 if (numfaces > batchsize)
return batchsize;
3886 int Size()
const {
return tri.NumFaces()/batchsize + 1; }
3895 mutable int currentbatch;
3918 int num = arr.Size();
3919 for(
int i=0;i<
num;i++)
3921 int oldcount = count;
3922 count += arr.Index(i)->NumPoints();
3924 if (ii > obj) { count = oldcount;
break; }
3936 int num = arr.Size();
3937 for(
int i=0;i<
num;i++)
3939 int oldcount = count;
3940 count += arr.Index(i)->IndexCount();
3942 if (ii > obj) { count = oldcount;
break; }
3955 int num = arr.Size();
3956 for(
int i=0;i<
num;i++)
3958 count += arr.Index(i)->NumFaces();
3966 int num = arr.Size();
3967 for(
int i=0;i<
num;i++)
3969 count += arr.Index(i)->NumPoints();
3976 int num = arr.Size();
3977 for(
int i=0;i<
num;i++)
3979 int oldcount = count;
3980 count += arr.Index(i)->IndexCount();
3983 Point p = arr.Index(i)->FacePoint(index-oldcount);
3991 virtual unsigned int Color(
int index)
const
3994 int num = arr.Size();
3995 for(
int i=0;i<
num;i++)
3997 int oldcount = count;
3998 count += arr.Index(i)->IndexCount();
3999 if (count > index) {
return arr.Index(i)->Color(index-oldcount); }
4001 std::cout <<
"ObjectArray2::0" << std::endl;
4008 int num = arr.Size();
4009 for(
int i=0;i<
num;i++)
4011 int oldcount = count;
4012 count += arr.Index(i)->IndexCount();
4013 if (count > index) {
return arr.Index(i)->TexCoord(index-oldcount); }
4015 std::cout <<
"ObjectArray2::0" << std::endl;
4026 int num = arr.Size();
4027 for(
int i=0;i<
num;i++)
4029 int oldcount = count;
4030 count += arr.Index(i)->IndexCount();
4031 if (count > index) {
return arr.Index(i)->PointNormal(index-oldcount); }
4037 virtual float Attrib(
int index,
int id)
const
4040 int num = arr.Size();
4041 for(
int i=0;i<
num;i++)
4043 int oldcount = count;
4044 count += arr.Index(i)->IndexCount();
4045 if (count > index) {
return arr.Index(i)->Attrib(index-oldcount,
id); }
4054 int num = arr.Size();
4055 for(
int i=0;i<
num;i++)
4057 int oldcount = count;
4058 count += arr.Index(i)->IndexCount();
4059 if (count > index) {
return arr.Index(i)->AttribI(index-oldcount,
id); }
4068 int num = arr.Size();
4069 for(
int i=0;i<
num;i++)
4071 count += arr.Index(i)->IndexCount();
4079 int oldfacecount = 0;
4081 int num = arr.Size();
4085 int oldcount = count;
4086 oldfacecount = facecount;
4087 count += arr.Index(i)->IndexCount();
4088 facecount += arr.Index(i)->NumFaces();
4089 if (count > index) { result = index-oldcount;
break; }
4091 return oldfacecount + arr.Index(i)->IndexToFace(result);
4093 virtual int Index(
int face,
int point)
const
4099 int num = arr.Size();
4102 int oldcount = count;
4103 count += arr.Index(i)->NumFaces();
4104 if (count > face) { result = face-oldcount;
break; }
4107 int ii = arr.Index(i)->Index(result, point);
4126 for(std::vector<const FaceCollectionTri*>::const_iterator i=vec.begin();i!=vec.end();i++)
4128 int oldcount = count;
4129 count += (*i)->NumPoints();
4131 if (ii > obj) { count = oldcount;
break; }
4143 for(std::vector<const FaceCollectionTri*>::const_iterator i=vec.begin();i!=vec.end();i++)
4145 int oldcount = count;
4146 count += (*i)->IndexCount();
4148 if (ii > obj) { count = oldcount;
break; }
4161 for(std::vector<const FaceCollectionTri*>::const_iterator i=vec.begin();i!=vec.end();i++)
4163 count += (*i)->NumFaces();
4171 for(std::vector<const FaceCollectionTri*>::const_iterator i=vec.begin();i!=vec.end();i++)
4173 count += (*i)->NumPoints();
4180 for(std::vector<const FaceCollectionTri*>::const_iterator i=vec.begin(); i!=vec.end();i++)
4182 int oldcount = count;
4183 count += (*i)->IndexCount();
4184 if (count > index) {
return (*i)->FacePoint(index-oldcount); }
4190 virtual unsigned int Color(
int index)
const
4193 for(std::vector<const FaceCollectionTri*>::const_iterator i=vec.begin(); i!=vec.end();i++)
4195 int oldcount = count;
4196 count += (*i)->IndexCount();
4197 if (count > index) {
return (*i)->Color(index-oldcount); }
4199 std::cout <<
"ObjectArray::0" << std::endl;
4207 for(std::vector<const FaceCollectionTri*>::const_iterator i=vec.begin(); i!=vec.end();i++)
4209 int oldcount = count;
4210 count += (*i)->IndexCount();
4211 if (count > index) {
return (*i)->TexCoord(index-oldcount); }
4213 std::cout <<
"ObjectArray::0" << std::endl;
4225 for(std::vector<const FaceCollectionTri*>::const_iterator i=vec.begin(); i!=vec.end();i++)
4227 int oldcount = count;
4228 count += (*i)->IndexCount();
4229 if (count > index) {
return (*i)->PointNormal(index-oldcount); }
4235 virtual float Attrib(
int index,
int id)
const
4238 for(std::vector<const FaceCollectionTri*>::const_iterator i=vec.begin(); i!=vec.end();i++)
4240 int oldcount = count;
4241 count += (*i)->IndexCount();
4242 if (count > index) {
return (*i)->Attrib(index-oldcount,
id); }
4251 for(std::vector<const FaceCollectionTri*>::const_iterator i=vec.begin(); i!=vec.end();i++)
4253 int oldcount = count;
4254 count += (*i)->IndexCount();
4255 if (count > index) {
return (*i)->AttribI(index-oldcount,
id); }
4270 int oldfacecount = 0;
4272 std::vector<const FaceCollectionTri*>::const_iterator i = vec.begin();
4273 for(; i!=vec.end();i++)
4275 int oldcount = count;
4276 oldfacecount = facecount;
4277 count += (*i)->IndexCount();
4278 facecount += (*i)->NumFaces();
4279 if (count > index) { result = index-oldcount;
break; }
4281 return oldfacecount + (*i)->IndexToFace(result);
4283 virtual int Index(
int face,
int point)
const
4287 std::vector<const FaceCollectionTri*>::const_iterator i = vec.begin();
4289 for(; i!=vec.end();i++)
4291 int oldcount = count;
4292 count += (*i)->NumFaces();
4293 if (count > face) { result = face-oldcount;
break; }
4296 int ii = (*i)->Index(result, point);
4300 std::vector<const FaceCollectionTri*> vec;
4309 return coll.NumFaces();
4313 return coll.NumFaces()*3;
4317 int face = index / 3;
4318 int point = index - face*3;
4319 return coll.FacePoint(face, point);
4321 virtual unsigned int Color(
int index)
const
4323 int face = index / 3;
4324 int point = index - face*3;
4325 return coll.Color(face, point);
4329 int face = index / 3;
4330 int point = index - face*3;
4331 return coll.TexCoord(face, point);
4336 int face = index / 3;
4337 int point = index - face*3;
4338 return coll.PointNormal(face, point);
4340 virtual float Attrib(
int index,
int id)
const
4342 int face = index / 3;
4343 int point = index - face*3;
4344 return coll.Attrib(face, point,
id);
4348 int face = index / 3;
4349 int point = index - face*3;
4350 return coll.AttribI(face, point,
id);
4352 virtual int Index(
int face,
int point)
const
4354 return face*3+point;
4358 return coll.NumFaces();
4376 Point p1 = coll.FacePoint(i, 0);
4377 Point p2 = coll.FacePoint(i, 1);
4378 Point p3 = coll.FacePoint(i, 2);
4379 Point p4 = coll.FacePoint(i, 3);
4383 int Size()
const {
return coll.NumFaces(); }
4394 return coll.NumFaces()*2;
4398 return coll.NumFaces()*4;
4402 int face = index >> 2;
4403 int point = index & 0x3;
4404 return coll.FacePoint(face, point);
4408 int face = index >> 2;
4409 int point = index & 0x3;
4410 return coll.PointNormal(face, point);
4412 virtual unsigned int Color(
int index)
const
4414 int face = index >> 2;
4415 int point = index & 0x3;
4416 return coll.Color(face, point);
4421 int face = index >> 2;
4422 int point = index & 0x3;
4423 return coll.TexCoord(face, point);
4426 virtual float Attrib(
int index,
int id)
const
4428 int face = index >> 2;
4429 int point = index & 0x3;
4430 return coll.Attrib(face, point,
id);
4434 int face = index >> 2;
4435 int point = index & 0x3;
4436 return coll.AttribI(face, point,
id);
4438 virtual int Index(
int face,
int point)
const
4440 int face1 = face >> 1;
4441 int face2 = face &0x1;
4442 int offset = face2*2 + face1*4;
4443 if (face2==1 && point==2)
4445 int i = offset-face2*2;
4449 int i = offset+point;
4457 return 4*coll.NumFaces();
4475 virtual int Size()
const {
return vec.size(); }
4478 std::vector<Point> vec;
4484 StarCurve(
float r1,
float r2,
int numpoints) : num(numpoints), r1(r1), r2(r2) {}
4493 float angle = 2.0*3.14159*float(i/2)/float(num);
4511 int Size()
const {
return arr.NumFloats(); }
4517 float length = arr.Index(index);
4518 return curve.Index(length);
4534 int Size()
const {
return sample.Size(); }
4548 Vector v = p.second - p.first;
4560 std::pair<Point, Point> p;
4568 float Size()
const {
return curve.Size(); }
4571 Point p = curve.Index(x);
4572 Point p2 = curve.Index(x+0.01);
4586 virtual std::string
name()
const {
return "FlipNormals"; }
4591 int NumPoints(
int face)
const {
return coll.NumPoints(face); }
4594 return -coll.PointNormal(face,point);
4596 float Attrib(
int face,
int point,
int id)
const {
return coll.Attrib(face,point,
id); }
4597 int AttribI(
int face,
int point,
int id)
const {
return coll.AttribI(face,point,
id); }
4600 return coll.HasBatchMap();
4606 pos2 =
new Vector[numvertices];
4607 for(
int i=0;i<numvertices;i++)
4609 pos2[i] = -(*pos)[i];
4656 int NumLines()
const {
return loops?p.NumPoints():p.NumPoints()-1; }
4659 int num = line+point;
4660 num %= p.NumPoints();
4661 return p.Points(
num);
4680 for(
int i=0;i<s;i++)
4703 case 0:
return p1->
FacePoint(i, line-oldcount);
4704 case 1:
return p2->
FacePoint(i, line-oldcount);
4724 int faces = c.NumFaces();
4726 for(
int i=0;i<faces;i++)
4728 int num = c.NumPoints(i);
4730 for(
int j=0;j<
num;j++)
4732 counts.push_back(i);
4733 counts2.push_back(oldc);
4746 unsigned int LineColor(
int line,
int point)
const;
4749 std::vector<int> counts;
4750 std::vector<int> counts2;
4762 int faces = previous.NumFaces();
4763 for(
int i=0;i<faces;i++)
4766 num2+=previous.NumPoints(i)+1;
4768 return coll.LinePoint(num2+point, 0);
4779 int Size()
const {
return faces.NumFaces(); }
4781 int count = faces.NumPoints(face);
4783 for(
int i=0;i<count;i++)
4785 Vector p = faces.FacePoint(face, i);
4788 sum*=1.0/float(count);
4801 int Size()
const {
return faces.NumFaces(); }
4803 int count = faces.NumPoints(face);
4805 for(
int i=0;i<count;i++)
4807 Vector p = faces.PointNormal(face,i);
4810 sum*=1.0/float(count);
4820 std::pair<Point,Vector>
Elem()
const
4822 return std::make_pair(v.first + val*v.second, v.second);
4825 std::pair<Point,Vector> v;
4834 std::pair<Point, Point>
Elem()
const
4837 return std::make_pair(vec.first, vec.first+vec.second);
4840 std::pair<Point, Vector> vec;
4847 Fur(
FaceCollection &face,
int numlines,
int numlines2,
float length) : face(face), numlines(numlines), numlines2(numlines2), length(length) { }
4848 int NumLines()
const {
return face.NumFaces()*numlines*numlines2; }
4851 int zz = line / (numlines*numlines2);
4852 int ddz = line - zz * (numlines*numlines2);
4853 int yy = ddz / numlines;
4854 int ddy = ddz - yy*numlines;
4856 float yyy = float(yy)/numlines2;
4857 float xxx = float(xx)/numlines;
4861 Point p1 = face.FacePoint(zz, 0);
4862 Point p2 = face.FacePoint(zz, 1);
4863 Point p3 = face.FacePoint(zz, 2);
4869 return p1+v1*yyy+xxx*v2;
4873 return p1+v1*yyy+v2*xxx+face.PointNormal(zz,0)*length;
4879 int numlines, numlines2;
4897 return coll.FaceTexture(face);
4912 Point p = coll.FacePoint(face,point);
4914 float alfa = atan2(sqrt(v.
dx*v.
dx+v.
dy*v.
dy),v.
dz);
4915 float beta = atan2(v.
dy,v.
dx);
4917 res.
x = alfa/3.14159/2.0;
4918 res.
y = beta/3.14159/2.0;
4935 Point p = coll.FacePoint(face,point);
4959 int numfaces = coll.NumFaces();
4960 float dx = 1.0/numfaces;
4962 float xx=0.0,yy=0.0;
4966 case 3: xx=0.0; yy=0.0;
break;
4967 case 0: xx=0.0; yy=
dy;
break;
4968 case 1: xx=dx; yy=
dy;
break;
4969 case 2: xx=dx; yy=0.0;
break;
4990 int count = coll.NumPoints(face);
4991 float angle = 45.0 +point*360.0/count;
4993 d.x = 0.5+0.5* cos(angle*3.14159*2.0/360.0);
4994 d.y = 0.5+0.5* sin(angle*3.14159*2.0/360.0);
5010 Point c = coll.FacePoint(face, point);
5050 std::vector<Color2> cont;
5079 virtual float Min()
const = 0;
5080 virtual float Max()
const = 0;
5081 virtual float Index(
float val)
const = 0;
5088 virtual float Length()
const {
return wv->Length()/old_freq*new_freq; }
5089 virtual float Min()
const {
return wv->Min(); }
5090 virtual float Max()
const {
return wv->Max(); }
5093 return wv->Index(val/old_freq*new_freq);
5098 float old_freq, new_freq;
5103 VolumeRampWaveform(
Waveform *orig,
float old_y_value,
float x_pos1,
float x_pos2,
float y_pos1,
float y_pos2) : orig(orig), old_y(old_y_value), x_pos1(x_pos1), x_pos2(x_pos2), y_pos1(y_pos1), y_pos2(y_pos2) { }
5104 virtual float Length()
const {
return orig->Length(); }
5105 virtual float Min()
const {
return orig->Min(); }
5106 virtual float Max()
const {
return orig->Max(); }
5109 float val2 = orig->Index(val);
5110 if (val>=x_pos1 && val<x_pos2)
5113 float pos = val-x_pos1;
5138 return std::max(orig->Length(), pos+sample->Length());
5142 return std::min(orig->Min(), sample->Min());
5146 return std::max(orig->Max(), sample->Max());
5150 if (val < pos) {
return orig->Index(val); }
5151 if (val>orig->Length() && val<pos+sample->
Length()) {
return sample->Index(val-pos); }
5152 if (val>=pos && val<pos+sample->
Length()) {
return orig->Index(val)+sample->Index(val-pos); }
5153 return orig->Index(val);
5163 ZeroWaveform(
float length_x,
float min_y,
float max_y) : length(length_x), min(min_y), max(max_y) { }
5165 float Min()
const {
return min; }
5166 float Max()
const {
return max; }
5167 float Index(
float val)
const {
return 0.0; }
5169 float length, min, max;
5182 ConstantWaveformPart(
float start_x,
float end_x,
float value) : start_x(start_x), end_x(end_x), value(value) { }
5183 float Delta(
float x)
const
5185 if (x < start_x)
return 0.0;
5186 if (x >= end_x)
return 0.0;
5190 float start_x, end_x, value;
5197 LinWaveformPart(
float start_x,
float end_x,
float delta_y) : start_x(start_x), end_x(end_x), delta_y(delta_y) { }
5200 if (x < start_x)
return 0.0;
5201 if (x > end_x)
return delta_y;
5202 return (x-start_x)/(end_x-start_x)*delta_y;
5205 float start_x, end_x,
delta_y;
5211 ArrayWaveform(
float *array,
int size,
float samplelength) : array(array), size(size), samplelength(samplelength) { }
5217 part =
new ConstantWaveformPart(samplelength*i, samplelength*(i+1), array[i]);
5232 ArrayWaveform2(
float *array,
int size,
float samplelength,
float m_min,
float m_max) : array(array), size(size), samplelength(samplelength), m_min(m_min), m_max(m_max) { }
5233 virtual float Length()
const {
return size*samplelength; }
5234 virtual float Min()
const {
return m_min; }
5235 virtual float Max()
const {
return m_max; }
5238 val /= samplelength;
5240 if (val >= 0 && val < size)
5262 float Length()
const {
return base.Length(); }
5263 float Min()
const {
return base.Min(); }
5264 float Max()
const {
return base.Max(); }
5267 float val2 = base.Index(val);
5268 int size = arr.Size();
5269 for(
int i=0;i<
size;i++)
5271 val+=arr.Index(i)->Delta(val2);
5284 float Min()
const {
return 0.0; }
5285 float Max()
const {
return 1.0; }
5286 float Index(
float val)
const {
return val; }
5296 return wave.Index(
Sample(i));
5300 return float(i)*wave.Length()/float(count);
5313 int Size()
const {
return array.Size(); }
5317 pp.
x = p.x + v_x.dx*i/
Size() + v_y.dx*array.Index(i);
5318 pp.
y = p.y + v_x.dy*i/
Size() + v_y.dy*array.Index(i);
5342 float val = wave->
Index(y);
5345 float SizeX()
const {
return curve.Size(); }
5346 float SizeY()
const {
return curve.Index(0.0)->Length(); }
5358 float val = array.Index(x,y);
5359 return p + x*u.u_x/array.SizeX() + y*u.u_y/array.SizeY() + val*u.u_z;
5362 virtual float Attrib(
float x,
float y,
int id)
const {
return 0.0; }
5363 virtual int AttribI(
float x,
float y,
int id)
const {
return 0; }
5371 virtual float XSize()
const {
return array.SizeX(); }
5372 virtual float YSize()
const {
return array.SizeY(); }
5383 float Length()
const {
return w.Length()*times; }
5384 float Min()
const {
return w.Min(); }
5385 float Max()
const {
return w.Max(); }
5388 while(val>=w.Length()) val-=w.Length();
5389 return w.Index(val);
5401 SinWaveform(
float length,
float freq) : length(length), freq(freq) { }
5403 float Min()
const {
return -1.0; }
5404 float Max()
const {
return 1.0; }
5405 float Index(
float val)
const {
return sinf(freq*val); }
5433 float Min()
const {
return val; }
5434 float Max()
const {
return val; }
5436 float Index(
float xx)
const {
return val; }
5447 length(length), ymin(ymin), ymax(ymax), cont(beg, end)
5449 float Min()
const {
return ymin; }
5450 float Max()
const {
return ymax; }
5452 float Index(
float time)
const;
5454 float length, ymin, ymax;
5455 std::vector<Point2d> cont;
5489 int size = c2.Size();
5501 FacesToBoxCollection(
FaceCollection &coll,
float dist) : facepoints(coll), normals(coll), combined(facepoints, normals), advance(dist), ch(combined, advance, advance_elem, func, func_elem, dir_func, dir_func_elem), boxes(ch) { }
5502 int Size()
const {
return boxes.Size(); }
5567 int Size()
const {
return c2.Size(); }
5577 int Size()
const {
return std::min(arr.Size(), arr2.Size()); }
5580 combine.SetValues(arr.Index(i), arr2.Index(i));
5594 int Size()
const {
return std::min(std::min(center_points.Size(), center2_points.Size()), r.Size()); }
5598 Point center = center_points.Index(i);
5599 Point center2 = center2_points.Index(i);
5600 float rr = r.Index(i);
5601 if (!p) { p =
new BlobParameters(center, center2,rr); }
5602 p->set_points(center, center2,rr);
5630 int Size()
const {
return std::min(std::min(box.NumBoxes(), obj.NumObjects()), params.Size()); }
5633 Matrix m = box.BoxIndex(i);
5634 int o = obj.BoxObject(i);
5652 int NumBoxes()
const {
return std::min(box.NumBoxes(), obj.NumObjects()); }
5665 virtual int Size()
const {
return p.NumPoints(); }
5697 virtual bool Visible(
float posinpath,
int path)=0;
5708 int NumPaths(
float posinpath)
const {
return p1.NumPaths(posinpath) + p2.NumPaths(posinpath); }
5711 if (path < p1.NumPaths(posinpath))
5713 return p1.Index(posinpath, path);
5717 return p2.Index(posinpath, path-p1.NumPaths(posinpath));
5732 int c=coll.NumPaths(posinpath);
5734 for(
int i=0;i<c;i++)
5736 bool b = p.Visible(posinpath, i);
5743 return coll.Index(posinpath,
Mapping(posinpath, path));
5748 int num = coll.NumPaths(posinpath);
5749 for(
int i=0;i<
num;i++)
5751 bool b = p.Visible(posinpath,i);
5754 if (count == ii)
return i;
5772 if (posinpath<length/2.0)
return box.NumBoxes();
5773 return box.NumBoxes()*2;
5777 return box.BoxIndex(path);
5799 int Size()
const {
return path.NumPaths(time); }
5810 float Size()
const {
return path.PathLength(); }
5828 float length = curve.Size();
5829 length /= float(count);
5830 length *= float(
box);
5831 return curve.Index(length);
5871 if (i1.
face < i2.
face)
return true;
5872 if (i1.
face > i2.
face)
return false;
5883 virtual std::string
name()
const {
return "FaceCollectionStore"; }
5894 Add(coll, textures);
5898 int oldtextures = texturecount;
5902 for(
int i=0;i<numtextures;i++)
5909 int oldfaces = facecount;
5912 for(
int f=0;
f<faces;
f++)
5915 points_vec.push_back(points);
5916 textureselection.push_back(coll.
FaceTexture(
f)+oldtextures);
5917 for(
int p = 0;p<points;p++)
5921 fi.
face =
f + oldfaces;
5935 virtual int NumPoints(
int face)
const {
return points_vec[face]; }
5946 virtual float Attrib(
int face,
int point,
int id)
const
5950 virtual int AttribI(
int face,
int point,
int id)
const
5954 virtual unsigned int Color(
int face,
int point)
const
5977 std::vector<int> points_vec;
5979 std::vector<BufferRef> buffers;
5980 std::vector<int> textureselection;
5981 mutable std::map<FaceIndexStruct, FacePointStruct> map;
5990 FrameFaceCollection(BoxableFaceCollection &coll,
int frame) : coll(coll),
frame(
frame) { }
5992 virtual int NumPoints(
int face)
const {
return coll.NumPoints(face); }
5993 virtual Point
FacePoint(
int face,
int point)
const {
return coll.FacePoint(face, point); }
5994 virtual Point
EndFacePoint(
int face,
int point)
const {
return coll.EndFacePoint(face, point); }
5995 virtual Vector
PointNormal(
int face,
int point)
const {
return coll.PointNormal(face,point); }
5996 virtual float Attrib(
int face,
int point,
int id)
const {
6000 return float(
frame)+0.01;
6002 return coll.Attrib(face, point,
id); }
6003 virtual int AttribI(
int face,
int point,
int id)
const
6010 return coll.AttribI(face, point,
id);
6012 virtual unsigned int Color(
int face,
int point)
const {
return coll.Color(face,point); }
6013 virtual Point2d
TexCoord(
int face,
int point)
const {
return coll.TexCoord(face,point); }
6014 virtual bool Inside(Point p)
const {
return false; }
6015 virtual void SetBox(Matrix b) { }
6017 const BoxableFaceCollection &coll;
6026 virtual std::string
name()
const {
return "BoxableFaceCollectionConvert"; }
6035 virtual int NumFaces()
const {
return coll.NumFaces(); }
6036 virtual int NumPoints(
int face)
const {
return coll.NumPoints(face); }
6037 virtual Point FacePoint(
int face,
int point)
const {
return coll.FacePoint(face, point); }
6040 virtual float Attrib(
int face,
int point,
int id)
const {
return coll.Attrib(face, point,
id); }
6041 virtual int AttribI(
int face,
int point,
int id)
const {
return coll.AttribI(face, point,
id); }
6042 virtual unsigned int Color(
int face,
int point)
const {
return coll.Color(face,point); }
6044 virtual float TexCoord3(
int face,
int point)
const {
return coll.TexCoord3(face,point); }
6056 FrameFaceCollectionArray(FaceCollectionArray &arr) : arr(arr), frames(0),
convert(0) { }
6057 int Size()
const {
return arr.
Size(); }
6058 const FaceCollection *
Index(
int i)
const
6062 convert =
new BoxableFaceCollectionConvert(*arr.Index(i));
6063 frames =
new FrameFaceCollection(*
convert, i);
6067 FaceCollectionArray &arr;
6068 mutable FrameFaceCollection *frames;
6069 mutable BoxableFaceCollectionConvert *
convert;
6075 virtual std::string
name()
const {
return "EmptyBoxableFaceCollection"; }
6083 virtual unsigned int Color(
int face,
int point)
const
6085 std::cout <<
"EmptyBoxableFaceCollection::0" << std::endl;
6090 std::cout <<
"EmptyBoxableFaceCollection::1" << std::endl;
6096 virtual float Attrib(
int face,
int point,
int id)
const {
return 0.0; }
6097 virtual int AttribI(
int face,
int point,
int id)
const {
return 0; }
6100 return std::make_pair(0,
NumFaces()); }
6116 r.
color =
new unsigned int[1];
6163 for(
int i=0;i<coll.NumBoxes();i++)
6178 for(
int i=0;i<coll.NumBoxes();i++)
6181 int prevcount = count;
6187 o.
face = face - prevcount;
6208 unsigned int Color(
int face,
int point)
const
6227 float Attrib(
int face,
int point,
int id)
const
6253 return surf.Index(
Sample(x1,x,surf.XSize()),
Sample(y1,y,surf.YSize()));
6257 return surf.Texture(
Sample(x1,x,surf.XSize()),
Sample(y1,y,surf.YSize()));
6261 return surf.Normal(
Sample(x1,x,surf.XSize()),
Sample(y1,y,surf.YSize()));
6263 virtual unsigned int Color(
int x1,
int y1)
const
6265 return surf.Color(
Sample(x1,x, surf.XSize()),
Sample(y1,y, surf.YSize()));
6267 virtual float Attrib(
int x1,
int y1,
int id)
const
6269 return surf.Attrib(
Sample(x1,x,surf.XSize()),
Sample(y1,y,surf.YSize()),
id);
6273 return surf.AttribI(
Sample(x1,x,surf.XSize()),
Sample(y1,y,surf.YSize()),
id);
6279 static float Sample(
int val,
int size,
float sizef) {
return float(val)*sizef/float(
size); }
6292 virtual std::string
name()
const {
return "SampleSurfaceIn3d"; }
6302 virtual int Texture(
int face)
const {
return texture; }
6306 Point2d p = Sample(face, point);
6315 Point2d p = Sample(face, point);
6316 Point pp = surf.Index(p.
x, p.
y);
6326 virtual unsigned int Color(
int face,
int point)
const
6328 Point2d p = Sample(face, point);
6329 unsigned int pp = surf.Color(p.
x, p.
y);
6335 Point2d p = Sample(face, point);
6339 float Attrib(
int face,
int point,
int id)
const
6341 Point2d p = Sample(face, point);
6342 float pp = surf.Attrib(p.
x, p.
y,
id);
6348 Point2d p = Sample(face, point);
6349 int pp = surf.AttribI(p.
x, p.
y,
id);
6356 int yindex = face/x;
6357 int ddy = face - yindex*x;
6360 if (point==1 || point==2) xindex++;
6361 if (point==2 || point==3) yindex++;
6363 float xlength = surf.
XSize();
6364 float ylength = surf.
YSize();
6365 xlength /= float(x);
6366 ylength /= float(y);
6367 xlength *= float(xindex);
6368 ylength *= float(yindex);
6378 const SurfaceIn3d &surf;
6396 int Size()
const {
return coll.NumFaces(); }
6398 virtual Point Index(
float x,
float y)
const {
return interpolate2(last_i, x, y); }
6400 virtual unsigned int Color(
float x,
float y)
const
6402 unsigned int v1 = coll.Color(last_i, 0);
6403 unsigned int v2 = coll.Color(last_i, 1);
6404 unsigned int v3 = coll.Color(last_i, 2);
6405 unsigned int v4 = coll.Color(last_i, 3);
6406 return interpolate(v1,v2,v3,v4,x,y);
6408 virtual int AttribI(
float x,
float y,
int id)
const
6412 virtual float Attrib(
float x,
float y,
int id)
const
6451 Vector v1 = coll.PointNormal(last_i, 0);
6452 Vector v2 = coll.PointNormal(last_i, 1);
6453 Vector v3 = coll.PointNormal(last_i, 2);
6454 Vector v4 = coll.PointNormal(last_i, 3);
6455 return interpolate(v1,v2,v3,v4,x,y);
6457 virtual float XSize()
const {
return 1.0; }
6458 virtual float YSize()
const {
return 1.0; }
6467 Point interpolate2(
int face,
float x,
float y)
const
6469 Point p0 = coll.FacePoint(face, 0);
6470 Point p1 = coll.FacePoint(face, 1);
6471 Point p2 = coll.FacePoint(face, 2);
6472 Point p3 = coll.FacePoint(face, 3);
6473 return interpolate(p0,p1,p2,p3, x,y);
6475 static unsigned int interpolate(
unsigned int p0,
unsigned int p1,
unsigned int p2,
unsigned int p3,
float x,
float y)
6483 static Vector interpolate(Vector p0, Vector p1, Vector p2, Vector p3,
float x,
float y)
6485 Vector v1 = p0*x+p1*(1.0-x);
6486 Vector v2 = p3*x+p2*(1.0-x);
6488 Vector res = v1*y+v2*(1.0-y);
6495 FaceCollection &coll;
6503 virtual std::string
name()
const {
return "SplitQuads"; }
6510 return sample.
NumFaces()*faces.NumFaces();
6515 int face1 = face / faces.NumFaces();
6516 int face2 = face - face1*faces.NumFaces();
6524 int face1 = face / faces.NumFaces();
6525 int face2 = face - face1*faces.NumFaces();
6532 virtual unsigned int Color(
int face,
int point)
const
6534 int face1 = face / faces.NumFaces();
6535 int face2 = face - face1*faces.NumFaces();
6538 return sample.
Color(face1, point);
6543 int face1 = face / faces.NumFaces();
6544 int face2 = face - face1*faces.NumFaces();
6547 return sample.
TexCoord(face1, point);
6551 int face1 = face / faces.NumFaces();
6552 int face2 = face - face1*faces.NumFaces();
6561 int face1 = face / faces.NumFaces();
6562 int face2 = face - face1*faces.NumFaces();
6567 virtual float Attrib(
int face,
int point,
int id)
const
6569 int face1 = face / faces.NumFaces();
6570 int face2 = face - face1*faces.NumFaces();
6573 return sample.
Attrib(face1, point,
id);
6575 virtual int AttribI(
int face,
int point,
int id)
const
6577 int face1 = face / faces.NumFaces();
6578 int face2 = face - face1*faces.NumFaces();
6581 return sample.
AttribI(face1, point,
id);
6595 virtual std::string
name()
const {
return "OrElem2"; }
6599 int s1 = m_p1.size();
for(
int i=0;i<s1;i++)
6601 int s2 = m_p2.size();
for(
int i=0;i<s2;i++)
6603 int s3 = m_p3.size();
for(
int i=0;i<s3;i++)
6605 int s4 = m_p4.size();
for(
int i=0;i<s4;i++)
6607 int s5 = m_p5.size();
for(
int i=0;i<s5;i++)
6609 int s6 = m_p6.size();
for(
int i=0;i<s6;i++)
6611 int s7 = m_p7.size();
for(
int i=0;i<s7;i++)
6613 int s8 = m_p8.size();
for(
int i=0;i<s8;i++)
6615 int s9 = m_p9.size();
for(
int i=0;i<s9;i++)
6617 int s10 = m_p10.size();
for(
int i=0;i<s10;i++)
6624 std::vector<FaceCollection*> vec = { coll1, coll2 };
6634 bool success2 =
true;
6635 for(
int i=0;i<s;i++) {
6636 BBOX b = vec[i]->GetBoundingBox(success2);
6653 coll1->Collect(vis);
6654 coll2->Collect(vis);
6658 s = coll1->NumFaces();
6659 s1 = coll2->NumFaces();
6660 s2 = coll1->NumTextures();
6661 oo1 = coll1->NumObjects();
6662 oo2 = coll2->NumObjects();
6669 s = coll1->NumFaces();
6670 s1 = coll2->NumFaces();
6671 s2 = coll1->NumTextures();
6672 oo1 = coll1->NumObjects();
6673 oo2 = coll2->NumObjects();
6677 if (face<s) {
return face; }
6681 if (face<s)
return coll1;
6686 if (face<s2) {
return face; }
6690 if (face<s2)
return coll1;
6696 if (o<oo1)
return coll1->GetObject(o);
6697 std::pair<int,int> p = coll2->GetObject(o-oo1);
6716 return coll1->has_normal()||coll2->has_normal();
6724 return coll1->has_attrib()||coll2->has_attrib();
6726 virtual float Attrib(
int face,
int point,
int id)
const
6730 virtual int AttribI(
int face,
int point,
int id)
const
6736 return coll1->has_color()||coll2->has_color();
6738 virtual unsigned int Color(
int face,
int point)
const
6744 return coll1->has_texcoord()||coll2->has_texcoord();
6756 return coll1->has_skeleton()||coll2->has_skeleton();
6772 virtual float EndAttrib(
int face,
int point,
int id)
const {
6778 virtual unsigned int EndColor(
int face,
int point)
const {
6790 virtual int NumTextures()
const {
return coll1->NumTextures() + coll2->NumTextures(); }
6805 std::vector<FaceCollection*> vec = { coll1, coll2 };
6811 unsigned char *
combine_indices_char(
unsigned char *p1,
unsigned char *p2,
int numfaces1,
int numfaces2,
int numvertices1,
int numvertices2)
const
6813 if (!p1||!p2)
return 0;
6817 m_p1.push_back(p=
new unsigned char[numfaces1*3+numfaces2*3]);
6818 std::copy(p1,p1+numfaces1*3,p);
6820 for(;i<numfaces2;i++)
6822 p[(numfaces1+i)*3+0] = numvertices1 + p2[i*3+0];
6823 p[(numfaces1+i)*3+1] = numvertices1 + p2[i*3+1];
6824 p[(numfaces1+i)*3+2] = numvertices1 + p2[i*3+2];
6828 unsigned short *
combine_indices_short(
unsigned short *p1,
unsigned short *p2,
int numfaces1,
int numfaces2,
int numvertices1,
int numvertices2)
const
6830 if (!p1||!p2)
return 0;
6834 m_p2.push_back(p=
new unsigned short[numfaces1*3+numfaces2*3]);
6835 std::copy(p1,p1+numfaces1*3,p);
6837 for(;i<numfaces2;i++)
6839 p[(numfaces1+i)*3+0] = numvertices1 + p2[i*3+0];
6840 p[(numfaces1+i)*3+1] = numvertices1 + p2[i*3+1];
6841 p[(numfaces1+i)*3+2] = numvertices1 + p2[i*3+2];
6846 unsigned int *
combine_indices_int(
unsigned int *p1,
unsigned int *p2,
int numfaces1,
int numfaces2,
int numvertices1,
int numvertices2)
const
6848 if (!p1||!p2)
return 0;
6852 m_p3.push_back(p=
new unsigned int[numfaces1*3+numfaces2*3]);
6853 std::copy(p1,p1+numfaces1*3,p);
6855 for(;i<numfaces2;i++)
6857 p[(numfaces1+i)*3+0] = numvertices1 + p2[i*3+0];
6858 p[(numfaces1+i)*3+1] = numvertices1 + p2[i*3+1];
6859 p[(numfaces1+i)*3+2] = numvertices1 + p2[i*3+2];
6867 if (!p1||!p2)
return 0;
6871 m_p4.push_back(p=
new Point[numvertices1+numvertices2]);
6872 std::copy(p1,p1+numvertices1,p);
6873 std::copy(p2,p2+numvertices2,p+numvertices1);
6878 if (!p1||!p2)
return 0;
6882 m_p5.push_back(p=
new Point[numvertices1+numvertices2]);
6883 std::copy(p1,p1+numvertices1,p);
6884 std::copy(p2,p2+numvertices2,p+numvertices1);
6889 if (!p1||!p2)
return 0;
6893 m_p6.push_back(p=
new Vector[numvertices1+numvertices2]);
6894 std::copy(p1,p1+numvertices1,p);
6895 std::copy(p2,p2+numvertices2,p+numvertices1);
6898 unsigned int *
combine_color(
unsigned int *p1,
unsigned int *p2,
int numvertices1,
int numvertices2)
const
6900 if (!p1||!p2)
return 0;
6904 m_p7.push_back(p=
new unsigned int[numvertices1+numvertices2]);
6905 std::copy(p1,p1+numvertices1,p);
6906 std::copy(p2,p2+numvertices2,p+numvertices1);
6911 if (!p1||!p2)
return 0;
6915 m_p8.push_back(p=
new Point[numvertices1+numvertices2]);
6916 std::copy(p1,p1+numvertices1,p);
6917 std::copy(p2,p2+numvertices2,p+numvertices1);
6922 if (!p1||!p2)
return 0;
6926 m_p9.push_back(p=
new VEC4[numvertices1+numvertices2]);
6927 std::copy(p1,p1+numvertices1,p);
6928 std::copy(p2,p2+numvertices2,p+numvertices1);
6933 if (!p1||!p2)
return 0;
6937 m_p10.push_back(p=
new VEC4[numvertices1+numvertices2]);
6938 std::copy(p1,p1+numvertices1,p);
6939 std::copy(p2,p2+numvertices2,p+numvertices1);
6951 std::vector<FaceCollection*> vec = { coll1, coll2 };
6953 std::vector<FaceBufferRef> vec2;
6956 for(
int i=0;i<s;i++)
6958 if (start_x>=0 && end_x>=0) {
6964 }
else if (start_x<0 && end_x>=0)
6975 int s2 = vec2.size();
6976 for(
int i=1;i<s2;i++)
6990 result.
numfaces += vec2[i].numfaces;
7006 mutable std::vector<unsigned char *> m_p1;
7007 mutable std::vector<unsigned short *> m_p2;
7008 mutable std::vector<unsigned int *> m_p3;
7009 mutable std::vector<Point *> m_p4;
7010 mutable std::vector<Point *> m_p5;
7011 mutable std::vector<Vector *> m_p6;
7012 mutable std::vector<unsigned int *> m_p7;
7013 mutable std::vector<Point *> m_p8;
7014 mutable std::vector<VEC4 *> m_p9;
7015 mutable std::vector<VEC4 *> m_p10;
7035 virtual std::string
name()
const {
return "OrElem"; }
7044 if (s<=0||s>100000000)
return;
7046 faces_cache.clear();
7049 faces_cache.reserve(s);
7050 faces_num.reserve(s);
7052 for(
typename std::vector<T /*BoxableFaceCollection*/ *>::const_iterator i=vec.begin();i!=vec.end();i++,k++)
7055 count = (*i)->NumFaces();
7057 for(
int i=0;i<count;i++)
7063 faces_cache.push_back(
f-oldsum);
7064 faces_num.push_back(k);
7076 for(
typename std::vector<T*>::const_iterator i=vec.begin();i!=vec.end();i++)
7077 b |= (*i)->Inside(p);
7085 for(
typename std::vector<T /*BoxableFaceCollection*/ *>::const_iterator i=vec.begin();i!=vec.end();i++)
7094 for(
typename std::vector<T /*BoxableFaceCollection*/ *>::const_iterator i=vec.begin();i!=vec.end();i++)
7102 for(
int i=0;i<s;i++) {
7103 sk |= vec[i]->has_skeleton();
7112 for(
int i=0;i<s;i++) {
7113 sk |= vec[i]->has_texcoord();
7121 for(
int i=0;i<s;i++) {
7122 sk |= vec[i]->has_color();
7130 for(
int i=0;i<s;i++) {
7131 sk |= vec[i]->has_attrib();
7139 for(
int i=0;i<s;i++) {
7140 sk |= vec[i]->has_normal();
7158 bool success2 =
true;
7159 for(
int i=0;i<s;i++) {
7160 BBOX b = vec[i]->GetBoundingBox(success2);
7179 if (o>=s)
return std::make_pair(-1,-1);
7181 for(
int i=0;i<o;i++) {
7182 count+=vec[i]->NumFaces();
7184 return std::make_pair(count,count+vec[o]->
NumFaces());
7188 if (faces_num.size()==0) {
7190 for(
typename std::vector<T /*BoxableFaceCollection*/ *>::const_iterator i=vec.begin();i!=vec.end();i++)
7191 count += (*i)->NumFaces();
7195 return faces_num.size();
7200 int s = faces_num.size();
7201 if (face<0 || face>s-1)
return 0;
7202 return vec[faces_num[face]]->NumPoints(faces_cache[face]);
7206 int s = faces_num.size();
7207 if (face<0 || face>s-1)
return Point(0.0,0.0,0.0);
7208 return vec[faces_num[face]]->FacePoint(faces_cache[face], point);
7212 int s = faces_num.size();
7213 if (face<0 || face>s-1)
return Point(0.0,0.0,0.0);
7214 return vec[faces_num[face]]->EndFacePoint(faces_cache[face], point);
7217 virtual unsigned int Color(
int face,
int point)
const
7219 int s = faces_num.size();
7220 if (face<0 || face>s-1)
return 0xffffffff;
7221 return vec[faces_num[face]]->Color(faces_cache[face],point);
7226 int s = faces_num.size();
7227 if (face<0 || face>s-1) {
Point2d p; p.
x=0.0; p.
y=0.0;
return p; }
7228 return vec[faces_num[face]]->TexCoord(faces_cache[face],point);
7232 int s = faces_num.size();
7233 if (face<0 || face>s-1) {
return 0.0; }
7234 return vec[faces_num[face]]->TexCoord3(faces_cache[face],point);
7237 int s = faces_num.size();
7238 if (face<0||face>s-1) {
VEC4 v; v.
x = 0.0; v.
y=0.0; v.
z = 0.0; v.
w=0.0;
return v; }
7239 return vec[faces_num[face]]->Joints(faces_cache[face],point);
7242 int s = faces_num.size();
7243 if (face<0||face>s-1) {
VEC4 v; v.
x = 0.0; v.
y=0.0; v.
z = 0.0; v.
w=0.0;
return v; }
7244 return vec[faces_num[face]]->Weights(faces_cache[face],point);
7250 int s = faces_num.size();
7251 if (face<0 || face>s-1) {
return Vector(0.0,0.0,0.0); }
7252 return vec[faces_num[face]]->PointNormal(faces_cache[face], point);
7254 float Attrib(
int face,
int point,
int id)
const
7256 int s = faces_num.size();
7257 if (face<0 || face>s-1) {
return 0.0; }
7258 return vec[faces_num[face]]->Attrib(faces_cache[face], point,
id);
7262 int s = faces_num.size();
7263 if (face<0 || face>s-1) {
return 0; }
7266 return faces_num[face];
7268 return vec[faces_num[face]]->AttribI(faces_cache[face], point,
id);
7275 for(
int i=0;i<s;i++)
7277 count += vec[i]->NumTextures();
7285 for(
typename std::vector<T /*BoxableFaceCollection*/ *>::const_iterator i=vec.begin();i!=vec.end();i++)
7287 int oldcount = count;
7288 count += (*i)->NumTextures();
7289 if (count >
num) { (*i)->GenTexture(
num-oldcount);
break; }
7295 for(
typename std::vector<T /*BoxableFaceCollection*/ *>::const_iterator i=vec.begin();i!=vec.end();i++)
7297 int oldcount = count;
7298 count += (*i)->NumTextures();
7299 if (count >
num) {
return (*i)->TextureBuf(
num-oldcount);}
7308 for(
typename std::vector<T /*BoxableFaceCollection*/ *>::const_iterator i=vec.begin();i!=vec.end();i++)
7310 int oldcount = count;
7311 int oldtexcount = texcount;
7312 count += (*i)->NumFaces();
7313 texcount += (*i)->NumTextures();
7314 if (count > face) {
return oldtexcount+(*i)->FaceTexture(face-oldcount);}
7320 std::vector<
T *> vec;
7321 mutable std::vector<int> faces_cache;
7322 mutable std::vector<int> faces_num;
7329 virtual std::string
name()
const {
return "QuadElem"; }
7339 if (point==0)
return p1;
7340 if (point==1)
return p2;
7341 if (point==2)
return p3;
7351 virtual unsigned int Color(
int face,
int point)
const
7378 virtual int AttribI(
int face,
int point,
int id)
const
7382 virtual float Attrib(
int face,
int point,
int id)
const
7401 virtual std::string
name()
const {
return "TriElem"; }
7410 if (point==0)
return p1;
7411 if (point==1)
return p2;
7421 virtual unsigned int Color(
int face,
int point)
const
7432 virtual int AttribI(
int face,
int point,
int id)
const
7436 virtual float Attrib(
int face,
int point,
int id)
const
7467 virtual std::string
name()
const {
return "PolygonElem"; }
7470 virtual int NumPoints(
int face)
const {
return points.size(); }
7473 return points[point];
7477 return Vector(0.0,0.0,0.0);
7479 virtual float Attrib(
int face,
int point,
int id)
const {
return 0.0; }
7480 virtual int AttribI(
int face,
int point,
int id)
const {
return 0; }
7481 virtual unsigned int Color(
int face,
int point)
const
7496 std::vector<Point> points;
7503 p112(
Point(-1.0,-1.0,1.0)),
7504 p121(
Point(-1.0,1.0,-1.0)),
7505 p122(
Point(-1.0,1.0,1.0)),
7506 p211(
Point(1.0,-1.0,-1.0)),
7507 p212(
Point(1.0,-1.0,1.0)),
7508 p221(
Point(1.0,1.0,-1.0)),
7509 p222(
Point(1.0,1.0,1.0)) { }
7517 Point p222) : p111(p111), p112(p112), p121(p121),
7518 p122(p122), p211(p211), p212(p212),
7519 p221(p221), p222(p222) { }
7520 virtual std::string
name()
const {
return "CubeElem"; }
7554 virtual unsigned int Color(
int face,
int point)
const
7560 virtual int AttribI(
int face,
int point,
int id)
const
7564 virtual float Attrib(
int face,
int point,
int id)
const
7591 virtual std::string
name()
const {
return "CylinderElem"; }
7620 virtual unsigned int Color(
int face,
int point)
const
7633 virtual float Attrib(
int face,
int point,
int id)
const
7637 virtual int AttribI(
int face,
int point,
int id)
const
7655 DiskElem(
int numfaces,
float disk_pos) : numfaces(numfaces), disk_pos(disk_pos) { }
7656 virtual std::string
name()
const {
return "DiskElem"; }
7668 virtual unsigned int Color(
int face,
int point)
const
7687 virtual float Attrib(
int face,
int point,
int id)
const
7691 virtual int AttribI(
int face,
int point,
int id)
const
7720 Matrix domm = dom.BoxIndex(path);
7721 Matrix codm = dom.BoxIndex(mapping.Index(path));
7739 for(
int i =0;i<320;i++)
7742 if (i>time-starttime&&i<time-starttime+50.0)
7743 array[i]=0.5*0.1*sin(ii*2.0*3.14159/320.0);
7753 float lx = cos(m*3.14159*x);
7754 float ly = cos(n*3.14159*y);
7755 float lt = cos(8.0*time);
7756 float wave = 0.02*lx*ly*lt;
7761 float lx2 = cos(m2*3.14159*x);
7762 float ly2 = cos(n2*3.14159*y);
7763 float lt2 = cos(18.0*time);
7764 float wave2 = 0.02*lx2*ly2*lt2;
7769 float r = sqrtf(xr*xr+yr*yr);
7771 int rr = int(320.0*r);
7773 return wave+wave2+s*sin(r*90.0-time*2.0);
7792 else if (point==2) { dx=1;
dy=1; }
7793 else if (point==3) {
dy=1; }
7796 int yy = face - xx*y;
7801 unsigned int Color(
int face,
int point)
const
7815 float zz = func.Index(xx/x,yy/y);
7827 else if (point==2) { dx=1;
dy=1; }
7828 else if (point==3) {
dy=1; }
7831 int yy = face - xx*y;
7839 virtual float Attrib(
int face,
int point,
int id)
const
7843 virtual int AttribI(
int face,
int point,
int id)
const
7857 virtual std::string
name()
const {
return "ColorElem"; }
7866 virtual int NumFaces()
const {
return next.NumFaces(); }
7867 virtual int NumPoints(
int face)
const {
return next.NumPoints(face); }
7870 return next.FacePoint(face,point);
7873 virtual unsigned int Color(
int face,
int point)
const
7887 return next.PointNormal(face,point);
7889 virtual float Attrib(
int face,
int point,
int id)
const
7891 return next.Attrib(face, point,
id);
7893 virtual int AttribI(
int face,
int point,
int id)
const
7895 return next.AttribI(face,point,
id);
7907 unsigned int color_1,
7908 unsigned int color_2,
7909 unsigned int color_3,
7910 unsigned int color_4
7912 virtual std::string
name()
const {
return "ColorFaceElem"; }
7915 virtual int NumFaces()
const {
return next.NumFaces(); }
7916 virtual int NumPoints(
int face)
const {
return next.NumPoints(face); }
7919 return next.FacePoint(face,point);
7923 virtual unsigned int Color(
int face,
int point)
const
7927 case 0:
return color_1;
7928 case 1:
return color_2;
7929 case 2:
return color_3;
7930 case 3:
return color_4;
7936 return next.TexCoord(face,point);
7947 return next.PointNormal(face,point);
7949 virtual float Attrib(
int face,
int point,
int id)
const
7951 return next.Attrib(face, point,
id);
7953 virtual int AttribI(
int face,
int point,
int id)
const
7955 return next.AttribI(face,point,
id);
7961 unsigned int color_2;
7962 unsigned int color_3;
7963 unsigned int color_4;
7974 virtual int NumFaces()
const {
return next.NumFaces(); }
7975 virtual int NumPoints(
int face)
const {
return next.NumPoints(face); }
7978 return next.FacePoint(face,point);
7980 virtual unsigned int Color(
int face,
int point)
const
7982 return next.Color(face,point);
7987 return coords.TexCoord(face,point);
7992 return next.PointNormal(face,point);
7994 virtual float Attrib(
int face,
int point,
int id)
const
7996 return next.Attrib(face, point,
id);
7998 virtual int AttribI(
int face,
int point,
int id)
const
8000 return next.AttribI(face,point,
id);
8015 virtual std::string
name()
const {
return "TextureElem2"; }
8019 virtual int NumFaces()
const {
return next.NumFaces(); }
8020 virtual int NumPoints(
int face)
const {
return next.NumPoints(face); }
8023 return next.FacePoint(face,point);
8025 virtual unsigned int Color(
int face,
int point)
const
8027 return next.Color(face,point);
8033 return coords.TexCoord(face,point);
8038 return next.PointNormal(face,point);
8040 virtual float Attrib(
int face,
int point,
int id)
const
8042 return next.Attrib(face, point,
id);
8044 virtual int AttribI(
int face,
int point,
int id)
const
8046 return next.AttribI(face,point,
id);
8057 return ref.Buffer();
8059 else return next.TextureBuf(
num-1);
8063 int i = coords.Texture(face);
8079 virtual std::string
name()
const {
return "MatrixElem"; }
8082 int s1 = pos2_1.size();
for(
int i=0;i<s1;i++)
8083 delete [] pos2_1[i];
8084 int s2 = pos2_2.size();
for(
int i=0;i<s2;i++)
8085 delete [] pos2_2[i];
8086 int s3 = pos2_3.size();
for(
int i=0;i<s3;i++)
8087 delete [] pos2_3[i];
8103 virtual int NumFaces()
const {
if (skip)
return next2->NumFaces();
return next->NumFaces(); }
8104 virtual int NumPoints(
int face)
const {
if (skip)
return next2->NumPoints(face);
return next->NumPoints(face); }
8108 Point p = next2->FacePoint(face,point);
8111 Point p = next->FacePoint(face,point);
8118 Point p = next2->EndFacePoint(face,point);
8121 Point p = next->EndFacePoint(face,point);
8129 Vector v = next2->PointNormal(face,point);
8133 Vector v = next->PointNormal(face,point);
8140 BBOX bb = next->GetBoundingBox(success);
8161 res.
start_x = std::min(std::min(std::min(std::min(p1.
x,p2.
x),
8162 std::min(p3.
x,p4.
x)),
8163 std::min(std::min(p5.
x,p6.
x),
8164 std::min(p6.
x,p7.
x))),
8166 res.
end_x = std::max(std::max(std::max(std::max(p1.
x,p2.
x),
8167 std::max(p3.
x,p4.
x)),
8168 std::max(std::max(p5.
x,p6.
x),
8169 std::max(p6.
x,p7.
x))),
8172 res.
start_y = std::min(std::min(std::min(std::min(p1.
y,p2.
y),
8173 std::min(p3.
y,p4.
y)),
8174 std::min(std::min(p5.
y,p6.
y),
8175 std::min(p6.
y,p7.
y))),
8177 res.
end_y = std::max(std::max(std::max(std::max(p1.
y,p2.
y),
8178 std::max(p3.
y,p4.
y)),
8179 std::max(std::max(p5.
y,p6.
y),
8180 std::max(p6.
y,p7.
y))),
8183 res.
start_z = std::min(std::min(std::min(std::min(p1.
z,p2.
z),
8184 std::min(p3.
z,p4.
z)),
8185 std::min(std::min(p5.
z,p6.
z),
8186 std::min(p6.
z,p7.
z))),
8188 res.
end_z = std::max(std::max(std::max(std::max(p1.
z,p2.
z),
8189 std::max(p3.
z,p4.
z)),
8190 std::max(std::max(p5.
z,p6.
z),
8191 std::max(p6.
z,p7.
z))),
8200 bool b = next->IsMatrixElem();
8217 return next2->HasBatchMap();
8219 return next->HasBatchMap();
8225 if (*pos==0)
return;
8229 pos2_1.push_back(pos2 =
new Point[numvertices]);
8231 for(
int i=0;i<numvertices;i++)
8233 pos2[i] = (*pos)[i]*m2;
8236 for(
int i=0;i<numvertices;i++)
8238 pos2[i] = (*pos)[i]*m;
8245 if (*pos==0)
return;
8249 pos2_2.push_back(pos2 =
new Point[numvertices]);
8251 for(
int i=0;i<numvertices;i++)
8253 pos2[i] = (*pos)[i]*m2;
8256 for(
int i=0;i<numvertices;i++)
8258 pos2[i] = (*pos)[i]*m;
8265 if (*pos==0)
return;
8269 pos2_3.push_back(pos2 =
new Vector[numvertices]);
8272 for(
int i=0;i<numvertices;i++)
8274 pos2[i] = (*pos)[i]*m3;
8281 for(
int i=0;i<numvertices;i++)
8283 pos2[i] = (*pos)[i]*m3;
8314 mutable std::vector<Point*> pos2_1;
8315 mutable std::vector<Point*> pos2_2;
8316 mutable std::vector<Vector*> pos2_3;
8326 virtual int NumFaces()
const {
return coll.NumFaces(); }
8327 virtual int NumPoints(
int face)
const {
return coll.NumPoints(face); }
8330 Point p = coll.FacePoint(face,point);
8337 return coll.PointNormal(face,point);
8339 virtual float Attrib(
int face,
int point,
int id)
const
8341 return coll.Attrib(face, point,
id);
8343 virtual int AttribI(
int face,
int point,
int id)
const
8345 return coll.AttribI(face,point,
id);
8350 return coll.Inside(p);
8362 bool Index(
int a)
const {
return f.Index(a)||f2.Index(a); }
8372 bool Index(
int a)
const {
return f.Index(a)&&f2.Index(a); }
8382 bool Index(
int a)
const {
return !f.Index(a); }
8404template<
class A,
class B,
class C>
8411 C Index(
A aa)
const {
return b.Index(a.Index(aa)); }
8426 Sample(
float zero,
float succ) : zero(zero), succ(succ) { }
8429 return zero + i*succ;
8444 int count = obj.NumPoints(face);
8445 bool foundtrue =
false;
8446 bool foundfalse =
false;
8447 for(
int i=0;i<count;i++)
8449 Point p = obj.FacePoint(face,i);
8450 bool b = obj2.Inside(p);
8451 if (b) { foundtrue =
true; }
8452 else { foundfalse =
true; }
8454 if (foundtrue && foundfalse)
8469class IsChangingFace :
public Function<int, bool>
8472 IsChangingFace(
const std::vector<FaceCollection*> &v) : v(v) { }
8473 bool Index(
int id)
const
8476 for(
int f=0;
f<v[0]->NumPoints(
id);
f++)
8478 Point p = v[0]->FacePoint(
id,0);
8479 for(
int i=1;i<s;i++)
8481 Point p2 = v[i]->FacePoint(
id,
f);
8482 if ((p2-p).
Dist()>0.002)
return true;
8488 const std::vector<FaceCollection*> &v;
8496 FilterFaces(FaceCollection &obj, Function<int, bool> &
func) : ForwardFaceCollection(obj), obj(obj),
func(
func) { }
8497 void Collect(CollectVisitor &vis)
8502 void Prepare() { obj.Prepare(); }
8505 int c=obj.NumFaces();
8507 for(
int i=0;i<c;i++)
8509 bool b =
func.Index(i);
8516 return obj.NumPoints(Mapping(face));
8518 Point
FacePoint(
int face,
int point)
const
8520 return obj.FacePoint(Mapping(face), point);
8524 return obj.EndFacePoint(Mapping(face), point);
8526 unsigned int Color(
int face,
int point)
const
8528 return obj.Color(Mapping(face), point);
8530 Point2d
TexCoord(
int face,
int point)
const
8532 return obj.TexCoord(Mapping(face), point);
8537 return obj.PointNormal(Mapping(face), point);
8539 virtual float Attrib(
int face,
int point,
int id)
const
8541 return obj.Attrib(Mapping(face), point,
id);
8543 virtual int AttribI(
int face,
int point,
int id)
const
8545 return obj.AttribI(Mapping(face),point,
id);
8549 int Mapping(
int ii)
const
8552 int num = obj.NumFaces();
8553 for(
int i=0;i<
num;i++)
8555 bool b =
func.Index(i);
8558 if (count == ii)
return i;
8566 FaceCollection &obj;
8567 Function<int,bool> &
func;
8575 SplitPolygons(FaceCollection &a1, FaceCollection &a2, BooleanOps &ops,
bool b) : a1(a1), a2(a2), ops(ops), points1(a1), points2(a2), b(b) { }
8577 void Collect(CollectVisitor &vis)
8579 a1.Collect(vis); a2.Collect(vis);
8583 void Prepare() { a1.Prepare(); a2.Prepare(); }
8584 int NumFaces()
const {
return faces.size(); }
8585 int NumPoints(
int face)
const {
return faces[face].poly.size(); }
8586 Point
FacePoint(
int face,
int point)
const {
return faces[face].poly[point]; }
8588 virtual Point2d
TexCoord(
int face,
int point)
const
8598 return normals[face].poly[point];
8600 virtual float Attrib(
int face,
int point,
int id)
const
8604 virtual int AttribI(
int face,
int point,
int id)
const
8611 std::vector<Point> poly;
8615 std::vector<Vector> poly;
8624 FaceCenterPoints points1, points2;
8625 std::vector<OnePolygon> faces;
8626 std::vector<OneNormal> normals;
8638 for(
int i=0;i<count;i++) toggle[i]=
false;
8643 if (toggle[val]==
false)
8646 array[val]=func.Index(val);
8652 mutable std::vector<A> array;
8653 mutable std::vector<char> toggle;
8662 for(
int i=0;i<count;i++) toggle[i]=
false;
8667 if (toggle[val]==
false)
8670 array[val]=func.Index(val);
8677 mutable std::vector<A> array;
8678 mutable std::vector<char> toggle;
8692 virtual std::string
name()
const {
return "MemoizeFaces"; }
8702 pthread_mutex_lock(&mutex);
8703 numfaces=c.numfaces;
8704 numpoints=c.numpoints;
8705 facepoint=c.facepoint;
8708 facetexture = c.facetexture;
8709 pthread_mutex_unlock(&mutex);
8714 pthread_mutex_lock(&mutex);
8715 numpoints = std::vector<int>(1);
8716 facepoint = std::map<FP,Point>();
8717 color = std::map<FP,unsigned int>();
8718 normal = std::map<FP,Vector>();
8719 facetexture = std::map<int,int>();
8720 pthread_mutex_unlock(&mutex);
8725 for(
int i=0;i<faces;i++)
8728 for(
int j=0;j<points;j++)
8741 numfaces=c.NumFaces();
8743 numpoints.resize(numfaces);
8750 pthread_mutex_lock(&mutex);
8751 int i = numpoints[face];
8754 numpoints[face]=c.NumPoints(face);
8755 int val = numpoints[face];
8756 pthread_mutex_unlock(&mutex);
8759 pthread_mutex_unlock(&mutex);
8767 pthread_mutex_lock(&mutex);
8768 std::map<FP,Point>::iterator i = facepoint.find(fp);
8769 if (i==facepoint.end())
8772 p=(facepoint[fp]=c.FacePoint(face, point));
8773 pthread_mutex_unlock(&mutex);
8776 Point ps = i->second;
8777 pthread_mutex_unlock(&mutex);
8785 pthread_mutex_lock(&mutex);
8786 std::map<FP,Point>::iterator i = endfacepoint.find(fp);
8787 if (i==endfacepoint.end())
8790 p=(endfacepoint[fp]=c.EndFacePoint(face, point));
8791 pthread_mutex_unlock(&mutex);
8794 Point ps = i->second;
8795 pthread_mutex_unlock(&mutex);
8798 unsigned int Color(
int face,
int point)
const
8803 pthread_mutex_lock(&mutex);
8804 std::map<FP,unsigned int>::iterator i = color.find(fp);
8808 p=(color[fp]=c.Color(face, point));
8809 pthread_mutex_unlock(&mutex);
8812 unsigned int ps = i->second;
8813 pthread_mutex_unlock(&mutex);
8818 return c.TexCoord(face,point);
8826 pthread_mutex_lock(&mutex);
8827 std::map<FP,Vector>::iterator i = normal.find(fp);
8828 if (i==normal.end())
8831 p=(normal[fp]=c.PointNormal(face, point));
8832 pthread_mutex_unlock(&mutex);
8836 pthread_mutex_unlock(&mutex);
8839 virtual float Attrib(
int face,
int point,
int id)
const
8841 return c.Attrib(face,point,
id);
8843 virtual int AttribI(
int face,
int point,
int id)
const
8845 return c.AttribI(face,point,
id);
8853 pthread_mutex_lock(&mutex);
8855 std::map<int,int>::iterator i = facetexture.find(face);
8856 if (i==facetexture.end())
8859 p = (facetexture[face]=c.FaceTexture(face));
8860 pthread_mutex_unlock(&mutex);
8864 pthread_mutex_unlock(&mutex);
8873 friend bool operator<(
const FP &a,
const FP &b)
8875 if (a.face<b.face)
return true;
8876 else if (b.face < a.face)
return false;
8879 if (a.point<b.point)
return true;
8880 else if (b.point<a.point)
return false;
8887 mutable int numfaces;
8888 mutable std::vector<int> numpoints;
8889 mutable std::map<FP, Point> facepoint;
8890 mutable std::map<FP, Point> endfacepoint;
8891 mutable std::map<FP, unsigned int> color;
8892 mutable std::map<FP, Vector> normal;
8893 mutable std::map<int, int> facetexture;
8894 mutable pthread_mutex_t mutex;
8903 pthread_mutex_lock(&start_lock);
8904 pthread_mutex_unlock(&start_lock);
8906 pthread_mutex_lock(&mutex);
8907 int t =
Map(time).NumFaces();
8908 pthread_mutex_unlock(&mutex);
8913 pthread_mutex_lock(&start_lock);
8914 pthread_mutex_unlock(&start_lock);
8916 pthread_mutex_lock(&mutex);
8917 int t =
Map(time).NumPoints(face);
8918 pthread_mutex_unlock(&mutex);
8921 Point
FacePoint(
int face,
int point)
const
8923 pthread_mutex_lock(&start_lock);
8924 pthread_mutex_unlock(&start_lock);
8926 pthread_mutex_lock(&mutex);
8927 Point p =
Map(time).FacePoint(face,point);
8928 pthread_mutex_unlock(&mutex);
8933 pthread_mutex_lock(&start_lock);
8934 pthread_mutex_unlock(&start_lock);
8936 pthread_mutex_lock(&mutex);
8937 Vector v =
Map(time).PointNormal(face,point);
8938 pthread_mutex_unlock(&mutex);
8941 virtual float Attrib(
int face,
int point,
int id)
const
8945 virtual int AttribI(
int face,
int point,
int id)
const
8950 const MemoizeFaces &
Map(
float time)
const
8953 FitWaveform fit(saw, 150.0, 0.0, (
float)framelist.size());
8954 RepeatWaveform rep(fit, 50);
8955 const MemoizeFaces &ref = framelist[(int)rep.Index(time)];
8959 static void* precalc(
void *
arg)
8961 PreCalcThread *t = (PreCalcThread*)
arg;
8966 t->eff.ChangeTime(time);
8968 MemoizeFaces m(t->fc);
8969 int num = m.NumFaces();
8970 for(
int i=0;i<
num;i++)
8972 int p = m.NumPoints(i);
8973 for(
int ii=0;ii<p;ii++)
8976 m.PointNormal(i,ii);
8979 pthread_mutex_lock(&t->mutex);
8980 t->framelist.push_back(m);
8981 pthread_mutex_unlock(&t->mutex);
8982 if (first) { pthread_mutex_unlock(&t->start_lock); first=
false; }
8986 float Length()
const {
return eff.Length(); }
8987 void ChangeTime(
float t) { time = t; }
8988 PreCalcThread(FaceCollection &fc, Effect &eff) : fc(fc), eff(eff)
8990 pthread_mutex_init(&mutex, 0);
8991 pthread_mutex_init(&start_lock, 0);
8992 pthread_mutex_lock(&start_lock);
8993 pthread_create(&
thread, 0, &precalc,
this);
8997 pthread_mutex_destroy(&mutex);
9004 mutable pthread_mutex_t mutex;
9005 mutable pthread_mutex_t start_lock;
9006 std::vector<MemoizeFaces> framelist;
9013class RemovePolys :
public Function<int, bool>
9017 bool Index(
int face)
const {
return compose.Index(face); }
9019 RemovePolysFunc
func;
9020 IsEqualFunc<FaceType>
equal;
9021 ComposeFunc<int, FaceType, bool> compose;
9029 IntersectFaces(BoxableFaceCollection &obj1, BoxableFaceCollection &obj2) :
func(obj1, obj2), isequal(
EIntersect), compose(
func, isequal),
filter(obj1, compose), memo(
filter) { }
9030 void Collect(CollectVisitor &vis)
9037 virtual int NumFaces()
const {
return memo.NumFaces(); }
9038 virtual int NumPoints(
int face)
const {
return memo.NumPoints(face); }
9039 virtual Point
FacePoint(
int face,
int point)
const {
return memo.FacePoint(face,point); }
9040 virtual Point
EndFacePoint(
int face,
int point)
const {
return memo.EndFacePoint(face,point); }
9041 virtual unsigned int Color(
int face,
int point)
const {
return memo.Color(face, point); }
9042 virtual Point2d
TexCoord(
int face,
int point)
const {
return memo.TexCoord(face, point); }
9043 virtual Vector
PointNormal(
int face,
int point)
const {
return memo.PointNormal(face, point); }
9044 virtual float Attrib(
int face,
int point,
int id)
const {
return memo.Attrib(face,point,
id); }
9045 virtual int AttribI(
int face,
int point,
int id)
const
9047 return memo.AttribI(face,point,
id);
9051 RemovePolysFunc
func;
9052 IsEqualFunc<FaceType> isequal;
9053 ComposeFunc<int, FaceType, bool> compose;
9063 AndNotElem(BoxableFaceCollection &o1, BoxableFaceCollection &o2) : o1(o1), o2(o2), rem(o1, o2), mem(o1.NumFaces(), rem), rem2(o2,o1,
EDraw), mem2(o2.NumFaces(), rem2), f1(o1, mem),
f2(o2, mem2), iface(o1,o2), iface2(o2,o1), split1(iface, iface2, o2, true), split2(iface2, iface, o1, false),
or_elem(&f1, &
f2, &split1, &split2)
9066 void Collect(CollectVisitor &vis) { o1.Collect(vis); o2.Collect(vis); }
9068 void Prepare() { o1.Prepare(); o2.Prepare(); }
9071 split1.DoSplitting();
9072 split2.DoSplitting();
9076 Point
FacePoint(
int face,
int point)
const {
return or_elem.FacePoint(face,point); }
9077 unsigned int Color(
int face,
int point)
const {
return or_elem.Color(face,point); }
9078 Point2d
TexCoord(
int face,
int point)
const {
return or_elem.TexCoord(face,point); }
9079 Vector
PointNormal(
int face,
int point)
const {
return or_elem.PointNormal(face,point); }
9080 virtual float Attrib(
int face,
int point,
int id)
const {
return or_elem.Attrib(face,point,
id); }
9081 virtual int AttribI(
int face,
int point,
int id)
const
9083 return or_elem.AttribI(face,point,
id);
9086 void SetBox(Matrix b) { }
9087 bool Inside(Point p)
const {
return o1.Inside(p) && !o2.Inside(p); }
9089 BoxableFaceCollection &o1, &o2;
9091 MemoizeFunction<bool> mem;
9093 MemoizeFunction<bool> mem2;
9096 IntersectFaces iface;
9097 IntersectFaces iface2;
9098 SplitPolygons split1;
9099 SplitPolygons split2;
9100 OrElem<FaceCollection>
or_elem;
9107 virtual std::string
name()
const {
return "RectangleElem"; }
9120 case 1:
return Point(-x,-y,0.0);
9121 case 2:
return Point(-x,y,0.0);
9122 case 3:
return Point(x,y,0.0);
9123 case 0:
return Point(x,-y,0.0);
9125 return Point(0.0,0.0,0.0);
9127 unsigned int Color(
int face,
int point)
const
9141 return Vector(1.0,0.0,0.0);
9143 virtual int AttribI(
int face,
int point,
int id)
const
9154 case 0:
return -1.0;
9155 case 1:
return -1.0;
9162 case 0:
return -1.0;
9165 case 3:
return -1.0;
9179 RenderBox(
int sx,
int sy,
int sz,
float sizex,
float sizey,
float sizez) : sx(sx), sy(sy), sz(sz), sizex(sizex), sizey(sizey), sizez(sizez) { }
9186 int face2 = face - 0;
9187 float pos_x = (float(face2)/sx)*2.0-1.0;
9194 if (point == 0) { p_y = p_y_0; p_z = p_z_0; }
9195 if (point == 1) { p_y = p_y_1; p_z = p_z_0; }
9196 if (point == 2) { p_y = p_y_1; p_z = p_z_1; }
9197 if (point == 3) { p_y = p_y_0; p_z = p_z_1; }
9200 else if (face < sx+sy)
9202 int face2 = face - sx;
9205 float pos_y = 2.0*float(face2)/sy-1.0;
9210 if (point == 0) { p_x = p_x_0; p_z = p_z_0; }
9211 if (point == 1) { p_x = p_x_1; p_z = p_z_0; }
9212 if (point == 2) { p_x = p_x_1; p_z = p_z_1; }
9213 if (point == 3) { p_x = p_x_0; p_z = p_z_1; }
9218 int face2 = face - sy - sx;
9223 float pos_z = 2.0*float(face2)/sz-1.0;
9226 if (point == 0) { p_x = p_x_0; p_y = p_y_0; }
9227 if (point == 1) { p_x = p_x_1; p_y = p_y_0; }
9228 if (point == 2) { p_x = p_x_1; p_y = p_y_1; }
9229 if (point == 3) { p_x = p_x_0; p_y = p_y_1; }
9248 unsigned int Color(
int face,
int point)
const
9262 return Vector(1.0,0.0,0.0);
9264 virtual int AttribI(
int face,
int point,
int id)
const
9269 float Attrib(
int face,
int point,
int id)
const
9281 if (point == 0) { val = -1.0; }
9282 if (point == 1) { val = -1.0; }
9283 if (point == 2) { val = 1.0; }
9284 if (point == 3) { val = 1.0; }
9287 if (point == 0) { val = -1.0; }
9288 if (point == 1) { val = 1.0; }
9289 if (point == 2) { val = 1.0; }
9290 if (point == 3) { val = -1.0; }
9300 float sizex, sizey, sizez;
9306 SphereElem(
int numfaces,
int numfaces2) : numfaces(numfaces), numfaces2(numfaces2), center(
Point(0.0,0.0,0.0)), radius(1.0) { }
9308 virtual std::string
name()
const {
return "SphereElem"; }
9320 virtual unsigned int Color(
int face,
int point)
const
9326 virtual int AttribI(
int face,
int point,
int id)
const
9331 virtual float Attrib(
int face,
int point,
int id)
const
9342 return pp.
x*pp.
x+pp.
y*pp.
y+pp.
z*pp.
z<radius*radius;
9380 virtual std::string
name()
const {
return "ConeElem"; }
9391 virtual unsigned int Color(
int face,
int point)
const
9403 virtual int AttribI(
int face,
int point,
int id)
const
9408 virtual float Attrib(
int face,
int point,
int id)
const
9449 PlaneCurveIn3d curve1,curve2;
9450 SampleCurve3d sample1, sample2;
9460 int Size()
const {
return coll.Size(); }
9463 return coll.Index(i)*m;
9477 Point p = points.Index(x).first;
9478 Matrix m = boxes.Index(y);
9482 virtual unsigned int Color(
int x,
int y)
const
9497 Vector v = points.Index(x).second;
9498 Matrix m = boxes.Index(y);
9501 virtual int AttribI(
int face,
int point,
int id)
const
9505 virtual float Attrib(
int x,
int y,
int id)
const {
return 0.0; }
9506 virtual int XSize()
const {
return points.Size(); }
9507 virtual int YSize()
const {
return boxes.Size(); }
9585 int count = array.Size();
9586 for(
int i=0;i<count;i++)
9599 virtual void SetElemId(
int id) { elem.SetBox(b.BoxIndex(
id)); }
9610 int Size()
const {
return c.NumBoxes(); }
9626 dx(dx), dy(dy), dz(dz), b(b)
9629 virtual int Size()
const {
return x*y*z; }
9651 std::vector<Matrix> cont;
9659 int NumBoxes()
const {
return c.NumBoxes()*c2.NumBoxes(); }
9662 int bb =
box / c2.NumBoxes();
9663 int bb2 =
box - (bb*c2.NumBoxes());
9665 return c.BoxIndex(bb)*c2.BoxIndex(bb2);
9681 for(std::vector<BoxCollection*>::const_iterator i=cont.begin(); i!=cont.end();i++)
9682 count += (*i)->NumBoxes();
9687 for(std::vector<BoxCollection*>::const_iterator i=cont.begin(); i!=cont.end();i++)
9689 int oldcount = count;
9690 count += (*i)->NumBoxes();
9691 if (count >
box) {
return (*i)->BoxIndex(
box-oldcount); }
9698 std::vector<BoxCollection*> cont;
9705 virtual int Size()
const {
return c.NumBoxes(); }
9725 virtual int Size()
const {
return 1; }
9735 virtual std::string
name()
const {
return "SampleGrid"; }
9740 std::pair<int,int> p = Sample(face,point);
9741 Point2d pp = grid.Texture(p.first,p.second);
9749 int NumFaces()
const {
return grid.XSize()*grid.YSize(); }
9753 std::pair<int,int> p = Sample(face, point);
9754 Point pp = grid.Index(p.first, p.second);
9757 unsigned int Color(
int face,
int point)
const
9759 std::pair<int,int> p = Sample(face, point);
9760 unsigned int color = grid.Color(p.first, p.second);
9765 std::pair<int,int> p = Sample(face,point);
9766 Vector pp = grid.Normal(p.first, p.second);
9769 virtual int AttribI(
int face,
int point,
int id)
const
9771 std::pair<int,int> p = Sample(face,point);
9772 int pp = grid.AttribI(p.first, p.second,
id);
9775 virtual float Attrib(
int face,
int point,
int id)
const
9777 std::pair<int,int> p = Sample(face,point);
9778 float pp = grid.Attrib(p.first, p.second,
id);
9782 std::pair<int,int>
Sample(
int face,
int point)
const
9784 int yindex = face/
grid.XSize();
9785 int ddy = face - yindex*
grid.XSize();
9787 if (point==1 || point==2) xindex++;
9788 if (point==2 || point==3) yindex++;
9791 xindex = xindex %
grid.XSize();
9792 yindex = yindex %
grid.YSize();
9793 return std::make_pair(xindex, yindex);
9805 int Size()
const {
if (loops)
return points.Size()+1;
return points.Size(); }
9808 if (index==
Size()-1 && loops)
return points.Index(0)-points.Index(index-1);
9809 if (index==0)
return Vector(0.0,0.0,0.0);
9810 return points.Index(index)-points.Index(index-1);
9822 int Size()
const {
return coll.Size(); }
9825 std::pair<Point,Vector> p = coll.Index(i);
9826 return p.first + p.second*pos;
9839 return sample3d.Size();
9841 std::pair<Point,Vector>
Index(
int i)
const
9843 Point p = sample3d.Index(i);
9844 Vector v = diff3d.Index(i+1);
9845 return std::make_pair(p,v);
9858 SpanObject(
PointCollection &points,
PointCollection &points2,
MatrixCurve &contobject) : points(points), vectors(diff), d(vectors), s(d, 0.0), contobject(contobject), id(1.0), diff(points2, true), points2(points2), dist(d.Sum()) { }
9859 SpanObject(
PointCollection &points,
PointCollection &points2) : points(points), vectors(diff), d(vectors), s(d, 0.0), contobject(id), id(1.0), diff(points2, true), points2(points2), dist(d.Sum()) { }
9862 Point p = points.Points(x);
9864 p +=
Vector(points2.Points(y)-points2.Points(0.0));
9870 Matrix m = contobject.Index(s.Index(y)/dist*contobject.Size());
9893 virtual float Attrib(
int x,
int y,
int id)
const
9903 return points.NumPoints();
9907 return vectors.NumVectors();
9916 std::vector<Vector> v;
9923class MoveInPair :
public Function<std::pair<Point,Point>, std::pair<Point,Point> >
9926 MoveSecondInPair(Vector firstmove, Vector secondmove) : firstmove(firstmove), secondmove(secondmove) { }
9927 std::pair<Point,Point>
Index(std::pair<Point,Point> p)
9929 return std::make_pair(p.first + firstmove, p.second + secondmove);
9938 SpanObject2(PointCollection &points, Vector v1, Vector v2) : distfunc(v1,v2), pointpair(points, points), distance(pointpair, distfunc) { }
9941 MoveInPair distfunc;
9942 ArrayPair<int, int, Point, Point> pointpair;
9943 ComposeArrays<int, std::pair<Point,Point>, std::pair<Point,Point> > distance;
9952 : numfaces1(numfaces1), numfaces2(numfaces2), center(center), u_x(u_x), u_y(u_y), radius1(radius1),
9953 uu_x(uu_x), uu_y(uu_y), radius2(radius2) { }
9954 virtual std::string
name()
const {
return "TorusElem"; }
9956 virtual int NumFaces()
const {
return numfaces1*numfaces2; }
9960 int face1 = face / numfaces1;
9961 int face2 = face - (face1*numfaces1);
9963 if (point==1 || point==2) face1++;
9964 if (point==2 || point==3) face2++;
9966 float f1 = float(face1)/numfaces2;
9967 float f2 = float(face2)/numfaces1;
9982 virtual unsigned int Color(
int face,
int point)
const {
return 0xffffffff; }
9986 int face1 = face / numfaces1;
9987 int face2 = face - (face1*numfaces1);
9989 if (point==1 || point==2) face1++;
9990 if (point==2 || point==3) face2++;
9992 float f1 = float(face1)/numfaces2;
9993 float f2 = float(face2)/numfaces1;
9997 virtual float Attrib(
int face,
int point,
int id)
const {
return 0.0; }
9998 virtual int AttribI(
int face,
int point,
int id)
const {
return 0; }
10003 Point pos1 = center + radius1*u_x*cos(angle1) + radius1*u_y*sin(angle1);
10005 normal /= normal.
Dist();
10009 Point pos2 = pos1 + radius2*vv_x*cos(angle2) + radius2*vv_y*sin(angle2);
10013 int numfaces1, numfaces2;
10026 RingElem(
const PointVectorCollection &points,
float x,
int steps)
10027 : mcurve(x), sample(mcurve, steps),
grid(points, sample), faces(
grid, 0)
10029 void SetBox(Matrix m) { }
10030 void Collect(CollectVisitor &vis)
10036 virtual int NumFaces()
const {
return faces.NumFaces(); }
10037 virtual int NumPoints(
int face)
const {
return faces.NumPoints(face); }
10038 virtual Point
FacePoint(
int face,
int point)
const {
return faces.FacePoint(face,point); }
10039 virtual Vector
PointNormal(
int face,
int point)
const {
return faces.PointNormal(face,point); }
10040 virtual unsigned int Color(
int face,
int point)
const {
return faces.Color(face, point); }
10041 virtual Point2d
TexCoord(
int face,
int point)
const
10049 virtual float Attrib(
int face,
int point,
int id)
const {
return faces.Attrib(face,point,
id); }
10050 virtual int AttribI(
int face,
int point,
int id)
const
10052 return faces.AttribI(face,point,
id);
10056 CircleMatrixCurve mcurve;
10057 SampleMatrixCurve sample;
10075 float fp =
f(p, x_0, x_1, x_2);
10076 float gp =
g(p, x_0, x_1, x_2);
10077 if (fp < 1.0) fp = 1.0;
10078 if (gp < 1.0) gp = 1.0;
10079 return 1.0/(fp)+1.0/(gp)-r;
10085 return h(
line(tt, x_0, x_1), x_0, x_1, x_2, r);
10088double FalsiMethod(
double s,
double t,
double e,
int m)
10091 double r=
t,fr,fs =
H(s),ft =
H(
t);
10093 for (n = 1; n <= m; n++)
10095 r = (fs*
t - ft*s) / (fs - ft);
10096 if (fabs(
t-s) <
e*fabs(
t+s))
break;
10102 if (side==-1) fs /= 2;
10105 else if (fs * fr > 0)
10108 if (side==+1) ft /= 2;
10115double SecantMethod(
double xn_1,
double xn,
double e,
int m)
10119 for (n = 1; n <= m; n++)
10121 d = (xn - xn_1) / (
H(xn) -
H(xn_1)) *
H(xn);
10139 float Ht =
H(
t, x_0, x_1, x_2, r);
10140 if (
Ht<0.1)
return t;
10150 float tt =
t(1.0,5.0, x_0, x_1, x_2, r);
10151 return line(tt, x_0, x_1);
10162 Point pp = p + x*v;
10176 : compose(curve, value) { }
10177 float Index(
float x)
const {
return compose.Index(x); }
10201 float rx = (f.Index(x+dx) - f.Index(x))/(dx);
10213 float Index(
float x)
const {
return f2.Index(f1.Index(x)); }
10236 Packing(
int num,
float dist) : num(num), dist(dist) { }
10259 float dist = (p2.
x-p.
x)*(p2.
x-p.
x)+(p2.
y-p.
y)*(p2.
y-p.
y);
10264 float dist = (p2.
x-p.
x)*(p2.
x-p.
x)+(p2.
y-p.
y)*(p2.
y-p.
y);
10270 float t =
Solve(comp2, 0.0, 2.0*3.14159);
10315 std::vector<Point> vec;
10329 std::vector<float> v;
10344 std::vector<float> v;
10359 std::vector<float> v;
10379 Point center1, center2;
10393 return pm.Convert(coll.FacePoint(face,point));
10395 unsigned int Color(
int face,
int point)
const
10397 return coll.Color(face, point);
10401 return coll.TexCoord(face,point);
10406 return coll.PointNormal(face,point);
10410 return coll.Attrib(face,point,
id);
10412 virtual int AttribI(
int face,
int point,
int id)
const
10414 return coll.AttribI(face,point,
id);
10426 bool Frame(
float time);
10432 bool Frame(
float time);
10438 bool Frame(
float time);
10445 bool Frame(
float time);
10458 bool Frame(
float time);
10471 bool Frame(
float time);
10485 bool Frame(
float time);
10491 bool Frame(
float time);
10500 bool Frame(
float time);
10509 float ZRot()
const {
return 1.0*sin(40.0*3.14159*2.0/360.0); }
10510 bool Frame(
float time);
10520 bool Frame(
float time);
10571 float *arr = array + start*3;
10572 for(
int i=start;i<end;i++)
10574 Point p = o.FacePoint(i);
10585 float *arr = array + start*3;
10586 for(
int i=start;i<end;i++)
10588 Vector v = o.PointNormal(i);
10598 float *arr = array + start*2;
10599 for(
int i=start;i<end;i++)
10610 char *arr = array + start;
10611 for(
int i=start;i<end;i++)
10613 unsigned int v = o.Color(i);
10616 arr[2]=char(v>>16);
10617 arr[3]=char(v>>24);
10624 float *arr = array + start;
10625 for(
int i=start;i<end;i++)
10627 float v = o.Attrib(i,
id);
10635 short *arr = array + start;
10636 for(
int i=start;i<end;i++)
10638 int v = o.AttribI(i,
id);
10649 for(
int i=start;i<end;i++)
10651 int i1 = o.Index(o.IndexToFace(i),0);
10652 int i2 = o.Index(o.IndexToFace(i),1);
10653 int i3 = o.Index(o.IndexToFace(i),2);
10665 virtual int StartRange(
int obj)
const {
return o.PointsStartRange(obj); }
10666 virtual int EndRange(
int obj)
const {
return o.PointsEndRange(obj); }
10735 : obj(obj), state(state), u(u) { }
10750 virtual void cmd();
10789class TexturePlugin;
10798 TexturePlugin *plugin;
10875 piece.push_back(&shader);
10888 piece.set_params(*params);
10890 piece.set_attribs(*attrs);
10919 bool Frame(
float time);
10934 bool Frame(
float time);
10943 bool Frame(
float time);
10958 int size = arr.Size();
10959 for(
int i=0;i<
size;i++)
10967 int size = arr.Size();
10968 for(
int i=0;i<
size;i++)
10976 int size = arr.Size();
10977 for(
int i=0;i<
size;i++)
10985 int size = arr.Size();
10987 for(
int i=0;i<
size;i++)
10996 int size = arr.Size();
10997 for(
int i=0;i<
size;i++)
11039 for(
int i=0;i<arr.Size();i++)
11041 time += arr.Index(i)->Time();
11047 for(
int i=0;i<arr.Size();i++)
11049 arr.Index(i)->Init();
11054 float totaltime = 0.0;
11055 for(
int i=0;i<arr.Size();i++)
11057 float oldtotal = totaltime;
11058 float t = arr.Index(i)->Time();
11060 if (totaltime > time)
11062 return arr.Index(i)->Frame(time-oldtotal);
11077 bool Frame(
float time);
11089 bool Frame(
float time);
11097 bool Frame(
float time);
11104 bool Frame(
float time);
11114 bool Frame(
float time);
11123 bool Frame(
float time);
11130Low_SDL_Surface *
InitSDL2(
int scr_x,
int scr_y,
bool vsync,
bool antialias=
false,
bool resize=
false,
bool vr_init=
false);
11134class CubeAnim :
public Anim
11137 CubeAnim() : coll(0), coll2(0) { }
11139 FaceCollection *
Frame(
int framenum)
const
11144 coll =
new CubeElem;
11145 coll2 =
new MatrixElem(*coll,
Matrix::Scale(50+framenum,50+framenum,50+framenum));
11149 mutable BoxableFaceCollection *coll, *coll2;
11156 Frames(
int frames) : as(frames), fs(as),frames(frames) { }
11159 while(framenum > frames)
11161 fs.set_frame(framenum);
11182 int framenum = time / length*a.NumFrames();
11185 while (framenum > a.NumFrames())
11186 framenum-=a.NumFrames();
11187 DrawAnim(framenum-0.5, framenum+0.5, s);
11202 int Size()
const {
return time_lengths.Size(); }
11206 int size = time_lengths.Size();
11207 for(
int ii=0;ii<
size;ii++)
11209 t+=time_lengths.Index(ii);
11210 if (t > current_time)
11212 if (i < ii)
return 1.0;
11213 if (i == ii)
return (time_lengths.Index(ii) - t + current_time)/time_lengths.Index(ii);
11214 if (i > ii)
return 0.0;
11221 float current_time;
11232 if (arr.Size() != arr2.Size())
11234 std::cout <<
"ContinuousObjectMovement::array size problem" << std::endl;
11237 int size = arr.Size();
11239 for(
int i=0;i<
size;i++)
11242 float pos = arr2.Index(i);
11243 res *=
func->Index(pos);
11275 std::map<int,int>::iterator i = cache.find(frames);
11276 if (i!=cache.end())
11281 int currentstate = -1;
11286 int faces = framecoll->
NumFaces();
11287 for(
int face = 0;face<faces;face++)
11290 if (texture != currentstate)
11293 currentstate = texture;
11297 cache[frames]=count;
11304 int count = states_before;
11306 if (!framecoll->
NumTextures())
return states_before;
11307 int faces = framecoll->
NumFaces();
11308 int currentstate = -1;
11309 for(
int face = 0;face<faces&&face<face2;face++)
11312 if (texture != currentstate)
11315 currentstate = texture;
11324 int val = array[framenum]->NumFaces();
11330 return array[0]->NumPoints(0);
11334 Point p = array[framenum]->FacePoint(face,point);
11342 mutable std::map<int,int> cache;
11359 {
return array[framenum]->PointNormal(face,point); }
11381 return array[framenum]->TexCoord(face,point);
11392 virtual unsigned int VertexColor(
int framenum,
int statenum,
int face,
int point)
const {
return 0; }
11401 virtual unsigned int VertexColor(
int framenum,
int statenum,
int face,
int point)
const
11402 {
return array[framenum]->Color(face,point); }
11424 array[frame]->GenTexture(
num);
11429 int s = array[frame]->NumFaces();
11430 for(
int i=0;i<s;i++)
11432 int tex = array[frame]->FaceTexture(i);
11433 if (tex==texnum)
return i;
11447 virtual unsigned int VertexColor(
int framenum,
int statenum,
int face,
int point,
int id)
const {
return 0; }
11464 tex_coord_array(0),
quads(false),
index_array(0),
texture(0),
texture_count(0),
textures(0),
tex_size_x(0),
tex_size_y(0),
q_vertex_array(0),
q_normal_array(0),
q_color_array(0),
q_tex_coord_array(0),
buffer_allocated(false)
11470 void Alloc(
int numfaces,
int numvertices);
11471 void Alloc(
int numfaces,
int numvertices,
int vertexframes,
int normalframes,
int colorframes,
int texcoordframes);
11486 void Render(
bool normal,
bool color,
bool texcoord,
int vertex_pos,
int vertex_size);
11487 void Render(
int vertexframe,
int normalframe,
int colorframe,
int texcoordframe,
int vertex_pos,
int vertex_size);
11488 void Render(
int vertexframe,
int normalframe,
int colorframe,
int texcoordframe) {
Render(vertexframe, normalframe, colorframe, texcoordframe, 0,
used_vertex_count[vertexframe]); }
11532 std::vector<std::pair<int,int> >
vec;
11551 return numfaces[framenum];
11559 Key k = { framenum, face, point };
11562 int s = vec.size();
11563 for(
int i=0;i<s;i++)
11565 const Key &k = vec[i];
11571 return Point(0.0,0.0,0.0);
11580 if (k1.
face < k2.
face)
return true;
11581 if (k1.
face > k2.
face)
return false;
11592 std::cout <<
"numfaces insert" << std::endl;
11593 numfaces.push_back(coll.
NumFaces());
11594 if (numpoints==0) numpoints = coll.
NumPoints(0);
11596 for(
int i=0;i<faces;i++)
11598 for(
int j=0;j<numpoints;j++)
11600 Key k = { numframes, i, j };
11607 virtual int StateNum(
int framenum,
int face)
const {
return 0; }
11611 std::vector<int> numfaces;
11613 mutable std::map<Key,Point> vec;
11622 virtual std::string
name()
const {
return "MeshFaceCollection"; }
11630 virtual int NumFaces()
const {
return mesh.NumFaces(framenum); }
11631 virtual int NumPoints(
int face)
const {
return mesh.NumPoints(); }
11634 return mesh.FacePoint(framenum, 0, face, point);
11644 Point p1 = mesh.FacePoint(framenum, 0, face, 0);
11645 Point p2 = mesh.FacePoint(framenum, 0, face, 1);
11646 Point p3 = mesh.FacePoint(framenum, 0, face, 2);
11649 virtual float Attrib(
int face,
int point,
int id)
const
11651 virtual int AttribI(
int face,
int point,
int id)
const {
return 0; }
11652 virtual unsigned int Color(
int face,
int point)
const
11664 return texcoord->TexCoord(framenum, 0, face, point);
11711 bool Frame(
float time);
11750 return m.NumFrames();
11755 if (m.NumPoints()==4)
return m.NumFaces(framenum)*2;
11756 return m.NumFaces(framenum);
11764 if (m.NumPoints()==4)
11766 int f = count.face_num(face);
11767 int p = count.point_map(face, point);
11768 Point pp = m.FacePoint(framenum, statenum,
f, p);
11772 return m.FacePoint(framenum, statenum, face, point);
11787 int f = count.face_num(face);
11788 int p = count.point_map(face, point);
11789 return n.PointNormal(framenum, statenum,
f,p);
11791 return n.PointNormal(framenum, statenum, face, point);
11808 int f = count.face_num(face);
11809 int p = count.point_map(face, point);
11810 return n.TexCoord(framenum, statenum,
f, p);
11812 return n.TexCoord(framenum, statenum, face, point);
11826 virtual unsigned int VertexColor(
int framenum,
int statenum,
int face,
int point)
const
11830 int f = count.face_num(face);
11831 int p = count.point_map(face, point);
11832 return n.VertexColor(framenum, statenum,
f, p);
11834 return n.VertexColor(framenum, statenum, face, point);
11856 unsigned char r,
g,b,a;
11864 DataBlock() : type(0), orig_ptr(0), size_in_bytes(1), adjusted_buffer(0), adjusted_size(0), cleanup((char*)0) { }
11866 DataBlock(
int type, T *ptr,
int count) : type(type), orig_ptr((char*)ptr), size_in_bytes(
count*sizeof(T)), adjusted_buffer(0), adjusted_size(0), cleanup(ptr) { }
11867 DataBlock(
const DataBlock &b)
11869 adjusted_buffer =
new char[b.adjusted_size];
11870 adjusted_size = b.adjusted_size;
11871 std::copy(b.adjusted_buffer, b.adjusted_buffer+adjusted_size, adjusted_buffer);
11872 orig_ptr = b.orig_ptr;
11874 size_in_bytes = b.size_in_bytes;
11876 std::pair<char*, int> BufferPosPart()
const {
return std::make_pair(adjusted_buffer, adjusted_size); }
11880 void OrigToAdjusted(
int size_in_bytes);
11881 char *adjusted_buffer;
11884 std::shared_ptr<void> cleanup;
11889 std::vector<DataBlock> vec;
11891 void SetFrames(
int frames) { vec.resize(frames); }
11894 void OrigToAdjusted(
int frame,
int bytes) { vec[
frame].OrigToAdjusted(bytes); }
11895 std::pair<char*, int> BufferPosPart(
int frame)
const
11897 return vec[
frame].BufferPosPart();
11906 DataFrames texcoord;
11907 void SetFrames(
int type,
int frames);
11909 void OrigToAdjusted(
bool has_normal,
bool has_color,
bool has_texcoord);
11910 std::pair<char*, int> BufferPosPart(
int type,
int frame)
11913 case 0:
return vertex.BufferPosPart(
frame);
11914 case 1:
return normal.BufferPosPart(
frame);
11916 case 3:
return texcoord.BufferPosPart(
frame);
11918 return std::make_pair((
char*)0,0);
11925 void SetObjectCount(
int count) { objs.resize(count); }
11926 void MeshToOrig(
int objnum, Mesh &mesh);
11927 void MeshNormalsToOrig(
int objnum, Mesh &mesh, MeshNormals &normals);
11928 void MeshColorsToOrig(
int objnum, Mesh &mesh, MeshColors &
colors);
11929 void MeshTexCoordsToOrig(
int objnum, Mesh &mesh, MeshTexCoords &texcoords);
11930 void OrigToAdjusted(
bool has_normal,
bool has_color,
bool has_texcoord);
11931 void AllocWholeBuffer(
bool has_normal,
bool has_color,
bool has_texcoord);
11932 void CopyPartsToWholeBuffer(
int vertex,
int normal,
int color,
int texcoord);
11933 void BlitWholeBufferToGPU();
11934 void CopyPartToGPU(
int obj_num,
int vertex,
int normal,
int color,
int texcoord);
11935 void BlitGPUToScreen();
11937 void AllocTexture(
int count);
11939 void EnableTexture(
int frame);
11940 void DisableTexture();
11944 std::vector<DataTypes> objs;
11946 int wholebuffer_vertex_size;
11947 int wholebuffer_normal_size;
11948 int wholebuffer_color_size;
11949 int wholebuffer_texcoord_size;
11952 bool m_has_texcoord;
11957 friend class BlitWholeInterface;
11958 friend class BlitPartInterface;
11960 std::pair<char*, int> BufferPosPart(
int type,
int obj_num,
int frame);
11961 std::pair<int,int> BufferPosWhole(
int type,
int obj_num);
11962 void SetFrameCount(
int obj_num,
int type,
int num_frames);
11972 int sz = arr.
Size();
11973 *result =
new T[sz];
11974 for(
int i=0;i<sz;i++)
11976 (*result)[i] = arr.
Index(i);
11982class FaceCollectionBuffer
11985 FaceCollectionBuffer(FaceCollection &coll,
11986 bool vertex,
bool normal,
bool color,
bool texcoord) : coll(&coll), m_vertex(vertex), m_normal(normal), m_color(
color), m_texcoord(texcoord) { }
11987 void AddAttrib(
int id) { attrib_ids.push_back(
id); }
11988 void CalculateSizes();
11989 void CreateBuffers();
11990 const Buffer<float> &VertexBuffer()
const {
return *vertex_buffer; }
11991 const Buffer<float> &NormalBuffer()
const {
return *normal_buffer; }
11992 const Buffer<unsigned int> &ColorBuffer()
const {
return *color_buffer; }
11993 const Buffer<float> &TexCoordBuffer()
const {
return *texcoord_buffer; }
11994 const Buffer<float> &Attrib_buffer(
int id)
const
11996 int s = attrib_ids.size();
11997 for(
int i=0;i<s;i++)
11998 if (attrib_ids[i]==
id)
return *attrib_buffers[i];
11999 return *attrib_buffers[0];
12002 FaceCollection *coll;
12011 Buffer<float> *vertex_buffer;
12012 Buffer<float> *normal_buffer;
12013 Buffer<unsigned int> *color_buffer;
12014 Buffer<float> *texcoord_buffer;
12015 Buffer<float> **attrib_buffers;
12016 std::vector<int> attrib_ids;
12022 void SetupVertex(
const Buffer<float> &buf,
int pos);
12023 void SetupNormal(
const Buffer<float> &buf,
int pos);
12024 void SetupColor(
const Buffer<unsigned int> &buf,
int pos);
12025 void SetupTexCoord(
const Buffer<float> &buf,
int pos);
12026 void SetupAttrib(
int id,
const Buffer<float> &buf,
int pos);
12027 void Render(
bool quads,
int start_elem,
int numitems);
12031 bool vertex,normal,
color,texcoord;
12032 std::vector<int> attrib_ids;
12069 float *n_array,
int n_size,
12070 unsigned int *c_array,
int c_size,
12071 float *tex_array,
int tex_size,
12072 float **attrib_array,
int a_size1,
int a_size2)
12073 : v_array(v_array), v_size(v_size),
12076 tex_array(tex_array),
12077 attrib_array(attrib_array)
12090 x = v_array[face*3*3+point*3+0];
12091 y = v_array[face*3*3+point*3+1];
12092 z = v_array[face*3*3+point*3+2];
12094 return Point(x,y,z);
12103 x = n_array[face*3*3+point*3+0];
12104 y = n_array[face*3*3+point*3+1];
12105 z = n_array[face*3*3+point*3+2];
12109 virtual float Attrib(
int face,
int point,
int id)
const
12112 return attrib_array[id][face*3*1+point*1];
12118 virtual int AttribI(
int face,
int point,
int id)
const
12122 virtual unsigned int Color(
int face,
int point)
const
12125 return c_array[face*3+point];
12135 x = tex_array[face*3*2+point*2 +0];
12136 y = tex_array[face*3*2+point*2 +1];
12152 unsigned int *c_array;
12156 float **attrib_array;
12183 std::ofstream file(filename);
12184 int s = coll->NumFaces();
12185 for(
int i=0;i<s;i++)
12187 int ss = coll->NumPoints(i);
12188 for(
int j=0;j<ss;j++)
12190 Point p = coll->FacePoint(i,j);
12191 unsigned int p2 = coll->Color(i,j);
12193 if (std::isnan(p.
x)) p.
x=0.0;
12194 if (std::isnan(p.
y)) p.
y=0.0;
12195 if (std::isnan(p.
z)) p.
z=0.0;
12196 file <<
"v " << p.
x <<
" " << p.
y <<
" " << p.
z <<
" " << c.
r <<
" " << c.
g <<
" " << c.
b << std::endl;
12199 for(
int i=0;i<s;i++)
12201 int ss = coll->NumPoints(i);
12202 for(
int j=0;j<ss;j++)
12204 Vector p = coll->PointNormal(i,j);
12205 if (std::isnan(p.
dx)) p.
dx=0.0;
12206 if (std::isnan(p.
dy)) p.
dy=0.0;
12207 if (std::isnan(p.
dz)) p.
dz=0.0;
12208 file <<
"vn " << p.
dx <<
" " << p.
dy <<
" " << p.
dz << std::endl;
12211 for(
int i=0;i<s;i++)
12213 int ss = coll->NumPoints(i);
12214 for(
int j=0;j<ss;j++)
12216 Point2d p = coll->TexCoord(i,j);
12217 float p2 = coll->TexCoord3(i,j);
12218 if (std::isnan(p.
x)) p.
x=0.0;
12219 if (std::isnan(p.
y)) p.
y=0.0;
12220 if (std::isnan(p2)) p2=0.0;
12222 file <<
"vt " << p.
x <<
" " << p.
y <<
" " << p2 << std::endl;
12226 for(
int i=0;i<s;i++)
12228 int ss = coll->NumPoints(i);
12229 for(
int j=0;j<ss;j++)
12231 unsigned int p = coll->Color(i,j);
12234 file <<
"vc " << c.
r <<
" " << c.
g <<
" " << c.
b <<
" " << c.
alpha << std::endl;
12239 for(
int i=0;i<s;i++)
12242 int ss = coll->NumPoints(i);
12243 for(
int j=0;j<ss;j++)
12245 file << counter <<
"/" << counter <<
"/" << counter;
12246 if (j!=ss-1) file <<
" ";
12257int filesize(std::string filename);
12273 virtual float Attrib(
int face,
int point,
int id)
const;
12274 virtual int AttribI(
int face,
int point,
int id)
const;
12275 virtual unsigned int Color(
int face,
int point)
const;
12276 virtual float TexCoord3(
int face,
int point)
const;
12278 int Count(
int face,
int point)
const;
12281 std::vector<Point> vertex_data;
12282 std::vector<Point2d> texcoord_data;
12283 std::vector<float> texcoord3_data;
12284 std::vector<Vector> normal_data;
12285 std::vector<unsigned int> color_data;
12286 std::vector<int> vertex_index;
12287 std::vector<int> texture_index;
12288 std::vector<int> normal_index;
12289 std::vector<int> face_counts;
12291 mutable std::vector<int> counts;
12292 mutable bool firsttime;
12293 std::vector<std::string> material_names_external;
12294 std::vector<std::string> material_names_internal;
int mapping(char c)
Definition test.cpp:18
P func(int c, EveryApi &ev)
Definition test.cpp:59
Env e
Definition Common.cc:2
Color2 colors[]
Definition Effect.cc:56
LowApi * g_low
Definition GameApi_low.cc:1684
FunctionImpl1< Point2d, Element< Point > *, Plane, PlaneIn3d > PlaneIn3dFunction
Definition Effect.hh:2242
void confirm_texture_usage(FaceCollection *coll)
Definition GameApi_dep_env.cc:1956
FunctionImpl1< MatrixCurve *, BoxCollection *, int, SampleMatrixCurve > SampleMatrixCurveFunction
Definition Effect.hh:5837
FunctionImpl0< Point2d, Function< Point2d, float > *, Distance2d > Distance2dFunction
Definition Effect.hh:2120
FunctionImpl1< BoxableFaceCollection *, BoxableFaceCollection *, Matrix, MatrixElem > MatrixElemFunction
Definition Effect.hh:8318
FunctionImpl0< Array< float, Matrix > *, MatrixCurve *, MatrixCurveConvert > MatrixCurveConvertFunction
Definition Effect.hh:1705
FunctionImplT0< Waveform *, SinWaveform > SinWaveformFunction
Definition Effect.hh:5410
FunctionImpl3< SurfaceIn3d *, FaceCollection *, int, int, int, SampleSurfaceIn3d > SampleSurfaceIn3dFunction
Definition Effect.hh:6382
FunctionImpl0< VectorCollection *, FloatArray *, Distance > DistanceFunction
Definition Effect.hh:3075
FunctionImpl1< PointCollection2d *, PointCollection *, Plane, PlanePointsIn3d > PlanePointsIn3dFunction
Definition Effect.hh:2999
FunctionImpl0< float, MatrixCurve *, SpiralMatrixCurve > SpiralMatrixCurveFunction
Definition Effect.hh:1694
void ExecuteFaceStore(ArrayRender &r, PrecalcStore &prestore, int frame)
Definition Effect.cc:3226
void PrecalcRenderCmds(OpenGlCommands &cmds)
Definition Effect.cc:2942
VBOUpdate
Definition Effect.hh:10676
@ UpdateAll
Definition Effect.hh:10682
@ UpdateAllColor
Definition Effect.hh:10686
@ UpdateVertexNormalIndex
Definition Effect.hh:10684
@ UpdateColor
Definition Effect.hh:10680
@ UpdateIndex
Definition Effect.hh:10681
@ UpdateTexture
Definition Effect.hh:10679
@ UpdateVertexNormal
Definition Effect.hh:10683
@ UpdateAllTexture
Definition Effect.hh:10687
@ UpdateVertex
Definition Effect.hh:10677
@ UpdateVertexIndex
Definition Effect.hh:10685
@ UpdateNormal
Definition Effect.hh:10678
void Execute(FrameAnim &f, Low_SDL_Surface *screen)
Definition Main.cc:1603
FunctionImpl1< BoxCollection *, BoxableFaceCollection *, BoxableFaceCollection &, BoxedElem > BoxedElemFunction
Definition Effect.hh:6244
FunctionImpl2< FaceCollection *, TextureCoords *, int, Point, SphericalTexCoords > SphericalTexCoordsFunction
Definition Effect.hh:4926
FunctionImpl1< Waveform *, FloatArray *, int, SampleWaveform > SampleWaveformFunction
Definition Effect.hh:5306
AttribId
Definition Effect.hh:71
@ AttrCenterZ
Definition Effect.hh:74
@ AttrInternalNY_X
Definition Effect.hh:84
@ AttrInternalNY_Y
Definition Effect.hh:85
@ AttrFace
Definition Effect.hh:87
@ AttrInternalNX_Z
Definition Effect.hh:83
@ AttrInternalNX_Y
Definition Effect.hh:82
@ AttrInternalNY_Z
Definition Effect.hh:86
@ AttrInternalNX_X
Definition Effect.hh:81
@ AttrPart
Definition Effect.hh:89
@ AttrCenterY
Definition Effect.hh:73
@ AttrFrame
Definition Effect.hh:88
@ AttrObjectId
Definition Effect.hh:80
@ AttrInternalY
Definition Effect.hh:76
@ AttrInternalX
Definition Effect.hh:75
@ AttrCenterX
Definition Effect.hh:72
@ AttrInternalObjX
Definition Effect.hh:78
@ AttrInternalZ
Definition Effect.hh:77
@ AttrInternalObjY
Definition Effect.hh:79
FunctionImpl0< FaceCollection *, FaceCollectionTri *, TrisToTris > TrisToTrisFunction
Definition Effect.hh:4369
FunctionImpl2< FaceCollection *, FaceCollection *, int, int, SplitQuads > SplitQuadsFunction
Definition Effect.hh:6588
void AllocToNativeArray(Array< int, T > &arr, T ***result)
FunctionImpl0< FaceCollectionTriWithObjects *, FaceCollectionVBO *, VBO > VBOFunction
Definition Effect.hh:10673
float SolveWithFailure(const Function< float, float > &func, float t_0, float t_1, bool &success)
Definition Effect.cc:1879
void CleanupFrameAnim(FrameAnim &f, Low_SDL_Surface *surf)
Definition Main.cc:1714
FunctionImpl0< Array< int, Matrix >, BoxCollection *, BoxCollectionConvert > BoxCollectionConvertFunction
Definition Effect.hh:5496
void AttachBoxes(const BoxCollection &c, const std::vector< Boxable * > &v)
Definition Effect.cc:187
FunctionImpl0< CurveIn3d *, MatrixCurve *, CurveMovement > CurveMovementFunction
Definition Effect.hh:4579
FunctionImplT2< PointCollection2d *, int, int, Packing > PackingFunction
Definition Effect.hh:10284
FunctionImpl1< GridIn3d *, FaceCollection *, int, SampleGrid > SampleGridFunction
Definition Effect.hh:9799
void DrawVBO(int obj, VBOState &state, VBOUpdate u=UpdateAll, const std::vector< Attrib > &attribs=std::vector< Attrib >())
Definition Effect.cc:2541
void TextureGeneration(FaceCollection &coll, FrameAnimPlugins &plugins)
Definition Effect.cc:3317
FunctionImpl1< PointCollection *, PointCollection *, Matrix, TransformPoints > TransformPointsFunction
Definition Effect.hh:9469
FunctionImplT0< BoxableFaceCollection *, CylinderElem > CylinderElemFunction
Definition Effect.hh:7649
BufferRef LoadImage(std::string filename, bool &success)
Definition Main.cc:1816
BufferRef CopyFromSDLSurface(Low_SDL_Surface *surf)
Definition Main.cc:1901
SolvableCompose< Point > SolvableComposePoint
Definition Effect.hh:10181
FunctionImpl0< Array< int, Vector > *, VectorCollection *, VectorCollectionConvert > VectorCollectionConvertFunction
Definition Effect.hh:3018
FunctionImpl0< Point, Element< Matrix > *, TranslateElement > TranslateElementFunction
Definition Effect.hh:1658
FunctionImplT2< BoxableFaceCollection *, int, int, DiskElem > DiskElemFunction
Definition Effect.hh:7701
FaceType
Definition Effect.hh:8388
@ EDoNotDraw
Definition Effect.hh:8389
@ EIntersect
Definition Effect.hh:8391
@ EDraw
Definition Effect.hh:8390
std::ostream & operator<<(std::ostream &o, const Array< I, T > &arr)
Definition Effect.hh:994
FunctionImpl0< std::pair< Point, Point >, Element< Matrix > *, Direction > DirectionFunction
Definition Effect.hh:4562
FunctionImplT2< Waveform *, float, float, ConstantWaveform > ConstantWaveformFunction
Definition Effect.hh:5440
FunctionImpl0< std::pair< Point, Vector >, Element< std::pair< Point, Point > > *, VectorPoints > VectorPointsFunction
Definition Effect.hh:4842
void RenderOpenGlPoly(const PointCollection &col)
Definition Effect.cc:675
FunctionImpl1< FaceCollection *, TextureCoords *, int, HorizTexCoords > HorixTexCoordsFunction
Definition Effect.hh:4980
FunctionImpl0< PointCollection *, BoxCollection *, PointsToBoxCollection > PointsToBoxCollectionFunction
Definition Effect.hh:5674
FunctionImpl0< CurveIn3d *, MatrixCurve *, TranslateToMatrixCurve > TranslateToMatrixCurveFunction
Definition Effect.hh:1673
void RenderOpenGl(const FaceCollection &col)
Definition Effect.cc:594
FunctionImpl1< BoxCollection *, BoxCollection *, Matrix, MatrixBox > MatrixBoxFunction
Definition Effect.hh:9715
FunctionImpl1< MatrixCurve *, CurveIn3d *, Vector, MatrixCurveToCurveIn3d > MatrixCurveToCurveIn3dFunction
Definition Effect.hh:1761
FunctionImpl1< Point2d, CurveIn2d *, float, Circle > CircleFunction
Definition Effect.hh:2076
Low_SDL_Surface * InitSDL2(int scr_x, int scr_y, bool vsync, bool antialias=false, bool resize=false, bool vr_init=false)
Definition Main.cc:548
int filesize(std::string filename)
Definition GameApi_pl.cc:14757
FunctionImpl1< PointCollection *, LineCollection *, bool, ContinuousLines > ContinuousLinesFunction
Definition Effect.hh:4667
float Solve(const Function< float, float > &func, float t_0, float t_1)
Definition Effect.cc:1836
FunctionImpl0< FaceCollection *, FaceCollection *, FlipNormals > FlipNormalsFunction
Definition Effect.hh:4625
void RenderOpenGlTextures(const FaceCollection &col)
Definition Effect.cc:588
FunctionImplT0< BoxableFaceCollection *, CubeElem > CubeElemFunction
Definition Effect.hh:7586
FunctionImpl1< CurveIn2d *, CurveIn3d *, Plane, PlaneCurveIn3d > PlaneCurveIn3dFunction
Definition Effect.hh:2262
FunctionImpl1< FaceCollection *, TextureCoords *, int, SimpleTexCoords > SimpleTexCoordsFunction
Definition Effect.hh:5001
BufferRef LoadImageFromString(const std::vector< unsigned char > &buffer, bool &success)
Definition Main.cc:1770
FunctionImpl1< BoxableFaceCollection *, BoxableFaceCollection *, PointMap &, ModifyObject > ModifyObjectFunction
Definition Effect.hh:10420
FunctionImpl1< BoxableFaceCollection *, BoxableFaceCollection *, Vector, Move > MoveFunction
Definition Effect.hh:8356
ArrayConvert< PointCollection2d, int, Point2d > PointCollection2dConvert
Definition Effect.hh:2666
FunctionImpl1< float, CurveIn2d *, float, AnimCircle > AnimCircleFunction
Definition Effect.hh:2168
FunctionImpl1< Waveform *, Waveform *, int, RepeatWaveform > RepeatWaveformFunction
Definition Effect.hh:5396
ArrayConvert< FaceCollectionArray, int, const FaceCollection * > FaceCollectionArrayConvert
Definition Effect.hh:3563
FunctionImpl3< Waveform *, Waveform *, float, float,float, FitWaveform > FitWaveformFunction
Definition Effect.hh:5427
void PreCalcMesh(Mesh &mesh, ArrayRender &r, PrecalcStore &prestore)
Definition Effect.cc:3166
void RenderOpenGlObjects(const BoxCollectionWithObject &coll, VBOState &vbostate, VBOUpdate u=UpdateVertexNormal)
Definition Effect.cc:729
FunctionImpl0< FaceCollection *, FaceCollectionTri *, QuadsToTris > QuadsToTrisFunction
Definition Effect.hh:4468
void UpdateVBO(const FaceCollectionVBO &faces, int obj, VBOState &state, VBOUpdate u=UpdateAll, const std::vector< Attrib > &attribs=std::vector< Attrib >())
Definition Effect.cc:2085
FunctionImpl0< Array< int, float > *, FloatArray *, FloatArrayConvert > FloatArrayConvertFunction
Definition Effect.hh:2056
FunctionImplT0< Waveform *, SawWaveform > SawWaveformFunction
Definition Effect.hh:5464
void DisplayFrame(FrameAnim &f, Low_SDL_Surface *screen, float time)
Definition Main.cc:1689
void InitFrameAnim(FrameAnim &f, Low_SDL_Surface *screen)
Definition Main.cc:1682
FunctionImpl0< FaceCollection *, LineCollection *, OutlineFaces > OutlineFacesFunction
Definition Effect.hh:4753
FunctionImpl0< GridIn3d *, PointCollection *, PointCollectionFromGrid > PointCollectionFromGridFunction
Definition Effect.hh:3139
FunctionImpl2< CurveIn2d *, CurveIn2d *, float, float, ScaleCurveIn2d > ScaleCurveIn2dFunction
Definition Effect.hh:2149
void PreCalcFaceStore(void(*fptr)(FaceStore &s, float time, float repeat_length), float repeat_duration, int repeat_framecount, ArrayRender &r, PrecalcStore &prestore)
Definition Effect.cc:3196
FunctionImpl0< float, Function< float, float > *, FloatMove > FloatMoveFunction
Definition Effect.hh:2131
FunctionImplT2< BoxableFaceCollection *, int, int, SphereElem > SphereElemFunction
Definition Effect.hh:9364
FunctionImpl1< CurveIn3d *, PointCollection *, int, SampleCurve3d > SampleCurve3dFunction
Definition Effect.hh:4528
FunctionImpl0< FaceCollection *, PointCollection *, FaceCenterPoints > FaceCenterPointsFunction
Definition Effect.hh:4795
Curve< std::pair< Point, Vector > > CurveWithNormal
Definition Effect.hh:1396
void RenderOpenGlLines(const LineCollection &col)
Definition Effect.cc:661
FunctionImpl0< Vector, VectorCollection *, SimpleVectorCollection > SimpleVectorCollectionFunction
Definition Effect.hh:3029
Low_SDL_Surface * InitSDL(int scr_x, int scr_y, bool vsync, bool antialias=false)
Definition Main.cc:852
void PrecalcCmds(OpenGlCommands &cmds)
Definition Effect.cc:2940
void RenderCmds(OpenGlCommands &cmds)
Definition Effect.cc:2941
void PreCalcExecute(Render &rend, FrameAnim &f, float duration, int numframes)
Definition Main.cc:1719
FunctionImpl1< std::pair< Point, Vector >, Element< std::pair< Point, Vector > > *, float, AdvanceVector > AdvanceVectorFunction
Definition Effect.hh:4828
FunctionImpl1< FaceCollection *, BoxCollection *, float, FacesToBoxCollection > FacesToBoxCollectionFunction
Definition Effect.hh:5518
FunctionImpl2< SurfaceIn3d *, GridIn3d *, int, int, SampleSurfaceForGrid > SampleSurfaceForGridFunction
Definition Effect.hh:6285
Time< Point > TimedPoint
Definition Event.hh:34
PT Map(PT p, int face, int point, void *data)
Definition GameApiTest.cc:19
pthread_t thread
Definition GameApi.cc:869
GameApi::ML part(GameApi::EveryApi &ev, GameApi::ML ml, float x_trans, float y_rot, int x, int y, int mode=0)
Definition GameApi.cc:38016
bool operator<(const Dep &a1, const Dep &a2)
Definition GameApi_dep_add_find.cc:2905
size dy
Definition GameApi_gui.cc:1727
Complex ln(Complex z)
Definition GameApi_pl.cc:31431
float arg(Complex z)
Definition GameApi_pl.cc:31413
Complex exp(Complex z, int n)
Definition GameApi_pl.cc:31416
char * cmds[]
Definition Interpreter.hh:5
void UpdateAnim(Anim &anim, AnimState &state, const std::vector< Attrib > &attribs)
Definition Shader.cc:6821
void DrawAnim(float start, float end, AnimState &state, const std::vector< Attrib > &attribs)
Definition Shader.cc:6839
PML or_elem(PML p1, PML p2)
Definition accel.cc:820
unsigned int color_1(int pointnum, PT pos)
Definition test.cpp:7
void use(T)
Definition boxed_cast_test.cpp:8
AMX(float c)
Definition Effect.hh:10355
float Index(float x) const
Definition Effect.hh:10356
std::vector< float > Inverse(float y) const
Definition Effect.hh:10357
Definition compiled_tests.cpp:1189
Definition Effect.hh:4817
AdvanceVector(const std::pair< Point, Vector > &v, float val)
Definition Effect.hh:4819
std::pair< Point, Vector > Elem() const
Definition Effect.hh:4820
bool Index(int a) const
Definition Effect.hh:8372
AndFunc(Function< int, bool > &f, Function< int, bool > &f2)
Definition Effect.hh:8371
void ChangeTime(float t)
Definition Effect.hh:9612
AnimBox(const BoxCollection &c, const BoxCollection &c2, float length)
Definition Effect.hh:9609
Matrix Index(int box) const
Definition Effect.cc:1799
int Size() const
Definition Effect.hh:9610
float Length() const
Definition Effect.hh:9611
AnimCircle(float time, float count)
Definition Effect.hh:2154
float Size() const
Definition Effect.hh:2163
Point2d Index(float angle) const
Definition Effect.hh:2155
virtual float Size() const
Definition Effect.hh:2356
AnimCurveIn3d(CurveIn3d &c1, CurveIn3d &c2, float time, float length)
Definition Effect.hh:2347
virtual Point Index(float pos) const
Definition Effect.hh:2348
AnimFaceCollectionArray(const Anim &a)
Definition Effect.hh:3553
const FaceCollection * Index(int i) const
Definition Effect.hh:3555
int Size() const
Definition Effect.hh:3554
void Init()
Definition Effect.hh:11176
bool Frame(float time)
Definition Effect.hh:11180
AnimFrameAnim(Anim &a, ShaderFile &f, float length)
Definition Effect.hh:11175
Definition Effect.hh:3454
virtual int Size() const =0
virtual int * SelectArray() const =0
Definition Effect.hh:3475
int Size() const
Definition Effect.hh:3493
AnimSelect(int size)
Definition Effect.hh:3477
int * SelectArray() const
Definition Effect.hh:3492
~AnimSelect()
Definition Effect.hh:3485
void Set(int index, bool b)
Definition Effect.hh:3486
Definition Effect.hh:3448
virtual void Set(int index, bool b)=0
Definition Effect.hh:3441
virtual int NumFrames() const =0
virtual FaceCollection * Frame(int framenum) const =0
int Size() const
Definition Effect.hh:895
ApplyParameterArray(Array< int, Array< P, T > * > &arr, P p)
Definition Effect.hh:894
T Index(int i) const
Definition Effect.hh:896
Definition Effect.hh:1009
virtual I1 SizeX() const =0
virtual I2 SizeY() const =0
Definition Effect.hh:1334
J Index(I i) const
Definition Effect.hh:1337
ArrayArraySizes(ArrayArray< I, J, T > &arr)
Definition Effect.hh:1336
I Size() const
Definition Effect.hh:1341
Definition Effect.hh:1299
virtual Matrix Index(int box) const
Definition Effect.hh:9685
ArrayBox()
Definition Effect.hh:9676
void push_back(BoxCollection *c)
Definition Effect.hh:9677
ArrayBox(It beg, It end)
Definition Effect.hh:9675
virtual int Size() const
Definition Effect.hh:9678
int Size() const
Definition Effect.hh:922
T Index(int i) const
Definition Effect.hh:923
ArrayConvert(const Array< I, T > &arr)
Definition Effect.hh:921
Definition Effect.hh:1200
T Index(I i) const
Definition Effect.hh:1208
I Size() const
Definition Effect.hh:1203
ArrayDiagonal(Array< std::pair< I, I >, T > &arr)
Definition Effect.hh:1202
float XRot() const
Definition Effect.hh:11705
ArrayEffect(Render *render)
Definition Effect.hh:11704
float YRot() const
Definition Effect.hh:11706
bool Frame(float time)
Definition Effect.cc:2994
float ZRot() const
Definition Effect.hh:11707
void Init()
Definition Effect.cc:2988
void Init()
Definition Effect.hh:10956
void PostFrame()
Definition Effect.hh:10994
ArrayFrameAnim(Array< int, FrameAnim * > &arr, Render *r)
Definition Effect.hh:10955
void PreFrame(float time)
Definition Effect.hh:10974
bool Frame(float time)
Definition Effect.hh:10983
void Cleanup()
Definition Effect.hh:10965
Definition Effect.hh:1218
std::pair< T1, T2 > Index(std::pair< I1, I2 > i) const
Definition Effect.hh:1225
ArrayPair2(const Array< I1, T1 > &arr1, const Array< I2, T2 > &arr2)
Definition Effect.hh:1220
std::pair< I1, I2 > Size() const
Definition Effect.hh:1221
Definition Effect.hh:1238
std::pair< T1, T2 > Index(I i) const
Definition Effect.hh:1242
I Size() const
Definition Effect.hh:1241
ArrayPair(Array< I, T1 > &a1, Array< I, T2 > &a2)
Definition Effect.hh:1240
Definition Effect.hh:11461
unsigned char * color_array
Definition Effect.hh:11503
void EnableTexture(int num)
Definition GameApi_dep_arr_render.cc:304
int TextureCount() const
Definition Effect.hh:11495
unsigned char * q_color_array
Definition Effect.hh:11525
int TexCoordArrayStep() const
Definition Effect.hh:11493
int vertex_array_size
Definition Effect.hh:11499
void UpdateTexCoord(Mesh &mesh, MeshTexCoords &coord, std::pair< int, int > p, int frame)
Definition GameApi_dep_arr_render.cc:127
void Alloc(int numfaces, int numvertices)
Definition GameApi_dep_arr_render.cc:415
int m_normal_frames
Definition Effect.hh:11510
int * used_face_count
Definition Effect.hh:11501
std::vector< std::pair< int, int > > InsertAll(Mesh &mesh, MeshNormals &normal, MeshTexCoords &coord, MeshColors &color)
Definition GameApi_dep_arr_render.cc:348
int NormalArrayStep() const
Definition Effect.hh:11491
unsigned int vao[4]
Definition Effect.hh:11527
int * index_array
Definition Effect.hh:11507
int NumFaces(FaceCollection &coll)
Definition GameApi_dep_arr_render.cc:15
int m_texcoord_frames
Definition Effect.hh:11512
int * tex_size_x
Definition Effect.hh:11518
~ArrayRender()
Definition GameApi_dep_arr_render.cc:437
int q_num_vertices
Definition Effect.hh:11522
int * texture
Definition Effect.hh:11514
void Render(int vertexframe, int normalframe, int colorframe, int texcoordframe)
Definition Effect.hh:11488
LowApi * g_low
Definition Effect.hh:11497
BufferRef ** textures
Definition Effect.hh:11517
int texture_count
Definition Effect.hh:11515
void AllocTexture(int count)
Definition GameApi_dep_arr_render.cc:152
int * used_vertex_count
Definition Effect.hh:11500
int ColorArrayStep() const
Definition Effect.hh:11492
float * vertex_array
Definition Effect.hh:11498
std::pair< int, int > Insert(FaceCollection &coll)
Definition GameApi_dep_arr_render.cc:19
int VertexArrayStep() const
Definition Effect.hh:11490
float * q_normal_array
Definition Effect.hh:11524
void Render(bool normal, bool color, bool texcoord)
Definition Effect.hh:11485
int m_color_frames
Definition Effect.hh:11511
float * q_tex_coord_array
Definition Effect.hh:11526
float * normal_array
Definition Effect.hh:11502
int NumVertices(FaceCollection &coll)
Definition GameApi_dep_arr_render.cc:11
bool quads
Definition Effect.hh:11505
void Prepare()
Definition GameApi_dep_arr_render.cc:490
unsigned int buffer[5]
Definition Effect.hh:11521
bool buffer_allocated
Definition Effect.hh:11520
float * tex_coord_array
Definition Effect.hh:11504
float * q_vertex_array
Definition Effect.hh:11523
int m_vertex_frames
Definition Effect.hh:11509
std::pair< int, int > InsertMesh(Mesh &mesh, int frame)
Definition GameApi_dep_arr_render.cc:84
void UpdateColors(Mesh &mesh, MeshColors &color, std::pair< int, int > p, int frame)
Definition GameApi_dep_arr_render.cc:318
void UpdateAllTextures(MeshTextures &texture)
Definition GameApi_dep_arr_render.cc:168
void UpdateNormals(Mesh &mesh, MeshNormals &normal, std::pair< int, int > p, int frame)
Definition GameApi_dep_arr_render.cc:387
ArrayRender(LowApi *g_low)
Definition Effect.hh:11463
void DisableTexture()
Definition GameApi_dep_arr_render.cc:312
void UpdatePos(FaceCollection &coll, std::pair< int, int > p)
Definition GameApi_dep_arr_render.cc:64
int previous_frame
Definition Effect.hh:11516
int * tex_size_y
Definition Effect.hh:11519
virtual I Size() const =0
virtual A InvMap(A a, int num) const =0
virtual B Map(A a) const =0
Definition compiled_tests.cpp:1200
virtual int AttribI(int index, int id) const
Definition Effect.hh:3831
virtual unsigned int Color(int index) const
Definition Effect.hh:3819
virtual int NumPoints() const
Definition Effect.hh:3805
virtual int IndexCount() const
Definition Effect.hh:3840
BatchGeneration(FaceCollectionTri &tri, int batchsize)
Definition Effect.hh:3802
virtual int Index(int face, int point) const
Definition Effect.hh:3835
virtual Point FacePoint(int index) const
Definition Effect.hh:3811
virtual int IndexToFace(int index) const
Definition Effect.hh:3841
int Size() const
Definition Effect.hh:3886
const FaceCollectionTri * Index(int i) const
Definition Effect.hh:3887
virtual int NumFaces() const
Definition Effect.hh:3804
virtual Point2d TexCoord(int index) const
Definition Effect.hh:3823
virtual Vector PointNormal(int index) const
Definition Effect.hh:3815
virtual float Attrib(int index, int id) const
Definition Effect.hh:3827
virtual float YSize() const
Definition Effect.hh:1934
Point Pos(float x, float y) const
Definition Effect.hh:1936
BetweenSurface(SurfaceIn3d &next, CurveIn3d &first, CurveIn3d &second)
Definition Effect.hh:1931
virtual Point Index(float x, float y) const
Definition Effect.hh:1932
virtual float XSize() const
Definition Effect.hh:1933
Definition Effect.hh:2679
float bin(float pos, int i, int n) const
Definition Effect.hh:2692
int ni(int n, int i) const
Definition Effect.hh:2696
float Size() const
Definition Effect.hh:2702
Bezier2d(PointCollection2d &p)
Definition Effect.hh:2681
Point2d Index(float pos) const
Definition Effect.hh:2682
BezierPointCollection2d(PointCollection2d &p, int count)
Definition Effect.hh:2887
Point2d Index(int i) const
Definition Effect.hh:2889
int Size() const
Definition Effect.hh:2888
bool Frame(float time)
Definition Effect.cc:1534
BlobEffect(Render *r)
Definition Effect.cc:1508
~BlobEffect()
Definition Effect.cc:1530
int Size() const
Definition Effect.hh:5594
BlobParameterArray(PointCollection ¢er_points, PointCollection ¢er2_points, FloatArray &radius)
Definition Effect.hh:5592
~BlobParameterArray()
Definition Effect.hh:5593
ShaderParameters * Index(int i) const
Definition Effect.hh:5595
Point Convert(Point p) const
Definition Effect.hh:10373
BlobPointMap(Point center1, Point center2, float r)
Definition Effect.hh:10372
Definition Effect.hh:10066
Point adjustpoint(Point x_0, Point x_1, Point x_2, float r)
Definition Effect.hh:10148
float t(float t_0, float t_1, Point x_0, Point x_1, Point x_2, float r)
Definition Effect.hh:10131
Point line(float t, Point x_0, Point x_1)
Definition Effect.hh:10069
float f(Point p, Point x_0, Point x_1, Point x_2)
Definition Effect.hh:10070
float H(float tt, Point x_0, Point x_1, Point x_2, float r)
Definition Effect.hh:10083
float g(Point p, Point x_0, Point x_1, Point x_2)
Definition Effect.hh:10071
float h(Point p, Point x_0, Point x_1, Point x_2, float r)
Definition Effect.hh:10073
virtual bool Inside(Point p) const
Definition Effect.hh:64
virtual ~BooleanOps()
Definition Effect.hh:63
Definition Effect.hh:5484
BoxCollectionConvert(const Array< int, Matrix > &c2)
Definition Effect.hh:5486
int Size() const
Definition Effect.hh:5487
Matrix Index(int i) const
Definition Effect.hh:5492
Definition Effect.hh:5548
std::pair< Matrix, int > Index(int box) const
Definition Effect.hh:5553
virtual int BoxObject(int box) const =0
int Size() const
Definition Effect.hh:5552
virtual int NumBoxes() const =0
virtual ~BoxCollectionWithObject()
Definition Effect.hh:5550
virtual Matrix BoxIndex(int box) const =0
Definition Effect.hh:5476
virtual ~BoxCollection()
Definition Effect.hh:5478
Matrix BoxIndex(int box) const
Definition Effect.hh:5481
int NumBoxes() const
Definition Effect.hh:5480
BoxCombine(const BoxCollection &b, Boxable &elem)
Definition Effect.hh:9596
virtual int NumElements() const
Definition Effect.hh:9598
virtual void SetElemId(int id)
Definition Effect.hh:9599
Definition Effect.hh:5467
Vector u_z
Definition Effect.hh:5472
Point BoxPoint(float x, float y, float z) const
Definition Effect.cc:384
Vector u_x
Definition Effect.hh:5472
Vector u_y
Definition Effect.hh:5472
Point center
Definition Effect.hh:5471
Definition Effect.hh:6023
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:6041
virtual bool Inside(Point p) const
Definition Effect.hh:6045
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:6040
virtual void Prepare()
Definition Effect.hh:6034
virtual int NumFaces() const
Definition Effect.hh:6035
void HeavyPrepare()
Definition Effect.hh:6032
virtual std::string name() const
Definition Effect.hh:6026
void Collect(CollectVisitor &vis)
Definition Effect.hh:6028
virtual float TexCoord3(int face, int point) const
Definition Effect.hh:6044
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:6039
virtual int NumPoints(int face) const
Definition Effect.hh:6036
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:6042
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:6037
virtual void SetBox(Matrix b)
Definition Effect.hh:6046
BoxableFaceCollectionConvert(FaceCollection &coll)
Definition Effect.hh:6025
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:6043
virtual Point EndFacePoint(int face, int point) const
Definition Effect.hh:6038
Definition Effect.hh:5840
virtual ~Boxable()
Definition Effect.hh:5842
virtual void SetBox(Matrix b)=0
BoxedElem(BoxCollection &coll, BoxableFaceCollection &item)
Definition Effect.hh:6147
Vector PointNormal(int face, int point) const
Definition Effect.hh:6221
int NumPoints(int face) const
Definition Effect.hh:6196
float Attrib(int face, int point, int id) const
Definition Effect.hh:6227
FaceObject FindFace(int face) const
Definition Effect.hh:6175
Point FacePoint(int face, int point) const
Definition Effect.hh:6202
unsigned int Color(int face, int point) const
Definition Effect.hh:6208
void Prepare()
Definition Effect.hh:6149
BoxedElem(BoxCollection &coll, ObjectSelection &sel)
Definition Effect.hh:6148
void SetBox(Matrix m)
Definition Effect.hh:6150
Point2d TexCoord(int face, int point) const
Definition Effect.hh:6214
int AttribI(int face, int point, int id) const
Definition Effect.hh:6233
int NumFaces() const
Definition Effect.hh:6160
BreakPaths(PathCollection &coll, PathVisibility &p)
Definition Effect.hh:5728
int NumPaths(float posinpath) const
Definition Effect.hh:5730
int Mapping(float posinpath, int ii) const
Definition Effect.hh:5745
Matrix Index(float posinpath, int path) const
Definition Effect.hh:5741
float PathLength() const
Definition Effect.hh:5729
float Index(float x) const
Definition Effect.hh:10326
std::vector< float > Inverse(float y) const
Definition Effect.hh:10327
CX(float c)
Definition Effect.hh:10325
Camera(MatrixCurve &curve, float time)
Definition Effect.cc:536
~Camera()
Definition Effect.cc:551
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:3429
ChangePoints(FaceCollection &coll, Function< Point, Point > &f)
Definition Effect.hh:3427
void Init()
Definition Effect.cc:1698
CircleEffect(Render *render)
Definition Effect.hh:10931
bool Frame(float time)
Definition Effect.cc:1666
virtual float Size() const
Definition Effect.hh:1740
virtual Matrix Index(float pos) const
Definition Effect.hh:1734
CircleMatrixCurve2(float x, float time)
Definition Effect.hh:1733
virtual Matrix Index(float pos) const
Definition Effect.hh:1721
virtual float Size() const
Definition Effect.hh:1725
CircleMatrixCurve(float x)
Definition Effect.hh:1720
Definition Effect.hh:2060
Circle(Point2d center, float r)
Definition Effect.hh:2063
float Size() const
Definition Effect.hh:2071
Point2d Index(float angle) const
Definition Effect.hh:2064
Circle()
Definition Effect.hh:2062
int Size() const
Definition Effect.hh:2760
ClosedLoopPointCollection2d(PointCollection2d &coll)
Definition Effect.hh:2759
Point2d Index(int i) const
Definition Effect.hh:2761
Definition Effect.hh:10220
DistRes MinDistanceFromCurve(Curve< Point > &p, Point center, float derivative_step=0.01) const
Definition Effect.cc:1848
virtual void Collect(CollectVisitor &vis)=0
Definition GameApi.cc:43596
virtual void HeavyPrepare()=0
virtual void register_obj(CollectInterface *i)=0
void PreCalc()
Definition Effect.hh:10807
void Execute()
Definition Effect.cc:496
ColorCmds(OpenGlCommands &cmds, Color c)
Definition Effect.hh:10806
Definition GameApi_pl.cc:4411
virtual bool has_color() const
Definition Effect.hh:7872
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:7885
void HeavyPrepare()
Definition Effect.hh:7863
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:7873
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:7868
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:7877
virtual int NumPoints(int face) const
Definition Effect.hh:7867
void Collect(CollectVisitor &vis)
Definition Effect.hh:7859
ColorElem(BoxableFaceCollection &next, unsigned int color)
Definition Effect.hh:7856
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:7893
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:7889
void Prepare()
Definition Effect.hh:7864
virtual std::string name() const
Definition Effect.hh:7857
virtual void SetBox(Matrix b)
Definition Effect.hh:7865
virtual int NumFaces() const
Definition Effect.hh:7866
void SetElemId(int id)
Definition Effect.cc:776
int NumElements() const
Definition Effect.hh:5047
ColorElement(It beg, It end, ElementCollection &ec)
Definition Effect.hh:5045
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:7923
virtual bool has_color() const
Definition Effect.hh:7921
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:7945
ColorFaceElem(BoxableFaceCollection &next, unsigned int color_1, unsigned int color_2, unsigned int color_3, unsigned int color_4)
Definition Effect.hh:7906
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:7934
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:7949
virtual void SetBox(Matrix b)
Definition Effect.hh:7914
virtual int NumFaces() const
Definition Effect.hh:7915
virtual std::string name() const
Definition Effect.hh:7912
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:7953
virtual int NumPoints(int face) const
Definition Effect.hh:7916
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:7917
Definition VectorTools.hh:380
static unsigned int Interpolate(unsigned int pixel1, unsigned int pixel2, float val)
Definition VectorTools.hh:667
unsigned int Pixel()
Definition VectorTools.hh:426
int r
Definition VectorTools.hh:744
int alpha
Definition VectorTools.hh:745
int g
Definition VectorTools.hh:744
static Color White()
Definition VectorTools.hh:476
int b
Definition VectorTools.hh:744
bool ItemInFirstArray(int i) const
Definition Effect.hh:946
CombineArrays(const Array< int, T > &a1, const Array< int, T > &a2)
Definition Effect.hh:932
bool ItemInSecondArray(int i) const
Definition Effect.hh:950
T Index(int i) const
Definition Effect.hh:934
int Size() const
Definition Effect.hh:933
Matrix BoxIndex(int box) const
Definition Effect.hh:9660
CombineBoxCollection(BoxCollection &c, BoxCollection &c2)
Definition Effect.hh:9658
int NumBoxes() const
Definition Effect.hh:9659
CombineBoxesAndObjects(BoxCollection &box, ObjectCollection &obj)
Definition Effect.hh:5651
int BoxObject(int b) const
Definition Effect.hh:5654
Matrix BoxIndex(int b) const
Definition Effect.hh:5653
int NumBoxes() const
Definition Effect.hh:5652
ObjectData Index(int i) const
Definition Effect.hh:5631
CombineObjectData(BoxCollection &box, ObjectCollection &obj, ShaderParameterArray ¶ms)
Definition Effect.hh:5629
int Size() const
Definition Effect.hh:5630
CombineParameterArrays(ShaderParameterArray &arr, ShaderParameterArray &arr2)
Definition Effect.hh:5576
int Size() const
Definition Effect.hh:5577
ShaderParameters * Index(int i) const
Definition Effect.hh:5578
Definition Effect.hh:10727
Definition Effect.hh:1017
C Index(A a) const
Definition Effect.hh:1021
ComposeArrays(Array< A, B > &a1, Function< B, C > &a2)
Definition Effect.hh:1019
A Size() const
Definition Effect.hh:1020
Definition Effect.hh:1029
ComposeChain(Array< A, T1 > &a1, Function< T1, T2 > &f1, Function< T2, T3 > &f2, Function< T3, T4 > &f3, Function< T4, C > &f4)
Definition Effect.hh:1050
ComposeChain(Array< A, T1 > &a1, Function< T1, T2 > &f1, Function< T2, T3 > &f2, Function< T3, C > &f3)
Definition Effect.hh:1043
C Index(A a) const
Definition Effect.hh:1074
ComposeChain(Array< A, T1 > &a1, Function< T1, C > &f1)
Definition Effect.hh:1032
ComposeChain(Array< A, T1 > &a1, Function< T1, T2 > &f1, Function< T2, T3 > &f2, Function< T3, T4 > &f3, Function< T4, T5 > &f4, Function< T5, T6 > &f5, Function< T6, C > &f6)
Definition Effect.hh:1065
ComposeChain(Array< A, T1 > &a1, Function< T1, T2 > &f1, Function< T2, C > &f2)
Definition Effect.hh:1037
A Size() const
Definition Effect.hh:1073
ComposeChain(Array< A, T1 > &a1, Function< T1, T2 > &f1, Function< T2, T3 > &f2, Function< T3, T4 > &f3, Function< T4, T5 > &f4, Function< T5, C > &f5)
Definition Effect.hh:1058
T Index(float pos) const
Definition Effect.hh:1807
ComposeCurve(std::vector< Base * > vec)
Definition Effect.hh:1805
float Pos(float pos, int i)
Definition Effect.hh:1831
float Length() const
Definition Effect.hh:1821
ComposeCurve(It beg, It end)
Definition Effect.hh:1804
ComposeFunc(Function< A, B > &a, Function< B, C > &b)
Definition Effect.hh:8408
C Index(A aa) const
Definition Effect.hh:8411
static Matrix Compose(Matrix m, Matrix m2)
Definition Effect.hh:1796
static Matrix Identity()
Definition Effect.hh:1795
static Point2d Identity()
Definition Effect.hh:1781
static Point2d Compose(Point2d p, Point2d p2)
Definition Effect.hh:1782
static Point Compose(Point p, Point p2)
Definition Effect.hh:1774
static Point Identity()
Definition Effect.hh:1773
Definition Effect.hh:1766
T Index(int i) const
Definition Effect.hh:1383
CompressArrayArray(ArrayArray< int, int, T > &arr)
Definition Effect.hh:1382
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:3692
virtual int NumFaces() const
Definition Effect.hh:3621
CompressObject(FaceCollectionArray &arr)
Definition Effect.hh:3615
void Prepare()
Definition Effect.hh:3616
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:3719
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:3660
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:3645
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:3706
virtual int NumPoints(int face) const
Definition Effect.hh:3633
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:3674
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:9403
void Prepare()
Definition Effect.hh:9386
virtual Point FacePoint(int face, int point) const
Definition Effect.cc:268
virtual bool has_normal() const
Definition Effect.hh:9417
void HeavyPrepare()
Definition Effect.hh:9384
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:9418
virtual int NumFaces() const
Definition Effect.hh:9388
void Collect(CollectVisitor &vis)
Definition Effect.hh:9381
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:9396
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:9391
virtual void SetBox(Matrix b)
Definition Effect.hh:9387
virtual bool has_texcoord() const
Definition Effect.hh:9395
virtual bool Inside(Point p) const
Definition Effect.hh:9412
ConeElem(int numfaces, Point p1, Point p2, float rad1, float rad2)
Definition Effect.cc:263
virtual std::string name() const
Definition Effect.hh:9380
virtual int NumPoints(int face) const
Definition Effect.hh:9389
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:9408
int BoxObject(int) const
Definition Effect.hh:5541
int NumObjects() const
Definition Effect.hh:5540
ConstantObjectCollection(int count, int object)
Definition Effect.hh:5539
Definition Effect.hh:6133
ConstantObjectSelection(BoxableFaceCollection *face)
Definition Effect.hh:6135
BoxableFaceCollection * Select(int index)
Definition Effect.hh:6136
Definition Effect.hh:3106
int Size() const
Definition Effect.hh:3109
float Index(int x) const
Definition Effect.hh:3110
ConstantSampling(int count, float dist)
Definition Effect.hh:3108
float PosAtLength(float length) const
Definition Effect.hh:1549
float LengthAtPos(float pos2) const
Definition Effect.hh:1531
Point Index(float len) const
Definition Effect.hh:1526
float Size() const
Definition Effect.hh:1522
ConstantSpeedCurve(CurveIn3d &curve, int divs)
Definition Effect.hh:1520
ContinuousLines(PointCollection *p, bool loops)
Definition Effect.hh:4650
void Collect(CollectVisitor &vis)
Definition Effect.hh:4651
ContinuousLines(PointCollection &p, bool loops)
Definition Effect.hh:4649
Point LinePoint(int line, int point) const
Definition Effect.hh:4657
void HeavyPrepare()
Definition Effect.hh:4654
int NumLines() const
Definition Effect.hh:4656
float Index(int i) const
Definition Effect.hh:11203
int Size() const
Definition Effect.hh:11202
ContinuousObjectMovementArrays(Array< int, float > &time_lengths, float current_time)
Definition Effect.hh:11201
Matrix get_matrix() const
Definition Effect.hh:11230
ContinuousObjectMovement(Array< int, Function< float, Matrix > * > &arr, Array< int, float > &arr2)
Definition Effect.hh:11227
Definition Effect.hh:2370
virtual Plane Index(float x)=0
virtual ~ContinuousPlanes()
Definition Effect.hh:2372
Definition Effect.hh:3516
virtual Coords coord() const =0
CopyArray(Array< int, T > &arr)
Definition Effect.hh:1148
void Generate()
Definition Effect.hh:1152
bool Frame(float time)
Definition Effect.cc:896
CubeEffect(Render *render)
Definition Effect.hh:10425
virtual int NumPoints(int face) const
Definition Effect.hh:7539
virtual Point FacePoint(int face, int point) const
Definition Effect.cc:357
virtual bool has_normal() const
Definition Effect.hh:7543
CubeElem()
Definition Effect.hh:7502
virtual void SetBox(Matrix b)
Definition Effect.hh:7537
virtual std::string name() const
Definition Effect.hh:7520
void HeavyPrepare()
Definition Effect.hh:7534
void Prepare()
Definition Effect.hh:7536
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:7554
CubeElem(Point p111, Point p112, Point p121, Point p122, Point p211, Point p212, Point p221, Point p222)
Definition Effect.hh:7510
virtual Point2d TexCoord(int face, int point) const
Definition Effect.cc:334
virtual Coords coord() const
Definition Effect.hh:7522
void Collect(CollectVisitor &vis)
Definition Effect.hh:7531
virtual int NumFaces() const
Definition Effect.hh:7538
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:7564
bool has_texcoord() const
Definition Effect.hh:7558
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:7544
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:7560
virtual int Size() const
Definition Effect.hh:9629
virtual Matrix Index(int box) const
Definition Effect.cc:1816
CubeGrid(int x, int y, int z, float dx, float dy, float dz, Matrix b)
Definition Effect.hh:9624
Curry2a(const Function2< A, B, C > &func2, A a)
Definition Effect.hh:590
C Index(B b) const
Definition Effect.hh:591
Curry2b(const Function2< A, B, C > &func2, B b)
Definition Effect.hh:601
C Index(A a) const
Definition Effect.hh:602
Curry(const Function< A, B > &func, A a)
Definition Effect.hh:580
B Elem() const
Definition Effect.hh:581
CurveArrayConvert(Array< int, CurveIn3d * > &arr)
Definition Effect.hh:1480
int Size() const
Definition Effect.hh:1481
Array< float, Point > * Index(int i) const
Definition Effect.hh:1482
Definition Effect.hh:1577
Definition Effect.hh:1573
int Size() const
Definition Effect.hh:1404
CurveConvert(const Array< float, T > &arr)
Definition Effect.hh:1403
T Index(float i) const
Definition Effect.hh:1405
Point2d Index(float i) const
Definition Effect.hh:1451
CurveIn2dConvert(const Array< float, Point2d > &c2)
Definition Effect.hh:1449
float Size() const
Definition Effect.hh:1450
CurveIn3dConvert(const Array< float, Point > &c2)
Definition Effect.hh:1493
Point Index(float i) const
Definition Effect.hh:1495
float Size() const
Definition Effect.hh:1494
float Size() const
Definition Effect.hh:2008
CurveInSurface(SurfaceIn3d &surf, CurveIn2d &curve)
Definition Effect.hh:2006
Point Index(float x) const
Definition Effect.hh:2012
CurveMovement(const CurveIn3d &curve)
Definition Effect.hh:4567
float Size() const
Definition Effect.hh:4568
Matrix Index(float x) const
Definition Effect.hh:4569
unsigned int Color(float x, float y) const
Definition Effect.hh:2183
float YSize() const
Definition Effect.hh:2211
void Collect(CollectVisitor &vis)
Definition Effect.hh:2174
virtual float Attrib(float x, float y, int id) const
Definition Effect.hh:2200
Point Index(float x, float y) const
Definition Effect.hh:2176
void HeavyPrepare()
Definition Effect.hh:2175
Point2d Texture(float x, float y) const
Definition Effect.hh:2182
float XSize() const
Definition Effect.hh:2210
CurveMultiply(MatrixCurve &curve, CurveIn3d &curve2)
Definition Effect.hh:2173
virtual int AttribI(float x, float y, int id) const
Definition Effect.hh:2196
Vector Normal(float x, float y) const
Definition Effect.hh:2187
CylinderEffect(Render *render)
Definition Effect.cc:783
bool Frame(float time)
Definition Effect.cc:835
virtual int NumPoints(int face) const
Definition Effect.hh:7610
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:7637
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:7614
virtual Point FacePoint(int face, int point) const
Definition Effect.cc:318
void Collect(CollectVisitor &vis)
Definition Effect.hh:7603
virtual void SetBox(Matrix b)
Definition Effect.hh:7608
void Prepare()
Definition Effect.hh:7607
virtual Coords coord() const
Definition Effect.hh:7592
virtual int NumFaces() const
Definition Effect.hh:7609
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:7620
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:7633
void HeavyPrepare()
Definition Effect.hh:7606
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:7625
virtual bool has_normal() const
Definition Effect.hh:7613
CylinderElem(int numfaces)
Definition Effect.hh:7602
virtual std::string name() const
Definition Effect.hh:7591
bool Frame(float time)
Definition Effect.hh:11015
void Init()
Definition Effect.hh:11011
float Time() const
Definition Effect.hh:11010
DefaultFrameAnim(FaceCollection &faces, float time, Render *r)
Definition Effect.hh:11009
Derivate(Function< float, float > &f, float dx)
Definition Effect.hh:10198
float Index(float x) const
Definition Effect.hh:10199
Matrix Index(float, int path) const
Definition Effect.hh:5775
DiagonalPathCollection(float length, BoxCollection &box)
Definition Effect.hh:5768
int NumPaths(float posinpath) const
Definition Effect.hh:5770
float PathLength() const
Definition Effect.hh:5769
Definition Effect.hh:9802
DiffVectorCollection(PointCollection &points, bool loops)
Definition Effect.hh:9804
Vector Index(int index) const
Definition Effect.hh:9806
int Size() const
Definition Effect.hh:9805
Definition Effect.hh:4543
Direction(const std::pair< Point, Point > &p)
Definition Effect.hh:4545
Matrix Elem() const
Definition Effect.hh:4546
virtual int NumPoints(int face) const
Definition Effect.hh:7665
virtual bool has_normal() const
Definition Effect.hh:7680
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:7691
virtual void SetBox(Matrix b)
Definition Effect.hh:7663
virtual std::string name() const
Definition Effect.hh:7656
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:7668
DiskElem(int numfaces, float disk_pos)
Definition Effect.hh:7655
virtual Point FacePoint(int face, int point) const
Definition Effect.cc:297
void Collect(CollectVisitor &vis)
Definition Effect.hh:7657
virtual int NumFaces() const
Definition Effect.hh:7664
void HeavyPrepare()
Definition Effect.hh:7660
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:7681
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:7672
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:7687
void Prepare()
Definition Effect.hh:7662
~DisplayListCmds()
Definition Effect.cc:513
DisplayListCmds(OpenGlCommands &cmds)
Definition Effect.hh:10862
void PreCalc()
Definition Effect.cc:518
void Execute()
Definition Effect.cc:530
Definition Effect.hh:2113
Distance2d(Point2d center)
Definition Effect.hh:2115
float Index(Point2d p) const
Definition Effect.hh:2116
Distance4(Point center)
Definition Effect.hh:10190
float Index(Point p) const
Definition Effect.hh:10191
Definition Effect.hh:3054
int Size() const
Definition Effect.hh:3057
float Index(int x) const
Definition Effect.hh:3058
float Sum() const
Definition Effect.hh:3063
Distance(VectorCollection &coll)
Definition Effect.hh:3056
DrawVBOCmd(FaceCollectionVBO &faces, int obj, VBOState &state, VBOUpdate u)
Definition Effect.hh:10734
virtual void cmd()
Definition Effect.hh:10736
T Index(int i) const
Definition Effect.hh:1110
DupArray(Array< int, T > &orig, int count)
Definition Effect.hh:1108
int Size() const
Definition Effect.hh:1109
T Index(S index) const
Definition Effect.hh:1098
DuplicateArray(const T &t, const S &s)
Definition Effect.hh:1096
S Size() const
Definition Effect.hh:1097
DuplicateObject(const FaceCollection &coll, int count)
Definition Effect.hh:3600
const FaceCollection * Index(int i) const
Definition Effect.hh:3603
int Size() const
Definition Effect.hh:3602
Definition Effect.hh:2852
int Size() const
Definition Effect.hh:2854
Point2d Index(int i) const
Definition Effect.hh:2855
void push_back(Point2d p)
Definition Effect.hh:2859
Definition Effect.hh:11544
virtual int NumFaces(int framenum) const
Definition Effect.hh:11548
virtual Point FacePoint(int framenum, int statenum, int face, int point) const
Definition Effect.hh:11557
virtual int StateNum(int framenum, int face) const
Definition Effect.hh:11607
DynamicMesh()
Definition Effect.hh:11546
virtual int NumFrames() const
Definition Effect.hh:11547
virtual int NumPoints() const
Definition Effect.hh:11553
void push_frame()
Definition Effect.hh:11589
virtual int NumStates() const
Definition Effect.hh:11606
void push_back(const FaceCollection &coll)
Definition Effect.hh:11590
virtual void ChangeTime(float time)=0
virtual float Length() const =0
virtual ~Effect()
Definition Effect.hh:98
D Index(Union< C1, C2 > u) const
Definition Effect.hh:504
EitherFunction(Function< C1, D > &f1, Function< C2, D > &f2)
Definition Effect.hh:503
Definition Effect.hh:5034
virtual void SetElemId(int id)=0
virtual int NumElements() const =0
virtual ~ElementCollection()
Definition Effect.hh:5036
T Index(Element< T > *e) const
Definition Effect.hh:778
virtual ~Element()
Definition Effect.hh:573
virtual T Elem() const =0
Definition Effect.hh:6073
void Prepare()
Definition Effect.hh:6078
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:6096
virtual int NumFaces() const
Definition Effect.hh:6079
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:6082
virtual int NumObjects() const
Definition Effect.hh:6098
bool HasBatchMap() const
Definition Effect.hh:6102
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:6088
virtual int NumPoints(int face) const
Definition Effect.hh:6080
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:6097
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:6083
virtual std::pair< int, int > GetObject(int o) const
Definition Effect.hh:6099
virtual std::string name() const
Definition Effect.hh:6075
virtual FaceBufferRef BatchMap(int start_face, int end_face) const
Definition Effect.hh:6105
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:6081
void SetBox(Matrix b)
Definition Effect.hh:6077
Matrix Index(float posinpath, int path) const
Definition Effect.hh:5709
int NumPaths(float posinpath) const
Definition Effect.hh:5708
float PathLength() const
Definition Effect.hh:5707
EqualPaths(PathCollection &p1, PathCollection &p2)
Definition Effect.hh:5704
bool Index(std::pair< Function< X, bool > *, X > p) const
Definition Effect.hh:661
EvaluationCharacteristicFunction(Function< Function< X, bool > *, Function< X, bool > * > &id)
Definition Effect.hh:660
Evaluation(Function< Function< B, Y > *, Function< B, Y > * > &id)
Definition Effect.hh:653
ExponentiationI(Function< X, Function< B, Y > * > &func)
Definition Effect.hh:638
Y Index(std::pair< X, B > &p) const
Definition Effect.hh:639
Exponentiation(Function< std::pair< X, B >, Y > &f)
Definition Effect.hh:619
Function< B, Y > * Index(X x) const
Definition Effect.hh:620
Y Map(B b) const
Definition Effect.hh:625
virtual int NumFrames() const
Definition Effect.hh:11400
FaceArrayMeshColors(FaceCollection **array, int size)
Definition Effect.hh:11399
virtual unsigned int VertexColor(int framenum, int statenum, int face, int point) const
Definition Effect.hh:11401
virtual Vector PointNormal(int framenum, int statenum, int face, int point) const
Definition Effect.hh:11358
virtual int NumFrames() const
Definition Effect.hh:11357
FaceArrayMeshNormals(FaceCollection **array, int size)
Definition Effect.hh:11356
virtual int NumFrames() const
Definition Effect.hh:11378
FaceArrayMeshTexCoords(FaceCollection **array, int size)
Definition Effect.hh:11377
virtual Point2d TexCoord(int framenum, int statenum, int face, int point) const
Definition Effect.hh:11379
virtual int Index(int texnum) const
Definition Effect.hh:11427
FaceArrayMeshTextures(FaceCollection **array, int size, int frame)
Definition Effect.hh:11420
virtual void GenTexture(int num)
Definition Effect.hh:11422
virtual int NumTextures() const
Definition Effect.hh:11421
virtual BufferRef TextureBuf(int num) const
Definition Effect.hh:11426
virtual Point FacePoint(int framenum, int statenum, int face, int point) const
Definition Effect.hh:11332
virtual int NumFrames() const
Definition Effect.hh:11321
virtual int StateNum(int frame, int face2) const
Definition Effect.hh:11301
virtual int NumPoints() const
Definition Effect.hh:11328
FaceArrayMesh(FaceCollection **array, int size)
Definition Effect.hh:11271
virtual int NumFaces(int framenum) const
Definition Effect.hh:11322
virtual int NumStates(int frames) const
Definition Effect.hh:11273
virtual int NumStates() const
Definition Effect.hh:11272
Definition Effect.hh:4776
Point Index(int face) const
Definition Effect.hh:4780
int Size() const
Definition Effect.hh:4779
FaceCenterPoints(FaceCollection &faces)
Definition Effect.hh:4778
Definition Effect.hh:3547
Definition Effect.hh:12054
virtual Point FacePoint(int face, int point)
virtual Point PathData(int special_time, int num) const =0
virtual int SpecialPathNum() const =0
virtual float SpecialTimes(int special_time)=0
virtual int SpecialTimesCount() const =0
Definition Effect.hh:5880
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:5959
void Prepare()
Definition Effect.hh:5890
void Add(const FaceCollection &coll, bool textures)
Definition Effect.hh:5896
FacePointStruct & find(int face, int point) const
Definition Effect.hh:5969
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:5954
virtual int NumFaces() const
Definition Effect.hh:5934
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:5936
void Collect(CollectVisitor &vis)
Definition Effect.hh:5885
void Add(const FaceCollection &coll)
Definition Effect.hh:5892
int FaceTexture(int face) const
Definition Effect.hh:5966
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:5941
BufferRef TextureBuf(int num) const
Definition Effect.hh:5965
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:5946
void HeavyPrepare()
Definition Effect.hh:5888
virtual int NumPoints(int face) const
Definition Effect.hh:5935
FaceCollectionStore()
Definition Effect.hh:5882
void SetTextures(bool b)
Definition Effect.hh:5884
virtual std::string name() const
Definition Effect.hh:5883
int NumTextures() const
Definition Effect.hh:5964
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:5950
Definition Effect.hh:4892
int Texture(int face) const
Definition Effect.hh:4895
FaceCollectionTextureCoords(const FaceCollection &coll)
Definition Effect.hh:4894
Point2d TexCoord(int face, int point) const
Definition Effect.hh:4899
Definition Effect.hh:3899
virtual int PointsStartRange(int obj) const =0
virtual int NumObjects() const =0
virtual int IndexEndRange(int obj) const =0
virtual int PointsEndRange(int obj) const =0
virtual int IndexStartRange(int obj) const =0
Definition Effect.hh:3740
virtual int IndexToFace(int index) const =0
virtual Point FacePoint(int index) const =0
virtual unsigned int Color(int index) const =0
virtual float Attrib(int index, int id) const =0
virtual int IndexCount() const =0
virtual int AttribI(int index, int id) const =0
virtual int NumPoints() const =0
virtual int NumFaces() const =0
virtual ~FaceCollectionTri()
Definition Effect.hh:3742
virtual int Index(int face, int point) const =0
virtual Vector PointNormal(int index) const =0
virtual Point2d TexCoord(int index) const =0
Definition Effect.hh:10537
virtual void UpdateTextureCoordList(int start, int end, float *array) const =0
virtual int IndexSize() const =0
virtual int NumPoints() const =0
virtual void UpdateVertexList(int start, int end, float *array) const =0
virtual void UpdateNormalList(int start, int end, float *array) const =0
virtual void UpdateColorList(int start, int end, char *array) const =0
virtual void UpdateAttribI(int start, int end, short *array, int id) const =0
virtual void UpdateAttrib(int start, int end, float *array, int id) const =0
virtual void UpdateIndexList(int start, int end, int *array) const =0
void Generate_Attrib_Array(float **attrib_array, int *asize1, int *asize2)
void Generate_Color(unsigned int **color, int *size)
void Generate_Vertex(float **vertex, int *size)
Definition Effect.hh:12164
void Generate_Tex(float **texture, int *size)
void Generate_Attrib(int id, float *array, int *size)
FaceCollectionVertexArray(FaceCollection &coll)
Definition Effect.hh:12163
void Generate_Normal(float **normal, int *size)
Definition EffectI.hh:212
virtual BufferRef TextureBuf(int num) const
Definition EffectI.hh:264
virtual VEC4 Joints(int face, int point) const
Definition EffectI.hh:239
virtual Vector PointNormal(int face, int point) const =0
virtual Point FacePoint(int face, int point) const =0
virtual float EndTexCoord3(int face, int point) const
Definition EffectI.hh:257
virtual Point2d EndTexCoord(int face, int point) const
Definition EffectI.hh:256
virtual float EndAttrib(int face, int point, int id) const
Definition EffectI.hh:253
virtual void HeavyPrepare()=0
virtual bool IsMatrixElem() const
Definition EffectI.hh:269
virtual int FaceTexture(int face) const
Definition EffectI.hh:265
virtual float Attrib(int face, int point, int id) const =0
virtual unsigned int Color(int face, int point) const =0
virtual int EndAttribI(int face, int point, int id) const
Definition EffectI.hh:254
virtual VEC4 Weights(int face, int point) const
Definition EffectI.hh:240
virtual int NumPoints(int face) const =0
virtual Point2d TexCoord(int face, int point) const =0
virtual int NumFaces() const =0
virtual void Collect(CollectVisitor &vis)=0
virtual void GenTexture(int num)
Definition EffectI.hh:263
virtual Vector EndPointNormal(int face, int point) const
Definition EffectI.hh:252
virtual unsigned int EndColor(int face, int point) const
Definition EffectI.hh:255
virtual float TexCoord3(int face, int point) const
Definition EffectI.hh:238
virtual int NumTextures() const
Definition EffectI.hh:262
virtual Point EndFacePoint(int face, int point) const
Definition EffectI.hh:251
virtual int AttribI(int face, int point, int id) const =0
Definition Effect.hh:3142
int array[5]
Definition Effect.hh:3144
int elems_used
Definition Effect.hh:3145
Definition Effect.hh:4798
FaceNormals(FaceCollection &faces)
Definition Effect.hh:4800
Vector Index(int face) const
Definition Effect.hh:4802
int Size() const
Definition Effect.hh:4801
FaceRenderCmds(FaceCollection &coll)
Definition Effect.hh:10825
void PreCalc()
Definition Effect.hh:10827
void Execute()
Definition Effect.hh:10828
FaceRenderCmds(FaceCollection &coll, TextureCoords &coord)
Definition Effect.hh:10826
Definition Effect.hh:5849
virtual void Add(const FaceCollection &coll)=0
FacesToBoxCollection(FaceCollection &coll, float dist)
Definition Effect.hh:5501
Matrix Index(int i) const
Definition Effect.hh:5503
int Size() const
Definition Effect.hh:5502
int Size() const
Definition Effect.hh:965
FilterArray(Array< int, T > &arr, Function< T, bool > &b)
Definition Effect.hh:964
T Index(int ii) const
Definition Effect.hh:976
~FindNearestPoint()
Definition Effect.hh:2655
Point Index(int ii) const
Definition Effect.hh:2634
FindNearestPoint(PointCollection &coll)
Definition Effect.hh:2624
int Size() const
Definition Effect.hh:2633
float Attrib(int face, int point, int id) const
Definition Effect.hh:4596
int NumPoints(int face) const
Definition Effect.hh:4591
Vector PointNormal(int face, int point) const
Definition Effect.hh:4593
virtual bool HasBatchMap() const
Definition Effect.hh:4598
int NumFaces() const
Definition Effect.hh:4590
void Collect(CollectVisitor &vis)
Definition Effect.hh:4588
int AttribI(int face, int point, int id) const
Definition Effect.hh:4597
virtual std::string name() const
Definition Effect.hh:4586
void HeavyPrepare()
Definition Effect.hh:4589
virtual FaceBufferRef BatchMap(int start_face, int end_face) const
Definition Effect.hh:4615
FlipNormals(FaceCollection &coll)
Definition Effect.hh:4584
Point FacePoint(int face, int point) const
Definition Effect.hh:4592
void change_normal(Vector **pos, int numvertices) const
Definition Effect.hh:4602
~FlipNormals()
Definition Effect.hh:4585
Definition Effect.hh:2048
float Index(int i) const
Definition Effect.hh:2052
FloatArrayConvert(const Array< int, float > &c2)
Definition Effect.hh:2050
int Size() const
Definition Effect.hh:2051
FloatArrayToPointCollection2d(FloatArray &array, Point2d p, Vector2d v_x, Vector2d v_y)
Definition Effect.hh:5312
Point2d Index(int i) const
Definition Effect.hh:5314
int Size() const
Definition Effect.hh:5313
Definition Effect.hh:2039
virtual ~FloatArray()
Definition Effect.hh:2041
int NumFloats() const
Definition Effect.hh:2042
Definition Effect.hh:2124
float Index(float p) const
Definition Effect.hh:2127
FloatMove(float val)
Definition Effect.hh:2126
ForLoop(int repeat, Function2< int, A, A > &a)
Definition Effect.hh:533
A Index(A a) const
Definition Effect.hh:534
ForLoop(int repeat, Function< A, A > &a)
Definition Effect.hh:532
Definition Effect.hh:3217
virtual BufferRef TextureBuf(int num) const
Definition Effect.hh:3254
BBOX GetBoundingBox(bool &success) const
Definition Effect.hh:3220
ForwardBoxableFaceCollection(FaceCollection &coll)
Definition Effect.hh:3219
virtual bool has_skeleton() const
Definition Effect.hh:3248
virtual bool IsTransparent() const
Definition Effect.hh:3226
virtual bool has_texcoord() const
Definition Effect.hh:3247
virtual int NumObjects() const
Definition Effect.hh:3257
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:3236
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:3237
virtual std::pair< int, int > GetObject(int o) const
Definition Effect.hh:3258
virtual void Prepare()
Definition Effect.hh:3227
virtual bool has_color() const
Definition Effect.hh:3246
void Collect(CollectVisitor &vis)
Definition Effect.hh:3224
virtual void PrepareDone()
Definition Effect.hh:3228
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:3238
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:3234
virtual VEC4 Joints(int face, int point) const
Definition Effect.hh:3241
virtual float TexCoord3(int face, int point) const
Definition Effect.hh:3239
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:3235
virtual bool has_normal() const
Definition Effect.hh:3244
virtual int NumFaces() const
Definition Effect.hh:3229
virtual int NumPoints(int face) const
Definition Effect.hh:3230
virtual int NumTextures() const
Definition Effect.hh:3252
virtual int FaceTexture(int face) const
Definition Effect.hh:3255
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:3231
virtual bool has_attrib() const
Definition Effect.hh:3245
virtual VEC4 Weights(int face, int point) const
Definition Effect.hh:3242
void HeavyPrepare()
Definition Effect.hh:3225
virtual Point EndFacePoint(int face, int point) const
Definition Effect.hh:3232
virtual void GenTexture(int num)
Definition Effect.hh:3253
Definition Effect.hh:3171
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:3192
virtual int FaceTexture(int face) const
Definition Effect.hh:3211
void Collect(CollectVisitor &vis)
Definition Effect.hh:3177
virtual BufferRef TextureBuf(int num) const
Definition Effect.hh:3210
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:3193
BBOX GetBoundingBox(bool &success) const
Definition Effect.hh:3174
virtual int NumPoints(int face) const
Definition Effect.hh:3185
virtual void PrepareDone()
Definition Effect.hh:3183
void HeavyPrepare()
Definition Effect.hh:3178
virtual bool Ready() const
Definition Effect.hh:3179
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:3190
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:3186
virtual int NumFaces() const
Definition Effect.hh:3184
virtual bool has_texcoord() const
Definition Effect.hh:3201
virtual float TexCoord3(int face, int point) const
Definition Effect.hh:3194
virtual VEC4 Joints(int face, int point) const
Definition Effect.hh:3195
virtual int NumTextures() const
Definition Effect.hh:3208
virtual bool IsTransparent() const
Definition Effect.hh:3180
virtual VEC4 Weights(int face, int point) const
Definition Effect.hh:3196
virtual int NumObjects() const
Definition Effect.hh:3205
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:3191
virtual std::pair< int, int > GetObject(int o) const
Definition Effect.hh:3206
virtual void GenTexture(int num)
Definition Effect.hh:3209
virtual bool has_skeleton() const
Definition Effect.hh:3202
virtual bool has_color() const
Definition Effect.hh:3200
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:3189
virtual void Prepare()
Definition Effect.hh:3181
virtual bool has_attrib() const
Definition Effect.hh:3199
virtual void SetDoneCount(int i)
Definition Effect.hh:3182
ForwardFaceCollection(FaceCollection &coll)
Definition Effect.hh:3173
virtual bool has_normal() const
Definition Effect.hh:3198
virtual Point EndFacePoint(int face, int point) const
Definition Effect.hh:3187
ForwardFunction(T *obj, B(T::*fptr)(A) const)
Definition Effect.hh:326
B Index(A a) const
Definition Effect.hh:327
void Execute()
Definition Effect.hh:10783
void PreCalc()
Definition Effect.hh:10782
FrameAnimCmds(FrameAnim &fa, float time)
Definition Effect.hh:10781
Definition Effect.hh:2388
std::vector< FramePlugin * > plugins
Definition Effect.hh:2415
void Cleanup()
Definition Effect.hh:2395
FrameAnimPlugins(Render *render)
Definition Effect.hh:2390
void PreFrame(float time)
Definition Effect.hh:2399
virtual ~FrameAnimPlugins()
Definition Effect.hh:2409
void Init()
Definition Effect.hh:2391
void PostFrame()
Definition Effect.hh:2404
void RenderOpenGl(const FaceCollection &col)
Definition Effect.cc:3313
void RenderOpenGlLines(const LineCollection &col)
Definition Effect.cc:3314
virtual bool Frame(float time)=0
FrameAnim(Render *render)
Definition Effect.hh:110
virtual void Cleanup()
Definition Effect.hh:114
virtual void PreFrame(float time)
Definition Effect.hh:115
virtual float Time() const
Definition Effect.hh:112
virtual void PostFrame()
Definition Effect.hh:117
virtual void Init()
Definition Effect.hh:113
virtual ~FrameAnim()
Definition Effect.hh:111
virtual float ZRot() const
Definition Effect.hh:120
virtual float RotSpeed() const
Definition Effect.hh:121
virtual float XRot() const
Definition Effect.hh:118
Render * GetRender() const
Definition Effect.hh:123
virtual float YRot() const
Definition Effect.hh:119
void RenderOpenGlPoly(const PointCollection &col)
Definition Effect.cc:3315
virtual void PostFrame()
Definition Effect.hh:140
virtual void Init()
Definition Effect.hh:137
virtual void Cleanup()
Definition Effect.hh:138
virtual void PreFrame(float time)
Definition Effect.hh:139
virtual ~FramePlugin()
Definition Effect.hh:136
Definition Effect.hh:3500
FrameSelect(AnimSet &s)
Definition Effect.hh:3502
void set_frame(int framenum)
Definition Effect.hh:3503
Definition Effect.hh:11154
int Size() const
Definition Effect.hh:11164
int * SelectArray() const
Definition Effect.hh:11165
void set_frame(int framenum)
Definition Effect.hh:11157
Frames(int frames)
Definition Effect.hh:11156
I Size() const
Definition Effect.hh:1256
T1 Index(I i) const
Definition Effect.hh:1257
FstArray(Array< I, std::pair< T1, T2 > > &arr)
Definition Effect.hh:1255
float Index(float x) const
Definition Effect.hh:10213
FuncCompose(Function< float, T > &f1, Function< T, float > &f2)
Definition Effect.hh:10212
std::pair< A, B > Domain
Definition Effect.hh:520
C CoDomain
Definition Effect.hh:521
virtual ~Function2()
Definition Effect.hh:524
C Index(const std::pair< A, B > &p)
Definition Effect.hh:522
virtual C Index(A a, B b) const =0
I Size() const
Definition Effect.hh:910
T Index(I i) const
Definition Effect.hh:911
FunctionArray(I size, Function< I, T > &func)
Definition Effect.hh:909
C Index(A a) const
Definition Effect.hh:493
FunctionCompose(Function< A, B > &f1, Function< B, C > &f2)
Definition Effect.hh:492
Point2d Index(float x) const
Definition Effect.hh:1432
float Size() const
Definition Effect.hh:1431
FunctionCurveIn2d(Function< float, float > &f, float size, Point2d p, Vector2d u_x, Vector2d u_y)
Definition Effect.hh:1430
Point Index(float x) const
Definition Effect.hh:1462
FunctionCurveIn3d(Function< float, float > &f, float size, Point p, Vector u_x, Vector u_y)
Definition Effect.hh:1460
float Size() const
Definition Effect.hh:1461
~FunctionImpl0()
Definition Effect.hh:423
FunctionImpl0()
Definition Effect.hh:416
K Index(T a) const
Definition Effect.hh:417
K Index(T a) const
Definition Effect.hh:434
FunctionImpl1(P p)
Definition Effect.hh:433
~FunctionImpl1()
Definition Effect.hh:440
FunctionImpl2(P1 p1, P2 p2)
Definition Effect.hh:450
~FunctionImpl2()
Definition Effect.hh:457
K Index(T a) const
Definition Effect.hh:451
K Index(T a) const
Definition Effect.hh:470
~FunctionImpl3()
Definition Effect.hh:476
FunctionImpl3(P1 p1, P2 p2, P3 p3)
Definition Effect.hh:469
std::string contents
Definition parser.cc:16
virtual B Index(A a) const =0
Point LinePoint(int line, int point) const
Definition Effect.hh:4849
int NumLines() const
Definition Effect.hh:4848
Fur(FaceCollection &face, int numlines, int numlines2, float length)
Definition Effect.hh:4847
Definition Effect.hh:2023
virtual int AttribI(int x, int y, int id) const =0
virtual ~GridIn3d()
Definition Effect.hh:2025
virtual int YSize() const =0
virtual Vector Normal(int x, int y) const =0
virtual int XSize() const =0
virtual unsigned int Color(int x, int y) const =0
virtual Point Index(int x, int y) const =0
virtual float Attrib(int x, int y, int id) const =0
virtual Point2d Texture(int x, int y) const =0
float XRot() const
Definition Effect.hh:10507
float ZRot() const
Definition Effect.hh:10509
HeightMapEffect(Render *r)
Definition Effect.cc:1449
float YRot() const
Definition Effect.hh:10508
bool Frame(float time)
Definition Effect.cc:1482
virtual Point Index(float x, float y) const
Definition Effect.hh:5356
virtual float Attrib(float x, float y, int id) const
Definition Effect.hh:5362
HeightMapSurface(Array2< float, float, float > &array, Point p, UnitVectors u)
Definition Effect.hh:5355
virtual float XSize() const
Definition Effect.hh:5371
virtual int AttribI(float x, float y, int id) const
Definition Effect.hh:5363
virtual float YSize() const
Definition Effect.hh:5372
virtual Point2d Texture(float x, float y) const
Definition Effect.hh:5361
virtual Vector Normal(float xx, float yy) const
Definition Effect.hh:5364
virtual int NumPoints(int face) const
Definition Effect.hh:7787
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:7839
Point GetPoint(float xx, float yy) const
Definition Effect.hh:7813
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:7843
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:7805
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:7823
void Prepare()
Definition Effect.hh:7784
unsigned int Color(int face, int point) const
Definition Effect.hh:7801
virtual void SetBox(Matrix b)
Definition Effect.hh:7785
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:7788
HeightMap(int x, int y, Function2< float, float, float > &func)
Definition Effect.hh:7783
virtual int NumFaces() const
Definition Effect.hh:7786
HorizTexCoords(FaceCollection &coll, int texture)
Definition Effect.hh:4955
Point2d TexCoord(int face, int point) const
Definition Effect.hh:4957
int Texture(int face) const
Definition Effect.hh:4956
virtual int NumFaces() const
Definition Effect.hh:3575
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:3579
int Size() const
Definition Effect.hh:3569
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:3577
const FaceCollection * Index(int object) const
Definition Effect.hh:3570
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:3584
IdentifyObjectsFromArray(FaceCollectionArray &array)
Definition Effect.hh:3568
virtual int NumPoints(int face) const
Definition Effect.hh:3576
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:3578
Definition Effect.hh:7706
virtual T Index(T a) const
Definition Effect.hh:7708
Definition Effect.hh:1708
IdentityMatrixCurve(float length)
Definition Effect.hh:1710
float Size() const
Definition Effect.hh:1712
Matrix Index(float pos) const
Definition Effect.hh:1711
Definition Effect.hh:1347
IndexMap(Array< int, int > &arr)
Definition Effect.hh:1350
std::pair< int, int > Index(int i) const
Definition Effect.hh:1351
int Size() const
Definition Effect.hh:1363
float Index(float x) const
Definition Effect.hh:257
InterpolateFunction(Function< float, float > &f1, Function< float, float > &f2, float pos)
Definition Effect.hh:254
Point p12_13(float x, float y) const
Definition Effect.hh:2522
InterpolateTriangle(Point p1, Point p2, Point p3)
Definition Effect.hh:2518
Point p21_23(float x, float y) const
Definition Effect.hh:2530
Point p31_32(float x, float y) const
Definition Effect.hh:2538
InterpolationPathCollection(float pathlength, BoxCollection &dom, BoxCollection &cod, Function< int, int > &mapping)
Definition Effect.hh:7715
int NumPaths(float) const
Definition Effect.hh:7716
float PathLength() const
Definition Effect.hh:7717
Matrix Index(float posinpath, int path) const
Definition Effect.hh:7718
Point FacePoint(int face, int point) const
Definition Effect.hh:4759
InverseOutlineFaces(FaceCollection &previous, LineCollection &coll)
Definition Effect.hh:4758
virtual std::vector< T > Inverse(K k) const =0
virtual K Index(T t) const =0
IsEqualFunc(T t)
Definition Effect.hh:8398
bool Index(T tt) const
Definition Effect.hh:8399
N Index(N n) const
Definition Effect.hh:703
Function< N, N > * Index(int n) const
Definition Effect.hh:698
Iteration(Function< N, N > &succ)
Definition Effect.hh:697
IteratorArray(const Array< T, K > &arr)
Definition Effect.hh:1170
const_iterator end() const
Definition Effect.hh:1192
const_iterator begin() const
Definition Effect.hh:1191
virtual ~LazyValue()
Definition Effect.hh:148
Definition EffectI.hh:305
virtual void Collect(CollectVisitor &vis)=0
virtual void HeavyPrepare()=0
virtual int NumLines() const =0
virtual Point LinePoint(int line, int point) const =0
float Size() const
Definition Graph.hh:5824
Point2d p2
Definition Graph.hh:5830
Point2d Index(float x) const
Definition Graph.hh:5825
LineIn2d(Point2d p1, Point2d p2)
Definition Graph.hh:5823
Point2d p1
Definition Graph.hh:5830
Definition Effect.hh:1866
virtual float Size() const
Definition Effect.hh:1873
LineIn3d(Point p1, Point p2)
Definition Effect.hh:1868
virtual Point Index(float pos) const
Definition Effect.hh:1869
Definition VectorTools.hh:799
int BoxObject(int obj) const
Definition Effect.hh:5532
LinearObjectCollection(int count)
Definition Effect.hh:5530
int NumObjects() const
Definition Effect.hh:5531
void Prepare()
Definition Effect.hh:2783
void Collect(CollectVisitor &vis)
Definition Effect.hh:2781
Point2d TexCoord(int face, int point) const
Definition Effect.hh:2804
LinkPointCollections(PointCollection &p1, PointCollection &p2)
Definition Effect.hh:2780
int NumPoints(int face) const
Definition Effect.hh:2785
Point FacePoint(int face, int point) const
Definition Effect.hh:2786
float TexCoord3(int face, int point) const
Definition Effect.hh:2805
void HeavyPrepare()
Definition Effect.hh:2782
int NumFaces() const
Definition Effect.hh:2784
unsigned int Color(int face, int point) const
Definition Effect.hh:2803
Vector PointNormal(int face, int point) const
Definition Effect.hh:2798
Definition Effect.hh:10759
virtual int NumConnections() const =0
virtual Matrix Transform(int conn1, int conn2)=0
void Load() const
Definition Effect.cc:4229
void check_invalidate() const
Definition Effect.cc:4205
virtual int AttribI(int face, int point, int id) const
Definition Effect.cc:4513
virtual Point FacePoint(int face, int point) const
Definition Effect.cc:4484
void Load2()
Definition Effect.cc:4230
virtual unsigned int Color(int face, int point) const
Definition Effect.cc:4515
virtual float TexCoord3(int face, int point) const
Definition Effect.cc:4527
LoadObjModelFaceCollection(LoadStream *file_data, int objcount, std::vector< std::string > material_names)
Definition Effect.cc:4192
virtual int NumFaces() const
Definition Effect.cc:4480
virtual Vector PointNormal(int face, int point) const
Definition Effect.cc:4496
void Prepare()
Definition Effect.cc:4196
virtual float Attrib(int face, int point, int id) const
Definition Effect.cc:4510
void check_invalidate2()
Definition Effect.cc:4206
virtual int NumPoints(int face) const
Definition Effect.cc:4482
virtual Point2d TexCoord(int face, int point) const
Definition Effect.cc:4551
int Count(int face, int point) const
Definition Effect.cc:4566
Definition GraphI.hh:3114
MapArray(Array< I, A > &arr, Function< A, B > &func)
Definition Effect.hh:803
I Size() const
Definition Effect.hh:804
B Index(I i) const
Definition Effect.hh:805
virtual int Size() const
Definition Effect.hh:9705
virtual Matrix Index(int box) const
Definition Effect.hh:9706
MatrixBox(BoxCollection &c, Matrix m)
Definition Effect.hh:9704
virtual Matrix Index(int box) const
Definition Effect.hh:9647
virtual int Size() const
Definition Effect.hh:9643
MatrixCollection(It beg, It end)
Definition Effect.hh:9642
Definition Effect.hh:1697
Matrix Index(float i) const
Definition Effect.hh:1701
float Size() const
Definition Effect.hh:1700
MatrixCurveConvert(const Array< float, Matrix > &c2)
Definition Effect.hh:1699
Definition Effect.hh:1603
Matrix Index(float x) const
Definition Effect.hh:1618
float Size() const
Definition Effect.hh:1613
void push_back(float starttime, float len, MatrixCurve *c)
Definition Effect.hh:1606
float Size() const
Definition Effect.hh:1755
Point Index(float pos) const
Definition Effect.hh:1751
MatrixCurveToCurveIn3d(const MatrixCurve &curve, Vector v)
Definition Effect.hh:1750
Definition Effect.hh:1582
virtual ~MatrixCurve()
Definition Effect.hh:1584
Definition Effect.hh:8076
BBOX GetBoundingBox(bool &success) const
Definition Effect.hh:8138
~MatrixElem()
Definition Effect.hh:8080
FaceCollection * get_next() const
Definition Effect.hh:8206
virtual std::string name() const
Definition Effect.hh:8079
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:8125
virtual bool IsMatrixElem() const
Definition Effect.hh:8089
virtual Point EndFacePoint(int face, int point) const
Definition Effect.hh:8115
void change_pos(Point **pos, int numvertices) const
Definition Effect.hh:8223
void Collect(CollectVisitor &vis)
Definition Effect.hh:8090
virtual void Prepare()
Definition Effect.hh:8102
virtual FaceBufferRef BatchMap(int start_face, int end_face) const
Definition Effect.hh:8290
MatrixElem(FaceCollection &next, Matrix m)
Definition Effect.hh:8078
virtual int NumPoints(int face) const
Definition Effect.hh:8104
void change_normal(Vector **pos, int numvertices) const
Definition Effect.hh:8263
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:8105
Matrix get_matrix() const
Definition Effect.hh:8198
virtual int NumFaces() const
Definition Effect.hh:8103
void change_pos2(Point **pos, int numvertices) const
Definition Effect.hh:8243
virtual bool HasBatchMap() const
Definition Effect.hh:8213
void HeavyPrepare()
Definition Effect.hh:8095
std::vector< Point > Inverse(Point p) const
Definition Effect.hh:10313
MatrixFunction(Matrix m)
Definition Effect.hh:10308
Point Index(Point p) const
Definition Effect.hh:10309
Point Convert(Point p) const
Definition Effect.hh:10297
MatrixPointMap(Matrix m)
Definition Effect.hh:10296
MatrixVBOCmd(Command &c, Matrix m)
Definition Effect.hh:10749
virtual void cmd()
Definition Effect.cc:2636
Definition VectorTools.hh:279
static Matrix XRotation(float rot)
Definition VectorTools.cc:498
static Matrix YRotation(float rot)
Definition VectorTools.cc:526
static Matrix Translate(float x, float y, float z)
Definition VectorTools.cc:547
static Matrix Inverse(const Matrix &m)
Definition VectorTools.cc:859
static Matrix RotateAroundAxis(const Vector &v, float angle)
Definition VectorTools.cc:718
static Matrix ZRotation(float rot)
Definition VectorTools.cc:537
static Matrix Identity()
Definition VectorTools.cc:487
static Matrix Interpolate(const Matrix &m1, const Matrix &m2, float t)
Definition VectorTools.cc:983
static Matrix KeepRotation(const Matrix &m)
Definition VectorTools.cc:509
static Matrix Scale(float x, float y, float z)
Definition VectorTools.cc:556
static Matrix RotateAroundAxisPoint(const Point &p, const Vector &v, float angle)
Definition VectorTools.cc:711
float Index(float x) const
Definition Effect.hh:2947
MaxCurve(Function< float, float > &f1, Function< float, float > &f2)
Definition Effect.hh:2946
MemoizeArray(int count, Array< int, A > &func)
Definition Effect.hh:8660
A Index(int val) const
Definition Effect.hh:8665
int Size() const
Definition Effect.hh:8674
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:8843
void MemoizeAll()
Definition Effect.hh:8722
virtual BufferRef TextureBuf(int num) const
Definition Effect.hh:8849
virtual std::string name() const
Definition Effect.hh:8692
virtual int NumTextures() const
Definition Effect.hh:8847
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:8839
Vector PointNormal(int face, int point) const
Definition Effect.hh:8821
Point EndFacePoint(int face, int point) const
Definition Effect.hh:8780
virtual void GenTexture(int num)
Definition Effect.hh:8848
void Reset()
Definition Effect.hh:8711
virtual int FaceTexture(int face) const
Definition Effect.hh:8851
void operator=(const MemoizeFaces &c)
Definition Effect.hh:8700
int NumPoints(int face) const
Definition Effect.hh:8748
int NumFaces() const
Definition Effect.hh:8737
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:8816
void Collect(CollectVisitor &vis)
Definition Effect.hh:8693
Point FacePoint(int face, int point) const
Definition Effect.hh:8762
MemoizeFaces(FaceCollection &c)
Definition Effect.hh:8688
unsigned int Color(int face, int point) const
Definition Effect.hh:8798
void HeavyPrepare()
Definition Effect.hh:8697
void Prepare()
Definition Effect.hh:8699
A Index(int val) const
Definition Effect.hh:8641
MemoizeFunction(int count, Function< int, A > &func)
Definition Effect.hh:8636
MeshColorsToTriangles(MeshColors &n, bool b)
Definition Effect.hh:11824
virtual unsigned int VertexColor(int framenum, int statenum, int face, int point) const
Definition Effect.hh:11826
virtual int NumFrames() const
Definition Effect.hh:11825
Definition Effect.hh:11389
virtual unsigned int VertexColor(int framenum, int statenum, int face, int point) const
Definition Effect.hh:11392
virtual int NumFrames() const
Definition Effect.hh:11391
virtual ~MeshColors()
Definition Effect.hh:11393
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:11632
virtual bool has_normal() const
Definition Effect.hh:11636
void Collect(CollectVisitor &vis)
Definition Effect.hh:11624
virtual bool has_texcoord() const
Definition Effect.hh:11639
virtual std::string name() const
Definition Effect.hh:11622
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:11651
void HeavyPrepare()
Definition Effect.hh:11627
virtual int NumFaces() const
Definition Effect.hh:11630
MeshFaceCollection(Mesh &mesh, MeshTexCoords &coord, int framenum)
Definition Effect.hh:11621
virtual bool has_attrib() const
Definition Effect.hh:11637
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:11656
virtual bool has_color() const
Definition Effect.hh:11638
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:11642
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:11649
MeshFaceCollection(Mesh &mesh, int framenum)
Definition Effect.hh:11620
virtual int NumPoints(int face) const
Definition Effect.hh:11631
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:11652
void Prepare()
Definition Effect.hh:11629
virtual bool has_skeleton() const
Definition Effect.hh:11640
MeshNormalsToTriangles(MeshNormals &n, bool b)
Definition Effect.hh:11781
virtual int NumFrames() const
Definition Effect.hh:11782
virtual Vector PointNormal(int framenum, int statenum, int face, int point) const
Definition Effect.hh:11783
Definition Effect.hh:11346
virtual int NumFrames() const
Definition Effect.hh:11348
virtual ~MeshNormals()
Definition Effect.hh:11350
virtual Vector PointNormal(int framenum, int statenum, int face, int point) const
Definition Effect.hh:11349
Definition Effect.hh:11444
virtual int NumFrames() const
Definition Effect.hh:11446
virtual unsigned int VertexColor(int framenum, int statenum, int face, int point, int id) const
Definition Effect.hh:11447
virtual ~MeshShaderParameters()
Definition Effect.hh:11448
virtual int NumFrames() const
Definition Effect.hh:11803
MeshTexCoordsToTriangles(MeshTexCoords &n, bool b)
Definition Effect.hh:11802
virtual Point2d TexCoord(int framenum, int statenum, int face, int point) const
Definition Effect.hh:11804
Definition Effect.hh:11366
virtual Point2d TexCoord(int framenum, int statenum, int face, int point) const
Definition Effect.hh:11369
virtual int NumFrames() const
Definition Effect.hh:11368
virtual ~MeshTexCoords()
Definition Effect.hh:11370
Definition Effect.hh:11409
virtual void GenTexture(int num)
Definition Effect.hh:11412
virtual BufferRef TextureBuf(int num) const
Definition Effect.hh:11413
virtual ~MeshTextures()
Definition Effect.hh:11414
virtual int NumTextures() const
Definition Effect.hh:11411
Definition Effect.hh:11718
int point_map(int face, int point) const
Definition Effect.hh:11721
int face_num(int face) const
Definition Effect.hh:11720
virtual Point FacePoint(int framenum, int statenum, int face, int point) const
Definition Effect.hh:11762
virtual int NumFaces(int framenum) const
Definition Effect.hh:11752
virtual int NumFrames() const
Definition Effect.hh:11748
virtual int StateNum(int frame, int face) const
Definition Effect.hh:11746
MeshToTriangles(Mesh &m)
Definition Effect.hh:11744
virtual int NumStates() const
Definition Effect.hh:11745
virtual int NumPoints() const
Definition Effect.hh:11758
Definition Effect.hh:11256
virtual int NumPoints() const =0
virtual Point FacePoint(int framenum, int statenum, int face, int point) const =0
virtual int NumFaces(int framenum) const =0
virtual int NumFrames() const =0
virtual int NumStates() const =0
virtual int StateNum(int framenum, int face) const =0
virtual ~Mesh()
Definition Effect.hh:11265
void Prepare()
Definition Effect.hh:10387
int NumPoints(int face) const
Definition Effect.hh:10390
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:10399
float Attrib(int face, int point, int id) const
Definition Effect.hh:10408
ModifyObject(BoxableFaceCollection &coll, PointMap &pm)
Definition Effect.hh:10386
int NumFaces() const
Definition Effect.hh:10389
Point FacePoint(int face, int point) const
Definition Effect.hh:10391
unsigned int Color(int face, int point) const
Definition Effect.hh:10395
void SetBox(Matrix m)
Definition Effect.hh:10388
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:10412
Vector PointNormal(int face, int point) const
Definition Effect.hh:10404
bool Frame(float time)
Definition Effect.cc:1038
void Init()
Definition Effect.cc:971
void PreFrame(float time)
Definition Effect.cc:993
MoleculeEffect(Render *render)
Definition Effect.cc:920
void Cleanup()
Definition Effect.cc:983
MoleculeInsideEffect(Render *render)
Definition Effect.hh:10470
bool Frame(float time)
Definition Effect.cc:1145
virtual Point Index(float x, float y) const
Definition Effect.hh:1917
void Move(Point &p) const
Definition Effect.hh:1922
MoveSurfaceIn3d(SurfaceIn3d &next, Vector v)
Definition Effect.hh:1916
bool Frame(float time)
Definition Effect.cc:2770
MovementEffect(Render *render)
Definition Effect.hh:11096
A Index(std::pair< N, A > &p) const
Definition Effect.hh:736
~Mul()
Definition Effect.hh:765
Function< int, A > * Index(A a) const
Definition Effect.hh:756
Mul(Function< std::pair< A, A >, A > &plus, A zero)
Definition Effect.hh:735
virtual int AttribI(float x, float y, int id) const
Definition Effect.hh:2295
virtual float Attrib(float x, float y, int id) const
Definition Effect.hh:2299
virtual float XSize() const
Definition Effect.hh:2308
void HeavyPrepare()
Definition Effect.hh:2273
virtual Point Index(float x, float y) const
Definition Effect.hh:2274
virtual float YSize() const
Definition Effect.hh:2309
virtual Vector Normal(float x, float y) const
Definition Effect.hh:2283
virtual Point2d Texture(float x, float y) const
Definition Effect.hh:2278
virtual unsigned int Color(float x, float y) const
Definition Effect.hh:2279
void Collect(CollectVisitor &vis)
Definition Effect.hh:2268
MultiplyCurves(const CurveIn3d &c1, const CurveIn3d &c2)
Definition Effect.hh:2267
MultiplyMatrixCurve(MatrixCurve &c1, MatrixCurve &c2)
Definition Effect.hh:1678
Matrix Index(float x) const
Definition Effect.hh:1680
float Size() const
Definition Effect.hh:1679
int Size() const
Definition Effect.hh:792
T Index(int i) const
Definition Effect.hh:793
NativeArray(T *array, int size)
Definition Effect.hh:791
NativeFunction2(C(*fptr)(A, B))
Definition Effect.hh:563
C Index(A a, B b) const
Definition Effect.hh:564
B Index(A a) const
Definition Effect.hh:337
NativeFunction(B(*fptr)(A))
Definition Effect.hh:336
Definition Effect.hh:9369
Plane m_pl
Definition Effect.hh:9372
NormalizedPlane(Plane pl)
Definition Effect.hh:9371
NotFunc(Function< int, bool > &f)
Definition Effect.hh:8381
bool Index(int a) const
Definition Effect.hh:8382
virtual Point2d TexCoord(int index) const
Definition Effect.hh:4005
virtual int AttribI(int index, int id) const
Definition Effect.hh:4051
virtual int NumPoints() const
Definition Effect.hh:3963
virtual int NumFaces() const
Definition Effect.hh:3952
virtual int Index(int face, int point) const
Definition Effect.hh:4093
virtual Point FacePoint(int index) const
Definition Effect.hh:3973
virtual int PointsEndRange(int obj) const
Definition Effect.hh:3928
virtual Vector PointNormal(int index) const
Definition Effect.hh:4023
virtual float Attrib(int index, int id) const
Definition Effect.hh:4037
int NumObjects() const
Definition Effect.hh:3913
virtual unsigned int Color(int index) const
Definition Effect.hh:3991
virtual int PointsStartRange(int obj) const
Definition Effect.hh:3914
ObjectArray2(Array< int, FaceCollectionTri * > &arr)
Definition Effect.hh:3912
virtual int IndexEndRange(int obj) const
Definition Effect.hh:3947
virtual int IndexStartRange(int obj) const
Definition Effect.hh:3932
virtual int IndexToFace(int index) const
Definition Effect.hh:4075
virtual int IndexCount() const
Definition Effect.hh:4065
virtual int NumPoints() const
Definition Effect.hh:4168
virtual int Index(int face, int point) const
Definition Effect.hh:4283
virtual Point2d TexCoord(int index) const
Definition Effect.hh:4204
virtual int IndexToFace(int index) const
Definition Effect.hh:4266
virtual float Attrib(int index, int id) const
Definition Effect.hh:4235
virtual int NumFaces() const
Definition Effect.hh:4158
virtual unsigned int Color(int index) const
Definition Effect.hh:4190
ObjectArray(It beg, It end)
Definition Effect.hh:4119
virtual int PointsEndRange(int obj) const
Definition Effect.hh:4135
virtual int IndexEndRange(int obj) const
Definition Effect.hh:4153
virtual int IndexStartRange(int obj) const
Definition Effect.hh:4139
virtual int IndexCount() const
Definition Effect.hh:4262
virtual Point FacePoint(int index) const
Definition Effect.hh:4177
virtual int PointsStartRange(int obj) const
Definition Effect.hh:4122
virtual Vector PointNormal(int index) const
Definition Effect.hh:4222
virtual int AttribI(int index, int id) const
Definition Effect.hh:4248
virtual int NumObjects() const
Definition Effect.hh:4121
Definition Effect.hh:5521
virtual int BoxObject(int obj) const =0
virtual int NumObjects() const =0
virtual ~ObjectCollection()
Definition Effect.hh:5523
Definition Effect.hh:5623
Definition Effect.hh:10719
virtual Matrix ObjectPos(int index) const =0
virtual int ObjectId(int index) const =0
virtual int Count() const =0
Definition Effect.hh:6127
virtual BoxableFaceCollection * Select(int index)=0
Definition Effect.hh:10773
Point2d Index(int i) const
Definition Effect.hh:2736
OrArrayPointCollection2d(std::vector< PointCollection2d * > vec)
Definition Effect.hh:2728
int Size() const
Definition Effect.hh:2729
unsigned char * combine_indices_char(unsigned char *p1, unsigned char *p2, int numfaces1, int numfaces2, int numvertices1, int numvertices2) const
Definition Effect.hh:6811
VEC4 * combine_joints(VEC4 *p1, VEC4 *p2, int numvertices1, int numvertices2) const
Definition Effect.hh:6920
Vector * combine_normal(Vector *p1, Vector *p2, int numvertices1, int numvertices2) const
Definition Effect.hh:6887
virtual std::string name() const
Definition Effect.hh:6595
OrElem2(FaceCollection *coll1, FaceCollection *coll2)
Definition Effect.hh:6594
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:6726
void swap2(T **ptr, T *val) const
Definition Effect.hh:6943
virtual unsigned int EndColor(int face, int point) const
Definition Effect.hh:6778
unsigned short * combine_indices_short(unsigned short *p1, unsigned short *p2, int numfaces1, int numfaces2, int numvertices1, int numvertices2) const
Definition Effect.hh:6828
virtual std::pair< int, int > GetObject(int o) const
Definition Effect.hh:6694
virtual bool has_texcoord() const
Definition Effect.hh:6742
Point * combine_texcoord(Point *p1, Point *p2, int numvertices1, int numvertices2) const
Definition Effect.hh:6909
virtual float TexCoord3(int face, int point) const
Definition Effect.hh:6750
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:6746
virtual bool has_skeleton() const
Definition Effect.hh:6754
FaceCollection * get_elem2(int face) const
Definition Effect.hh:6689
virtual float Duration() const
Definition Effect.hh:6788
virtual Point2d EndTexCoord(int face, int point) const
Definition Effect.hh:6781
int get_index2(int face) const
Definition Effect.hh:6684
virtual BufferRef TextureBuf(int num) const
Definition Effect.hh:6794
virtual float EndTexCoord3(int face, int point) const
Definition Effect.hh:6784
virtual int FaceTexture(int face) const
Definition Effect.hh:6797
unsigned int * combine_indices_int(unsigned int *p1, unsigned int *p2, int numfaces1, int numfaces2, int numvertices1, int numvertices2) const
Definition Effect.hh:6846
virtual bool has_color() const
Definition Effect.hh:6734
virtual int NumPoints(int face) const
Definition Effect.hh:6706
virtual bool has_attrib() const
Definition Effect.hh:6722
int get_index(int face) const
Definition Effect.hh:6675
FaceCollection * get_elem(int face) const
Definition Effect.hh:6680
VEC4 * combine_weights(VEC4 *p1, VEC4 *p2, int numvertices1, int numvertices2) const
Definition Effect.hh:6931
virtual float EndAttrib(int face, int point, int id) const
Definition Effect.hh:6772
virtual bool has_normal() const
Definition Effect.hh:6714
Point * combine_pos(Point *p1, Point *p2, int numvertices1, int numvertices2) const
Definition Effect.hh:6865
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:6710
virtual void GenTexture(int num)
Definition Effect.hh:6791
BBOX GetBoundingBox(bool &success) const
Definition Effect.hh:6622
void Prepare()
Definition Effect.hh:6666
Point * combine_pos2(Point *p1, Point *p2, int numvertices1, int numvertices2) const
Definition Effect.hh:6876
FaceBufferRef BatchMap(int start_x, int end_x) const
Definition Effect.hh:6949
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:6718
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:6730
void Collect(CollectVisitor &vis)
Definition Effect.hh:6651
virtual int EndAttribI(int face, int point, int id) const
Definition Effect.hh:6775
~OrElem2()
Definition Effect.hh:6597
void HeavyPrepare()
Definition Effect.hh:6657
virtual int NumObjects() const
Definition Effect.hh:6693
virtual int NumFaces() const
Definition Effect.hh:6705
virtual int NumTextures() const
Definition Effect.hh:6790
unsigned int * combine_color(unsigned int *p1, unsigned int *p2, int numvertices1, int numvertices2) const
Definition Effect.hh:6898
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:6738
virtual VEC4 Weights(int face, int point) const
Definition Effect.hh:6761
virtual Vector EndPointNormal(int face, int point) const
Definition Effect.hh:6769
virtual VEC4 Joints(int face, int point) const
Definition Effect.hh:6758
bool HasBatchMap() const
Definition Effect.hh:6803
virtual Point EndFacePoint(int face, int point) const
Definition Effect.hh:6766
bool Inside(Point p) const
Definition Effect.hh:7073
virtual bool has_attrib() const
Definition Effect.hh:7127
virtual int NumPoints(int face) const
Definition Effect.hh:7198
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:7217
virtual VEC4 Joints(int face, int point) const
Definition Effect.hh:7236
virtual int NumFaces() const
Definition Effect.hh:7186
virtual VEC4 Weights(int face, int point) const
Definition Effect.hh:7241
OrElem(It beg, It end)
Definition Effect.hh:7025
int AttribI(int face, int point, int id) const
Definition Effect.hh:7260
virtual bool has_texcoord() const
Definition Effect.hh:7109
virtual bool has_skeleton() const
Definition Effect.hh:7099
virtual bool has_normal() const
Definition Effect.hh:7136
void Prepare()
Definition Effect.hh:7093
virtual float TexCoord3(int face, int point) const
Definition Effect.hh:7230
OrElem()
Definition Effect.hh:7023
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:7204
virtual std::string name() const
Definition Effect.hh:7035
virtual std::pair< int, int > GetObject(int o) const
Definition Effect.hh:7176
void update_faces_cache() const
Definition Effect.hh:7037
virtual void GenTexture(int num)
Definition Effect.hh:7282
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:7248
void Collect(CollectVisitor &vis)
Definition Effect.hh:7083
OrElem(T *o1, T *o2, T *o3, T *o4)
Definition Effect.hh:7026
virtual int NumObjects() const
Definition Effect.hh:7098
virtual BufferRef TextureBuf(int num) const
Definition Effect.hh:7292
void SetBox(Matrix b)
Definition Effect.hh:7080
void push_back(T *ptr)
Definition Effect.hh:7069
virtual int NumTextures() const
Definition Effect.hh:7271
virtual bool has_color() const
Definition Effect.hh:7118
void HeavyPrepare()
Definition Effect.hh:7089
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:7224
float Attrib(int face, int point, int id) const
Definition Effect.hh:7254
virtual Point EndFacePoint(int face, int point) const
Definition Effect.hh:7210
virtual int FaceTexture(int face) const
Definition Effect.hh:7304
BBOX GetBoundingBox(bool &success) const
Definition Effect.hh:7147
bool Index(int a) const
Definition Effect.hh:8362
OrFunc(Function< int, bool > &f, Function< int, bool > &f2)
Definition Effect.hh:8361
Point2d Index(int i) const
Definition Effect.hh:2716
int Size() const
Definition Effect.hh:2715
OrPointCollection2d(PointCollection2d &p1, PointCollection2d &p2)
Definition Effect.hh:2714
Definition Effect.hh:5677
virtual int NumBoxes()
Definition Effect.hh:5679
virtual Matrix BoxIndex(int box)
Definition Effect.hh:5680
void Collect(CollectVisitor &vis)
Definition Effect.hh:4721
OutlineFaces(FaceCollection &c)
Definition Effect.hh:4717
int NumLines() const
Definition Effect.cc:4601
Point LinePoint(int line, int point) const
Definition Effect.cc:4609
void HeavyPrepare()
Definition Effect.hh:4722
unsigned int LineColor(int line, int point) const
Definition Effect.cc:4624
void Prepare()
Definition Effect.cc:4581
Packing(int num, float dist)
Definition Effect.hh:10236
Point2d k(Point2d p, Point2d p2) const
Definition Effect.hh:10257
Point2d s(Point2d p) const
Definition Effect.hh:10275
int Size() const
Definition Effect.hh:10237
Point2d Index(int i) const
Definition Effect.hh:10238
std::pair< C, D > Index(std::pair< A, B > p) const
Definition Effect.hh:673
PairFunction(Function< A, C > &f1, Function< B, D > &f2)
Definition Effect.hh:672
Definition Effect.hh:5806
Matrix Index(float pos) const
Definition Effect.hh:5809
float Size() const
Definition Effect.hh:5810
PathProjection(PathCollection &path)
Definition Effect.hh:5808
void SetPath(int path_)
Definition Effect.hh:5811
Definition Effect.hh:5795
void SetTime(float time_)
Definition Effect.hh:5798
Matrix Index(int box) const
Definition Effect.hh:5800
TimeProjection(PathCollection &path)
Definition Effect.hh:5797
int Size() const
Definition Effect.hh:5799
BoxCollection * ChooseTime(float pos) const
Definition Effect.hh:5790
PathCollection & path
Definition Effect.hh:5816
TimeProjection timeproj
Definition Effect.hh:5817
BoxCollection * Dom() const
Definition Effect.hh:5789
PathCollectionUser(PathCollection &path)
Definition Effect.hh:5787
PathProjection pathproj
Definition Effect.hh:5818
BoxCollection * Cod() const
Definition Effect.hh:5788
MatrixCurve * ChoosePath(int path) const
Definition Effect.hh:5791
Definition Effect.hh:5686
virtual Matrix Index(float posinpath, int path) const =0
virtual int NumPaths(float posinpath) const =0
virtual ~PathCollection()
Definition Effect.hh:5688
virtual float PathLength() const =0
bool Frame(float time)
Definition Effect.cc:1732
PathEffect(Render *render)
Definition Effect.hh:10518
Definition Effect.hh:5695
virtual bool Visible(float posinpath, int path)=0
Definition Shader.hh:1251
Definition Effect.hh:2245
float Size() const
Definition Effect.hh:2249
PlaneCurveIn3d(CurveIn2d *c, Plane p)
Definition Effect.hh:2248
PlaneCurveIn3d(CurveIn2d &c, Plane p)
Definition Effect.hh:2247
Point Index(float angle) const
Definition Effect.hh:2250
PlaneIn3d2(Plane pl)
Definition Effect.hh:2232
Point Index(Point2d p) const
Definition Effect.hh:2233
Definition Effect.hh:2218
Point Elem() const
Definition Effect.hh:2221
PlaneIn3d(Point2d p, Plane pl)
Definition Effect.hh:2220
Point Index(int i) const
Definition Effect.hh:2771
int Size() const
Definition Effect.hh:2770
PlanePointCollectionFrom2d(PointCollection2d &coll, float z)
Definition Effect.hh:2769
int Size() const
Definition Effect.hh:2988
PlanePointsIn3d(PointCollection2d &pc, Plane p)
Definition Effect.hh:2987
Point Index(int num) const
Definition Effect.hh:2989
Point2d TexCoord(int face, int point) const
Definition Effect.hh:4933
int Texture(int face) const
Definition Effect.hh:4932
PlaneTexCoords(FaceCollection &coll, int texture, Point center, Vector x, Vector y)
Definition Effect.hh:4931
Definition VectorTools.hh:350
Vector u_x
Definition VectorTools.hh:375
Vector u_y
Definition VectorTools.hh:376
Point u_p
Definition VectorTools.hh:374
Plane Index(float xx)
Definition Effect.hh:2381
PlanesFromCurve(CurveIn3d ¢er, CurveIn3d &x, CurveIn3d &y)
Definition Effect.hh:2379
N Index(std::pair< N, N > &p) const
Definition Effect.hh:722
Plus(Function< N, N > &succ)
Definition Effect.hh:721
int Size() const
Definition Effect.hh:2672
PointArrayPointCollection2d(std::vector< Point2d > vec)
Definition Effect.hh:2671
Point2d Index(int i) const
Definition Effect.hh:2673
Definition Effect.hh:2663
PointCollectionArray(It beg, It end)
Definition Effect.hh:4474
virtual Point Index(int index) const
Definition Effect.hh:4476
virtual int Size() const
Definition Effect.hh:4475
int Size() const
Definition Effect.hh:2482
PointCollection * Index(int i) const
Definition Effect.hh:2483
PointCollectionConvertArray(Array< int, Array< int, Point > * > &arr)
Definition Effect.hh:2481
~PointCollectionConvertArray()
Definition Effect.hh:2490
PointCollectionFromGrid(GridIn3d &grid)
Definition Effect.hh:3125
Point Index(int index) const
Definition Effect.hh:3128
int Size() const
Definition Effect.hh:3126
Definition Effect.hh:2456
Point Points(int index) const
Definition Effect.hh:2460
int NumPoints() const
Definition Effect.hh:2459
virtual ~PointCollection()
Definition Effect.hh:2458
Definition Effect.hh:10287
virtual Point Convert(Point p) const =0
virtual ~PointMap()
Definition Effect.hh:10289
Point Index(Point p) const
Definition Effect.hh:10290
std::pair< Point, Vector > Index(int i) const
Definition Effect.hh:3048
int Size() const
Definition Effect.hh:3047
PointVectorCollectionConvert(const Array< int, std::pair< Point, Vector > > &c2)
Definition Effect.hh:3046
Definition Effect.hh:3039
Vector Index(Point v) const
Definition Effect.hh:311
Definition Effect.hh:3036
PointVectorInterpolate(PointVectorCollection &coll, float pos)
Definition Effect.hh:9821
Point Index(int i) const
Definition Effect.hh:9823
int Size() const
Definition Effect.hh:9822
std::pair< Point, Vector > Index(int i) const
Definition Effect.hh:9841
int Size() const
Definition Effect.hh:9837
PointVectorRepeat(CurveIn2d &curve, Plane pl, int numobjects, bool loops)
Definition Effect.hh:9836
virtual Point2d Texture(int x, int y) const
Definition Effect.hh:9481
virtual int YSize() const
Definition Effect.hh:9507
virtual int XSize() const
Definition Effect.hh:9506
virtual unsigned int Color(int x, int y) const
Definition Effect.hh:9482
virtual Point Index(int x, int y) const
Definition Effect.hh:9475
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:9501
PointsGrid(const PointVectorCollection &points, const BoxCollection &boxes)
Definition Effect.hh:9474
virtual bool has_normal() const
Definition Effect.hh:9494
virtual Vector Normal(int x, int y) const
Definition Effect.hh:9495
virtual float Attrib(int x, int y, int id) const
Definition Effect.hh:9505
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:9486
virtual Matrix Index(int box) const
Definition Effect.hh:5666
virtual int Size() const
Definition Effect.hh:5665
PointsToBoxCollection(PointCollection &p)
Definition Effect.hh:5664
Point2d Index(int i) const
Definition Effect.hh:2908
int Size() const
Definition Effect.hh:2904
PolyFromCurve2d(Function< float, float > &curve, float y, float start_x, float end_x, int x_numpoints)
Definition Effect.hh:2903
Point2d Index(int i) const
Definition Effect.hh:2968
int Size() const
Definition Effect.hh:2964
PolyFromTwoCurves2d(Function< float, float > &curve1, Function< float, float > &curve2, float start_x, float end_x, int x_numpoints)
Definition Effect.hh:2959
PolygonEdges1(PointCollection &coll)
Definition Effect.hh:2554
float Index(int ii) const
Definition Effect.hh:2559
int Size() const
Definition Effect.hh:2555
float Size() const
Definition Effect.hh:2582
Point Index(float x) const
Definition Effect.hh:2596
PolygonEdges2(PointCollection &coll)
Definition Effect.hh:2581
void push_back(Point p)
Definition Effect.hh:7468
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:7479
PolygonElem()
Definition Effect.hh:7466
virtual int FaceTexture(int face) const
Definition Effect.hh:7493
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:7471
virtual int NumTextures() const
Definition Effect.hh:7490
virtual std::string name() const
Definition Effect.hh:7467
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:7480
virtual int NumPoints(int face) const
Definition Effect.hh:7470
virtual int NumFaces() const
Definition Effect.hh:7469
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:7485
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:7475
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:7481
virtual BufferRef TextureBuf(int num) const
Definition Effect.hh:7492
virtual void GenTexture(int num)
Definition Effect.hh:7491
Definition Containment.hh:40
virtual float Width() const =0
virtual float Height() const =0
virtual Matrix PortalMatrix() const =0
virtual ~Portal()
Definition Effect.hh:5056
void Collect(CollectVisitor &vis)
Definition Effect.hh:7330
virtual int NumFaces() const
Definition Effect.hh:7333
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:7378
void HeavyPrepare()
Definition Effect.hh:7331
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:7345
virtual void SetBox(Matrix b)
Definition Effect.hh:7332
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:7382
virtual std::string name() const
Definition Effect.hh:7329
virtual bool has_texcoord() const
Definition Effect.hh:7355
virtual bool has_normal() const
Definition Effect.hh:7344
QuadElem(Point p1, Point p2, Point p3, Point p4)
Definition Effect.hh:7328
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:7337
virtual int NumPoints(int face) const
Definition Effect.hh:7334
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:7356
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:7351
int Size() const
Definition Effect.hh:2834
QuadPointCollection2d(Point2d p1, Point2d p2, Point2d p3, Point2d p4)
Definition Effect.hh:2833
Point2d Index(int i) const
Definition Effect.hh:2835
int Size() const
Definition Effect.hh:4383
QuadsToPlanes(const FaceCollection &coll)
Definition Effect.hh:4373
Plane Index(int i) const
Definition Effect.hh:4374
Definition Effect.hh:6388
int Size() const
Definition Effect.hh:6396
const SurfaceIn3d * Index(int i) const
Definition Effect.hh:6395
virtual float YSize() const
Definition Effect.hh:6458
virtual unsigned int Color(float x, float y) const
Definition Effect.hh:6400
virtual Point Index(float x, float y) const
Definition Effect.hh:6398
virtual int AttribI(float x, float y, int id) const
Definition Effect.hh:6408
void HeavyPrepare()
Definition Effect.hh:6394
void Collect(CollectVisitor &vis)
Definition Effect.hh:6391
QuadsToSurfaces(FaceCollection &coll)
Definition Effect.hh:6390
virtual float XSize() const
Definition Effect.hh:6457
virtual Point2d Texture(float x, float y) const
Definition Effect.hh:6399
virtual float Attrib(float x, float y, int id) const
Definition Effect.hh:6412
virtual Vector Normal(float x, float y) const
Definition Effect.hh:6449
virtual int NumPoints() const
Definition Effect.hh:4396
virtual int NumFaces() const
Definition Effect.hh:4392
QuadsToTris(const FaceCollection &coll)
Definition Effect.hh:4391
virtual int IndexToFace(int index) const
Definition Effect.hh:4459
virtual int IndexCount() const
Definition Effect.hh:4453
virtual unsigned int Color(int index) const
Definition Effect.hh:4412
virtual Vector PointNormal(int index) const
Definition Effect.hh:4406
virtual Point FacePoint(int index) const
Definition Effect.hh:4400
virtual float Attrib(int index, int id) const
Definition Effect.hh:4426
virtual int AttribI(int index, int id) const
Definition Effect.hh:4432
virtual int Index(int face, int point) const
Definition Effect.hh:4438
virtual Point2d TexCoord(int index) const
Definition Effect.hh:4419
static std::pair< A, B > * EqualizerCheck(RangeFunction< A, B > &f1, RangeFunction< A, B > &f2, int i1, int i2)
Definition Effect.hh:225
void push_back(A start, A end, B val)
Definition Effect.hh:220
virtual B Index(A a) const
Definition Effect.hh:208
Definition Effect.hh:1305
Range(T s, T e)
Definition Effect.hh:1308
T end
Definition Effect.hh:1310
Range()
Definition Effect.hh:1307
T start
Definition Effect.hh:1309
Ray(Point p, Vector v)
Definition Effect.hh:10158
Point Index(float x) const
Definition Effect.hh:10159
Vector PointNormal(int face, int point) const
Definition Effect.hh:3324
virtual bool has_normal() const
Definition Effect.hh:3323
virtual std::string name() const
Definition Effect.hh:3321
RecalculateNormals(FaceCollection &coll)
Definition Effect.hh:3320
void Prepare()
Definition Effect.hh:9113
Point FacePoint(int face, int point) const
Definition Effect.hh:9116
void Collect(CollectVisitor &vis)
Definition Effect.hh:9108
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:9143
virtual std::string name() const
Definition Effect.hh:9107
int NumFaces() const
Definition Effect.hh:9114
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:9131
float Attrib(int, int point, int id) const
Definition Effect.hh:9147
bool Inside(Point p) const
Definition Effect.hh:9171
unsigned int Color(int face, int point) const
Definition Effect.hh:9127
void HeavyPrepare()
Definition Effect.hh:9111
RectangleElem(float x, float y)
Definition Effect.hh:9106
Vector PointNormal(int face, int point) const
Definition Effect.hh:9139
void SetBox(Matrix b)
Definition Effect.hh:9170
int NumPoints(int face) const
Definition Effect.hh:9115
virtual std::string name() const
Definition Effect.hh:3283
virtual Point FacePoint(int face, int point) const
Definition Effect.cc:4178
ReflectFaceCollection(FaceCollection &coll, Point pos, Vector u_x, Vector u_y, Vector ref_vec)
Definition Effect.hh:3282
FaceType Index(int face) const
Definition Effect.hh:8441
RemovePolysFunc(BoxableFaceCollection &obj, BoxableFaceCollection &obj2)
Definition Effect.hh:8438
void SetBox(Matrix b)
Definition Effect.hh:8440
virtual B Map(A a) const =0
B Index(A a) const
Definition Effect.hh:611
int NumFaces() const
Definition Effect.hh:9180
Point FacePoint(int face, int point) const
Definition Effect.hh:9182
Point VisibleToInternal(Point p) const
Definition Effect.hh:9240
unsigned int Color(int face, int point) const
Definition Effect.hh:9248
Point InternalToVisible(Point p) const
Definition Effect.hh:9233
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:9252
RenderBox(int sx, int sy, int sz, float sizex, float sizey, float sizez)
Definition Effect.hh:9179
float Attrib(int face, int point, int id) const
Definition Effect.hh:9269
Vector PointNormal(int face, int point) const
Definition Effect.hh:9260
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:9264
int NumPoints(int face) const
Definition Effect.hh:9181
bool Inside(Point p) const
Definition Effect.hh:9297
void SetBox(Matrix b)
Definition Effect.hh:9296
RenderOpenGlCmds(const FaceCollection &col)
Definition Effect.hh:10843
void PreCalc()
Definition Effect.hh:10844
void Execute()
Definition Effect.cc:436
void * GetState() const
Definition Effect.hh:9556
~RenderState()
Definition Effect.hh:9557
RenderState(Render &r)
Definition Effect.hh:9555
void PreCalc()
Definition Effect.cc:440
void Execute()
Definition Effect.cc:459
RenderToTexture(TexturePlugin *plugin, OpenGlCommands &cmds, bool in_precalc)
Definition Effect.hh:10794
Definition Effect.hh:9514
virtual void RenderPoly(const PointCollection &col)=0
virtual void * CreateState()=0
virtual void Show()
Definition Effect.hh:9529
virtual void UpdateVBO(const FaceCollection &faces, void *state)=0
virtual void DrawVBO(void *state)=0
virtual void RenderFacesTexture(const FaceCollection &col)=0
virtual void RenderFaces(const FaceCollection &col)=0
virtual void SetTime(float time)=0
virtual void RenderLines(const LineCollection &col)=0
virtual void RenderFaces(const FaceCollection &col, const TextureCoords &tex)=0
virtual void SetMatrix(Matrix m)=0
virtual void DestroyState(void *state)=0
Point Index(float i) const
Definition Effect.hh:1505
RepositionCurve(CurveIn3d &curve, Point new_start_point)
Definition Effect.hh:1503
float Size() const
Definition Effect.hh:1504
int Size() const
Definition Effect.hh:848
T Index(int i) const
Definition Effect.hh:849
ResizeArray(Array< int, T > &arr, T def, int size)
Definition Effect.hh:847
bool Frame(float time)
Definition Effect.cc:2748
RingEffect(Render *render)
Definition Effect.hh:11087
void Init()
Definition Effect.cc:2717
~RoboEffect()
Definition Effect.cc:1262
bool Frame(float time)
Definition Effect.cc:1266
RoboEffect(Render *render)
Definition Effect.cc:1255
float Size() const
Definition Effect.hh:3525
RotateAroundEdge(Matrix m, FaceCollection &obj, int face, int point1, int point2, float speed, float length)
Definition Effect.hh:3524
Matrix Index(float time) const
Definition Effect.hh:3526
void Show()
Definition Effect.cc:3281
void RenderFacesTexture(const FaceCollection &col)
Definition Effect.cc:3252
void DestroyState(void *state)
Definition Effect.cc:3277
void UpdateVBO(const FaceCollection &faces, void *state)
Definition Effect.cc:3267
void SetTime(float time)
Definition Effect.cc:3236
void DrawVBO(void *state)
Definition Effect.cc:3273
void RenderLines(const LineCollection &col)
Definition Effect.cc:3257
SDLArrayRender()
Definition Effect.hh:11677
void SetMatrix(Matrix m)
Definition Effect.cc:3240
void RenderPoly(const PointCollection &col)
Definition Effect.cc:3260
void * CreateState()
Definition Effect.cc:3263
void RenderFaces(const FaceCollection &col)
Definition Effect.cc:3243
Definition Effect.hh:9533
void RenderLines(const LineCollection &col)
Definition Effect.cc:2968
void RenderFacesTexture(const FaceCollection &col)
Definition Effect.hh:9539
void DestroyState(void *state)
Definition Effect.cc:2979
void RenderFaces(const FaceCollection &col)
Definition Effect.cc:2965
void UpdateVBO(const FaceCollection &faces, void *state)
Definition Effect.cc:2971
void DrawVBO(void *state)
Definition Effect.cc:2975
void SetTime(float time)
Definition Effect.cc:2963
void RenderPoly(const PointCollection &col)
Definition Effect.cc:2969
void SetMatrix(Matrix m)
Definition Effect.cc:2964
void * CreateState()
Definition Effect.cc:2970
Definition Effect.hh:4506
Point Index(int index) const
Definition Effect.hh:4512
SampleCurve3d(const CurveIn3d &curve, const FloatArray &arr)
Definition Effect.hh:4510
SampleCurve3d(const CurveIn3d &curve, int count)
Definition Effect.hh:4508
SampleCurve3d(const CurveIn3d *curve, int count)
Definition Effect.hh:4509
int Size() const
Definition Effect.hh:4511
Definition Effect.hh:2866
SampleCurveIn2d(const CurveIn2d &curve, int count, float length)
Definition Effect.hh:2868
int Size() const
Definition Effect.hh:2869
Point2d Index(int i) const
Definition Effect.hh:2873
SampleFunction(Function< int, float > &a, Function< float, C > &b)
Definition Effect.hh:8420
virtual std::string name() const
Definition Effect.hh:9735
Point2d TexCoord(int face, int point) const
Definition Effect.hh:9738
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:9769
void HeavyPrepare()
Definition Effect.hh:9747
Vector PointNormal(int face, int point) const
Definition Effect.hh:9763
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:9775
Point FacePoint(int face, int point) const
Definition Effect.hh:9751
unsigned int Color(int face, int point) const
Definition Effect.hh:9757
int NumPoints(int face) const
Definition Effect.hh:9750
int NumFaces() const
Definition Effect.hh:9749
int Texture(int face) const
Definition Effect.hh:9737
SampleGrid(GridIn3d &grid, int texture)
Definition Effect.hh:9734
void Prepare()
Definition Effect.hh:9748
void Collect(CollectVisitor &vis)
Definition Effect.hh:9744
Matrix Index(int box) const
Definition Effect.hh:5826
SampleMatrixCurve(const MatrixCurve &curve, int count)
Definition Effect.hh:5824
int Size() const
Definition Effect.hh:5825
virtual int YSize() const
Definition Effect.hh:6277
virtual float Attrib(int x1, int y1, int id) const
Definition Effect.hh:6267
virtual Point2d Texture(int x1, int y1) const
Definition Effect.hh:6255
static float Sample(int val, int size, float sizef)
Definition Effect.hh:6279
virtual unsigned int Color(int x1, int y1) const
Definition Effect.hh:6263
virtual Vector Normal(int x1, int y1) const
Definition Effect.hh:6259
virtual int XSize() const
Definition Effect.hh:6276
virtual Point Index(int x1, int y1) const
Definition Effect.hh:6251
virtual int AttribI(int x1, int y1, int id) const
Definition Effect.hh:6271
SampleSurfaceForGrid(const SurfaceIn3d &surf, int x, int y)
Definition Effect.hh:6250
Definition Effect.hh:6289
virtual std::string name() const
Definition Effect.hh:6292
SampleSurfaceIn3d(const SurfaceIn3d &surf, int texture, int x, int y)
Definition Effect.hh:6291
bool has_color() const
Definition Effect.hh:6324
virtual int NumFaces() const
Definition Effect.hh:6311
bool has_texcoord() const
Definition Effect.hh:6303
int AttribI(int face, int point, int id) const
Definition Effect.hh:6346
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:6326
void Collect(CollectVisitor &vis)
Definition Effect.hh:6293
void HeavyPrepare()
Definition Effect.hh:6297
void Prepare()
Definition Effect.hh:6299
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:6333
virtual Point EndFacePoint(int face, int point) const
Definition Effect.hh:6320
float Attrib(int face, int point, int id) const
Definition Effect.hh:6339
virtual int Texture(int face) const
Definition Effect.hh:6302
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:6304
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:6313
bool has_normal() const
Definition Effect.hh:6332
virtual int NumPoints(int face) const
Definition Effect.hh:6312
Definition Effect.hh:8424
Sample(float zero, float succ)
Definition Effect.hh:8426
float Index(int i) const
Definition Effect.hh:8427
int Size() const
Definition Effect.hh:4534
SampledLine(Point p1, Point p2, int count)
Definition Effect.hh:4533
Point Index(int i) const
Definition Effect.hh:4535
SaveObjModelFaceCollection(FaceCollection *coll)
Definition Effect.hh:12180
void save(std::string filename)
Definition Effect.hh:12181
ScaleCurveIn2d(CurveIn2d &curve, float x, float y)
Definition Effect.hh:2136
Point2d Index(float angle) const
Definition Effect.hh:2138
float Size() const
Definition Effect.hh:2137
float Size() const
Definition Effect.hh:1416
ScaleCurve(Curve< T > &curve, float target_length)
Definition Effect.hh:1415
T Index(float x) const
Definition Effect.hh:1417
ScopeMatrix(Matrix m)
Definition Effect.cc:2943
~ScopeMatrix()
Definition Effect.cc:2956
const FaceCollectionTri * Index(int i) const
Definition Effect.hh:3781
SeparateArrayElements(const Array< int, const FaceCollectionTri * > &arr)
Definition Effect.hh:3759
~SeparateArrayElements()
Definition Effect.hh:3787
int Size() const
Definition Effect.hh:3780
void Init()
Definition Effect.hh:11045
float Time() const
Definition Effect.hh:11037
SequentialFrameAnim(const Array< int, FrameAnim * > &arr, Render *r)
Definition Effect.hh:11034
bool Frame(float time)
Definition Effect.hh:11052
void PreCalc()
Definition Effect.hh:10879
ShaderCmds(OpenGlCommands &cmds, PieceShader &piece, ShaderPiece &shader, ShaderParameters *params, ShaderAttributes *attrs)
Definition Effect.hh:10873
~ShaderCmds()
Definition Effect.hh:10894
void Execute()
Definition Effect.hh:10884
void SetAttribs(ShaderAttributes *a)
Definition Effect.hh:10878
void SetParams(ShaderParameters *p)
Definition Effect.hh:10877
Definition Shader.hh:1466
int Size() const
Definition Effect.hh:5567
ShaderParameterArrayConvert(const Array< int, ShaderParameters * > &c2)
Definition Effect.hh:5566
ShaderParameters * Index(int i) const
Definition Effect.hh:5568
Definition Effect.hh:5561
Definition Shader.hh:1242
ShadowFaceCollection(FaceCollection &coll, Point pos, Vector u_x, Vector u_y, Vector light_vec)
Definition Effect.hh:3268
virtual Point FacePoint(int face, int point) const
Definition Effect.cc:4170
virtual std::string name() const
Definition Effect.hh:3269
void SetTexture(int tex)
Definition Effect.hh:4986
int Texture(int face) const
Definition Effect.hh:4987
SimpleTexCoords(FaceCollection &coll, int texture)
Definition Effect.hh:4985
Point2d TexCoord(int face, int point) const
Definition Effect.hh:4988
SimpleVectorCollection(Vector v)
Definition Effect.hh:3023
Vector Index(int index) const
Definition Effect.hh:3025
int Size() const
Definition Effect.hh:3024
Definition Effect.hh:3163
void Prepare()
Definition Effect.hh:3165
void Collect(CollectVisitor &vis)
Definition Effect.hh:3166
void HeavyPrepare()
Definition Effect.hh:3167
Definition Effect.hh:3156
void Collect(CollectVisitor &vis)
Definition Effect.hh:3159
void Prepare()
Definition Effect.hh:3158
void HeavyPrepare()
Definition Effect.hh:3160
SingleInt(int a)
Definition Effect.hh:814
int Index(int i) const
Definition Effect.hh:816
int Sum() const
Definition Effect.hh:817
int Size() const
Definition Effect.hh:815
virtual int Size() const
Definition Effect.hh:1086
virtual T Index(int index) const
Definition Effect.hh:1087
SingletonArray(T t)
Definition Effect.hh:1085
bool Frame(float time)
Definition Effect.cc:2839
void Init()
Definition Effect.cc:2826
SinusEffect(Render *render)
Definition Effect.hh:11102
Vector PointNormal(int face, int point) const
Definition Effect.hh:3391
SmoothNormals(FaceCollection &coll)
Definition Effect.hh:3390
SndArray(Array< I, std::pair< T1, T2 > > &arr)
Definition Effect.hh:1269
I Size() const
Definition Effect.hh:1270
T2 Index(I i) const
Definition Effect.hh:1271
Definition Effect.hh:10172
SolvableCompose(Function< float, T > &curve, Function< T, float > &value)
Definition Effect.hh:10174
float Index(float x) const
Definition Effect.hh:10177
SpaceTexCoords(FaceCollection &coll, int texture, Point p, Vector x, Vector y)
Definition Effect.hh:5006
int Texture(int face) const
Definition Effect.hh:5007
Point2d TexCoord(int face, int point) const
Definition Effect.hh:5008
SpanObject(PointCollection &points, PointCollection &points2)
Definition Effect.hh:9859
Vector Normal(int x, int y) const
Definition Effect.hh:9884
unsigned int Color(int x, int y) const
Definition Effect.hh:9880
virtual int AttribI(int x, int y, int id) const
Definition Effect.hh:9897
int YSize() const
Definition Effect.hh:9905
Point2d Texture(int x, int y) const
Definition Effect.hh:9873
virtual float Attrib(int x, int y, int id) const
Definition Effect.hh:9893
Point Index(int x, int y) const
Definition Effect.hh:9860
int XSize() const
Definition Effect.hh:9901
SpanObject(PointCollection &points, PointCollection &points2, MatrixCurve &contobject)
Definition Effect.hh:9858
SphereEffect(Render *render)
Definition Effect.hh:10437
bool Frame(float time)
Definition Effect.cc:866
void Prepare()
Definition Effect.hh:9316
void HeavyPrepare()
Definition Effect.hh:9314
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:9326
virtual int NumPoints(int face) const
Definition Effect.hh:9318
virtual Point2d TexCoord(int face, int point) const
Definition Effect.cc:233
virtual int NumFaces() const
Definition Effect.cc:197
virtual Point FacePoint(int face, int point) const
Definition Effect.cc:198
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:9331
virtual void SetBox(Matrix b)
Definition Effect.hh:9310
SphereElem(int numfaces, int numfaces2)
Definition Effect.hh:9306
void Collect(CollectVisitor &vis)
Definition Effect.hh:9311
virtual std::string name() const
Definition Effect.hh:9308
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:9346
virtual bool has_normal() const
Definition Effect.hh:9345
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:9320
virtual bool has_texcoord() const
Definition Effect.hh:9324
virtual bool Inside(Point p) const
Definition Effect.hh:9335
SphericalTexCoords(FaceCollection &coll, int texture, Point center)
Definition Effect.hh:4907
int Texture(int face) const
Definition Effect.hh:4909
Point2d TexCoord(int face, int point) const
Definition Effect.hh:4910
float Size() const
Definition Effect.hh:1689
SpiralMatrixCurve(float rot)
Definition Effect.hh:1688
Matrix Index(float x) const
Definition Effect.hh:1690
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:6575
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:6532
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:6559
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:6513
void HeavyPrepare()
Definition Effect.hh:6505
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:6541
virtual int NumFaces() const
Definition Effect.hh:6507
virtual int NumPoints(int face) const
Definition Effect.hh:6512
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:6567
virtual float TexCoord3(int face, int point) const
Definition Effect.hh:6549
virtual std::string name() const
Definition Effect.hh:6503
void Collect(CollectVisitor &vis)
Definition Effect.hh:6504
virtual Point EndFacePoint(int face, int point) const
Definition Effect.hh:6522
void Prepare()
Definition Effect.hh:6506
SplitQuads(FaceCollection &faces, int x, int y)
Definition Effect.hh:6502
int Size() const
Definition Effect.hh:4485
StarCurve(float r1, float r2, int numpoints)
Definition Effect.hh:4484
Point Index(int i) const
Definition Effect.hh:4486
Definition Effect.hh:2419
virtual ~Storage()
Definition Effect.hh:2421
virtual Vector & IndexVector(int i) const =0
virtual int PointCount() const =0
virtual int MatrixCount() const =0
virtual Matrix & IndexMatrix(int i) const =0
virtual float & IndexFloat(int i) const =0
virtual int VectorCount() const =0
virtual int FloatCount() const =0
virtual Point & IndexPoint(int i) const =0
SubArrayArray(Array< int, Range< int > > &ranges, Array< int, T > &contents)
Definition Effect.hh:1317
~SubArrayArray()
Definition Effect.hh:1325
Array< int, T > * Index(int i) const
Definition Effect.hh:1318
Definition Effect.hh:1282
SubArray(const Array< I, T > &arr, int start_index, int length)
Definition Effect.hh:1284
I Size() const
Definition Effect.hh:1285
T Index(int i) const
Definition Effect.hh:1286
SubSelect(AnimSet &s, int start, int size)
Definition Effect.hh:3463
void Set(int index, bool b)
Definition Effect.hh:3464
N Index(N n) const
Definition Effect.hh:686
SurfaceBetweenSurfaces(SurfaceIn3d &next, SurfaceIn3d &plane1, SurfaceIn3d &plane2, CurveIn2d &curve)
Definition Effect.hh:1951
virtual Point Index(float x, float y) const
Definition Effect.hh:1952
~SurfaceEffect()
Definition Effect.cc:2655
SurfaceEffect(Render *r)
Definition Effect.cc:2647
bool Frame(float time)
Definition Effect.cc:2687
void Init()
Definition Effect.cc:2659
virtual void Prepare()
Definition Effect.hh:1900
virtual int AttribI(float x, float y, int id) const
Definition Effect.hh:1904
virtual Vector Normal(float x, float y) const
Definition Effect.hh:1905
virtual Point2d Texture(float x, float y) const
Definition Effect.hh:1902
virtual float Attrib(float x, float y, int id) const
Definition Effect.hh:1903
SurfaceIn3dImpl(SurfaceIn3d &next)
Definition Effect.hh:1899
virtual unsigned int Color(float x, float y) const
Definition Effect.hh:1906
virtual float YSize() const
Definition Effect.hh:1908
virtual float XSize() const
Definition Effect.hh:1907
virtual Point Index(float x, float y) const
Definition Effect.hh:1901
Definition Effect.hh:1880
virtual float YSize() const =0
virtual void Prepare()
Definition Effect.hh:1883
virtual Point Index(float x, float y) const =0
virtual int AttribI(float x, float y, int id) const =0
virtual ~SurfaceIn3d()
Definition Effect.hh:1882
virtual unsigned int Color(float x, float y) const =0
virtual Vector Normal(float x, float y) const =0
virtual Point2d Texture(float x, float y) const =0
virtual float Attrib(float x, float y, int id) const =0
virtual float XSize() const =0
SwapIndexesArray(Array< I, Array< I2, T > * > &arr)
Definition Effect.hh:865
~SwapIndexesArray()
Definition Effect.hh:867
Array< I, T > * Index(I2 index) const
Definition Effect.hh:868
I2 Size() const
Definition Effect.hh:866
TestEffect(Render *render)
Definition Effect.hh:10490
bool Frame(float time)
Definition Effect.cc:1352
void PreCalc()
Definition Effect.hh:10854
TextureCommands(OpenGlCommands &cmds)
Definition Effect.hh:10853
void Execute()
Definition Effect.cc:489
Definition Effect.hh:4884
virtual ~TextureCoords()
Definition Effect.hh:4886
virtual Point2d TexCoord(int face, int point) const =0
virtual int Texture(int face) const =0
TextureElem2(FaceCollection &next, BufferRefReq &ref, TextureCoords &coords)
Definition Effect.hh:8014
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:8025
virtual void SetBox(Matrix b)
Definition Effect.hh:8018
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:8021
virtual int FaceTexture(int face) const
Definition Effect.hh:8061
void HeavyPrepare()
Definition Effect.hh:8017
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:8040
virtual void GenTexture(int num)
Definition Effect.hh:8049
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:8044
void Collect(CollectVisitor &vis)
Definition Effect.hh:8016
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:8031
virtual std::string name() const
Definition Effect.hh:8015
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:8036
virtual int NumTextures() const
Definition Effect.hh:8048
virtual bool has_texcoord() const
Definition Effect.hh:8029
virtual int NumPoints(int face) const
Definition Effect.hh:8020
virtual BufferRef TextureBuf(int num) const
Definition Effect.hh:8053
virtual int NumFaces() const
Definition Effect.hh:8019
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:7998
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:7990
void Collect(CollectVisitor &vis)
Definition Effect.hh:7971
virtual bool has_texcoord() const
Definition Effect.hh:7984
void HeavyPrepare()
Definition Effect.hh:7972
virtual int NumPoints(int face) const
Definition Effect.hh:7975
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:7976
virtual int NumFaces() const
Definition Effect.hh:7974
virtual void SetBox(Matrix b)
Definition Effect.hh:7973
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:7985
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:7980
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:7994
TextureElem(const BoxableFaceCollection &next, TextureCoords &coords)
Definition Effect.hh:7970
Definition Effect.hh:3149
int id
Definition Effect.hh:3151
int Index(int i) const
Definition Effect.hh:837
int Sum() const
Definition Effect.hh:838
int Size() const
Definition Effect.hh:836
ThreeInts(int a, int b, int c)
Definition Effect.hh:835
TitleEffect(Render *render)
Definition Effect.hh:10484
bool Frame(float time)
Definition Effect.cc:1341
bool has_texcoord() const
Definition Effect.hh:9983
bool has_normal() const
Definition Effect.hh:9974
virtual int NumPoints(int face) const
Definition Effect.hh:9957
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:9958
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:9998
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:9982
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:9984
virtual int NumFaces() const
Definition Effect.hh:9956
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:9997
Point Pos(float angle1, float angle2) const
Definition Effect.hh:10001
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:9975
TorusElem(int numfaces1, int numfaces2, Point center, Vector u_x, Vector u_y, float radius1, Vector uu_x, Vector uu_y, float radius2)
Definition Effect.hh:9950
virtual std::string name() const
Definition Effect.hh:9954
Definition Effect.hh:1651
Matrix Elem() const
Definition Effect.hh:1654
TranslateElement(Point p)
Definition Effect.hh:1653
TranslateToMatrixCurve(CurveIn3d &curve)
Definition Effect.hh:1663
float Size() const
Definition Effect.hh:1669
Matrix Index(float pos) const
Definition Effect.hh:1664
void Execute()
Definition Effect.cc:478
TransparencyCmds(OpenGlCommands &inner_cmds)
Definition Effect.hh:10816
void PreCalc()
Definition Effect.hh:10817
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:7421
TriElem(Point p1, Point p2, Point p3)
Definition Effect.hh:7400
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:7425
virtual void SetBox(Matrix b)
Definition Effect.hh:7403
virtual int NumFaces() const
Definition Effect.hh:7404
virtual std::string name() const
Definition Effect.hh:7401
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:7432
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:7415
virtual int NumPoints(int face) const
Definition Effect.hh:7405
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:7436
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:7408
virtual bool has_normal() const
Definition Effect.hh:7414
Point2d Index(int i) const
Definition Effect.hh:2816
TriPointCollection2d(Point2d p1, Point2d p2, Point2d p3)
Definition Effect.hh:2814
int Size() const
Definition Effect.hh:2815
Point Index(int i) const
Definition Effect.hh:2502
Triangle(Point p1, Point p2, Point p3)
Definition Effect.hh:2500
int Size() const
Definition Effect.hh:2501
virtual unsigned int Color(int index) const
Definition Effect.hh:4321
virtual int IndexCount() const
Definition Effect.hh:4356
virtual int AttribI(int index, int id) const
Definition Effect.hh:4346
virtual Point2d TexCoord(int index) const
Definition Effect.hh:4327
virtual Vector PointNormal(int index) const
Definition Effect.hh:4334
TrisToTris(const FaceCollection &coll)
Definition Effect.hh:4306
virtual int NumPoints() const
Definition Effect.hh:4311
virtual float Attrib(int index, int id) const
Definition Effect.hh:4340
virtual Point FacePoint(int index) const
Definition Effect.hh:4315
virtual int Index(int face, int point) const
Definition Effect.hh:4352
virtual int IndexToFace(int index) const
Definition Effect.hh:4360
virtual int NumFaces() const
Definition Effect.hh:4307
bool Frame(float time)
Definition Effect.cc:1125
TunnelEffect2(Render *render)
Definition Effect.hh:11112
void Init()
Definition Effect.cc:1120
TunnelEffect(Render *render)
Definition Effect.hh:10498
bool Frame(float time)
Definition Effect.cc:1084
int Size() const
Definition Effect.hh:825
TwoInts(int a, int b)
Definition Effect.hh:824
int Index(int i) const
Definition Effect.hh:826
int Sum() const
Definition Effect.hh:827
A a
Definition Effect.hh:167
bool is_a
Definition Effect.hh:165
Union(B b)
Definition Effect.hh:156
union Union::@026032061203250075374141105343172236003035312235 either
Union(const Union< A, B > &c)
Definition Effect.hh:158
Union(A a)
Definition Effect.hh:155
Union(A a, B b, bool is_a)
Definition Effect.hh:157
B b
Definition Effect.hh:168
virtual int Size() const
Definition Effect.hh:9725
virtual Matrix Index(int box) const
Definition Effect.hh:9726
UnitBox()
Definition Effect.hh:9720
UnitBox(Matrix m)
Definition Effect.hh:9724
VBOEffect(Render *r)
Definition Effect.cc:1581
~VBOEffect()
Definition Effect.cc:1603
void Init()
Definition Effect.cc:1589
bool Frame(float time)
Definition Effect.cc:1607
Definition Effect.hh:10525
virtual int StartRange(int obj) const =0
virtual int EndRange(int obj) const =0
virtual ~VBORanges()
Definition Effect.hh:10527
virtual int StartRangeIndex(int obj) const =0
virtual int NumObjects() const =0
virtual int EndRangeIndex(int obj) const =0
Definition Effect.cc:1968
Definition Effect.hh:10694
VBOState()
Definition Effect.cc:2003
friend void DrawVBO(int obj, VBOState &state, VBOUpdate u, const std::vector< Attrib > &attribs)
Definition Effect.cc:2541
friend void UpdateVBO(const FaceCollectionVBO &faces, int obj, VBOState &state, VBOUpdate u, const std::vector< Attrib > &attribs)
Definition Effect.cc:2085
~VBOState()
Definition Effect.cc:2033
virtual int EndRange(int obj) const
Definition Effect.hh:10666
virtual int NumObjects() const
Definition Effect.hh:10664
virtual int StartRange(int obj) const
Definition Effect.hh:10665
virtual int EndRangeIndex(int obj) const
Definition Effect.hh:10669
virtual void UpdateAttrib(int start, int end, float *array, int id) const
Definition Effect.hh:10622
virtual int IndexSize() const
Definition Effect.hh:10645
virtual void UpdateColorList(int start, int end, char *array) const
Definition Effect.hh:10608
virtual void UpdateNormalList(int start, int end, float *array) const
Definition Effect.hh:10583
virtual void UpdateAttribI(int start, int end, short *array, int id) const
Definition Effect.hh:10633
virtual int StartRangeIndex(int obj) const
Definition Effect.hh:10668
virtual void UpdateTextureCoordList(int start, int end, float *array) const
Definition Effect.hh:10596
virtual void UpdateVertexList(int start, int end, float *array) const
Definition Effect.hh:10568
virtual int NumPoints() const
Definition Effect.hh:10564
VBO(FaceCollectionTriWithObjects &o)
Definition Effect.hh:10563
virtual void UpdateIndexList(int start, int end, int *array) const
Definition Effect.hh:10646
Definition VectorTools.hh:119
float w
Definition VectorTools.hh:121
float y
Definition VectorTools.hh:121
float x
Definition VectorTools.hh:121
float z
Definition VectorTools.hh:121
Definition Effect.hh:1122
VectorArray(It beg, It end)
Definition Effect.hh:1126
void clear()
Definition Effect.hh:1138
void push_back(T t)
Definition Effect.hh:1131
virtual int Size() const
Definition Effect.hh:1127
const T * get_whole_array() const
Definition Effect.hh:1139
T & operator[](int index)
Definition Effect.hh:1130
VectorArray()
Definition Effect.hh:1124
T pop_back()
Definition Effect.hh:1132
virtual T Index(int index) const
Definition Effect.hh:1128
Definition Effect.hh:3010
int Size() const
Definition Effect.hh:3013
VectorCollectionConvert(const Array< int, Vector > &c2)
Definition Effect.hh:3012
Vector Index(int i) const
Definition Effect.hh:3014
Definition Effect.hh:3002
Vector Vectors(int index) const
Definition Effect.hh:3006
int NumVectors() const
Definition Effect.hh:3005
virtual ~VectorCollection()
Definition Effect.hh:3004
Definition Effect.hh:3032
Point2d Index(Point2d t) const
Definition Effect.hh:279
std::vector< Point2d > Inverse(Point2d k) const
Definition Effect.hh:284
VectorInvertableFunction2d(Vector2d vec)
Definition Effect.hh:278
Point Index(Vector v) const
Definition Effect.hh:298
Definition Effect.hh:4831
std::pair< Point, Point > Elem() const
Definition Effect.hh:4834
VectorPoints(const std::pair< Point, Vector > &vec)
Definition Effect.hh:4833
Definition VectorTools.hh:125
static float Angle(const Vector &aVec, const Vector &aVec2)
Definition VectorTools.cc:81
float Dist() const
Definition VectorTools.cc:141
float dy
Definition VectorTools.hh:268
static float DotProduct(const Vector &aVec, const Vector &aVec2)
Definition VectorTools.hh:185
static Vector CrossProduct(const Vector &aVec, const Vector &aVec2)
Definition VectorTools.hh:193
float dz
Definition VectorTools.hh:268
float dx
Definition VectorTools.hh:268
virtual int NumFaces() const
Definition Effect.hh:12081
virtual int FaceTexture(int face) const
Definition Effect.hh:12146
virtual int NumTextures() const
Definition Effect.hh:12141
virtual unsigned int Color(int face, int point) const
Definition Effect.hh:12122
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:12109
virtual int NumPoints(int face) const
Definition Effect.hh:12082
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:12096
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:12118
VertexArrayFaceCollection(float *v_array, int v_size, float *n_array, int n_size, unsigned int *c_array, int c_size, float *tex_array, int tex_size, float **attrib_array, int a_size1, int a_size2)
Definition Effect.hh:12068
virtual Point2d TexCoord(int face, int point) const
Definition Effect.hh:12129
virtual void GenTexture(int num)
Definition Effect.hh:12142
virtual BufferRef TextureBuf(int num) const
Definition Effect.hh:12143
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:12083
bool Frame(float time)
Definition Effect.cc:2916
WalkCubeEffect(Render *render)
Definition Effect.hh:11122
float Index(float x, float y) const
Definition Effect.hh:7748
Water(float time)
Definition Effect.hh:7736
Definition Effect.hh:3078
int Size() const
Definition Effect.hh:3090
float Index(int x) const
Definition Effect.hh:3091
WeightedSampling(FloatArray &weights, float start)
Definition Effect.hh:3080
XPA(float c)
Definition Effect.hh:10340
float Index(float x) const
Definition Effect.hh:10341
std::vector< float > Inverse(float y) const
Definition Effect.hh:10342
float Size() const
Definition Effect.hh:1593
Matrix Index(float x) const
Definition Effect.hh:1594
XRotate(float angle)
Definition Effect.hh:1592
Definition Equalizer.hh:1800
Definition Equalizer.hh:1807
frame( $arr, $width, $height, $data, $i, $homepage, $noheaders, $seamless, $transparent)
Definition emscripten_frame.php:18
border radius
Definition gameapi_example.php:45
let delta_y
Definition gameapi_example.php:63
background color
Definition gameapi_example.php:46
P g(unsigned int c, EveryApi &ev)
Definition test.cpp:19
PT func2(int face, int point, EveryApi &ev)
Definition test.cpp:27
convert($d)
Definition mesh_api.php:35
d
Definition meshpage.php:3895
n< br > font size
Definition meshpage.php:3536
store
Definition meshpage_bootstrap.php:1758
Object filter(Container c, Function f)
Takes elements from Container c that match function f, return them.
void equal(Module &m)
Definition operators.hpp:102
size_t count(const T &t_target, const typename T::key_type &t_key)
Definition bootstrap_stl.hpp:104
double f(const std::string &, double, bool) noexcept
Definition profile_cpp_calls_2.cpp:4
BM grid(EveryApi &ev, int sx, int sy, int cell_x, int cell_y)
Definition test.cpp:32
int f2(char c)
Definition test.cpp:51
Definition Shader.hh:1500
float start_y
Definition EffectI.hh:59
float end_z
Definition EffectI.hh:62
float start_x
Definition EffectI.hh:57
float end_x
Definition EffectI.hh:58
float start_z
Definition EffectI.hh:61
float end_y
Definition EffectI.hh:60
Definition Effect.hh:6171
int face
Definition Effect.hh:6173
int object
Definition Effect.hh:6172
unsigned int * buffer
Definition Buffer.hh:33
static BufferRef NewBuffer(int width, int height)
Definition Buffer.cc:36
Definition Effect.hh:10222
float distance
Definition Effect.hh:10223
float pos_in_curve
Definition Effect.hh:10225
Point pos
Definition Effect.hh:10224
Definition VectorTools.hh:755
Vector u_y
Definition VectorTools.hh:762
Point center
Definition VectorTools.hh:761
Vector u_x
Definition VectorTools.hh:762
Vector u_z
Definition VectorTools.hh:762
Definition Effect.hh:7452
Point p122
Definition Effect.hh:7456
Point p212
Definition Effect.hh:7458
Point p112
Definition Effect.hh:7454
Point p111
Definition Effect.hh:7453
Point p222
Definition Effect.hh:7460
Point p221
Definition Effect.hh:7459
Point p121
Definition Effect.hh:7455
Point p211
Definition Effect.hh:7457
Definition Effect.hh:11574
int point
Definition Effect.hh:11574
int face
Definition Effect.hh:11574
int framenum
Definition Effect.hh:11574
friend bool operator<(const Key &k1, const Key &k2)
Definition Effect.hh:11575
Definition EffectI.hh:171
unsigned char * indices_char
Definition EffectI.hh:175
unsigned int * color
Definition EffectI.hh:182
int numfaces
Definition EffectI.hh:172
Point * texcoords
Definition EffectI.hh:183
Vector * pointnormal
Definition EffectI.hh:181
unsigned short * indices_short
Definition EffectI.hh:176
VEC4 * joints
Definition EffectI.hh:184
unsigned int * indices_int
Definition EffectI.hh:177
Point * facepoint2
Definition EffectI.hh:180
VEC4 * weights
Definition EffectI.hh:185
Point * facepoint
Definition EffectI.hh:179
int numvertices
Definition EffectI.hh:173
Definition Effect.hh:5866
int point
Definition Effect.hh:5868
int face
Definition Effect.hh:5867
friend bool operator<(const FaceIndexStruct &i1, const FaceIndexStruct &i2)
Definition Effect.hh:5869
Definition Effect.hh:5855
int attrib_id[10]
Definition Effect.hh:5859
Vector normal
Definition Effect.hh:5857
int attribI_id[10]
Definition Effect.hh:5860
float attrib[10]
Definition Effect.hh:5858
Point2d tex_coord
Definition Effect.hh:5862
unsigned int color
Definition Effect.hh:5861
Point vec_point
Definition Effect.hh:5856
Definition Effect.hh:1172
int difference_type
Definition Effect.hh:1186
void operator++()
Definition Effect.hh:1174
K operator*() const
Definition Effect.hh:1187
const_iterator(const Array< T, K > &arr, T index)
Definition Effect.hh:1173
int & reference
Definition Effect.hh:1184
friend int operator-(const const_iterator &i, const const_iterator &i2)
Definition Effect.hh:1178
T index
Definition Effect.hh:1189
const Array< T, K > & arr
Definition Effect.hh:1188
int pointer
Definition Effect.hh:1183
K value_type
Definition Effect.hh:1185
void operator-=(int i)
Definition Effect.hh:1177
std::random_access_iterator_tag iterator_category
Definition Effect.hh:1182
void operator+=(int i)
Definition Effect.hh:1176
void operator--()
Definition Effect.hh:1175
Definition FreeType2.cc:432
Definition GameApi_low.hh:812
Definition GameApi_low.hh:679
Definition GraphI.hh:1502
Definition GraphI.hh:1562
virtual void SetBox(Matrix b)
Definition Effect.hh:8325
virtual bool Inside(Point p) const
Definition Effect.hh:8348
virtual int NumFaces() const
Definition Effect.hh:8326
Move(BoxableFaceCollection &coll, float x, float y, float z)
Definition Effect.hh:8324
int y
Definition test.cpp:14
virtual Vector PointNormal(int face, int point) const
Definition Effect.hh:8335
virtual int AttribI(int face, int point, int id) const
Definition Effect.hh:8343
virtual float Attrib(int face, int point, int id) const
Definition Effect.hh:8339
virtual Point FacePoint(int face, int point) const
Definition Effect.hh:8328
Move(BoxableFaceCollection &coll, Vector v)
Definition Effect.hh:8323
int x
Definition test.cpp:14
virtual int NumPoints(int face) const
Definition Effect.hh:8327
Definition Effect.hh:5615
int object
Definition Effect.hh:5617
Matrix matrix
Definition Effect.hh:5616
friend std::ostream & operator<<(std::ostream &o, const ObjectData &od)
Definition Effect.cc:49
ShaderParameters * params
Definition Effect.hh:5618
Definition VectorTools.hh:910
float x
Definition VectorTools.hh:911
float y
Definition VectorTools.hh:911
static Point2d FromVector(const Vector2d &v)
Definition VectorTools.hh:1035
float x
Definition Parser.cc:60
float y
Definition Parser.cc:60
float z
Definition Parser.cc:60
Definition Effect.hh:11531
int framecount
Definition Effect.hh:11534
int vertex_size
Definition Effect.hh:11533
std::vector< std::pair< int, int > > vec
Definition Effect.hh:11532
Definition Effect.hh:3761
virtual Point FacePoint(int index) const
Definition Effect.hh:3765
virtual int NumPoints() const
Definition Effect.hh:3764
virtual float Attrib(int index, int id) const
Definition Effect.hh:3770
virtual Vector PointNormal(int index) const
Definition Effect.hh:3766
virtual unsigned int Color(int index) const
Definition Effect.hh:3767
virtual int IndexToFace(int index) const
Definition Effect.hh:3774
Arr(const FaceCollectionTri &tri, const Array< int, const FaceCollectionTri * > &arr, int t)
Definition Effect.hh:3762
virtual int NumFaces() const
Definition Effect.hh:3763
virtual Point2d TexCoord(int index) const
Definition Effect.hh:3768
virtual int Index(int face, int point) const
Definition Effect.hh:3772
virtual int IndexCount() const
Definition Effect.hh:3773
virtual int AttribI(int index, int id) const
Definition Effect.hh:3771
I Size() const
Definition Effect.hh:877
Array< I, Array< I2, T > * > & arr
Definition Effect.hh:882
T Index(I i) const
Definition Effect.hh:878
InnerArray(Array< I, Array< I2, T > * > &arr, I2 index)
Definition Effect.hh:876
I2 index
Definition Effect.hh:883
Definition VectorTools.hh:749
Definition VectorTools.hh:972
static Vector2d FromPoint(const Point2d &p)
Definition VectorTools.hh:991
num
Definition view.php:2821