GameApi 28
Library used by GameApi Builder tool
Loading...
Searching...
No Matches
GraphI.hh
Go to the documentation of this file.
1
2#ifndef GRAPHI_HH
3#define GRAPHI_HH
4
5#include <vector>
6#include <utility>
7#include <functional>
8#include <cstdint>
9#include "VectorTools.hh"
10#include "Buffer.hh"
11#include <memory>
12
13#ifdef EMSCRIPTEN
14#include <emscripten/heap.h>
15#endif
16
17
18#ifdef WINDOWS
19#ifdef GAMEAPI_EXPORTS
20#define IMPORT __declspec(dllexport)
21#else
22#define IMPORT __declspec(dllimport)
23#endif
24#define EXPORT
25#else
26
27#ifdef GAMEAPI_EXPORTS
28#define IMPORT __attribute__((visibility("default")))
29#else
30#define IMPORT
31#endif
32#define EXPORT
33#endif
34
35
36#ifndef GAMEAPI_HH
37#ifndef PAT_DEFINED
38#define PAT_DEFINED 1
39namespace GameApi {
40#define MAC(name) \
41 struct name { int id;\
42 name(const name &i) : id(i.id) { } \
43 name(const volatile name &i) : id(i.id) { } \
44 name() : id(-1) { } \
45 name(int i) : id(i) { }\
46 name &operator=(const name &i) { id=i.id; return *this; } \
47 volatile name &operator=(volatile name &i) volatile { id=i.id; return *this; } \
48 name* clone() const { if (id!=-1) { return new name(id); } return 0; } \
49 };
50 MAC(PAT)
51
52};
53#endif
54#endif
55
56namespace GameApi
57{
58 class Env;
59};
60
61
63{
64public:
65 virtual void set_cached(std::string url)=0;
66 virtual bool is_cached(std::string url) const=0;
67};
69
71{
72public:
73 virtual ~BlockBase() { }
74 virtual void del()=0;
75 virtual bool compare(void *ptr) const=0;
76};
77
78
79struct Block2
80{
81 std::vector<BlockBase*> vec;
82};
83
84
85
86struct G_BLOCK
87{
88std::vector<Block2*> g_blocks;
89
91 int s = g_blocks.size();
92 for(int i=0;i<s;i++) {
93 delete g_blocks[i];
94 }
95 }
96};
97
98struct Rest {
99 std::vector<BlockBase*> g_rest;
100 //std::vector<std::shared_ptr<void> > g_rest;
101 template<class T>
103 {
104 int s = g_rest.size();
105 for(int i=0;i<s;i++) {
106 //T *ptr2 = g_rest[i].get();
107 if (g_rest[i]->compare(ptr)) {
108 g_rest[i]->del();
109 //g_rest[i].reset();
110 }
111 }
112
113 }
115 {
116 int s = g_rest.size();
117 // doesnt work because global destructors have already been ran
118 // and installprogress uses global variables.
119 //InstallProgress(666, "cleanup", 15);
120 for(int i=0;i<s;i++)
121 {
122 //if (i%10==0) {
123 // ProgressBar(666,i*15/s,15,"cleanup");
124 //}
125 g_rest[i]->del();
126 //g_rest[i].reset();
127 }
128 //ProgressBar(666,15,15,"cleanup");
129 //std::cout << std::endl;
130
131 int s2 = g_rest.size();
132 for(int i=0;i<s2;i++)
133 {
134 delete g_rest[i];
135 g_rest[i]=0;
136 }
137 g_rest.clear();
138 }
139};
140
141
142extern G_BLOCK g_blocks;
143extern Rest g_rest;
144
145void recreate_block(int id);
146
147
148template<class T> class BlockImpl : public BlockBase
149{
150public:
151 BlockImpl(T *ptr) : ptr(ptr) { }
152 void del() { delete ptr; ptr = 0; }
153 bool compare(void *p) const { return (T*)p==ptr; }
154 virtual ~BlockImpl() { delete ptr; ptr = 0; }
155private:
156 T *ptr;
157};
158
159extern int g_current_block;
160
161//extern pthread_mutex_t g_block_mutex;
162//extern bool g_mutex_firsttime;
163
164
165template<class T>
166void add_b(T *ptr)
167{
168 /*
169 if (g_mutex_firsttime)
170 {
171 pthread_mutex_init(&g_block_mutex, NULL);
172 g_mutex_firsttime=false;
173 }
174 pthread_mutex_lock(&g_block_mutex);
175 */
176
177 if ((g_current_block>=0 && g_current_block<g_blocks.g_blocks.size()) && !g_blocks.g_blocks[g_current_block])
178 {
180 }
181 if (g_current_block>=0 && g_current_block<g_blocks.g_blocks.size() && g_blocks.g_blocks[g_current_block])
182 g_blocks.g_blocks[g_current_block]->vec.push_back(new BlockImpl(ptr));
183 else
184 g_rest.g_rest.push_back(new BlockImpl(ptr)); // these will never be released
185
186 //pthread_mutex_unlock(&g_block_mutex);
187}
188
189
191{
192public:
194 virtual int get_size() const=0;
195 virtual std::string get_label(int i) const=0;
196 virtual std::string get_str_ch(int i) const=0;
197 virtual char get_ch(int i) const=0;
198
199 virtual std::string convert_labels_to_chars(std::string str) const=0;
200 virtual int find_last_location(std::string str) const=0;
201 virtual bool insert_label_to_string(std::string *str, char ch) const=0;
202};
203
205{
206public:
207 virtual GltfMaterialParams *clone() const=0;
208 virtual void set_prim_i(int i)=0;
209 virtual int prim_i() const=0;
210 virtual void set_material_id(int id)=0;
211 virtual int material_id() const=0;
212 virtual float mix() const=0;
213 virtual float self_mult() const=0;
214 virtual float rest_mult() const=0;
215 virtual Vector light_dir() const=0;
216 virtual bool emissive() const=0;
217 virtual int lod_level() const=0;
218 virtual bool transparent() const=0;
219 virtual bool acesfilm() const=0;
220 virtual int animation() const=0;
221 virtual int border_width() const=0;
222 virtual unsigned int border_color() const=0;
223 virtual int frame_skip() const=0;
224 virtual int mode() const=0;
225};
227{
228public:
230 int material_id,
231 float mix,
232 float self_mult,
233 float rest_mult,
235 bool emissive,
236 int lod_level,
237 bool transparent,
238 bool acesfilm,
239 int animation,
240 float border_width,
241 unsigned int border_color,
242 int frame_skip,
243 int mode)
244 : m_prim_i(prim_i),
245 m_material_id(material_id),
246 m_mix(mix),
247 m_self_mult(self_mult),
248 m_rest_mult(rest_mult),
249 m_light_dir(light_dir),
250 m_emissive(emissive),
251 m_lod_level(lod_level),
252 m_transparent(transparent),
253 m_acesfilm(acesfilm),
254 m_animation(animation),
255 m_border_width(border_width),
256 m_border_color(border_color),
257 m_frame_skip(frame_skip),
258 m_mode(mode) { }
259 virtual void set_prim_i(int i) { m_prim_i=i; }
260 virtual int prim_i() const { return m_prim_i; }
261 virtual void set_material_id(int id) { m_material_id=id; }
262 virtual int material_id() const { return m_material_id; }
263 virtual float mix() const { return m_mix; }
264 virtual float self_mult() const { return m_self_mult; }
265 virtual float rest_mult() const { return m_rest_mult; }
266 virtual Vector light_dir() const { return m_light_dir; }
267 virtual bool emissive() const { return m_emissive; }
268 virtual int lod_level() const { return m_lod_level; }
269 virtual bool transparent() const { return m_transparent; }
270 virtual bool acesfilm() const { return m_acesfilm; }
271 virtual int animation() const { return m_animation; }
272 virtual int border_width() const { return m_border_width; }
273 virtual unsigned int border_color() const { return m_border_color; }
274 virtual int frame_skip() const { return m_frame_skip; }
275 virtual int mode() const { return m_mode; }
276 virtual GltfMaterialParams *clone() const
277 {
278 return new GltfMaterialParams_impl(m_prim_i,
279 m_material_id,
280 m_mix,
281 m_self_mult,
282 m_rest_mult,
283 m_light_dir,
284 m_emissive,
285 m_lod_level,
286 m_transparent,
287 m_acesfilm,
288 m_animation,
289 m_border_width,
290 m_border_color,
291 m_frame_skip,
292 m_mode);
293 }
294private:
295 int m_prim_i;
296 int m_material_id;
297 float m_mix;
298 float m_self_mult;
299 float m_rest_mult;
300 Vector m_light_dir;
301 bool m_emissive;
302 int m_lod_level;
303 bool m_transparent;
304 bool m_acesfilm;
305 int m_animation;
306 int m_border_width;
307 unsigned int m_border_color;
308 int m_frame_skip;
309 int m_mode;
310};
311
312class Path // PAT -id.
313{
314public:
315 //virtual std::string name() const =0;
316 //virtual Path* clone() const=0;
317 virtual ~Path() { }
318
319 virtual std::string get_path() const=0;
320 virtual std::string get_default_path() const=0;
321
322 virtual bool is_user_input() const=0;
323 virtual bool is_linux_path() const=0;
324 virtual bool is_windows_path() const=0;
325 virtual bool is_normal_url() const=0;
326 virtual bool is_file_url() const=0;
327 virtual bool is_path_with_unresolved_replaces() const=0;
328 virtual bool is_url_with_unresolved_replaces() const=0;
329
330 virtual bool is_default_set() const=0;
331
332 virtual bool is_def_user_input() const=0;
333 virtual bool is_def_linux_path() const=0;
334 virtual bool is_def_windows_path() const=0;
335 virtual bool is_def_normal_url() const=0;
336 virtual bool is_def_file_url() const=0;
339
340};
341
342class PathHandler
343{
344public:
345 struct PathConfig
346 {
347 bool user_input=false;
348 bool linux_path=false;
349 bool windows_path=false;
350 bool normal_url=false;
351 bool file_url=false;
354 };
356 IMPORT PathConfig conf_linux(bool has_unresolved_replaces);
357 IMPORT PathConfig conf_windows(bool has_unresolved_replaces);
358 IMPORT PathConfig conf_url(bool has_unresolved_replaces);
359 IMPORT PathConfig conf_file_url(bool has_unresolved_replaces);
360
408
409 struct SituationConfig
410 {
412 };
413
415 IMPORT GameApi::PAT default_path();
416 IMPORT GameApi::PAT create_path_from_source(GameApi::Env &e, std::string val, const PathConfig &pc);
417 IMPORT GameApi::PAT set_possible_default_path(GameApi::Env &e, GameApi::PAT p, std::string def, const PathConfig &pc);
418 IMPORT GameApi::PAT convert_path(GameApi::Env &e, GameApi::PAT old, const PathConfig &pc);
419 IMPORT std::string use_path(GameApi::Env &e, GameApi::PAT val, const SituationConfig &sc);
420 IMPORT std::string use_path2(GameApi::Env &e, GameApi::PAT val, Situation s)
421 {
422 return use_path(e,val,situ(s));
423 }
424};
426
427inline std::string use_path3(GameApi::Env &e, GameApi::PAT val, PathHandler::Situation s)
428{
429 return g_path_handler->use_path2(e,val,s);
430}
431
432
433std::string use_path4(GameApi::PAT pat);
434
435
437{
438public:
439 virtual ~ByteStore() { }
440 virtual int Size() const=0;
441 virtual unsigned char &Get(int i) const=0;
442};
443
444
445void stackTrace();
446
447template<class T>
448class GameApiAllocator : public std::allocator<T>
449{
450#if 1
451public:
452
453 using std::allocator<T>::allocator;
454 static uint32_t m_free_mem;
455 static uint32_t m_changed_mem;
456 static uint32_t m_used_mem;
457
458 typedef T* pointer;
459 typedef const T* const_pointer;
460 typedef void* void_pointer;
461 typedef const void* const_void_pointer;
462 typedef T value_type;
463 typedef uint32_t size_type;
464 typedef int32_t difference_type;
465 void print() const
466 {
467 }
468
469
470 // this construct is optimization for vector initialization.
471 // it fails to initialize to zero.
472
473
474
475 template<class U, typename... Args>
476 void construct(U *p, Args&&... args) {
477 if constexpr (sizeof...(Args) == 0) {
478 //if constexpr (!std::is_trivially_default_constructible_v<U>) {
479 ::new (static_cast<void*>(p)) U;
480 // }
481 } else {
482 ::new (static_cast<void*>(p)) U(std::forward<Args>(args)...);
483 }
484 }
485
486
487
488 template<typename U>
489 void destroy(U* p) {
490 p->~U();
491 }
492
493 // this #if 0 was tried many times, but seems to break stuff.
494#if 0
495 T* allocate(uint32_t sz) {
496 if (sz==0) return nullptr;
497 //if (sz*sizeof(T)>=1024000) {
498 // printf("Allocator large alloc: %ld\n",(long)sz*sizeof(T));
499 // stackTrace();
500 //}
501
502#ifdef EMSCRIPTEN
503 void *p = emscripten_builtin_malloc(sz*sizeof(T));
504 if (!p) return nullptr;
505 return static_cast<T*>(p);
506#else
507 void *p = malloc(sz*sizeof(T));
508 if (!p) return nullptr;
509 return (T*)p;
510#endif
511 }
512 void deallocate(T *ptr, uint32_t sz) {
513#if 0
514 *free_mem+=sz*sizeof(T);
515 *changed_mem+=sz*sizeof(T);
516 print();
517 *used_mem-=sz*sizeof(T);
518#endif
519#ifdef EMSCRIPTEN
520 if (ptr) emscripten_builtin_free(ptr);
521#else
522 free((void*)ptr);
523#endif
524 }
525#if 0
526 uint32_t max_size() const { if (free_mem) return *free_mem; return 0x00ff0000; }
527 friend bool operator==(const GameApiAllocator &a1, const GameApiAllocator &a2) { return true; }
528 friend bool operator!=(const GameApiAllocator &a1, const GameApiAllocator &a2) { return false; }
529 GameApiAllocator() : free_mem(&m_free_mem), changed_mem(&m_changed_mem),used_mem(&m_used_mem) { }
530 GameApiAllocator(const GameApiAllocator &a) : free_mem(a.free_mem), changed_mem(&m_changed_mem), used_mem(&m_used_mem) { }
531 GameApiAllocator &operator=(const GameApiAllocator &a)
532 {
533 free_mem = a.free_mem;
534 changed_mem = a.changed_mem;
535 used_mem = a.used_mem;
536 return *this;
537 }
538#endif
539#endif
540private:
541 uint32_t *free_mem;
542 uint32_t *changed_mem;
543 uint32_t *used_mem;
544#endif
545};
546
547#if 1
548template<class T>
549uint32_t GameApiAllocator<T>::m_free_mem = std::numeric_limits<uint32_t>::max();
550template<class T>
552template<class T>
554#endif
555
556#define NOT_REDEFINE_ALLOCATOR 1
557
558#ifndef TINYGLTF_IMPLEMENTATION
559#include "tiny_gltf.h"
560#endif
561
562#include "GameApi_low.hh"
563
564template<class T, class K> class Array;
565
566
567namespace GameApi
568{
569 struct EveryApi;
570 struct FloatExprEnv { std::string name; float value; };
571 struct IntExprEnv { std::string name; int value; };
572 struct BoolExprEnv { std::string name; bool value; };
573 struct ColorExprEnv { std::string name; Color value; };
574 struct PointExprEnv { std::string name; Point value; };
575
576 struct ExprEnv
577 {
578 std::vector<FloatExprEnv> float_env;
579 std::vector<IntExprEnv> int_env;
580 std::vector<BoolExprEnv> bool_env;
581 std::vector<ColorExprEnv> color_env;
582 std::vector<PointExprEnv> point_env;
583 };
584
585};
586
587
588
589
590
599
600
602{
603public:
604 virtual ~Pipeline() { }
605 virtual void add_matrix(int id, Matrix m)=0;
606 virtual void clear()=0;
607 virtual Matrix get_matrix(int id) const=0;
608};
609
610class CollectVisitor;
612{
613public:
614 virtual ~CollectInterface() { }
615 virtual void Collect(CollectVisitor &vis)=0;
616 virtual int NumBlocks() const { return 1; }
617 virtual void HeavyPrepare()=0;
618 virtual void FirstFrame() { }
619};
620
622{
623public:
624 virtual ~CollectVisitor() { }
625 virtual void register_obj(CollectInterface *i)=0;
627};
628
630{
631public:
632 virtual ~FloatRay() { }
633 virtual Point Ray(float x) const=0;
634};
635
637{
638public:
639 virtual ~FloatScene() { }
640 virtual void Collect(CollectVisitor &vis)=0;
641 virtual void HeavyPrepare()=0;
642 virtual void Prepare()=0;
643
644 virtual float Field(Point p) const=0;
645 virtual Point execute(float alfa, float beta, bool &found, Point center, float radius, int maxiter, float c) const=0;
646 virtual unsigned int BaseColor(Point p) const=0;
647 virtual unsigned int MetalRoughnessColor(Point p) const=0;
648 virtual unsigned int NormalColor(Point p) const=0;
649 virtual unsigned int OcculsionColor(Point p) const=0;
650 virtual unsigned int EmissiveColor(Point p) const=0;
651 virtual unsigned int SheenColor(Point p) const=0;
652 virtual unsigned int SpecGlossiColor(Point p) const=0;
653 virtual unsigned int DiffuseColor(Point p) const=0;
654};
655
656
657class OGLVisitor;
659{
660public:
661 OpenGlNode(OGLVisitor &vis);
662 virtual ~OpenGlNode() { }
663 virtual void Prepare()=0;
664 virtual void Render()=0;
665};
667{
668public:
669 virtual ~OGLVisitor() { }
670 virtual void register_ogl(OpenGlNode *n)=0;
671};
673
674namespace GameApi
675{
676
677
679{
680public:
682 virtual int Size() const=0;
683 virtual Point Pos(int i) const=0;
684 virtual Vector Normal(int i) const=0;
685 //virtual float radius(int i) const=0;
686 virtual float Percentage(int i) const=0;
687};
688
690{
691public:
692 virtual ~ASyncVec() { }
693 virtual const unsigned char &operator[](int i) const=0;
694 virtual int size() const=0;
695 virtual const unsigned char *begin() const=0;
696 virtual const unsigned char *end() const=0;
697 virtual void del()=0;
698};
699}
700
701struct Quad
702{
704};
705struct Tex
706{
708};
710{
712};
714{
716};
717
718
719
720template<class C>
722{ // these use scanline conversion
723public:
724 virtual ~SimpleShape() { }
725 virtual int SizeY() const=0;
726 virtual int NumEdges(int y) const=0;
727 virtual float Edge(int y, int edge) const=0;
728 virtual C EdgeLeftSide(int y, int edge) const=0;
729 virtual C EdgeRightSide(int y, int edge) const=0;
730};
731template<class C, class I>
733{
734public:
735 virtual ~Filler() { }
736 virtual C Interpolate(I pos) const=0;
737};
738
739template<class C>
740class LineShape : public SimpleShape<C>
741{
742public:
743 LineShape(int sizey, Point2d pp1, Point2d pp2, C left, C right) : sizey(sizey),pp1(pp1), pp2(pp2),left(left), right(right) { }
744 int SizeY() const {return sizey;}
745 int NumEdges(int y) const
746 {
747 return 1;
748 }
749 float Edge(int y, int edge) const
750 {
751 Point2d p1 = { 0.0f, float(y) };
752 Point2d p2 = { 100.0f, float(y) };
753 Point2d p3 = pp1;
754 Point2d p4 = pp2;
755
756 float p_x = P_x(p1,p2,p3,p4);
757 return p_x;
758 }
759
760 float P_x(Point2d p1, Point2d p2, Point2d p3, Point2d p4)
761 {
762 return det(det(p1.x,p1.y,p2.x,p2.y), det(p1.x,1.0,p2.x,1.0),
763 det(p3.x,p3.y,p4.x,p4.y), det(p3.x,1.0,p4.x,1.0)) /
764 det(det(p1.x,1.0,p2.x,1.0), det(p1.y,1.0,p2.y,1.0),
765 det(p3.x,1.0,p4.x,1.0), det(p3.y,1.0,p4.y,1.0));
766 }
767 /*
768 float P_y(Point2d p1, Point2d p2, Point2d p3, Point2d p4)
769 {
770 return det(det(p1.x,p1.y,p2.x,p2.y), det(p1.y,1.0,p2.y,1.0),
771 det(p3.x,p3.y,p4.x,p4.y), det(p3.y,1.0,p4.y,1.0)) /
772 det(det(p1.x,1.0,p2.x,1.0), det(p1.y,1.0,p2.y,1.0),
773 det(p3.x,1.0,p4.x,1.0), det(p3.y,1.0,p4.y,1.0));
774 }
775 */
776 float det(float a, float b, float c, float d)
777 {
778 return a*d-b*c;
779 }
780 C EdgeLeftSide(int y, int edge) const { return left; }
781 C EdgeRightSide(int y, int edge) const { return right; }
782private:
783 int sizey;
784 Point2d pp1,pp2;
785 C left,right;
786};
787
788
789// This is meant for supporting derivative
790template<class I, class T>
792{
793public:
794 virtual ~DFunction() { }
795 virtual T DIndex(I i) const=0;
796};
797
798
799
800
801
802
803
804
805
807{
808public:
809 virtual ~CompactBitmap() { }
810
811};
812
813template<class AllocData, class T>
815{
816public:
817 virtual ~LazyAlloc() { }
818 virtual void Alloc(AllocData ad)=0;
819 virtual void Destroy()=0;
820 virtual bool ValueAvailable() const=0;
821 virtual T Value() const=0;
822};
823
824template<class C>
826{
827public:
828 virtual int SizeX() const=0;
829 virtual int SizeY() const=0;
830 virtual C Map(int x, int y) const=0;
831 virtual void Prepare()=0;
832 virtual bool ReadyToPrepare() const { return true; }
833 virtual ~Bitmap() { }
834
835 virtual bool IsDirectGltfImage() const { return false; }
836
837 virtual bool HasBatchMap() const { return false; }
838 virtual BufferRef BatchMap(int start_x, int end_x, int start_y, int end_y) const
839 {
841 return ref;
842 }
843};
844
846{
847public:
848 virtual ~MemoryBlock() { }
849 virtual void Prepare()=0;
850 virtual unsigned char *buffer() const=0;
851 virtual int size_in_bytes() const=0;
852};
853
855{
856public:
857 virtual ~UrlMemoryMap() { }
858 virtual void Prepare()=0;
859 virtual int size() const=0;
860 virtual std::string get_url(int i) const=0;
861 virtual MemoryBlock *get_block(std::string url) const=0;
862};
863
865{
866public:
867 virtual ~VertexArray() { }
868 virtual void Prepare()=0;
870 virtual MemoryBlock *quad_polys() =0;
871 virtual MemoryBlock *poly_polys() =0;
872 virtual MemoryBlock *tri_polys2() =0;
875
879
880 virtual MemoryBlock *tri_color()=0;
883
887};
888
889template<class C>
891{
892public:
893 virtual int Size() const=0;
894 virtual int SizeX(int i) const=0;
895 virtual int SizeY(int i) const=0;
896 virtual C Map(int i, int x, int y) const=0;
897 virtual ~BitmapArray2() { }
898};
899
900
904
905 struct PosSpec
906 {
907 int x,y,z;
908 };
909 struct SizeSpec
910 {
911 int sx,sy,sz;
912 friend bool operator==(const SizeSpec &s1, const SizeSpec &s2)
913 {
914 return s1.sx==s2.sx &&
915 s1.sy==s2.sy &&
916 s1.sz==s2.sz;
917 }
918 };
920 {
921 unsigned int color;
923 unsigned int border_color;
924 friend bool operator==(const ShapeSpec &c1, const ShapeSpec &c2)
925 {
926 return
927 c1.color == c2.color &&
928 fabs(c1.border_width - c2.border_width) <0.0001 &&
929 c1.border_color == c2.border_color;
930 }
931 };
933 {
936 friend bool operator==(const ShapeSizeSpec &c1, const ShapeSizeSpec &c2)
937 {
938 return c1.size == c2.size && c1.shape==c2.shape;
939 }
940 };
942 {
943 int id;
944 };
945
946 struct ElemSpec
947 {
952 };
953 struct CubeSpec
954 {
956
957 friend bool operator==(const CubeSpec &c1, const CubeSpec &c2)
958 {
959 return c1.shapesize == c2.shapesize;
960 }
961 };
962
963PosSpec opt_get_pos(int x, int y, int z);
964SizeSpec opt_get_size(int sx, int sy, int sz);
965ShapeSpec opt_get_shape(unsigned int color, float border_width, unsigned int border_color);
968
969
971{
972public:
973 std::string path;
974};
975
977{
978 unsigned int argb;
979 friend bool operator==(const OctTreeColor &c1, const OctTreeColor &c2) { return c1.argb==c2.argb; }
980};
981
983{
984public:
988 bool is_leaf = false;
989};
990
992{
993public:
996};
997
999{
1000public:
1002};
1003
1005{
1009
1011};
1012
1013#if 0
1014
1015
1016struct LoadInfoSpec
1017{
1018 std::string url; // encode model num into ?m=1
1019 float x,y,z; // instantiated location in the world
1020 float sx,sy,sz; // bounds in the world
1021 float ex,ey,ez; // bounds in the world
1022};
1023
1024
1025
1026class LoadImpl
1027{
1028public:
1029 virtual ~LoadImpl() { }
1030 virtual std::string file_extension() const=0;
1031 virtual bool use_this_impl(std::string url) const=0;
1032 virtual MainLoopItem *load(std::string url, std::vector<std::shared_ptr<void> > &del_vec)=0;
1033};
1034
1035struct LoadInfoSpec
1036{
1037 int type;
1038 int x,y,z;
1039 std::string vox_url;
1040 int model;
1041 Material *material;
1042 MainLoopItem *loaded_info;
1043 std::vector<std::shared_ptr<void> > deleter;
1044}
1045
1046struct WorldBlockSpec
1047{
1048 int start_x, end_x;
1049 int start_y, end_y;
1050 int start_z, end_z;
1051 std::vector<LoadInfoSpec> vec;
1052};
1053
1054class OptVoxelWorld : public CollectInterface
1055{
1056public:
1057 virtual ~OptVoxelWorld() { }
1058 virtual void Prepare()=0;
1059 virtual void Collect(CollectVisitor &vis)=0;
1060 virtual void HeavyPrepare()=0;
1061
1062 virtual int NumBlocks() const=0;
1063 virtual WorldBlockSpec Block(int b) const=0;
1064
1065 virtual void load_block(int b)=0;
1066 virtual void unload_block(int b)=0;
1067};
1068#endif
1069
1071{
1072public:
1073 virtual ~OptVoxel() { }
1074 virtual void Prepare()=0;
1075 virtual void Collect(CollectVisitor &vis)=0;
1076 virtual void HeavyPrepare()=0;
1077
1078 // the grid
1079 virtual SizeSpec Size() const=0;
1080
1081 // the world
1082 virtual int ShapeSize() const=0;
1083 virtual ShapeSpec WorldShapeIndex(int shi) const=0;
1084
1085 virtual int SizeSize() const=0;
1086 virtual SizeSpec WorldSizeIndex(int szi) const=0;
1087
1088 virtual int WorldSize() const=0;
1089 virtual ElemSpec WorldIndex(int w) const=0;
1090};
1091
1092class FaceCollection;
1093
1095{
1096public:
1097 virtual ~OptCubes() { }
1098 virtual void Prepare()=0;
1099 virtual void Collect(CollectVisitor &vis)=0;
1100 virtual void HeavyPrepare()=0;
1101 // the cubes
1102 virtual CubeSpec get_cube(unsigned int color,
1103 float border_width,
1104 unsigned int border_color,
1105 int sx, int sy, int sz) const=0;
1106
1107 virtual FaceCollection *create_cube(const CubeSpec &spec) const=0;
1108};
1109
1110
1111
1112
1114{
1115public:
1116 // cube cache
1117 virtual ~OptCubeCache() { }
1118 virtual void add_to_cache(const CubeSpec &spec, FaceCollection *coll)=0;
1119
1120 bool is_in_cache(const CubeSpec &spec) const { return find_from_cache(spec)!=0; }
1121 virtual OptCacheId find_id_from_cache(const CubeSpec &spec) const =0;
1124 virtual OptCacheId resize_cache_id(const OptCacheId &o, const SizeSpec &sz)=0; // non-const
1126};
1127
1128
1129template<class C>
1131{
1132public:
1133 virtual void Prepare()=0;
1134 virtual int SizeX() const=0;
1135 virtual int SizeY() const=0;
1136 virtual int SizeZ() const=0;
1137 virtual C Map(int x, int y, int z) const=0;
1138 virtual unsigned int Color(int x, int y, int z) const { return 0xffffffff; }
1139 virtual Vector Normal(int x, int y, int z) const { Vector v{0.0,0.0,-400.0}; return v; }
1140 virtual void CleanPrepare()=0;
1141 virtual ~Voxel() { }
1142};
1143
1145{
1146 int x,y,z;
1147 int sx,sy,sz;
1148};
1149typedef Voxel<int> * (*VoxelFunc)(void *);
1150
1151
1152template<class I, class B>
1153class NDim
1154{
1155public:
1156 virtual std::vector<I> Count() const=0;
1157 virtual B Map(I *array, int size) const=0;
1158 virtual NDim<I,B> *Interpolate(const NDim<I,B> &b1, const NDim<I,B> &b2, I val) const=0;
1159 virtual ~NDim() { }
1160};
1161
1162template<class C>
1164{
1165public:
1166 virtual float SizeX() const=0;
1167 virtual float SizeY() const=0;
1168 virtual C Map(float x, float y) const=0;
1169 virtual void Prepare()=0;
1170 virtual bool ReadyToPrepare() const { return true; }
1171 virtual ~ContinuousBitmap() { }
1172};
1173
1174
1175
1176template<class Z, class C>
1178{
1179public:
1181 virtual Z SizeX() const=0;
1182 virtual Z SizeY() const=0;
1183 virtual C Map(Z x,Z y) const=0;
1184};
1185
1186template<class C>
1188{
1189public:
1190 virtual void Prepare()=0;
1191 virtual float SizeX() const=0;
1192 virtual float SizeY() const=0;
1193 virtual float SizeZ() const=0;
1194 virtual C Map(float x, float y, float z) const=0;
1195 virtual ~ContinuousVoxel() { }
1196};
1197
1198template<class T>
1200{
1201public:
1202 virtual ~HandleValue() { }
1203 virtual void Handle(T t)=0;
1204};
1206{
1207public:
1208 virtual ~Graph() { }
1209 virtual int NumVertexes() const=0;
1210 virtual int NumEdges() const=0;
1211 virtual std::pair<int, int> EdgeVertex(int edge) const=0;
1212};
1213template<class V, class E>
1215{
1216public:
1217 virtual ~GraphData() { }
1218 virtual V Vertex(int v) const =0;
1219 virtual E Edge(int e, int v1, int v2) const=0;
1220};
1221
1223{
1224public:
1225 virtual int NumFrames() const=0;
1226 virtual int XSize(int frame) const=0;
1227 virtual int YSize(int frame) const=0;
1228 virtual Point2d Pos(int frame) const=0;
1229 virtual Color Pixel(int frame, int x, int y) const=0;
1230 virtual ~Sprite() { }
1231};
1232
1233struct Size
1234{
1235 int sx,sy;
1236};
1237struct Pos
1238{
1239 int x,y;
1240};
1241struct TRect
1242{
1243 float x,y;
1245};
1246
1248{
1249public:
1250 virtual ~Samples() { }
1251 virtual int NumWaves() const=0;
1252 virtual int SampleRate(int wave) const=0;
1253 virtual int Id(int wave) const=0;
1254 virtual float Length(int wave) const=0;
1255 virtual float Index(int wave, float val) const=0;
1256};
1257
1258struct Wavs
1259{
1260 std::vector<unsigned char *> data;
1261 std::vector<int> size;
1262 std::vector<int> rate;
1263 std::vector<void*> chunks;
1264 std::vector<int> ids;
1265};
1266
1268{
1269public:
1270 virtual ~Tracker() { }
1271 virtual int NumChannels() const=0;
1272 virtual int NumTimeSlots() const=0;
1273 virtual int Type(int channel, int timeslot) const=0;
1274 virtual int Duration(int channel, int timeslot) const { return 1; }
1275 virtual int Sample(int channel, int timeslot) const { return 0; }
1276 virtual int NumData(int channel, int timeslot) const { return 0; }
1277 virtual unsigned int Data(int channel, int timeslot, int data) const { return 0; }
1278};
1279
1281{
1282public:
1283 virtual ~ShaderModule() { }
1284 virtual std::string Function() const=0;
1285 virtual std::string FunctionName() const=0;
1286 virtual std::string ColorFunctionName() const=0;
1287 virtual int NumArgs() const=0;
1288 virtual std::string ArgName(int i) const=0;
1289 virtual std::string ArgValue(int i) const=0;
1290 //virtual int id() const=0;
1291 //virtual bool FreeVariable(int i) const=0;
1292 //virtual std::string ArgType(int i) const=0;
1293};
1294
1296{
1297public:
1298 GuiWidget() : index(0), size2(1) { }
1299
1300 void set_id(std::string id_m) { id = id_m; }
1301 std::string get_id() const { return id; }
1302 void set_index(int j) { index = j; }
1303 int get_index() const { return index; }
1304 void set_size2(int sz) { size2=sz; }
1305 int get_size2() const { return size2; }
1306 virtual ~GuiWidget() { }
1307 virtual void hide() { }
1308 virtual void show() { }
1309 virtual Point2d get_pos() const=0;
1310 virtual Vector2d get_size() const=0;
1311 virtual void set_pos(Point2d pos)=0;
1312 virtual void set_size(Vector2d size)=0;
1313 virtual void update(Point2d mouse_pos, int button, int ch, int type, int mouse_wheel_y)=0;
1314 virtual bool is_visible() const=0;
1315 virtual void render()=0;
1316 virtual int render_to_bitmap()=0; // returns bitmap id
1317 virtual bool content_changed() const=0;
1318 virtual void clear_content_changed()=0;
1319 virtual void select_item(int item)=0;
1320 virtual int chosen_item() const=0;
1321 virtual float dynamic_param(int id) const=0;
1322 virtual void set_dynamic_param(int id, float val)=0;
1323 virtual int child_count() const=0;
1324 virtual GuiWidget *child(int num) const=0;
1325 virtual std::vector<GuiWidget*> *child_from_path(std::string path) { return 0; }
1326private:
1327 std::string id;
1328 int index;
1329 int size2;
1330};
1331namespace GameApi
1332{
1333 struct ExecuteEnv;
1334 class Env;
1335};
1336
1337struct GameApiLine;
1338
1339struct GameApiParam
1340{
1341 std::string param_name;
1342 std::string value;
1343 std::string type;
1344 bool is_array = false;
1346 int j; // multiple return values
1347 std::string expr;
1348};
1349namespace GameApi {
1350class EditNode;
1351};
1352struct ASyncData
1353{
1354 std::string api_name;
1355 std::string func_name;
1356 int param_num;
1357};
1358
1359namespace chaiscript
1360{
1361 class ChaiScript;
1362}
1363
1364class GameApiItem
1365{
1366public:
1367 virtual ~GameApiItem() { }
1368 virtual int Count() const=0;
1369 virtual std::string Name(int i) const=0;
1370 virtual int ParamCount(int i) const=0;
1371 virtual std::string ParamName(int i, int p) const=0;
1372 virtual std::string ParamType(int i, int p) const=0;
1373 virtual std::string ParamDefault(int i, int p) const=0;
1374 virtual std::string DefaultAuthor(int i, int p) const=0;
1375 virtual std::string DefaultLicense(int i, int p) const=0;
1376 virtual std::string ReturnType(int i) const=0;
1377 virtual std::string ApiName(int i) const=0;
1378 virtual std::string FuncName(int i) const=0;
1379 virtual std::string Symbols() const=0;
1380 virtual std::string Comment() const=0;
1381 virtual int Execute(std::stringstream &ss, GameApi::Env &ee, GameApi::EveryApi &ev, std::vector<std::string> params, GameApi::ExecuteEnv &e, int j)=0;
1382 //virtual std::vector<GameApi::EditNode*> CollectNodes(GameApi::EveryApi &ev, std::vector<std::string> params, std::vector<std::string> param_names)=0;
1383 virtual std::pair<std::string,std::string> CodeGen(GameApi::EveryApi &ev, std::vector<std::string> params, std::vector<std::string> param_names, std::vector<std::string> param_exprs, int j)=0;
1384 virtual void BeginEnv(GameApi::ExecuteEnv &e, std::vector<GameApiParam> params) { }
1385 virtual void EndEnv(GameApi::ExecuteEnv &e) { }
1386 //virtual void RegisterToChai(GameApi::EveryApi *ev, chaiscript::ChaiScript *chai) { }
1387};
1388
1390{
1391public:
1392 virtual std::vector<GameApiItem*> &get_all_functions(GameApi::EveryApi &ev)=0;
1393};
1395
1396
1398{
1399 int x,y;
1400 std::string module_name;
1401 std::string uid;
1402 int j=0;
1403 int sz=1;
1404 bool array_return = false;
1405 std::vector<GameApiParam> params;
1406};
1407
1409{
1410 std::string function_name;
1411 std::vector<std::string> param_names;
1412 std::vector<std::string> param_types;
1413 std::vector<GameApiLine> lines;
1414};
1415
1417{
1418 std::vector<GameApiFunction> funcs;
1419};
1421 {
1422 };
1424{
1425 std::string script;
1427 int p;
1428 std::map<int, void*> user_data;
1429};
1431{
1432 std::string script;
1434 int p;
1435 std::map<int, void*> user_data;
1436};
1438{
1439 std::string script;
1441 int p;
1444 std::map<int, void*> user_data;
1445};
1447{
1449};
1451{
1452 std::vector<Point> bounding_box;
1453};
1455{
1456public:
1457 virtual void Collide(std::string name1, std::string name2)=0;
1458};
1459struct World
1460{
1461 // Actual world
1462 WorldElement *world = 0; // these are indexes, not owned
1463 int world_sx = 100;
1464 int world_sy = 100;
1465 int world_sz = 1;
1468
1469 std::vector<WorldPiece> world_pieces;
1470
1471 // Player
1474 std::vector<PlayerPiece> player_pieces;
1475
1476 // Camera
1478 float rot_y;
1480
1481 // enemies
1483 std::vector<EnemyPiece> enemy_pieces;
1484
1485 std::map<std::string, CollisionData*> collision_data;
1486 std::vector<std::pair<std::string,std::string> > collisions;
1487};
1488
1490{
1491 std::string url;
1492 std::string script;
1493};
1494
1496{
1497 std::vector<std::string> content_item_names;
1498 std::vector<ContentPiece> content_items;
1499};
1500
1502{
1503 int sh_color = 0;
1504 int sh_texture = 0;
1507
1508 // put only shader functions to these
1511
1512 //std::vector<std::string> v_shader_funcnames;
1513 //std::vector<std::string> f_shader_funcnames;
1514
1515
1516 // from event api
1517 //int type;
1518 //int ch;
1519 //Point cursor_pos;
1520 //int button;
1521
1522 float time = 0.0;
1523 float delta_time = 0.0;
1524
1525 float in_POS = 0.0;
1526
1528 //std::string vertex_shader = "";
1529 //std::string fragment_shader = "";
1532
1534 bool has_inverse=false;
1539 int sfo_id=-1;
1541 int screen_x = 0; // these are the main window sizes
1542 int screen_y = 0;
1543 int screen_width = 800;
1544 int screen_height = 600;
1545 bool is_2d = false;
1546
1547 // Game properties
1552 bool cullface=false;
1553};
1554
1556{
1558 float u,v;
1559};
1560
1601
1602
1604{
1605public:
1606 virtual ~MainLoopItemWGPU() { }
1607 virtual void Collect(CollectVisitor &vis)=0;
1608 virtual void HeavyPrepare()=0;
1609 virtual void execute(MainLoopEnv &e)=0;
1610 virtual void handle_event(MainLoopEvent &e)=0;
1611 virtual std::vector<int> shader_id() { return std::vector<int>(); }
1612};
1613
1615{
1616public:
1617 virtual ~MainLoopItem() { }
1618 virtual void logoexecute() { }
1619 virtual void Collect(CollectVisitor &vis)=0;
1620 virtual void HeavyPrepare()=0;
1621 virtual void Prepare()=0;
1622 virtual void FirstFrame() { }
1623 virtual void execute(MainLoopEnv &e)=0;
1624 virtual void handle_event(MainLoopEvent &e)=0;
1625 virtual std::vector<int> shader_id() { return std::vector<int>(); }
1626 virtual bool ReadyToPrepare() const { return true; }
1627 virtual void destroy() { }
1628 virtual void set_vars(std::map<std::string, std::string> vars) { }
1629 virtual std::map<std::string, std::string> get_vars() const {
1630 return std::map<std::string,std::string>();
1631 }
1632};
1633
1635{
1636public:
1637 MainLoopItemForward(MainLoopItem &prev) : prev(prev) { }
1638 virtual void Collect(CollectVisitor &vis) { prev.Collect(vis); }
1639 virtual void HeavyPrepare() { }
1640 virtual void Prepare() { prev.Prepare(); }
1641 virtual void FirstFrame() { prev.FirstFrame(); }
1642 virtual void execute(MainLoopEnv &e) { prev.execute(e); }
1643 virtual void handle_event(MainLoopEvent &e) { prev.handle_event(e); }
1644 virtual std::vector<int> shader_id() { return prev.shader_id(); }
1645 virtual bool ReadyToPrepare() const { return prev.ReadyToPrepare(); }
1646private:
1647 MainLoopItem &prev;
1648};
1649
1650class Timing : public MainLoopItem
1651{
1652public:
1653 virtual ~Timing() { }
1654 virtual float end_time() const=0;
1655 virtual float delta_time() const=0;
1656 //virtual Timing *clone() const=0;
1658};
1659
1660class TimingForward : public Timing
1661{
1662public:
1663 TimingForward(Timing &prev) : prev(prev) { }
1664 virtual void Collect(CollectVisitor &vis) { prev.Collect(vis); }
1665 virtual void HeavyPrepare() { }
1666 virtual void Prepare() { prev.Prepare(); }
1667 virtual void FirstFrame() { prev.FirstFrame(); }
1668 virtual void execute(MainLoopEnv &e) { prev.execute(e); }
1669 virtual void handle_event(MainLoopEvent &e) { prev.handle_event(e); }
1670 virtual bool ReadyToPrepare() const { return prev.ReadyToPrepare(); }
1671public:
1672 virtual float end_time() const { return prev.end_time(); }
1673 virtual float delta_time() const { return prev.delta_time(); }
1674 //virtual Timing *clone() const { return
1675 virtual void execute_without_draw(MainLoopEnv &e) { return prev.execute_without_draw(e); }
1676private:
1677 Timing &prev;
1678};
1679
1680
1694
1696{
1697 int type;
1698 int ch;
1701 bool pin[9];
1702 float time = 0.0;
1703};
1704
1706{
1707public:
1708 SourceBitmap(DrawBufferFormat fmt, int depth);
1710 void operator=(const SourceBitmap &src);
1711 void set_data(void *data, int width, int height, int ydelta);
1712 void set_data_mono1(void *data, int width, int height, int ydelta);
1713 ~SourceBitmap();
1714public:
1715 void *m_data;
1723};
1724
1725
1726class SourceBitmap;
1727
1728struct Dot
1729{
1730 int x,y;
1731 unsigned int color;
1732};
1733
1735{
1736 std::vector<Dot> dots;
1737};
1738
1740{
1741public:
1742 virtual ~FrameBuffer() { }
1743 virtual void Prepare()=0;
1745 virtual void frame()=0;
1746 virtual void *Buffer() const=0;
1747 virtual int Width() const=0;
1748 virtual int Height() const =0;
1749 virtual int Depth() const =0;
1750 virtual FrameBufferFormat format() const=0;
1751 virtual float *DepthBuffer() const=0;
1752 virtual void draw_rect(int pos_x, int pos_y, int sp_width, int sp_height, unsigned int color)=0;
1753
1754 virtual void draw_sprite(SourceBitmap *bm, int x, int y) =0;
1755 //virtual void draw_dots(SourceDots *dots, int x, int y)=0;
1756};
1757
1758
1760{
1762 //void *drawbuffer;
1763 //int drawbuffer_width;
1764 //int drawbuffer_height;
1765 //int drawbuffer_depth;
1767
1768 float time = 0.0;
1769 float delta_time = 0.0;
1770
1772};
1773
1774
1775
1777{
1778public:
1779 virtual ~FrameBufferLoop() { }
1780 virtual void Prepare()=0;
1782 virtual void frame(DrawLoopEnv &e)=0;
1783
1784};
1785
1786
1788{
1789public:
1790 virtual ~ExprNode() { }
1791 virtual float float_execute(const std::vector<GameApi::FloatExprEnv> &env)=0;
1792 virtual int int_execute(const std::vector<GameApi::IntExprEnv> &env)=0;
1793 virtual float float_execute(const GameApi::ExprEnv &env) { return float_execute(env.float_env); }
1794 virtual int int_execute(const GameApi::ExprEnv &env) { return int_execute(env.int_env); }
1795 virtual bool bool_execute(const GameApi::ExprEnv &env)=0;
1798};
1799
1801{
1802public:
1803 virtual ~PhysicsNode() { }
1804 virtual int NumAnchors() const=0;
1805 virtual Point AnchorPoint(int i) const=0;
1806 virtual int NumForces(int i) const=0;
1807 virtual Vector Force(int i, int f) const=0;
1808 virtual int NumLinks() const=0;
1809 virtual std::pair<int,int> Link(int i) const=0;
1810 virtual float LinkDistance(int i) const=0;
1811 virtual int NumForceVolumes() const=0;
1812 virtual Vector ForceVolume(int v, Point p) const=0;
1813};
1814
1816{
1817public:
1818 ForwardPhysics(PhysicsNode &node) : node(node) {}
1819 virtual int NumAnchors() const { return node.NumAnchors(); }
1820 virtual Point AnchorPoint(int i) const { return node.AnchorPoint(i); }
1821 virtual int NumForces(int i) const { return node.NumForces(i); }
1822 virtual Vector Force(int i, int f) const { return node.Force(i,f); }
1823 virtual int NumLinks() const { return node.NumLinks(); }
1824 virtual std::pair<int,int> Link(int i) const { return node.Link(i); }
1825 virtual float LinkDistance(int i) const { return node.LinkDistance(i); }
1826 virtual int NumForceVolumes() const { return node.NumForceVolumes(); }
1827 virtual Vector ForceVolume(int v, Point p) const { return node.ForceVolume(v,p); }
1828
1829private:
1830 PhysicsNode &node;
1831};
1832
1834{
1835public:
1836 virtual ~TriStrip() { }
1837 virtual int Size() const=0;
1838 virtual Point Pos(int i) const=0;
1839 virtual unsigned int Color(int i) const=0;
1840 virtual Point2d TexCoord(int i) const=0;
1841 virtual Vector Normal(int i) const=0;
1842};
1843
1845{
1846public:
1848 virtual ~TriStripForward() { }
1849 virtual int Size() const { return next.Size(); }
1850 virtual Point Pos(int i) const { return next.Pos(i); }
1851 virtual unsigned int Color(int i) const { return next.Color(i); }
1852 virtual Point2d TexCoord(int i) const { return next.TexCoord(i); }
1853 virtual Vector Normal(int i) const { return next.Normal(i); }
1854protected:
1856};
1857
1859{
1860public:
1861 virtual ~Cutter() { }
1862 virtual std::vector<Point> cut(Point p1, Point p2) const=0;
1863};
1864
1866{
1867public:
1868 Collision(int id) : m_id(id), m_x(0.0), m_y(0.0) { }
1869 virtual ~Collision() { }
1870 int m_id;
1871 float m_x,m_y;
1872 virtual bool check_collision(float x, float y) const=0;
1873 virtual void set_pos(int id, float x, float y)
1874 {
1875 if (m_id == id)
1876 {
1877 m_x = x;
1878 m_y = y;
1879 }
1880 }
1881};
1882
1884{
1885public:
1886 virtual ~Movement() { }
1887 virtual void event(MainLoopEvent &e)=0;
1888 virtual void frame(MainLoopEnv &e)=0;
1889 virtual void draw_event(FrameLoopEvent &e)=0;
1890 virtual void draw_frame(DrawLoopEnv &e)=0;
1891
1892 virtual void set_matrix(Matrix m)=0;
1893 virtual Matrix get_whole_matrix(float time, float delta_time) const=0;
1894};
1896{
1897public:
1898 virtual ~ColorChange() { }
1899 virtual Color get_whole_color(float time, float delta_time) const=0;
1900};
1901
1903{
1904public:
1906 virtual float f(float x, float y) const=0;
1907 virtual float f2(float x) const=0; // use substitution y::=f(x)
1908};
1909
1911{
1912public:
1914 virtual float f(float x, float y, float z) const=0;
1915 virtual float f_u(float x, float y) const=0; // substitute z=f(x,y)
1916 virtual float f_l(float x, float y) const=0; // substitute z=f(x,y)
1917 virtual unsigned int f_color_u(float x, float y) const { return 0xffffffff;}
1918 virtual unsigned int f_color_l(float x, float y) const { return 0xff888888;}
1919 virtual float pos_x() const=0;
1920 virtual float pos_y() const=0;
1921 virtual float size_x() const=0;
1922 virtual float size_y() const=0;
1923};
1924
1926{
1927public:
1929 virtual float f(float x, float y, float z, float t) const=0;
1930 virtual float f_u(float x, float y, float t) const=0;
1931 virtual float f_l(float x, float y, float t) const=0;
1932};
1933
1935{
1936public:
1937 std::vector<ImplicitFunction3d*> vec;
1938};
1939
1941{
1942public:
1943 virtual ~TreeLevel() { }
1944 virtual int num_childs() const=0;
1945 virtual Matrix get_child(int i, float time) const=0;
1946};
1947
1949{
1950public:
1951 virtual ~TreeStack() { }
1952 virtual int num_levels() const=0;
1953 virtual TreeLevel *get_level(int i) const=0;
1954};
1955
1956//void draw_tree(Tree *spec, std::vector<ML> vec);
1957
1959{
1960public:
1961 virtual ~Material() { }
1962 virtual void logoexecute() { }
1963 virtual int mat(int p) const=0;
1964 virtual int mat_inst(int p, int pts) const=0;
1965 virtual int mat_inst_va_prepare(int p) const=0;
1966 virtual int mat_inst_va(int va, int pts) const=0;
1967 virtual int mat_inst_matrix(int p, int ms) const=0;
1968 virtual int mat_inst2(int p, int pta) const=0;
1969 virtual int mat_inst_fade(int p, int pts, bool flip, float start_time, float end_time) const=0;
1970};
1971
1973{
1974public:
1976 virtual void Prepare()=0;
1977 virtual int mat(int screen_txid, int depth_txid, int fullscreenquad, int position_txid, int normal_txid) const=0;
1978};
1979
1981{
1982public:
1983 virtual ~ShaderCall() { }
1984 virtual int index(int base) const=0;
1985 virtual std::string func_call() const=0;
1986 virtual std::string func_call2(int &index) const=0;
1987 virtual std::string define_strings() const=0;
1988 virtual std::string func_name() const=0;
1989 virtual bool is_fragment() const { return false; }
1990 virtual ShaderCall *get_next() const=0;
1991 virtual std::string cache_id() const { return func_name(); }
1992
1993 std::string get_key() const {
1994 std::string key = "";
1995 const ShaderCall *call = this;
1996 while(call) {
1997 key+=func_name();
1998 call = call->get_next();
1999 }
2000 return key;
2001 }
2002};
2003
2005{
2006public:
2007 virtual ~MatrixArray() { }
2008 virtual void Prepare() { }
2009 virtual void HandleEvent(MainLoopEvent &event) { }
2010 virtual bool Update(MainLoopEnv &e) { return false; }
2011 virtual int Size() const=0;
2012 virtual int MaxSize() const { return Size(); }
2013 virtual Matrix Index(int i) const=0;
2014 virtual unsigned int Color(int i) const { return 0xffffffff; }
2015 virtual Vector Normal(int i) const { Vector v{0.0,0.0,-400.0}; return v; }
2016};
2017
2019{
2020public:
2021 // all the parameters should go via ctor parameters
2022 virtual ~Frame() { }
2023 virtual void execute(MainLoopEnv &e)=0;
2024
2026 {
2028 };
2029
2030 virtual int get_type() const=0;
2031
2032 template<class T>
2033 T *dyn_cast(Frame *f, int type) { if (get_type()==type) return static_cast<T*>(f); std::cout << "Frame dyncast failed!" << std::endl; return 0; }
2034};
2035
2036/* bdcalvin's ideas for sprite sheets rendering dynamically
2037class TexCoordArray : public CollectInterface
2038{
2039public:
2040 virtual ~TexCoordArray() { }
2041 virtual void Prepare() { }
2042 virtual void HandleEvent(MainLoopEvent &event) { }
2043 virtual void Update(MainLoopEnv &e) { return false; }
2044 virtual int Size() const=0;
2045 virtual int MaxSize() const { return Size(); }
2046 virtual int NumPoints() const { return 4; }
2047 // face_index=0 is assumed / it cannot be changed. Only works with one quad
2048 // and sprite sheets.
2049 virtual Point2d TexCoord(int point_index, int instance_index) const=0;
2050 virtual unsigned int Color(int point_index, int instance_index) const=0;
2051};
2052*/
2053
2055{
2056public:
2057 virtual ~PlaneShape() { }
2058 virtual int NumShapes() const=0;
2059 virtual int NumPoints(int shape) const=0;
2060 virtual Point2d FacePoint(int shape, int point) const=0;
2061 virtual unsigned int Color(int shape, int point) const=0;
2062 virtual Point2d TexCoord(int shape, int point) const=0;
2063 virtual float PosX() const=0;
2064 virtual float PosY() const=0;
2065 virtual float SizeX() const=0;
2066 virtual float SizeY() const=0;
2067};
2068
2070{
2071public:
2072 virtual ~SkeletalNode() { }
2073 virtual Matrix mat(float time) const=0;
2074 virtual Point pos(float time) const=0;
2075};
2076
2077namespace GameApi {
2079public:
2080 virtual ~EditNode() { }
2081 // 0=no source, 1=mouse_x, 2=mouse_y
2082 virtual void SetSource(int i)=0;
2083 // 0=no edit, 1=edit_x, 2=edit_y, 3=edit_z
2084 virtual void SetMode(int i)=0;
2085 virtual void CurrentPos(Point &p) const=0;
2086 virtual void HandleMouseMove(int x, int y)=0;
2087 virtual void HandleMousePress(int type)=0;
2088 virtual std::string GetValue() const=0;
2089};
2090}
2091
2093{
2094public:
2095 virtual ~MixedI() { }
2096 virtual int NumItems() const=0;
2097 virtual std::string Type() const=0;
2098 virtual std::string Print() const=0;
2099 virtual std::string Name(int i) const=0;
2100 virtual std::string Value(int i) const=0;
2101 virtual MixedI *Access(int i) const=0;
2102 virtual MixedI *Clone() const=0;
2103};
2104
2106{
2107public:
2108 virtual ~Event3() { }
2109 virtual void execute(MainLoopEnv &e)=0;
2110 virtual void handle_event(MainLoopEvent &e)=0;
2111 virtual bool event_triggered() const=0;
2112};
2113
2115{
2116public:
2117 virtual ~Action() { }
2119 virtual void trigger()=0;
2120};
2121
2123{
2124public:
2125 virtual ~Blocker() { }
2126 virtual void Execute()=0; // must block execution
2127 virtual void SetTimeout(float duration)=0;
2128};
2130{
2131public:
2134public:
2135 virtual ~Splitter() { }
2136 virtual void Init()=0;
2137 virtual int Iter()=0;
2138 virtual void RejectedIter() { }
2139 virtual void Destroy()=0;
2140 virtual bool NoMainLoop() const { return false; }
2141 virtual Splitter* NextState(int code) { return this; }
2142 virtual void EnvTransfer(Splitter *next) { next->e = e; next->ev = ev; }
2143};
2144
2146{
2147public:
2148 virtual ~PointTransform() { }
2149 virtual Point Map(Point p, float delta_time) const=0;
2150};
2151class FaceCollection;
2152
2154{ // KF type, gap=[0..n-1]
2155public:
2156 virtual ~VertexAnimNode() { }
2157 virtual int NumKeyFrames()=0; // n
2158 virtual float StepDuration(int keyframe_gap) const=0;
2159 virtual int FaceColl(int keyframe_gap) const=0;
2160 virtual int Lines(int keyframe_gap) const=0;
2161 //virtual int Points(int keyframe_gap) const=0;
2162};
2164{
2165public:
2166 virtual ~CurvePos() { }
2167 virtual float FindPos(Point p, float curve_length) const=0;
2168};
2169
2171 {
2174 };
2175
2176//int array_type_to_int(GameApi::BM b); // the definitions are in gameapi.cc beginning
2177//int array_type_to_int(GameApi::P b);
2178
2179
2180struct ArrayType
2181{
2182 int type; // arraytypesinuse
2183 std::vector<int> vec;
2185};
2186
2187template<class T>
2189{
2190public:
2191 virtual ~Fetcher() { }
2192 virtual void event(MainLoopEvent &e)=0;
2193 virtual void frame(MainLoopEnv &e)=0;
2194 virtual void draw_event(FrameLoopEvent &e)=0;
2195 virtual void draw_frame(DrawLoopEnv &e)=0;
2196 virtual void set(T t)=0;
2197 virtual T get() const=0;
2198};
2199
2201{
2202public:
2203 void load_urls(GameApi::Env &e, std::string url, std::string homepage, bool nosize);
2204 void load_urls2(GameApi::Env &e, std::string url, std::string homepage, bool nosize);
2205 void load_all_urls(GameApi::Env &e, std::vector<std::string> urls, std::string homepage);
2206 GameApi::ASyncVec *get_loaded_data(std::string url) const;
2207 void set_callback(std::string url, void (*fptr)(void*), void *data);
2208 void rem_callback(std::string url);
2209 int count_callbacks();
2210 void print_callbacks();
2211};
2212
2213template<class T>
2215{
2216public:
2217 virtual ~BuilderValue() { }
2218 virtual T get() const=0;
2219};
2220
2221template<class T>
2223{
2224public:
2225 RefBuilderValue(const T &ref) : ref(ref) { }
2226 T get() const { return ref; }
2227private:
2228 const T &ref;
2229};
2230template<class T>
2232{
2233public:
2234 virtual ~BuilderArray() { }
2235 virtual int Size() const=0;
2236 virtual BuilderValue<T> *Index(int i) const=0;
2237};
2238
2239template<class T>
2241{
2242public:
2243 BuilderArrImpl(std::vector<T> vec) : vec(vec), ref(val) { }
2244 int Size() const { return vec.size(); }
2245 BuilderValue<T> *Index(int i) const {
2246 val = vec[i];
2247 return &ref;
2248 }
2249private:
2250 std::vector<T> vec;
2252 T val;
2253};
2254
2255#if 0
2256template<class T, class K>
2257class FMapArray : public BuilderArray<K>
2258{
2259public:
2260 FMapArray(BuilderArray<T> &arr, Function<T,K> &f) : arr(arr), f(f), ref(val) { }
2261 int Size() const { return arr.Size(); }
2262 BuilderValue<K> *Index(int i) const {
2263 BuilderValue<T> *t = arr.Index(i);
2264 T t2 = t->get();
2265 K k1 = f.Index(t2);
2266 val = k1;
2267 return ref;
2268 }
2269private:
2270 BuilderArray<T> &arr;
2271 Function<T,K> &f;
2272 RefBuilderValue<K> ref;
2273 K val;
2274};
2275#endif
2276
2278{
2279public:
2280 virtual ~FontInterface() { }
2281 virtual void Prepare() { }
2282 virtual int Left(long idx, bool is_outline=false) const=0;
2283 virtual int Top(long idx, bool is_outline=false) const=0;
2284 virtual int SizeX(long idx, bool is_outline=false) const=0;
2285 virtual int SizeY(long idx, bool is_outline=false) const=0;
2286 virtual int AdvanceX(long idx, bool is_outline=false) const=0;
2287 virtual int Ascender(long idx, bool is_outline=false) const=0;
2288 virtual int Descender(long idx, bool is_outline=false) const=0;
2289 virtual int Height(long idx, bool is_outline=false) const=0;
2290 virtual unsigned int Map(long idx, int x, int y, bool is_outline=false) const=0;
2291};
2292
2294{
2295public:
2296 virtual ~GlyphInterface() { }
2297 virtual void Prepare() { }
2298 virtual int Left() const=0;
2299 virtual int Top() const=0; // needs to be fast
2300 virtual int SizeX() const=0;
2301 virtual int SizeY() const=0; // needs to be fast
2302 virtual int AdvanceX() const=0;
2303 virtual int Ascender() const=0;
2304 virtual int Descender() const=0;
2305 virtual int Height() const=0;
2306 virtual unsigned int Map(int x, int y) const=0;
2307};
2308
2309
2311{
2312public:
2313 virtual ~StringDisplay() { }
2314 virtual void Prepare() { }
2315 virtual int Count() const=0;
2316 virtual int X(int c) const=0;
2317 virtual int Y(int c) const=0;
2318 virtual int SX(int c) const=0;
2319 virtual int SY(int c) const=0;
2320 virtual unsigned int Map(int c, int x, int y) const=0;
2321};
2322
2323
2325public:
2326 virtual ~CmdExecute() { }
2327 virtual void Execute(char c)=0;
2328 virtual Point pos() const=0;
2329 virtual int obj_type() const=0;
2330 virtual void set_hooks(std::function<void (char)> f)=0;
2331 virtual void set_units(Vector v_x, Vector v_y, Vector v_z)=0;
2332 virtual Vector get_unit_x() const=0;
2333 virtual Vector get_unit_y() const=0;
2334 virtual Vector get_unit_z() const=0;
2335};
2336
2338{
2339public:
2340 virtual ~CurvePatch() { }
2341 virtual float start_x() const=0;
2342 virtual float end_x() const=0;
2343 virtual float start_y() const=0;
2344 virtual float end_y() const=0;
2345 virtual Point Map(float x, float y) const=0;
2346};
2347
2349{
2350public:
2351 virtual void Prepare() { }
2352 virtual void HandleEvent(MainLoopEvent &event) { }
2353 virtual bool Update(MainLoopEnv &e) { return false; }
2354 virtual int NumPoints() const=0;
2355 virtual int MaxNumPoints() const { return NumPoints(); }
2356 virtual Point Pos(int i) const=0;
2357 virtual unsigned int Color(int i) const=0;
2358 virtual Vector Normal(int i) const { Vector v{0.0,0.0,-400.0}; return v; }
2359 virtual bool has_changed() const { return false; }
2360 // axis-aligned bounding box.
2361 virtual Point Start(int i) const { return Pos(i); }
2362 virtual Point End(int i) const { return Pos(i); }
2363 virtual ~PointsApiPoints() {}
2364};
2365
2367{
2368public:
2369 virtual ~Space3d() { }
2370 virtual float SizeX() const=0;
2371 virtual float SizeY() const=0;
2372 virtual float SizeZ() const=0;
2373 virtual int Map(float x, float y, float z) const=0;
2374};
2375
2377{
2378public:
2379 virtual ~PropertyArray() { }
2380 virtual int NumProp() const=0;
2381 virtual unsigned int Color(int i) const=0;
2382};
2383
2385{
2386public:
2387 virtual ~EnableArray() { }
2388 virtual int NumEnables() const=0;
2389 virtual void Enable(int i)=0;
2390 virtual void Disable(int i)=0;
2391};
2392
2394{
2395public:
2396 virtual ~PointsInPlane() { }
2397 virtual int Size() const=0;
2398 virtual Point2d Map(int i) const=0;
2399 virtual unsigned int Color(int i) const=0;
2400};
2401
2403{
2404public:
2405 virtual ~LinesInPlane() { }
2406 virtual int Size() const=0;
2407 virtual Point2d Map(int i, bool second) const=0;
2408 virtual unsigned int Color(int i, bool second) const=0;
2409};
2410
2412{
2413public:
2414 virtual ~FacesInPlane() { }
2415 virtual int Size() const=0;
2416 virtual int NumPoints(int face) const=0;
2417 virtual Point2d Map(int face, int point) const=0;
2418 virtual Point2d TexCoord(int face, int point) const=0;
2419 virtual unsigned int Color(int face, int point) const=0;
2420 virtual Vector Normal(int face, int point) const { Vector v; v.dx = 0.0; v.dy=0.0; v.dz=-1.0; return v; }
2421 // note, no normal implemented
2422};
2423
2424template<class T>
2426{
2427public:
2428 virtual ~PathValues() { }
2429 virtual float Size() const=0;
2430 virtual T get(float x) const=0;
2431};
2432
2433template<class T>
2435{
2436public:
2437 virtual ~AreaValues() { }
2438 virtual float SizeX() const=0;
2439 virtual float SizeY() const=0;
2440 virtual T get(float x, float y) const=0;
2441};
2442template<class T>
2444{
2445public:
2446 virtual float SizeX() const=0;
2447 virtual float SizeY() const=0;
2448 virtual float SizeZ() const=0;
2449 virtual T get(float x, float y, float z) const=0;
2450 virtual ~VolumeValues() { }
2451};
2452
2454{
2455public:
2456 virtual ~TextureID() { }
2457 virtual void Collect(CollectVisitor &vis) { }
2458 virtual void HeavyPrepare() { }
2459 virtual void Prepare() { }
2460 virtual void handle_event(MainLoopEvent &e)=0;
2461 virtual void render(MainLoopEnv &e)=0;
2462 virtual int texture() const=0;
2463 virtual bool is_fbo() const=0;
2464 virtual std::vector<int> shader_id() { return std::vector<int>(); }
2465};
2466
2468{
2469public:
2470 virtual ~WorldSpec() { }
2471 virtual int NumItems() const=0;
2472 virtual int PosX(int i) const=0;
2473 virtual int PosY(int i) const=0;
2474 virtual int Item(int i) const=0;
2475};
2476/*
2477class Cursor
2478{
2479public:
2480 virtual void update()=0;
2481 virtual int PosX() const=0;
2482 virtual int PosY() const=0;
2483};
2484*/
2485
2487{
2488public:
2489 virtual ~ShaderI() { }
2490 virtual std::string funcname() const=0;
2491 virtual std::string shader() const=0;
2492};
2493
2495{
2496public:
2497 virtual ~DynamicChange() { }
2498 virtual void applychange(float *source, float *target, int size_in_floats, MainLoopEnv &e)=0;
2499};
2500
2502{
2503public:
2504 virtual ~ShaderBitmap() { }
2505 virtual std::string bitmapname() const=0;
2506 virtual std::string bitmapbody() const=0;
2507 virtual std::string bitmapbody_v_init() const=0;
2508 virtual std::string bitmapbody_v_body() const=0;
2509 virtual std::string bitmapbody_f_init() const=0;
2510 virtual std::string bitmapbody_f_body() const=0;
2511};
2512
2513
2515{
2516public:
2517 virtual ~DiskStore() { }
2518 // types: 0=P, 1=BM, 2=VX, 3=urlmemorymap, 4=tf
2519 virtual void Prepare()=0;
2520 virtual int Type() const=0;
2521 virtual int NumBlocks() const=0;
2522 // blocktypes: 0=vertex, 1=color, 2=texcoord, 3=normal, 4=bitmap, 5=voxel, 6=vertexheader, 7=vertexpointcounts, 8=vertexindex, 9=texcoord3, 10=memoryblock
2523 virtual int BlockType(int block) const=0;
2524 virtual int BlockTypeInv(int block) const=0;
2525 virtual size_t BlockSizeInBytes(int block) const=0;
2526 virtual unsigned char* Block(int block) const=0;
2527 virtual unsigned char* BlockWithOffset(int block, int offset, int size) const=0;
2528};
2529
2531{
2532public:
2533 virtual ~InputForMoving() { }
2534 virtual void execute(MainLoopEnv &e)=0;
2535 virtual void handle_event(MainLoopEvent &e)=0;
2536 virtual float XPos() const=0;
2537 virtual float YPos() const=0;
2538 virtual float ZPos() const=0;
2539};
2540
2542{
2543public:
2544 virtual ~Glyph() { }
2545 virtual float Top() const=0;
2546 virtual float SizeX() const=0;
2547 virtual float SizeY() const=0;
2548 virtual float Baseline() const=0;
2549 virtual int NumSplits(float y) const=0;
2550 virtual float Split(float y, int idx) const=0;
2551 virtual int SplitType(float y, int idx) const=0; // ret: 1=empty->filled, 2=filled->empty, 3=empty->empty, 4=filled->filled
2552};
2553
2555{
2556public:
2557 virtual ~CurveGroup() { }
2558 virtual void Prepare()=0;
2559 virtual int NumCurves() const=0;
2560 virtual Point Pos(int num, float t) const=0; // t=[0..1]
2561 virtual unsigned int Color(int num, float t) const=0;
2562 virtual int Shape(int num, float t) const=0;
2563};
2564
2566{
2567public:
2568 virtual ~MeshAnim() { }
2569 virtual void Prepare()=0;
2570 virtual int NumFaces() const=0;
2571 virtual int NumPoints(int face) const=0;
2572 virtual float StartTime() const=0;
2573 virtual float EndTime() const=0;
2574 virtual Point Vertex(int face,int point, float time) const=0;
2575 virtual unsigned int Color(int face,int point, float time) const=0;
2576 virtual Vector Normal(int face, int point, float time) const=0;
2577 virtual Point2d TexCoord(int face, int point, float time) const=0;
2578 virtual float TexCoord3(int face, int point, float time) const=0;
2579
2580};
2581
2583{
2584public:
2585 virtual ~IStateMachine() { }
2586 virtual int num_flags() const=0;
2587 virtual std::string flag(int val) const=0;
2588
2589 virtual void Prepare()=0;
2590 virtual void event(MainLoopEvent &e)=0;
2591 virtual void frame(MainLoopEnv &e)=0;
2592 virtual void draw_event(FrameLoopEvent &e)=0;
2593 virtual void draw_frame(DrawLoopEnv &e)=0;
2594};
2595
2596template<class C>
2598{
2599public:
2600 virtual int Size() const=0;
2601 virtual int SizeX(int i) const=0;
2602 virtual int SizeY(int i) const=0;
2603 virtual C Map(int i, int x, int y) const=0;
2604 virtual Point PosTL(int i) const=0;
2605 virtual Point PosBR(int i) const=0;
2606 virtual void Prepare()=0;
2607 virtual ~BitmapCollection() { }
2608};
2609
2611{
2612public:
2613 virtual ~WorldBlocks() { }
2614 // access elements (similar to Bitmap<int>)
2615 virtual int SizeX() const=0;
2616 virtual int SizeY() const=0;
2617 virtual int Map(int x, int y) const=0;
2618
2619 // block sizes
2620 virtual int CellSizeX() const=0;
2621 virtual int CellSizeY() const=0;
2622 virtual void SetCellSize(int cx, int cy)=0;
2623
2624 // set elements
2625 virtual void SetElem(int x, int y, int val)=0;
2626 virtual void SetElemBlock(int *array, int width, int height, int ydelta, int start_x, int start_y)=0;
2627
2628 // Position of the blocks in 2d space
2629 virtual Point2d GetTL() const=0;
2630 virtual Point2d GetBR() const=0;
2631 virtual void SetExtends(Point2d p1, Point2d p2)=0;
2632 virtual std::pair<int,int> BlockPosition(Point2d pos) const=0;
2633 virtual std::pair<int,int> CellPosition(Point2d pos) const=0;
2634 virtual std::pair<float,float> CellPositionF(Point2d pos) const=0;
2635 virtual std::pair<Point2d,Point2d> BlockToWorld(int x, int y) const=0;
2636
2637 // Position of the blocks in 3d space
2638 virtual Point GetTL3d() const=0;
2639 virtual Point GetBR3d() const=0;
2640 virtual void SetExtends3d(Point tl, Point tr, Point bl, Point br)=0;
2641 virtual void SetMV3d(Matrix m)=0;
2642 virtual std::pair<int,int> BlockPosition3d(Point ray_start, Point ray_end) const=0;
2643 virtual std::pair<int,int> CellPosition3d(Point ray_start, Point ray_end) const=0;
2644 virtual std::pair<float,float> CellPositionF3d(Point ray_start, Point ray_end) const=0;
2645
2646 // Reallocating space
2647 virtual void ReserveSize(int sx, int sy)=0;
2648
2649 // enemy positions
2650 virtual void clear_enemies()=0;
2651 virtual void add_enemy(float start_x, float end_x, float start_y, float end_y)=0;
2652 virtual int num_enemies() const=0;
2653 virtual float enemy_start_x(int e) const=0;
2654 virtual float enemy_end_x(int e) const=0;
2655 virtual float enemy_start_y(int e) const=0;
2656 virtual float enemy_end_y(int e) const=0;
2657};
2658
2660void SetWorld(WorldBlocks *w);
2661
2663{
2664public:
2665 virtual ~HeavyOperation();
2666 virtual bool RequestPrepares() const=0;
2667 virtual void TriggerPrepares()=0;
2668 virtual int NumPrepares() const=0;
2669 virtual void Prepare(int prepare)=0;
2670 virtual int NumSlots() const=0;
2671 virtual void Slot(int slot)=0;
2672 virtual void FinishSlots()=0;
2673 virtual void* get_data(std::string type)=0;
2674 virtual void set_usage_index(int slot)=0;
2675 //virtual bool IsReadyForTriggerFrames() const=0;
2676 //virtual void TriggerFrames()=0;
2677 //virtual void handle_event(MainLoopEvent &e)=0;
2678 //virtual void draw_event(FrameLoopEvent &e)=0;
2679 //virtual void frame(MainLoopEnv &e)=0;
2680 //virtual void draw_frame(DrawLoopEnv &e)=0;
2681};
2682
2684{
2685public:
2686 virtual ~QMLLoop() { }
2687 virtual int NumChildren() const=0;
2688 virtual QMLLoop *Children(int i) const=0;
2689
2690};
2691
2692
2694{
2695public:
2696 virtual ~QMLData() { }
2697 virtual void Prepare()=0;
2698 virtual QMLData* Parent() const=0;
2699 virtual std::string Type() const=0;
2700 virtual int NumImports() const=0;
2701 virtual std::string Import(int import_i) const=0;
2702 virtual int NumAttribs() const=0;
2703 virtual std::string AttrName(int attr_i) const=0;
2704 virtual std::string AttrValue(int attr_i) const=0;
2705 virtual int NumChildren() const=0;
2706 virtual std::string Name(int child_i) const=0;
2707 virtual std::string Type(int child_i) const=0;
2708 virtual QMLData *Children(int child_i) const=0;
2709};
2710
2711
2713{
2714public:
2715 virtual ~SkeletalData() { }
2716 virtual void Prepare()=0;
2717
2718 virtual int NumBones() const=0;
2719 virtual Point Bone(int i, bool is_first) const=0;
2720 virtual float BoneDeltaAngle(int i) const=0;
2721
2722 // points are using cylindar coordinates
2723 virtual int NumPoints() const=0;
2724 virtual int PointAttachBone(int pt) const=0;
2725 virtual float DistFromBone(int pt) const=0;
2726 virtual float PosAtBone(int pt) const=0;
2727 virtual float BoneAngle(int pt) const=0;
2728};
2729
2731{
2732public:
2733 FrmWidget() : x(0), y(0), w(0), h(0) { }
2734 virtual ~FrmWidget() { }
2735 virtual void Prepare()=0;
2737 virtual void frame(DrawLoopEnv &e)=0;
2738public:
2739 virtual void set_pos(int x_, int y_) { x=x_; y=y_; }
2740 virtual void set_size(int w_, int h_) { w=w_; h=h_; }
2741 virtual void set_label(std::string s) { /* override this in derived class */ }
2742 int pos_x() const { return x; }
2743 int pos_y() const { return y; }
2744 int size_w() const { return w; }
2745 int size_h() const { return h; }
2746public:
2747 int x,y;
2748 int w,h;
2749};
2750struct PosDelta {
2751 std::vector<int> l,t,W,H,r,b;
2752};
2754 int l,t,W,H,r,b;
2755};
2756const int Pos_E = -16384;
2758{
2759public:
2760 FrmContainerWidget(GameApi::Env &e, std::vector<FrmWidget*> wid, std::string url, std::string homepage) : e(e), wid(wid), url(url), homepage(homepage) { }
2761 void Collect(CollectVisitor &vis);
2762 void HeavyPrepare();
2763 virtual void Prepare();
2764 virtual void set_size(int w_, int h_);
2765 void print_vec(std::vector<int> v);
2766 virtual void set_pos(int x_, int y_);
2767
2769 {
2770 int s = std::min(std::min(wid.size(),pos.size()),option_num.size());
2771 for(int i=0;i<s;i++) {
2772 wid[i]->handle_event(e);
2773 }
2774
2775 }
2776 virtual void frame(DrawLoopEnv &e)
2777 {
2778 int s = std::min(std::min(wid.size(),pos.size()),option_num.size());
2779 for(int i=0;i<s;i++) {
2780 wid[i]->frame(e);
2781 }
2782 }
2783 void set_option(int i, int l, int t, int W, int H, int r, int b) {
2784 PosOption o;
2785 o.l = l;
2786 o.t = t;
2787 o.W = W;
2788 o.H = H;
2789 o.r = r;
2790 o.b = b;
2791 option_num[i] = o;
2792 }
2793private:
2794 GameApi::Env &e;
2795 std::vector<FrmWidget*> wid;
2796 std::vector<PosDelta> pos;
2797 std::vector<PosOption> option_num;
2798 std::string url;
2799 std::string homepage;
2800};
2801
2803{
2804public:
2805 FrmRootWidget(FrmWidget *w, int scrx, int scry) : w(w), scrx(scrx), scry(scry) { }
2806 void Collect(CollectVisitor &vis) { w->Collect(vis); vis.register_obj(this); }
2808 w->set_pos(0,0);
2809 w->set_size(scrx,scry);
2810 }
2811 virtual void Prepare() {
2812 w->Prepare();
2813 w->set_pos(0,0);
2814 w->set_size(scrx,scry);
2815 }
2816 virtual void handle_event(FrameLoopEvent &e) { w->handle_event(e); }
2817 virtual void frame(DrawLoopEnv &e) { w->frame(e); }
2818private:
2819 FrmWidget *w;
2820 int scrx, scry;
2821};
2822
2824{
2825public:
2826 virtual ~ColorBool() { }
2827 virtual bool is_included(unsigned int color) const=0;
2828};
2829
2831{
2832public:
2833 virtual ~VoxelArray() { }
2834 virtual void Prepare()=0;
2835 virtual int SizeX() const=0;
2836 virtual int SizeY() const=0;
2837 virtual int SizeZ() const=0;
2838 virtual int Size() const=0;
2839
2840 struct Pos { int x; int y; int z; };
2841 virtual Pos Map(int i) const=0;
2842 virtual unsigned int Color(int i) const=0;
2843 virtual int State(int i) const=0;
2844};
2845
2847{
2850 unsigned int c;
2852 float tx3;
2853};
2854
2856{
2860};
2861
2862
2864{
2865public:
2867 std::vector<QuadNode*> child;
2868 std::vector<Extends> child_extends;
2869};
2870
2871
2873{
2874public:
2875 virtual ~QuadTree() { }
2876 virtual int RootType() const=0;
2877 virtual Extends RootExtends() const=0;
2878 virtual QuadNode *Root() const=0;
2879 virtual int NumChildren(QuadNode *n) const=0;
2880 virtual QuadNode *Child(int i, QuadNode *n) const=0;
2881 virtual Extends ChildExtends(int i, QuadNode *n) const=0;
2882 virtual int ChildType(int i, QuadNode *n) const=0;
2883 virtual QuadNode *Parent(QuadNode *n) const { return n->parent; }
2884public:
2885 void push_tri(Vertex v1, Vertex v2, Vertex v3);
2886 void push_quad(Vertex v1, Vertex v2, Vertex v3, Vertex v4);
2887 void push_poly(std::vector<Vertex> vec);
2888};
2889
2891
2939
2941{
2942public:
2943 virtual ~Object3d() { }
2944 virtual int current_state() const=0;
2945 virtual Prop3d &prop(int state)=0;
2946
2947 virtual void Prepare()=0;
2948 virtual void execute(MainLoopEnv &e)=0;
2949 virtual void handle_event(MainLoopEvent &e)=0;
2950 virtual int shader_id() { return -1; }
2951 virtual void destroy() { }
2952};
2953
2954
2956{
2957public:
2958 virtual ~Html() { }
2959 virtual void SetCB(void(*fptr)(void*), void*data)=0;
2960 virtual void Prepare()=0;
2961 virtual std::string script_file() const=0;
2962 virtual std::string homepage() const=0;
2963};
2964
2965
2967{
2968 unsigned char type;
2969};
2970
2972{
2973 std::string voxel_name;
2974 int /*GameApi::P*/ obj;
2975};
2977{
2978 std::vector<V_Voxel_Type> vec;
2979};
2980
2982{
2983 int obj_type; // index to g_object_types
2984 //bool is_pos;
2985 float x,y,z;
2986 //bool is_matrix;
2987 //Matrix m;
2988 float radius;
2989};
2991{
2992 std::string pos_name;
2993 std::vector<V_Object> pos;
2994};
2995
2997{
2998 int /*GameApi::P*/ obj;
2999 int /*GameAPi::MN*/ move;
3000 int /*GameAPi::MT*/ mat;
3001 float radius;
3002};
3004{
3005 std::string type_name;
3006 std::vector<V_Object_Type> vec;
3007};
3008
3009
3011{
3015};
3017{
3018 std::string name;
3019 std::vector<V_Wall> vec;
3020};
3021
3022
3023
3025{
3026 std::string name;
3027 int voxel_types=-1; // index to g_voxel_types
3028 // dimensions
3031 // handle
3032 float pos_x, pos_y, pos_z; // between start_x..end_x, start_y..end_y, start_z..end_z
3033 // number of voxels
3036 // heightmap
3037 int /*GameApi::FB*/ ground_heightmap = -1;
3038
3039 // textures
3040 int /*GameApi::BM*/ top_texture = -1;
3045
3046 int /*GameApi::BM*/ left_texture = -1;
3051
3052 //int /*GameApi::BM*/ right_texture;
3053 //float right_start_y;
3054 //float right_end_y;
3055 //float right_start_z;
3056 //float right_end_z;
3057
3058 int /*GameApi::BM*/ front_texture = -1;
3063
3064 //int /*GameApi::BM*/ back_texture;
3065 //float back_start_x;
3066 //float back_end_x;
3067 //float back_start_y;
3068 //float back_end_y;
3069
3070 // walls
3071 int wall=-1; // index to g_walls
3072
3073 int obj_type=-1;
3074 int obj_pos=-1;
3075};
3076
3077
3079{
3081};
3083{
3084 std::vector<V_Area> vec;
3085 std::vector<Point> pos;
3086};
3087
3088extern std::vector<V_Voxel_Type_Array*> g_voxel_types;
3089extern std::vector<V_Object_Pos> g_object_pos;
3090extern std::vector<V_Object_Type_Array*> g_object_types;
3091extern std::vector<V_Wall_Array*> g_walls;
3092extern std::vector<V_Area_Type> g_area_type_array;
3093extern std::vector<V_Area_Pos> g_areas;
3094
3095
3096struct Rect5
3097{
3098 float x,y;
3099 float sx,sy;
3100};
3101
3103{
3104public:
3105 virtual ~RectangleArray() { }
3106 virtual void Prepare() =0;
3107 virtual int NumRects() const=0;
3108 virtual Rect5 GetRect(int i) const=0;
3109 virtual int Type(int i) const=0;
3110};
3111
3112
3114{
3115public:
3116 virtual ~LoadStream() { }
3117 virtual void Prepare()=0;
3118 virtual LoadStream *Clone()=0;
3119 virtual bool get_ch(unsigned char &ch)=0;
3120 virtual bool get_line(std::vector<unsigned char, GameApiAllocator<unsigned char> > &line)=0;
3121 virtual bool get_file(std::vector<unsigned char, GameApiAllocator<unsigned char> > &file)=0;
3122};
3123
3125{
3126public:
3127 virtual ~PlayerStrings() { }
3128 virtual int NumPlayers() const=0;
3129 virtual std::string Player_ID(int i) const=0;
3130 virtual std::string Player_Prop(int i) const=0;
3131};
3132
3134{
3135public:
3136 virtual ~DynMainLoop() { }
3137 virtual int num() const=0;
3138 virtual MainLoopItem *get_mainloop(int i) const=0;
3139};
3140
3141#if 0
3142class SkeletalAnimMap
3143{
3144public:
3145 // initial pose
3146 virtual int NumPoints() const=0;
3147 virtual Vector GetPoint(int p) const=0;
3148 virtual int Parent(int p) const=0; // -1 = no parent
3149 virtual float Angle(int p) const=0;
3150
3151 // mesh coordinates relative to pose
3152 virtual int FacePoint_PointNum(int face, int point) const=0;
3153 virtual float SpanPos(int face, int point) const=0;
3154 virtual float Dist(int face, int point) const=0;
3155 virtual float Angle(int face, int point) const=0;
3156
3157 // animation frames
3158 virtual int NumKeyFrames() const=0;
3159 virtual Vector GetPoint(int k, int p) const=0;
3160 virtual float Angle(int k, int p) const=0;
3161
3162 // keyframe mapping
3163 virtual int NumKeyFrameTransitions() const=0;
3164 virtual std::pair<int,int> trans(int t) const=0;
3165};
3166#endif
3167
3169{
3170public:
3171 virtual ~FloatArray2() { }
3172 virtual int Num() const=0;
3173 virtual float Map(int i) const=0;
3174};
3176{
3177public:
3178 virtual ~FloatField() { }
3179 virtual float Map(Point p) const=0;
3180};
3181
3183{
3184public:
3185 virtual ~VelocityField() { }
3186 virtual Vector Map(Point p) const=0;
3187};
3188
3189
3191{
3193 float radius;
3194};
3195
3197{ // this is only for child graphs to generate events
3198 // i.e. generating events
3199 // use MainLoopItem for sending events.
3200public:
3201 virtual ~EventSource() { }
3202 virtual void Prepare()=0;
3203 virtual void handle_event(MainLoopEvent &event)=0;
3204 virtual void execute(MainLoopEnv &e)=0;
3205
3206 // returns number of events still that can be fetched
3207 virtual int get_game_event(InEventData &out_data)=0;
3208};
3209
3210#if 0
3211class SubDivide
3212{
3213public:
3214 virtual int num_ids() const=0;
3215 virtual int id(std::string s) const=0;
3216 virtual void set_pos(int id, Point p)=0;
3217 virtual void set_delta(int out_id, int in_id, Vector v)=0;
3218 virtual void set_span(int out_id, int in_id1, int in_id2)=0;
3219 virtual void set_span_value(int out_id, int id, float val)=0;
3220 virtual void set_curve(int out_id, int in_id, CurveIn3d &curve)=0;
3221 virtual void set_curve_value(int out_id, int id, float val)=0;
3222
3223 virtual void Prepare()=0;
3224 virtual void handle_event(MainLoopEvent &event)=0;
3225 virtual void execute(MainLoopEnv &e)=0;
3226};
3227#endif
3228
3230{
3231public:
3232 virtual ~BitmapRange() { }
3233 virtual int NumSpans() const=0;
3234 virtual int NumRanges(int span) const=0;
3235 virtual int StartRange(int span, int range) const=0;
3236 virtual int EndRange(int span, int range) const=0;
3237};
3238
3240{
3241public:
3242 virtual ~GameState() { }
3243 virtual float *index_float(int i) const=0;
3244 virtual int *index_int(int i) const=0;
3245 virtual std::string *index_string(int i) const=0;
3246};
3247
3248
3250{
3251public:
3252 virtual ~GCBitmap() { }
3253 virtual void Prepare()=0;
3254 virtual int SizeX() const=0;
3255 virtual int SizeY() const=0;
3256 virtual unsigned int Map(int x, int y) const=0;
3257};
3258
3260{
3261public:
3262 virtual ~GraphicsContext() { }
3263 virtual int size_x() const=0;
3264 virtual int size_y() const=0;
3265
3266 virtual void StartBatch(std::string name)=0;
3267 virtual void EndBatch(std::string name)=0;
3268
3269 virtual void draw_pixel(int x, int y, unsigned int color)=0;
3270 //virtual unsigned int get_pixel(int x, int y) const=0; // ei toimi henrin platassa
3271 virtual void draw_rect(int x, int y, int sx, int sy, unsigned int color)=0;
3272 virtual void draw_image(int x, int y, int sx, int sy, GCBitmap &bitmap)=0;
3273 virtual void draw_image2(int x, int y, int sx, int sy, GCBitmap &bitmap)=0;
3274 virtual void draw_line(int x, int y, int x2, int y2, unsigned int color)=0;
3275
3276 // text drawing not included, but should do Bitmap<Color> *draw_text(std::string label, Font *font);
3277};
3279
3281{
3282public:
3283 virtual ~TimeAnim() { }
3284 virtual void Collect(CollectVisitor &vis)=0;
3285 virtual void HeavyPrepare()=0;
3286 virtual void Prepare()=0;
3287 virtual float start_time() const=0;
3288 virtual float end_time() const=0;
3289 virtual FaceCollection *get_frame(float time) const=0;
3290};
3291
3292
3293#if 0
3294class GLTFEditInterface : public CollectInterface
3295{
3296public:
3297 virtual void Prepare()=0;
3298 virtual void Collect(CollectVisitor &vis)=0;
3299 virtual void HeavyPrepare()=0;
3300 virtual bool ReadyToPrepare() const { return true; }
3301 virtual void execute() { }
3302
3303 virtual std::string name() const=0;
3304
3305 virtual std::string BaseUrl() const=0;
3306 virtual std::string Url() const=0;
3307
3308 virtual int get_default_scene() const=0;
3309
3310 virtual int meshes_size() const=0;
3311 virtual GameApi::P get_mesh(int i) const=0;
3312
3313 virtual int materials_size() const=0;
3314 virtual GameApi::MT get_material(int i) const=0;
3315
3316 virtual int images_size() const=0;
3317 virtual GameApi::BM get_image(int i) const=0;
3318};
3319#endif
3320
3321class LoadGltf;
3322
3324{
3325public:
3327 virtual void Prepare()=0;
3328 virtual void Collect(CollectVisitor &vis)=0;
3329 virtual void HeavyPrepare()=0;
3330 virtual bool ReadyToPrepare() const { return true; }
3331 virtual bool ReadyToFetch() const { return true; } // tasks_async_join
3332 virtual bool IsSketchFabZipASyncJoinImplementation() const { return false; }
3333 virtual void execute() { }
3334 virtual void set_loadgltf_unique_id(int id) { }
3335
3336 virtual bool Ready() const { return true; }
3337
3338
3339 virtual std::string name() const=0;
3340
3341 virtual std::string BaseUrl() const=0;
3342 virtual std::string Url() const=0;
3343
3344 virtual LoadGltf *get_load() const=0;
3345
3346 virtual int get_default_scene() const=0;
3347
3348 virtual int accessors_size() const=0;
3349 virtual const tinygltf::Accessor &get_accessor(int i) const=0;
3350
3351 virtual int animations_size() const=0;
3352 virtual const tinygltf::Animation &get_animation(int i) const=0;
3353
3354 virtual int buffers_size() const=0;
3355 virtual const tinygltf::Buffer &get_buffer(int i) const=0;
3356
3357 virtual int bufferviews_size() const=0;
3358 virtual const tinygltf::BufferView &get_bufferview(int i) const=0;
3359
3360 virtual int materials_size() const=0;
3361 virtual const tinygltf::Material &get_material(int i) const=0;
3362
3363 virtual int meshes_size() const=0;
3364 virtual const tinygltf::Mesh &get_mesh(int i) const=0;
3365
3366 virtual int nodes_size() const=0;
3367 virtual const tinygltf::Node &get_node(int i) const=0;
3368
3369 virtual int textures_size() const=0;
3370 virtual const tinygltf::Texture &get_texture(int i) const=0;
3371
3372 virtual int images_size() const=0;
3373 virtual const tinygltf::Image &get_image(int i) const=0;
3374
3375 virtual int skins_size() const=0;
3376 virtual const tinygltf::Skin &get_skin(int i) const=0;
3377
3378 virtual int samplers_size() const=0;
3379 virtual const tinygltf::Sampler &get_sampler(int i) const=0;
3380
3381 virtual int cameras_size() const=0;
3382 virtual const tinygltf::Camera &get_camera(int i) const=0;
3383
3384 virtual int scenes_size() const=0;
3385 virtual const tinygltf::Scene &get_scene(int i) const=0;
3386
3387 virtual int lights_size() const=0;
3388 virtual const tinygltf::Light &get_light(int i) const=0;
3389};
3390
3392{
3393public:
3394 ForwardGLTF(GLTFModelInterface *next) : next(next) { }
3395 virtual std::string name() const=0;
3396
3397 virtual std::string BaseUrl() const { return next->BaseUrl(); }
3398 virtual std::string Url() const { return next->Url(); }
3399
3400 virtual bool ReadyToFetch() const { return next->ReadyToFetch(); }
3402 return next->IsSketchFabZipASyncJoinImplementation();
3403 }
3404
3405 virtual void execute() { next->execute(); }
3406 virtual void set_loadgltf_unique_id(int id) { next->set_loadgltf_unique_id(id); }
3407
3408 virtual LoadGltf *get_load() const { return next->get_load(); }
3409
3410 virtual int get_default_scene() const { return next->get_default_scene(); }
3411
3412 virtual int accessors_size() const { return next->accessors_size(); }
3413 virtual const tinygltf::Accessor &get_accessor(int i) const
3414 {
3415 return next->get_accessor(i);
3416 }
3417
3418 virtual int animations_size() const { return next->animations_size(); }
3419 virtual const tinygltf::Animation &get_animation(int i) const
3420 {
3421 return next->get_animation(i);
3422 }
3423
3424 virtual int buffers_size() const { return next->buffers_size(); }
3425 virtual const tinygltf::Buffer &get_buffer(int i) const
3426 {
3427 return next->get_buffer(i);
3428 }
3429
3430 virtual int bufferviews_size() const { return next->bufferviews_size(); }
3431 virtual const tinygltf::BufferView &get_bufferview(int i) const
3432 {
3433 return next->get_bufferview(i);
3434 }
3435
3436 virtual int materials_size() const { return next->materials_size(); }
3437 virtual const tinygltf::Material &get_material(int i) const
3438 {
3439 return next->get_material(i);
3440 }
3441
3442 virtual int meshes_size() const { return next->meshes_size(); }
3443 virtual const tinygltf::Mesh &get_mesh(int i) const
3444 {
3445 return next->get_mesh(i);
3446 }
3447
3448 virtual int nodes_size() const { return next->nodes_size(); }
3449 virtual const tinygltf::Node &get_node(int i) const
3450 {
3451 return next->get_node(i);
3452 }
3453
3454 virtual int textures_size() const { return next->textures_size(); }
3455 virtual const tinygltf::Texture &get_texture(int i) const
3456 {
3457 return next->get_texture(i);
3458 }
3459
3460 virtual int images_size() const { return next->images_size(); }
3461 virtual const tinygltf::Image &get_image(int i) const
3462 {
3463 return next->get_image(i);
3464 }
3465
3466 virtual int skins_size() const { return next->skins_size(); }
3467 virtual const tinygltf::Skin &get_skin(int i) const
3468 {
3469 return next->get_skin(i);
3470 }
3471
3472 virtual int samplers_size() const { return next->samplers_size(); }
3473 virtual const tinygltf::Sampler &get_sampler(int i) const
3474 {
3475 return next->get_sampler(i);
3476 }
3477
3478 virtual int cameras_size() const { return next->cameras_size(); }
3479 virtual const tinygltf::Camera &get_camera(int i) const
3480 {
3481 return next->get_camera(i);
3482 }
3483
3484 virtual int scenes_size() const { return next->scenes_size(); }
3485 virtual const tinygltf::Scene &get_scene(int i) const
3486 {
3487 return next->get_scene(i);
3488 }
3489
3490 virtual int lights_size() const { return next->lights_size(); }
3491 virtual const tinygltf::Light &get_light(int i) const
3492 {
3493 return next->get_light(i);
3494 }
3495private:
3496 GLTFModelInterface *next;
3497};
3498
3499
3500struct BBox
3501{
3502 int id;
3503 float start_x;
3504 float end_x;
3505 float start_y;
3506 float end_y;
3507};
3508
3509class Program;
3510
3512{
3513public:
3514 virtual ~ShaderBlock() { }
3515 virtual int NumChildren() const=0;
3516 virtual const ShaderBlock *Children(int i) const=0;
3517
3518 virtual int get_uid() const=0;
3519
3520 virtual float start_time() const=0;
3521 virtual float end_time() const=0;
3522
3523 virtual BBox BoundingBox(float time) const=0;
3524
3525 virtual std::string GetDistField() const=0; // distfield<uid>::((x,y,z,t),(xx,yy))->float
3526 virtual std::string GetColor() const=0; // color<uid>::((x,y,z,t),(xx,yy))->vec4
3527 virtual std::string GetNormal() const=0; // normal<uid>::((x,y,z,t),(xx,yy))->vec3
3528 virtual std::string GetTexCoord() const=0; // texcoord<uid>::((x,y,z,t),(xx,yy))->vec3
3529
3530 virtual void set_vars(Program *sh)=0; // get program from SH type.
3531 // set_vars must set bbox[id].start_x bbox[id].end_x bbox[id].start_y bbox[id].end_y
3532
3533 // use global function: std::string generate_shader_block_shader(const ShaderBlock *block);
3534};
3535
3537{
3538public:
3539 virtual ~Scalar() { }
3540
3541 virtual float get() const=0;
3542};
3543
3544class Vec2
3545{
3546public:
3547 virtual ~Vec2() { }
3548 virtual float get_x() const=0;
3549 virtual float get_y() const=0;
3550};
3551
3552class Vec3
3553{
3554public:
3555 virtual ~Vec3() { }
3556 virtual float get_x() const=0;
3557 virtual float get_y() const=0;
3558 virtual float get_z() const=0;
3559};
3560
3561class Vec4
3562{
3563public:
3564 virtual ~Vec4() { }
3565 virtual float get_x() const=0;
3566 virtual float get_y() const=0;
3567 virtual float get_z() const=0;
3568 virtual float get_w() const=0;
3569 float get_r() const { return get_x(); }
3570 float get_g() const { return get_y(); }
3571 float get_b() const { return get_z(); }
3572 float get_a() const { return get_w(); }
3573};
3574
3576{
3577public:
3578 virtual ~Mat2_a() { }
3579 virtual float get_mat(int x, int y) const=0;
3580};
3582{
3583public:
3584 virtual ~Mat3_a() { }
3585 virtual float get_mat(int x, int y) const=0;
3586};
3588{
3589public:
3590 virtual ~Mat4_a() { }
3591 virtual float get_mat(int x, int y) const=0;
3592};
3593
3594
3595class CollectVisitor2;
3597{
3598public:
3600 virtual void Collect(CollectVisitor2 &vis)=0;
3601 virtual void HeavyPrepare()=0;
3602};
3603
3605{
3606public:
3607 virtual ~CollectVisitor2() { }
3609 virtual void register_child(int num, CollectInterface2 *i)=0;
3610};
3611
3612
3614{
3615 std::string key;
3616 float *value;
3617};
3619{
3620 std::string key;
3621 int *value;
3622};
3624{
3625 std::string key;
3626 unsigned int *value;
3627};
3629{
3630 std::string key;
3632};
3633
3634
3636{
3637public:
3638 virtual ~BindingsI() { }
3639 virtual int F_Size() const=0;
3640 virtual const FloatBinding &F_get(int i) const=0;
3641 virtual int I_Size() const=0;
3642 virtual const IntBinding &I_get(int i) const=0;
3643 virtual int U_Size() const=0;
3644 virtual const UnsignedIntBinding &U_get(int i) const=0;
3645 virtual int P_Size() const=0;
3646 virtual const PointBinding &P_get(int i) const=0;
3647
3648 virtual void set(GameApi::EveryApi &ev, int sh)=0;
3649};
3650
3651class Bindings : public BindingsI
3652{
3653public:
3654 Bindings(const Bindings &c) : f_vec(c.f_vec), i_vec(c.i_vec),u_vec(c.u_vec),p_vec(c.p_vec) { }
3655 Bindings(const Bindings &c, FloatBinding n) : f_vec(c.f_vec), i_vec(c.i_vec),u_vec(c.u_vec),p_vec(c.p_vec) { f_vec.push_back(n); }
3656 Bindings(const Bindings &c, IntBinding n) : f_vec(c.f_vec), i_vec(c.i_vec),u_vec(c.u_vec),p_vec(c.p_vec) { i_vec.push_back(n); }
3657 Bindings(const Bindings &c, UnsignedIntBinding n) : f_vec(c.f_vec), i_vec(c.i_vec), u_vec(c.u_vec),p_vec(c.p_vec) { u_vec.push_back(n); }
3658 Bindings(const Bindings &c, PointBinding n) : f_vec(c.f_vec), i_vec(c.i_vec), u_vec(c.u_vec),p_vec(c.p_vec) { p_vec.push_back(n); }
3659 Bindings(const Bindings &c1, const Bindings &c2) : f_vec(c1.f_vec), i_vec(c1.i_vec), u_vec(c1.u_vec),p_vec(c1.p_vec) {
3660 int fs = c2.F_Size();
3661 for(int i=0;i<fs;i++)
3662 {
3663 f_vec.push_back(c2.F_get(i));
3664 }
3665 int is = c2.I_Size();
3666 for(int i=0;i<is;i++)
3667 {
3668 i_vec.push_back(c2.I_get(i));
3669 }
3670 int us = c2.U_Size();
3671 for(int i=0;i<us;i++)
3672 {
3673 u_vec.push_back(c2.U_get(i));
3674 }
3675 int ps = c2.P_Size();
3676 for(int i=0;i<ps;i++)
3677 {
3678 p_vec.push_back(c2.P_get(i));
3679 }
3680
3681 }
3682 int F_Size() const { return f_vec.size(); }
3683 const FloatBinding &F_get(int i) const { return f_vec[i]; }
3684 int I_Size() const { return i_vec.size(); }
3685 const IntBinding &I_get(int i) const { return i_vec[i]; }
3686 int U_Size() const { return u_vec.size(); }
3687 const UnsignedIntBinding &U_get(int i) const { return u_vec[i]; }
3688 int P_Size() const { return p_vec.size(); }
3689 const PointBinding &P_get(int i) const { return p_vec[i]; }
3690 void set(GameApi::EveryApi &ev, int sh);
3691protected:
3693private:
3694 std::vector<FloatBinding> f_vec;
3695 std::vector<IntBinding> i_vec;
3696 std::vector<UnsignedIntBinding> u_vec;
3697 std::vector<PointBinding> p_vec;
3698};
3699
3701{
3702public:
3703 virtual ~ShaderCode() { }
3704 virtual std::string Code() const=0;
3705};
3707{
3708public:
3709 virtual ~ShaderI2() { }
3710 virtual void set_inner(int num, std::string value)=0;
3711 virtual std::string get_webgl_header() const=0;
3712 virtual std::string get_win32_header() const=0;
3713 virtual std::string get_webgl_function() const=0;
3714 virtual std::string get_win32_function() const=0;
3715 virtual Bindings set_var(const Bindings &b)=0;
3716 virtual std::string get_flags() const=0;
3717 virtual std::string func_name() const=0;
3718 virtual void execute(MainLoopEnv &e)=0;
3719 virtual void handle_event(MainLoopEvent &e)=0;
3720
3721 // set_inner needs to be called before each call of get_[webgl|win32]_[header|function]()
3722};
3724{
3725public:
3726 virtual ~ShaderParameterI() { }
3727 virtual void set_time(float time)=0;
3728 //virtual bool enabled() const=0;
3729 virtual float param_value_f(int i) const=0;
3730 virtual int param_value_i(int i) const=0;
3731 virtual unsigned int param_value_u(int i) const=0;
3732 virtual Point param_value_p3d(int i) const=0;
3733 virtual Point param_value_uvw(int i) const=0;
3734};
3735
3736
3737class ASyncTask
3738{
3739public:
3740 virtual int NumTasks() const=0;
3741 virtual void DoTask(int i)=0;
3742 virtual ~ASyncTask() { }
3743};
3744
3746{
3747public:
3749 virtual unsigned int Id() const=0;
3750 virtual void Prepare()=0;
3751 virtual int SizeX() const=0;
3752 virtual int SizeY() const=0;
3753};
3754
3756{
3757public:
3759 virtual int NumArray() const=0; // a
3760 virtual int NumAlts() const=0; // i
3761 virtual int Alt(int a, int i) const=0;
3762};
3763
3764class TexturedVoxelArea;
3766{
3767public:
3769 virtual int Size() const=0;
3770 virtual TexturedVoxelArea *Index(int i) const=0;
3771 virtual int Left(int i) const=0;
3772 virtual int Top(int i) const=0;
3773 virtual int Right(int i) const=0;
3774 virtual int Bottom(int i) const=0;
3775 virtual int SX(int i) const=0;
3776 virtual int SY(int i) const=0;
3777 virtual int SZ(int i) const=0;
3778 virtual int Front(int i) const=0;
3779 virtual int Back(int i) const=0;
3780};
3781
3783{
3784public:
3787 virtual int Parent() const=0;
3788 virtual Bitmap<Color>* texture() const=0;
3789 virtual FaceCollection* faces() const=0;
3790 virtual int bounding_start_x() const=0;
3791 virtual int bounding_end_x() const=0;
3792 virtual int bounding_start_y() const=0;
3793 virtual int bounding_end_y() const=0;
3794 virtual int bounding_start_z() const=0;
3795 virtual int bounding_end_z() const=0;
3796};
3797
3798
3800{
3801public:
3802 TexturedVoxel(int num) : num(num) { }
3803 virtual ~TexturedVoxel() { }
3804 virtual int SizeX() const { return 192; }
3805 virtual int SizeY() const { return num*32; }
3806 virtual Color Map(int x, int y) const=0;
3807
3808 virtual int SX() const=0;
3809 virtual int SY() const=0;
3810 virtual int SZ() const=0;
3811 virtual bool IsEnabled(int x, int y, int z) const { return Map(x,y,z)!=0; }
3812 virtual unsigned char Map(int x, int y, int z) const=0;
3813private:
3814 int num;
3815};
3816
3818{
3819public:
3820 virtual ~TexturedQuads() { }
3821 virtual int SizeX() const=0;
3822 virtual int SizeY() const=0;
3823 virtual Color Map(int x, int y) const=0;
3824
3825 virtual int Size() const=0;
3826 virtual Point P1(int i) const=0;
3827 virtual Point P2(int i) const=0;
3828 virtual Point P3(int i) const=0;
3829 virtual Point P4(int i) const=0;
3830 virtual int Type(int i) const=0;
3831
3832 virtual Point2d start(int type) const=0;
3833 virtual Point2d end(int type) const=0;
3834};
3835
3836
3838{
3839public:
3841 virtual int start_x() const=0;
3842 virtual int end_x() const=0;
3843 virtual int start_y() const=0;
3844 virtual int end_y() const=0;
3845 virtual int start_z() const=0;
3846 virtual int end_z() const=0;
3847
3848 virtual int startcell_x() const=0;
3849 virtual int startcell_y() const=0;
3850 virtual int startcell_z() const=0;
3851
3852 virtual bool Map(int x, int y, int z) const=0;
3853 virtual Vector gradient(int x, int y, int z) const=0;
3854};
3855
3857{
3858public:
3860 virtual bool Map(bool x, bool y, bool z) const=0;
3861 virtual Vector gradient(bool x, bool y, bool z) const=0;
3862};
3863
3865{
3866public:
3868 virtual bool start(unsigned char c1, unsigned char c2)=0;
3869 virtual bool end(unsigned char c1, unsigned char c2)=0;
3870 virtual Point pos(unsigned char c1, unsigned char c2)=0;
3871 virtual Vector gradient(unsigned char c1, unsigned char c2)=0;
3872};
3873
3875{
3876public:
3878 virtual int NumPoints() const=0;
3879 virtual Point FacePoint(int point) const=0;
3880 virtual Vector PointNormal(int point) const=0;
3881};
3882
3884{
3885public:
3887 virtual int NumPolygons(int x, int y, int z) const=0; // returns 0..4
3888 virtual MarchingCubesCellPolygon *Polygon(int x, int y, int z, int poly_num) const=0;
3889};
3890
3891
3893{
3894public:
3895 virtual ~IWorld() { }
3896 virtual int NumBlocks() const=0;
3897 virtual int BlockType(int i) const=0;
3898 virtual Point BlockPos(int i) const=0;
3899 virtual Matrix BlockRot(int i) const=0;
3900};
3901
3903{
3904public:
3905 virtual ~ICache() { }
3906 virtual int Num() const=0;
3907 virtual FaceCollection *GetFaces(int i) const=0;
3908 virtual Material *GetMaterial(int i) const=0;
3909};
3910
3911
3913{
3914public:
3915 virtual ~Platform() { }
3916 virtual bool Allow(float x, float z) const=0;
3917 virtual float Height(float x, float z) const=0;
3918 virtual FaceCollection *Render() const=0;
3919};
3920
3921
3922
3924{
3925public:
3926 virtual ~Tiles2d() { }
3927 virtual int SizeX() const=0;
3928 virtual int SizeY() const=0;
3929 virtual int Tile(int x, int y) const=0;
3930 virtual int Tile2(int x, int y) const=0;
3931 virtual int Tile3(int x, int y) const=0;
3932 virtual Point2d Tile2Delta(int x, int y) const { Point2d p; p.x = 0.0; p.y=0.0; return p; }
3933 virtual int get_current_move1(int x, int y) const=0;
3934 virtual void set_current_move1(int x, int y, int val)=0;
3935 virtual int get_current_move2(int x, int y) const=0;
3936 virtual void set_current_move2(int x, int y, int val)=0;
3937 virtual float get_previous_time(int x, int y) const=0;
3938 virtual void set_previous_time(int x, int y, float val)=0;
3939 virtual float get_previous_time2(int x, int y) const=0;
3940 virtual void set_previous_time2(int x, int y, float val)=0;
3941};
3943{
3944 virtual ~Tiles3d() { }
3945 virtual int SizeX() const=0;
3946 virtual int SizeY() const=0;
3947 virtual int SizeZ() const=0;
3948 virtual int Tile(int x, int y, int z) const=0;
3949};
3950
3952{
3953public:
3954 virtual ~TileScroller() { }
3955 virtual Point get_pos() const=0;
3956 virtual void handle_event(MainLoopEvent &e)=0;
3957 virtual void execute(MainLoopEnv &e)=0;
3958 virtual void reset()=0;
3959};
3960
3962{
3963public:
3964 virtual ~TileRenderer2d() { }
3966 virtual void set_tiles_2d(Tiles2d *t, std::vector<Bitmap<Color>*> bm, std::vector<int> vec)=0;
3967};
3968
3970{
3971public:
3972 virtual ~TileRenderer3d() { }
3973 virtual MainLoopItem *get_renderer() const=0;
3974 virtual void set_tiles_3d(Tiles3d *t) const=0;
3975};
3976
3978{
3979public:
3980 virtual ~TileHudInterface() { }
3981 virtual int get_score() const=0;
3982 virtual void set_score(int score)=0;
3983 virtual int get_health() const=0;
3984 virtual void set_health(int health)=0;
3985 virtual int get_lives() const=0;
3986 virtual void set_lives(int lives)=0;
3987 virtual void set_state(int state)=0;
3988};
3989
3991{
3992public:
3994 virtual bool enabled() const=0;
3995 virtual void reset()=0;
3996};
3998{
3999public:
4001 virtual void reset()=0;
4002};
4003
4005{
4006public:
4008 virtual void add_random_item(int x, int y, float delta_x)=0;
4009};
4010
4012{
4013public:
4014 virtual ~TileActivation() { }
4015 virtual void ActivateTile(int x, int y, int z)=0;
4016 virtual void DeactivateTile(int x, int y, int z)=0;
4017};
4018
4019
4021{
4022public:
4023 virtual ~TileBehaviorMap() { }
4024 virtual void SetTiles2d(Tiles2d *t)=0;
4025 virtual void SetTiles3d(Tiles3d *t)=0;
4026 virtual int NumBehaviours() const=0;
4027 virtual int Tile(int behavior_num) const=0;
4028 virtual bool Condition(int behavior_num, int x, int y, int z) const=0;
4029 virtual void SubmitActivations(int behavior_num, int x, int y, int z, TileActivation *target) const=0;
4030 virtual int TargetTile(int behavior_num) const=0;
4031};
4032
4034{
4035public:
4036 virtual ~TilePlayer() { }
4037 virtual void SetTiles2d(Tiles2d *t)=0;
4038 virtual void SetTiles3d(Tiles3d *t)=0;
4039 virtual void handle_event(MainLoopEvent &e)=0;
4040 virtual int player_pos_x() const=0;
4041 virtual int player_pos_y() const=0;
4042 virtual int player_pos_z() const=0;
4043 virtual Point delta_pos() const=0;
4044 virtual float weapon_delta() const=0;
4045 virtual int player_tile() const=0;
4046 virtual int player_type() const=0;
4047 virtual bool weapon_at_kill() const=0;
4048 virtual bool weapon_active() const=0;
4049 virtual int player_dir() const=0;
4050 virtual bool in_jump() const=0;
4051 virtual void kill_player()=0;
4052};
4053
4055{
4056public:
4057 virtual ~TileEnemies() { }
4058 virtual void SetTiles2d(Tiles2d *t)=0;
4059 virtual void SetTiles3d(Tiles3d *t)=0;
4060 virtual int NumEnemies() const=0;
4061 virtual int enemy_pos_x(int e) const=0;
4062 virtual int enemy_pos_y(int e) const=0;
4063 virtual int enemy_pos_z(int e) const=0;
4064 virtual int enemy_tile(int e) const=0;
4065 virtual int enemy_type(int e) const=0;
4066 virtual int enemy_behavior_num(int e) const=0;
4067};
4068
4069
4070// OPENGL PATHS:
4071// main-> mainloopapi.init_window -> InitSDL2 -> SDL_CreateWindow
4072// phong2()-> PhongMaterial -> PhongShaderML -> ev.shader_api.set_var() -> Program::set_var() ->glUniform
4073// PhongShaderML -> ShaderApi::use(SH) -> use_1(sh) -> ShaderSeq::use() -> Program::use() -> glUseProgram
4074// m_def() -> DefaultMaterial::mat2 -> MaterialsApi::render_instanced_ml() -> RenderInstanced::execute -> PolygonApi::render_vertex_array_instanced -> RenderVertexArray::render_instanced -> glBufferSubData()
4075// MaterialsApi::texture_many() -> ManyTextureMaterial -> MaterialsApi::render_instanced_ml_texture -> RenderInstancedTex::execute -> TextureApi::prepare_many -> glTexImage2D()
4076// RenderInstanced::execute -> ev.shader_api.get_normal_shader -> get_normal_shader_1 -> bind_attrib_1 -> Program::bind_attrib -> glBindAttribLocation
4077
4078// PolygonApi::preparepoly(P) -> ArrayRender::Prepare() -> glBindBuffer
4079// PolygonApi::renderpoly() -> ArrayRender::Render() -> glDrawArrays
4080// SpriteApi::create_vertex_array(BM) -> sprite_from_handle2() -> new ArrayRender
4081// TextApi::draw_text(std::string,SH) -> SpriteApi::rendersprite(BM,SH) -> SpriteApi::render_sprite3_1(BM,SH) -> RenderSprite() -> ArrayRender::Render()
4082// SpriteAPi::create_vertex_array(BM)->RenderVertexArray::prepare(0)
4083// SpriteApi::vertex_array_render(BM)->render_sprite_vertex_array_ml(BM) -> RenderVertexArray4::execute() -> render_sprite_vertex_array(va) -> RenderVertexArray::render() -> TextureEnable -> ArrayRender::EnableTexture(frame) -> glActiveTexture() + glBindTexture().
4084
4085
4086
4088{
4089public:
4090 virtual ~ColourSpace() { }
4091 virtual unsigned int Map(float x, float y, float z, float t) const=0;
4092 virtual float start_x() const=0;
4093 virtual float end_x() const=0;
4094 virtual float start_y() const=0;
4095 virtual float end_y() const=0;
4096 virtual float start_z() const=0;
4097 virtual float end_z() const=0;
4098 virtual float start_t() const=0;
4099 virtual float end_t() const=0;
4100};
4101
4103{
4104public:
4105 virtual ~ColourSpaceI() { }
4106 virtual unsigned int Map(int x, int y, int z, float t) const=0;
4107 virtual int size_x() const=0;
4108 virtual int size_y() const=0;
4109 virtual int size_z() const=0;
4110 virtual float start_t() const=0;
4111 virtual float end_t() const=0;
4112};
4113
4114
4116{
4117 int x,y;
4118 unsigned int *pixel;
4119};
4120
4122{
4123public:
4124 virtual ~PixelAllocator() { }
4125 virtual Pixel2 Alloc()=0;
4126 virtual int SizeX() const=0;
4127 virtual int SizeY() const=0;
4128 virtual Bitmap<Color> *get_all() const=0;
4129 virtual Bitmap<Color> *get_xy() const=0;
4130};
4131
4132class FetchInBlocks;
4133struct VECENTRY;
4134
4136{
4137 int id;
4138 int num;
4139 void *(*fptr)(void*);
4140 void *data;
4141};
4142
4144{
4145public:
4146 virtual ~task_interface() { }
4147 virtual void spawn_thread()=0;
4148public: // mutex operations needed
4149 virtual void queue_mutex_init()=0;
4150 virtual void queue_mutex_start()=0;
4151 virtual void queue_mutex_end()=0;
4152 virtual void mutex_init()=0;
4153 virtual void mutex_destroy()=0;
4154public:
4155 virtual task_data create_work(int id,
4156 void *(*fptr)(void*),
4157 void *data)=0;
4158
4159 virtual void push_to_queue(task_data d)=0;
4160 virtual bool queue_has_data() =0;
4161 virtual task_data front()=0;
4162 virtual void pop_from_queue() =0;
4163 virtual void wait_for_push_or_shutdown() =0;
4164 virtual void start_shutdown()=0;
4165 virtual bool shutdown_ongoing()=0;
4166 virtual void join_id(int id)=0;
4169};
4170
4172{
4173public:
4175 virtual void async_cache_clear()=0;
4176 virtual void print() { }
4177#ifdef EMSCRIPTEN
4178 virtual void del_fetch_url(std::string url)=0;
4179#endif
4180 virtual void del_async_url(std::string url)=0;
4181#ifdef EMSCRIPTEN
4182 virtual void push_fetch_url(std::string url, FetchInBlocks *blk)=0;
4183#endif
4184 virtual void push_async_url(std::string url, const GameApi::ASyncVec *ptr)=0;
4185
4186 virtual void del_vec(GameApi::ASyncVec* vec)=0;
4187#ifdef EMSCRIPTEN
4188 virtual bool fetch_find(std::string url)=0;
4189#endif
4190 virtual bool async_find(std::string url)=0;
4191 virtual GameApi::ASyncVec *async_get2(std::string url)=0;
4192};
4193
4194
4196{
4197public:
4198 virtual ~GaussianSplat() { }
4199 virtual void Prepare()=0;
4200 virtual void Collect(CollectVisitor &vis)=0;
4201 virtual void HeavyPrepare()=0;
4202public:
4203 virtual int NumItems() const=0;
4204 virtual Point center(int i) const=0;
4205 virtual Matrix cov(int i) const=0;
4206 virtual unsigned int color(int i) const=0;
4207};
4208
4209
4210
4211#endif
4212
4213
4214#if 0
4215
4216template<class T>
4217class ParamInput
4218{
4219public:
4220 virtual int NumParams() const=0;
4221 virtual void SetParam(int i, T val)=0;
4222};
4223
4224template<class T>
4225class ParamData
4226{
4227 std::vector<T> vec;
4228};
4229
4230
4231template<class T>
4232class ParamOutput
4233{
4234public:
4235 virtual ~ParamOutput() { }
4236 virtual int NumOutputs() const=0;
4237 virtual T GetOutput(int i) const=0;
4238};
4239
4240template<class T>
4241class IdParam : public ParamInput<T>,
4242 public ParamData<T>,
4243 public ParamOutput<T>
4244{
4245public:
4246
4247};
4248
4249struct ChangeEnv
4250{
4251};
4252
4253
4254template<class T>
4255class ArrayI : public ParamInput<T>, ParamOutput<T>
4256{
4257public: // ctors
4258 ArrayI() : vec() { }
4259 ArrayI(const std::vector<T> &ref) : vec(ref) { }
4260 virtual ~ArrayI() { }
4261
4262public: // decide dimensions
4263 void set_dimension(int i)
4264 {
4265 vec.resize(i);
4266 }
4267
4268public: // inputs
4269 virtual int NumParams() const { return vec.size(); }
4270 virtual void SetParam(int i, T val) {
4271 if (i>=vec.size()) vec.resize(i+1);
4272 vec[i]=val;
4273 }
4274
4275public: // decisions
4276 virtual void ApplyChange(ChangeEnv &env) { DoChange(vec,env); }
4277 virtual void DoChange(std::vector<T> &ref, ChangeEnv &env)=0;
4278
4279public: // outputs
4280 virtual int NumOutputs() const { return vec.size(); }
4281 virtual T GetOutput(int i) const
4282 {
4283 if (i>=vec.size()) return T();
4284 return vec[i];
4285 }
4286
4287private: // storage
4288 std::vector<T> vec;
4289};
4290
4291template<class T>
4292class DefaultFunction : public Function<float,T>
4293{
4294public:
4295 virtual ~DefaultFunction() { }
4296 virtual T Map(float val) const { return T(); }
4297};
4298
4299class CurveDim
4300{
4301 virtual float Size() const=0;
4302 virtual float Pos(float val) const=0;
4303};
4304
4305class CurvePath
4306{
4307public:
4308 virtual float Size() const=0;
4309 virtual Point Pos(float val) const=0;
4310};
4311
4312
4313template<class T>
4314class CurveI
4315{
4316public:
4317 CurveI() : curve(DefaultFunction), length(1.0), m_change_points(new ArrayI) { }
4318 CurveI(const Function<float,T> &ref) : m_curve(&ref), m_length(1.0), m_change_points(new ArrayI) { }
4319 CurveI(const Function<float,T> &ref, float length) : m_curve(&ref), m_length(length), m_change_points(new ArrayI) { }
4320 CurveI(const Function<float,T> &ref, float length, const ArrayI<float> &change_points) : m_curve(&ref), m_length(length), m_change_points(&change_points) { }
4321public:
4322 void set_length(float length)
4323 {
4324 m_length = length;
4325 }
4326
4327public:
4328 virtual int Length() const { return m_length; }
4329 virtual void SetCurve(Function<float,T> &curve) { m_curve = &curve; }
4330
4331public:
4332 virtual void ApplyChange(const ChangeEnv &env) { DoChange(&m_curve, &m_length, env); }
4333 virtual void DoChange(Function<float,T> **func, float *len, const ChangeEnv &env)=0;
4334
4335public:
4336 virtual int GetLength() const { return m_length; }
4337
4338private:
4339 Function<float,T> *m_curve;
4340 float m_length;
4341 ArrayI<float> *m_change_points;
4342};
4343
4344class ConstantFunction : public Function<float, T>
4345{
4346public:
4347 ConstantFunction(T t) : t(t) { }
4348 T Map(float /*val*/) const { return t; }
4349private:
4350 T t;
4351};
4352
4353class LineFunction : public Function<float,T>
4354{
4355public:
4356 LineFunction(Function<float,T> *next_level,
4357 float start_float, float end_float, T start, T end) : next_level(next_level),
4358 start_float(start_float), end_float(end_float),
4359 start(start), end(end) { }
4360 T Map(float val) const
4361 {
4362 if (val<start_float || val>=end_float) return next_level->Map(val);
4363
4364 float val2 = val;
4365 val2 -= start_float;
4366 val2 /= end_float-start_float;
4367 // now val2 \in [0..1]
4368 return (1.0-val2) * start + val2*end;
4369 }
4370private:
4371 Function<float, T> *next_level;
4372 float start_float, end_float;
4373 T start,end;
4374};
4375
4376class CircleFunction : public Function<float,T>
4377{
4378public:
4379 CircleFunction(Function<float,T> *next_level,
4380 float start_float, float end_float,
4381 T start, T end,
4382 float radius, bool flip)
4383 : next_level(next_level),
4384 start_float(start_float), end_float(end_float),
4385 start(start), end(end),
4386 radius(radius), flip(flip) { }
4387 T Map(float val) const
4388 {
4389 if (val<start_float || val>=end_float) return next_level->Map(val);
4390
4391 float val2 = val;
4392 val2 -= start_float;
4393 val2 /= end_float-start_float;
4394 // now val2 \in [0..1]
4395
4396 // TODO
4397
4398
4399 }
4400
4401private:
4402 Function<float, T> *next_level;
4403 float start_float, end_float;
4404 T start,end;
4405 float radius; bool flip;
4406};
4407
4408
4409class Landscape : public CollectInterface
4410{
4411public:
4412 virtual ~Landscape() { }
4413 virtual int SizeX() const=0;
4414 virtual int SizeY() const=0;
4415 virtual float start_x() const=0;
4416 virtual float end_x() const=0;
4417 virtual float start_z() const=0;
4418 virtual float end_z() const=0;
4419
4420 virtual float Height_tl(int x, int y) const=0;
4421 virtual float Height_tr(int x, int y) const=0;
4422 virtual float Height_br(int x, int y) const=0;
4423 virtual float Height_bl(int x, int y) const=0;
4424
4425 virtual int NumTextures() const=0;
4426 virtual Bitmap<Color> *Texture(int texnum) const=0;
4427 virtual int TextureNum(int x, int y) const=0;
4428
4429 virtual void Collect(CollectVisitor &vis)=0;
4430 virtual void HeavyPrepare()=0;
4431 virtual void Prepare()=0;
4432 virtual void render(MainLoopEnv &e)=0;
4433 virtual void handle_event(MainLoopEvent &e)=0;
4434};
4435
4436class SceneItems : public CollectInterface
4437{
4438public:
4439 virtual ~SceneItems() { }
4440 virtual int NumItems() const=0;
4441 virtual Point Loc(int i) const=0;
4442 virtual int Select(int i) const=0;
4443 virtual float YRot(int i) const=0;
4444 virtual float Height(int i) const=0;
4445
4446 virtual void Collect(CollectVisitor &vis)=0;
4447 virtual void HeavyPrepare()=0;
4448 virtual void Prepare()=0;
4449 virtual void render(MainLoopEnv &e)=0;
4450 virtual void handle_event(MainLoopEvent &e)=0;
4451};
4452
4453
4454
4455
4456#if 0
4457class HeavyWork
4458{
4459public:
4460 virtual void heavy(void *thread_data)=0;
4461 virtual void *get_data_initial() const=0;
4462 virtual bool heavy_op_done() const=0;
4463 virtual void *get_data_from_heavy_op() const=0;
4464 virtual int num_slots() const =0;
4465 virtual void *get_data_for_slots(int slot_idx) const=0;
4466};
4467class HeavyWorkSlot
4468{
4469public:
4470 virtual void heavy(int idx, void *thread_data, void *slotdata)=0;
4471};
4472
4473class HeavyWorkOpenGL
4474{
4475public:
4476 // initial will first be true, but over time it'll change to false.
4477 // will be called every frame. data changes on the true->false transition.
4478 virtual void set_data(bool is_initial, void *data)=0;
4479 virtual void set_data_for_slot(void *slotdata, int slot_idx)=0;
4480 virtual void render()=0;
4481};
4482
4483class HeavyWorkThread
4484{
4485 // This class must be instantiated in your object's DATA MEMBER.
4486
4487 // You're not allowed to pass data between work and ogl without going through
4488 // the get_data() and set_data(), which is called automatically.
4489public:
4490 HeavyWorkThread(HeavyWork *work, bool get_execute_from_eventloop, int id);
4491 HeavyWorkThread(HeavyWork *work, HeavyWorkOpenGL *ogl, bool get_execute_from_eventloop, int id);
4492 ~HeavyWorkThread();
4493 void add_thread(void *thread_data);
4494 void run();
4495 void execute();
4496 //void join(void (*fptr)(void*), void *data);
4497 //void async_join(void (*fptr)(void*), void *data);
4498private:
4499 void heavy(int num);
4500 void create_mutex();
4501 void lock_mutex();
4502 void unlock_mutex();
4503 void destroy_mutex();
4504 void join();
4505 void join_slot(int slot_idx);
4506 void cb();
4507 HeavyWork *work;
4508 HeavyWorkOpenGL *ogl;
4509 HeavyWorkSlot *slot;
4510 int id;
4511 std::vector<void*> thread_data;
4512 std::vector<HeavyWorkData*> data;
4513 pthread_mutex_t mutex;
4514 bool flipped=false;
4515 bool firsttime=true;
4516 int slot_num=-1;
4517};
4518#endif
4519
4520
4521
4522#endif
4523
4524
4525#if 0
4526#ifndef COMPUTER
4527#define COMPUTER 1
4528class Computer
4529{
4530public:
4531 enum ComputerType
4532 {
4533 EComputerTypeBlocker = 0x554,
4534 EComputerTypeSplitter = 0x555,
4535 EComputerTypeMLGuiWidget = 0x556,
4536 EComputerTypeBuilderGui = 0x557
4537 };
4538
4539 // create/destroy
4540 virtual int create_computer(LowApi *low, GameApi::Env &e, GameApi::EveryApi &ev, ComputerType type)=0;
4541 virtual void destroy_computer(int computer)=0;
4542 virtual ComputerType computer_type(int computer) const=0;
4543
4544 // stack of computers
4545 static void PushActiveComputer(Computer *comp, int computer);
4546 static void PopActiveComputer(Computer *comp, int computer);
4547 static Computer *ActiveComputer();
4548 static int ActiveComputerId();
4549
4550 // mouse and keyboard
4551 virtual std::vector<GameApi::MainLoopApi::Event> get_events(int computer) = 0;
4552 // display
4553 //virtual Low_SDL_Window *create_display(int computer, std::string title)=0;
4554 //virtual void destroy_display(int computer, Low_SDL_Window *win)=0;
4555
4556 //virtual Low_SDL_GLContext create_opengl_context(int computer, Low_SDL_Window *win)=0;
4557 //virtual int make_opengl_context_current(int computer, Low_SDL_Window *win, Low_SDL_GLContext context)=0;
4558 // opengl
4559 virtual OpenglLowApi *get_opengl(int computer) const=0;
4560 // sdl
4561 virtual SDLLowApi *get_sdl(int computer) const=0;
4562 // emscripten
4563 virtual EmscriptenLowApi *get_emscripten(int computer) const=0;
4564 // network
4565 virtual void async_load_url(int computer, std::string url, std::string homepage, bool nosize=false)=0;
4566 virtual void async_load_all_urls(int computer, std::vector<std::string> urls, std::string homapage)=0;
4567 virtual void async_load_callback(int computer, std::string url, void(*fptr)(void*), void *data)=0;
4568 virtual void async_rem_callback(int computer, std::string url)=0;
4569 virtual GameApi::ASyncVec *get_loaded_async_url(int computer, std::string url)=0;
4570 virtual int count_async_callbacks_still_pending(int computer)=0;
4571
4572 // event loop
4573 virtual int add_splitter_callback(int computer, void (*fptr)(void*), void *data)=0;
4574 virtual void remove_splitter_callback(int computer, int id)=0;
4575
4576 // environment
4577 virtual LowApi *get_low(int computer) const=0;
4578 virtual GameApi::Env *get_env(int computer) const=0;
4579 virtual GameApi::EveryApi *get_everyapi(int computer) const=0;
4580};
4581extern Computer *g_computer;
4582#endif
4583#endif
struct Envi env
P func(int c, EveryApi &ev)
Definition test.cpp:59
Env e
Definition Common.cc:2
EveryApi ev(e)
FunctionImpl1< Point2d, CurveIn2d *, float, Circle > CircleFunction
Definition Effect.hh:2076
Point2d pt(const FT_Vector *v)
Definition FreeType2.cc:459
PT Map(PT p, int face, int point, void *data)
Definition GameApiTest.cc:19
std::vector< V_Object_Type_Array * > g_object_types
Definition GameApi.cc:40863
IMPORT AllFunctionsServiceInterface * g_all_functions_service
Definition GameApi.cc:46279
std::vector< V_Area_Type > g_area_type_array
Definition GameApi.cc:40865
std::vector< V_Object_Pos > g_object_pos
Definition GameApi.cc:40862
std::vector< V_Area_Pos > g_areas
Definition GameApi.cc:40866
std::vector< V_Voxel_Type_Array * > g_voxel_types
Definition GameApi.cc:40861
int score
Definition GameApi.cc:19119
std::vector< V_Wall_Array * > g_walls
Definition GameApi.cc:40864
#define IMPORT
Definition GameApi.hh:332
#define MAC(name)
Definition GameApi.hh:58
Rest g_rest
Definition GameApi_dep_add_find.cc:29
int g_current_block
Definition GameApi_dep_add_find.cc:30
G_BLOCK g_blocks
Definition GameApi_dep_add_find.cc:27
EditorGuiWidgetAtlas GuiWidgetForward render()
Definition GameApi_gui.cc:1412
@ Low_GL_LEQUAL
Definition GameApi_low.hh:137
@ Low_GL_TRUE
Definition GameApi_low.hh:100
float delta_time
Definition GameApi_main.cc:967
void async_load_url(GameApi::Env &e, std::string url, std::string homepage)
Definition GameApi_qt.cc:14
GameApi::ASyncVec * get_loaded_async_url(GameApi::Env &e, std::string url)
Definition GameApi_qt.cc:18
ArrayTypesInUse
Definition GraphI.hh:2171
@ E_P
Definition GraphI.hh:2173
@ E_BM
Definition GraphI.hh:2172
GCBitmap * to_gcbitmap(Bitmap< Color > *bm)
CubeSpec opt_get_cube(const ShapeSizeSpec &s)
const int Pos_E
Definition GraphI.hh:2756
DrawBufferFormat
Definition GraphI.hh:1690
@ D_Mono1
Definition GraphI.hh:1691
@ D_RGBA8888
Definition GraphI.hh:1692
PieceUserDataIds
Definition GraphI.hh:1421
WorldBlocks * GetWorld()
Definition GameApi.cc:35472
std::string use_path3(GameApi::Env &e, GameApi::PAT val, PathHandler::Situation s)
Definition GraphI.hh:427
ShapeSpec opt_get_shape(unsigned int color, float border_width, unsigned int border_color)
Bitmap< Color > ColorBitmap
Definition GraphI.hh:901
#define IMPORT
Definition GraphI.hh:30
SizeSpec opt_get_size(int sx, int sy, int sz)
OptCacheId opt_get_id(int id)
void SetWorld(WorldBlocks *w)
Definition GameApi.cc:35479
Bitmap< Point > PointBitmap
Definition GraphI.hh:902
void stackTrace()
Definition GameApi_bm.cc:746
DSFlags
Definition GraphI.hh:592
@ DSDisableTexCoord3
Definition GraphI.hh:596
@ DSDisableNormal
Definition GraphI.hh:593
@ DSDisableTexCoord
Definition GraphI.hh:595
@ DSDisableColor
Definition GraphI.hh:594
@ DSDisableObjects
Definition GraphI.hh:597
FrameBufferFormat
Definition GraphI.hh:1682
@ F_RGBA8888
Definition GraphI.hh:1687
@ F_RGB565
Definition GraphI.hh:1685
@ F_RGB888
Definition GraphI.hh:1686
@ F_Mono1
Definition GraphI.hh:1683
@ F_Mono8
Definition GraphI.hh:1684
void recreate_block(int id)
Definition GameApi_dep_add_find.cc:48
PosSpec opt_get_pos(int x, int y, int z)
void add_b(T *ptr)
Definition GraphI.hh:166
std::string use_path4(GameApi::PAT pat)
Definition GameApi.cc:45607
bool is_inside_extends(Point p, Extends e)
Definition GameApi.cc:39191
Bitmap< Quad > QuadBitmap
Definition GraphI.hh:903
float Dist(const Point &a, const Point &b)
Definition VectorTools.cc:78
Object call(Vector t_params) const
Calls the function with the given set of parameters and returns the value;.
Definition GraphI.hh:2201
void print_callbacks()
Definition GameApi_dep_env.cc:2662
int count_callbacks()
Definition GameApi_dep_env.cc:2658
void rem_callback(std::string url)
Definition GameApi_dep_env.cc:2653
void load_urls2(GameApi::Env &e, std::string url, std::string homepage, bool nosize)
Definition GameApi_dep_env.cc:3435
void set_callback(std::string url, void(*fptr)(void *), void *data)
Definition GameApi_dep_env.cc:2673
GameApi::ASyncVec * get_loaded_data(std::string url) const
Definition GameApi_dep_env.cc:3816
void load_all_urls(GameApi::Env &e, std::vector< std::string > urls, std::string homepage)
Definition GameApi_dep_env.cc:2837
void load_urls(GameApi::Env &e, std::string url, std::string homepage, bool nosize)
Definition GameApi_dep_env.cc:3401
Definition test.cpp:3163
virtual void DoTask(int i)=0
virtual int NumTasks() const =0
virtual ~ASyncTask()
Definition GraphI.hh:3742
Definition GraphI.hh:2115
virtual MainLoopItem * get_main_loop(MainLoopItem *next)=0
virtual ~Action()
Definition GraphI.hh:2117
virtual void trigger()=0
Definition GraphI.hh:1390
virtual std::vector< GameApiItem * > & get_all_functions(GameApi::EveryApi &ev)=0
Definition Equalizer.hh:1307
Definition GraphI.hh:2435
virtual T get(float x, float y) const =0
virtual float SizeY() const =0
virtual float SizeX() const =0
virtual ~AreaValues()
Definition GraphI.hh:2437
Definition EffectI.hh:22
Definition compiled_tests.cpp:1200
Definition GraphI.hh:3636
virtual int U_Size() const =0
virtual const IntBinding & I_get(int i) const =0
virtual int F_Size() const =0
virtual const PointBinding & P_get(int i) const =0
virtual const UnsignedIntBinding & U_get(int i) const =0
virtual void set(GameApi::EveryApi &ev, int sh)=0
virtual int I_Size() const =0
virtual ~BindingsI()
Definition GraphI.hh:3638
virtual int P_Size() const =0
virtual const FloatBinding & F_get(int i) const =0
Definition GraphI.hh:3652
int I_Size() const
Definition GraphI.hh:3684
void set(GameApi::EveryApi &ev, int sh)
Definition cpushader.cc:73
int F_Size() const
Definition GraphI.hh:3682
Bindings(const Bindings &c1, const Bindings &c2)
Definition GraphI.hh:3659
Bindings(const Bindings &c)
Definition GraphI.hh:3654
Bindings(const Bindings &c, FloatBinding n)
Definition GraphI.hh:3655
Bindings()
Definition GraphI.hh:3692
int P_Size() const
Definition GraphI.hh:3688
int U_Size() const
Definition GraphI.hh:3686
const IntBinding & I_get(int i) const
Definition GraphI.hh:3685
const UnsignedIntBinding & U_get(int i) const
Definition GraphI.hh:3687
Bindings(const Bindings &c, IntBinding n)
Definition GraphI.hh:3656
Bindings(const Bindings &c, UnsignedIntBinding n)
Definition GraphI.hh:3657
const PointBinding & P_get(int i) const
Definition GraphI.hh:3689
const FloatBinding & F_get(int i) const
Definition GraphI.hh:3683
Bindings(const Bindings &c, PointBinding n)
Definition GraphI.hh:3658
Definition GraphI.hh:891
virtual int SizeY(int i) const =0
virtual int SizeX(int i) const =0
virtual ~BitmapArray2()
Definition GraphI.hh:897
virtual C Map(int i, int x, int y) const =0
virtual int Size() const =0
Definition GraphI.hh:2598
virtual void Prepare()=0
virtual C Map(int i, int x, int y) const =0
virtual Point PosTL(int i) const =0
virtual Point PosBR(int i) const =0
virtual ~BitmapCollection()
Definition GraphI.hh:2607
virtual int SizeX(int i) const =0
virtual int Size() const =0
virtual int SizeY(int i) const =0
Definition GraphI.hh:3230
virtual int NumSpans() const =0
virtual ~BitmapRange()
Definition GraphI.hh:3232
virtual int NumRanges(int span) const =0
virtual int StartRange(int span, int range) const =0
virtual int EndRange(int span, int range) const =0
Definition GraphI.hh:826
virtual bool HasBatchMap() const
Definition GraphI.hh:837
virtual ~Bitmap()
Definition GraphI.hh:833
virtual int SizeY() const =0
virtual void Prepare()=0
virtual int SizeX() const =0
virtual bool ReadyToPrepare() const
Definition GraphI.hh:832
virtual bool IsDirectGltfImage() const
Definition GraphI.hh:835
virtual BufferRef BatchMap(int start_x, int end_x, int start_y, int end_y) const
Definition GraphI.hh:838
virtual C Map(int x, int y) const =0
Definition GraphI.hh:71
virtual void del()=0
virtual ~BlockBase()
Definition GraphI.hh:73
virtual bool compare(void *ptr) const =0
Definition GraphI.hh:149
BlockImpl(T *ptr)
Definition GraphI.hh:151
void del()
Definition GraphI.hh:152
virtual ~BlockImpl()
Definition GraphI.hh:154
bool compare(void *p) const
Definition GraphI.hh:153
Definition GraphI.hh:2123
virtual void Execute()=0
virtual void SetTimeout(float duration)=0
virtual ~Blocker()
Definition GraphI.hh:2125
BuilderArrImpl(std::vector< T > vec)
Definition GraphI.hh:2243
int Size() const
Definition GraphI.hh:2244
BuilderValue< T > * Index(int i) const
Definition GraphI.hh:2245
Definition GraphI.hh:2232
virtual BuilderValue< T > * Index(int i) const =0
virtual int Size() const =0
virtual ~BuilderArray()
Definition GraphI.hh:2234
Definition GraphI.hh:2215
virtual T get() const =0
virtual ~BuilderValue()
Definition GraphI.hh:2217
Definition GraphI.hh:437
virtual unsigned char & Get(int i) const =0
virtual ~ByteStore()
Definition GraphI.hh:439
virtual int Size() const =0
Definition test.cpp:54
virtual bool is_cached(std::string url) const =0
virtual void set_cached(std::string url)=0
Definition GraphI.hh:2324
virtual Vector get_unit_x() const =0
virtual Vector get_unit_z() const =0
virtual int obj_type() const =0
virtual void Execute(char c)=0
virtual Vector get_unit_y() const =0
virtual Point pos() const =0
virtual ~CmdExecute()
Definition GraphI.hh:2326
virtual void set_hooks(std::function< void(char)> f)=0
virtual void set_units(Vector v_x, Vector v_y, Vector v_z)=0
Definition GraphI.hh:3597
virtual void Collect(CollectVisitor2 &vis)=0
virtual void HeavyPrepare()=0
virtual ~CollectInterface2()
Definition GraphI.hh:3599
Definition GraphI.hh:612
virtual void Collect(CollectVisitor &vis)=0
Definition GameApi.cc:43596
virtual void HeavyPrepare()=0
virtual void FirstFrame()
Definition GraphI.hh:618
virtual ~CollectInterface()
Definition GraphI.hh:614
virtual int NumBlocks() const
Definition GraphI.hh:616
Definition GraphI.hh:3605
virtual void register_obj(CollectInterface2 *i)=0
virtual void register_child(int num, CollectInterface2 *i)=0
virtual ~CollectVisitor2()
Definition GraphI.hh:3607
Definition GraphI.hh:622
virtual void register_obj(CollectInterface *i)=0
virtual void register_first_frame(CollectInterface *i)=0
virtual ~CollectVisitor()
Definition GraphI.hh:624
Definition GraphI.hh:1455
virtual void Collide(std::string name1, std::string name2)=0
virtual bool check_collision(float x, float y) const =0
float m_y
Definition GraphI.hh:1871
virtual void set_pos(int id, float x, float y)
Definition GraphI.hh:1873
float m_x
Definition GraphI.hh:1871
virtual ~Collision()
Definition GraphI.hh:1869
Collision(int id)
Definition GraphI.hh:1868
int m_id
Definition GraphI.hh:1870
Definition GraphI.hh:2824
virtual bool is_included(unsigned int color) const =0
virtual ~ColorBool()
Definition GraphI.hh:2826
Definition GraphI.hh:1896
virtual Color get_whole_color(float time, float delta_time) const =0
virtual ~ColorChange()
Definition GraphI.hh:1898
Definition VectorTools.hh:380
Definition GraphI.hh:4103
virtual int size_x() const =0
virtual float end_t() const =0
virtual int size_y() const =0
virtual ~ColourSpaceI()
Definition GraphI.hh:4105
virtual int size_z() const =0
virtual float start_t() const =0
virtual unsigned int Map(int x, int y, int z, float t) const =0
Definition GraphI.hh:4088
virtual float start_y() const =0
virtual float start_t() const =0
virtual float end_z() const =0
virtual float end_x() const =0
virtual unsigned int Map(float x, float y, float z, float t) const =0
virtual float end_y() const =0
virtual float start_x() const =0
virtual float start_z() const =0
virtual float end_t() const =0
virtual ~ColourSpace()
Definition GraphI.hh:4090
Definition GraphI.hh:807
virtual ~CompactBitmap()
Definition GraphI.hh:809
Definition Equalizer.hh:1655
ConstantFunction(float val)
Definition Equalizer.hh:1657
Definition GraphI.hh:1178
virtual C Map(Z x, Z y) const =0
virtual Z SizeY() const =0
virtual Z SizeX() const =0
virtual ~ContinuousBitmap2()
Definition GraphI.hh:1180
Definition GraphI.hh:1164
virtual float SizeY() const =0
virtual ~ContinuousBitmap()
Definition GraphI.hh:1171
virtual void Prepare()=0
virtual C Map(float x, float y) const =0
virtual float SizeX() const =0
virtual bool ReadyToPrepare() const
Definition GraphI.hh:1170
Definition GraphI.hh:1188
virtual C Map(float x, float y, float z) const =0
virtual ~ContinuousVoxel()
Definition GraphI.hh:1195
virtual float SizeY() const =0
virtual float SizeZ() const =0
virtual void Prepare()=0
virtual float SizeX() const =0
Definition GraphI.hh:191
virtual char get_ch(int i) const =0
virtual std::string convert_labels_to_chars(std::string str) const =0
virtual int get_size() const =0
virtual int find_last_location(std::string str) const =0
virtual ~ConversionTableInterface()
Definition GraphI.hh:193
virtual bool insert_label_to_string(std::string *str, char ch) const =0
virtual std::string get_label(int i) const =0
virtual std::string get_str_ch(int i) const =0
Definition GraphI.hh:2555
virtual ~CurveGroup()
Definition GraphI.hh:2557
virtual int NumCurves() const =0
virtual Point Pos(int num, float t) const =0
virtual int Shape(int num, float t) const =0
virtual void Prepare()=0
virtual unsigned int Color(int num, float t) const =0
Definition EffectI.hh:49
Definition GraphI.hh:2338
virtual Point Map(float x, float y) const =0
virtual float start_x() const =0
virtual ~CurvePatch()
Definition GraphI.hh:2340
virtual float end_y() const =0
virtual float end_x() const =0
virtual float start_y() const =0
Definition GraphI.hh:2164
virtual ~CurvePos()
Definition GraphI.hh:2166
virtual float FindPos(Point p, float curve_length) const =0
Definition GraphI.hh:1859
virtual std::vector< Point > cut(Point p1, Point p2) const =0
virtual ~Cutter()
Definition GraphI.hh:1861
Definition GraphI.hh:792
virtual T DIndex(I i) const =0
virtual ~DFunction()
Definition GraphI.hh:794
Definition GraphI.hh:2515
virtual ~DiskStore()
Definition GraphI.hh:2517
virtual int NumBlocks() const =0
virtual void Prepare()=0
virtual unsigned char * BlockWithOffset(int block, int offset, int size) const =0
virtual unsigned char * Block(int block) const =0
virtual int BlockTypeInv(int block) const =0
virtual int Type() const =0
virtual int BlockType(int block) const =0
virtual size_t BlockSizeInBytes(int block) const =0
Definition GraphI.hh:3134
virtual int num() const =0
virtual MainLoopItem * get_mainloop(int i) const =0
virtual ~DynMainLoop()
Definition GraphI.hh:3136
Definition GraphI.hh:2495
virtual ~DynamicChange()
Definition GraphI.hh:2497
virtual void applychange(float *source, float *target, int size_in_floats, MainLoopEnv &e)=0
Definition GraphI.hh:2385
virtual int NumEnables() const =0
virtual void Disable(int i)=0
virtual void Enable(int i)=0
virtual ~EnableArray()
Definition GraphI.hh:2387
Definition GraphI.hh:2106
virtual bool event_triggered() const =0
virtual void execute(MainLoopEnv &e)=0
virtual ~Event3()
Definition GraphI.hh:2108
virtual void handle_event(MainLoopEvent &e)=0
Definition GraphI.hh:3197
virtual int get_game_event(InEventData &out_data)=0
virtual ~EventSource()
Definition GraphI.hh:3201
virtual void Prepare()=0
virtual void handle_event(MainLoopEvent &event)=0
virtual void execute(MainLoopEnv &e)=0
Definition GraphI.hh:1788
virtual Color color_execute(const GameApi::ExprEnv &env)=0
virtual int int_execute(const std::vector< GameApi::IntExprEnv > &env)=0
virtual int int_execute(const GameApi::ExprEnv &env)
Definition GraphI.hh:1794
virtual bool bool_execute(const GameApi::ExprEnv &env)=0
virtual Point point_execute(const GameApi::ExprEnv &env)=0
virtual float float_execute(const std::vector< GameApi::FloatExprEnv > &env)=0
virtual float float_execute(const GameApi::ExprEnv &env)
Definition GraphI.hh:1793
virtual ~ExprNode()
Definition GraphI.hh:1790
Definition EffectI.hh:212
Definition GraphI.hh:2412
virtual ~FacesInPlane()
Definition GraphI.hh:2414
virtual int NumPoints(int face) const =0
virtual Vector Normal(int face, int point) const
Definition GraphI.hh:2420
virtual Point2d TexCoord(int face, int point) const =0
virtual Point2d Map(int face, int point) const =0
virtual unsigned int Color(int face, int point) const =0
virtual int Size() const =0
Definition GraphI.hh:2189
virtual void event(MainLoopEvent &e)=0
virtual void draw_event(FrameLoopEvent &e)=0
virtual ~Fetcher()
Definition GraphI.hh:2191
virtual void set(T t)=0
virtual void draw_frame(DrawLoopEnv &e)=0
virtual T get() const =0
virtual void frame(MainLoopEnv &e)=0
Definition GraphI.hh:733
virtual ~Filler()
Definition GraphI.hh:735
virtual C Interpolate(I pos) const =0
Definition GraphI.hh:3169
virtual float Map(int i) const =0
virtual ~FloatArray2()
Definition GraphI.hh:3171
virtual int Num() const =0
Definition GraphI.hh:3176
virtual ~FloatField()
Definition GraphI.hh:3178
virtual float Map(Point p) const =0
Definition GraphI.hh:630
virtual ~FloatRay()
Definition GraphI.hh:632
virtual Point Ray(float x) const =0
Definition GraphI.hh:637
virtual unsigned int BaseColor(Point p) const =0
virtual unsigned int SheenColor(Point p) const =0
virtual float Field(Point p) const =0
virtual ~FloatScene()
Definition GraphI.hh:639
virtual unsigned int OcculsionColor(Point p) const =0
virtual void HeavyPrepare()=0
virtual unsigned int NormalColor(Point p) const =0
virtual unsigned int EmissiveColor(Point p) const =0
virtual unsigned int MetalRoughnessColor(Point p) const =0
virtual Point execute(float alfa, float beta, bool &found, Point center, float radius, int maxiter, float c) const =0
virtual unsigned int SpecGlossiColor(Point p) const =0
virtual void Collect(CollectVisitor &vis)=0
virtual void Prepare()=0
virtual unsigned int DiffuseColor(Point p) const =0
Definition GraphI.hh:2278
virtual int AdvanceX(long idx, bool is_outline=false) const =0
virtual ~FontInterface()
Definition GraphI.hh:2280
virtual void Prepare()
Definition GraphI.hh:2281
virtual int SizeX(long idx, bool is_outline=false) const =0
virtual int SizeY(long idx, bool is_outline=false) const =0
virtual int Descender(long idx, bool is_outline=false) const =0
virtual int Left(long idx, bool is_outline=false) const =0
virtual int Ascender(long idx, bool is_outline=false) const =0
virtual int Height(long idx, bool is_outline=false) const =0
virtual unsigned int Map(long idx, int x, int y, bool is_outline=false) const =0
virtual int Top(long idx, bool is_outline=false) const =0
virtual void execute()
Definition GraphI.hh:3405
virtual int scenes_size() const
Definition GraphI.hh:3484
virtual int bufferviews_size() const
Definition GraphI.hh:3430
virtual const tinygltf::Animation & get_animation(int i) const
Definition GraphI.hh:3419
virtual const tinygltf::Material & get_material(int i) const
Definition GraphI.hh:3437
virtual const tinygltf::Skin & get_skin(int i) const
Definition GraphI.hh:3467
virtual LoadGltf * get_load() const
Definition GraphI.hh:3408
virtual const tinygltf::Accessor & get_accessor(int i) const
Definition GraphI.hh:3413
virtual const tinygltf::Light & get_light(int i) const
Definition GraphI.hh:3491
virtual const tinygltf::Image & get_image(int i) const
Definition GraphI.hh:3461
virtual const tinygltf::Sampler & get_sampler(int i) const
Definition GraphI.hh:3473
virtual int samplers_size() const
Definition GraphI.hh:3472
virtual bool ReadyToFetch() const
Definition GraphI.hh:3400
virtual const tinygltf::Node & get_node(int i) const
Definition GraphI.hh:3449
virtual bool IsSketchFabZipASyncJoinImplementation() const
Definition GraphI.hh:3401
virtual int animations_size() const
Definition GraphI.hh:3418
virtual void set_loadgltf_unique_id(int id)
Definition GraphI.hh:3406
virtual int get_default_scene() const
Definition GraphI.hh:3410
virtual const tinygltf::BufferView & get_bufferview(int i) const
Definition GraphI.hh:3431
virtual const tinygltf::Texture & get_texture(int i) const
Definition GraphI.hh:3455
virtual std::string BaseUrl() const
Definition GraphI.hh:3397
virtual const tinygltf::Mesh & get_mesh(int i) const
Definition GraphI.hh:3443
virtual const tinygltf::Camera & get_camera(int i) const
Definition GraphI.hh:3479
virtual int accessors_size() const
Definition GraphI.hh:3412
virtual int skins_size() const
Definition GraphI.hh:3466
virtual std::string Url() const
Definition GraphI.hh:3398
virtual const tinygltf::Scene & get_scene(int i) const
Definition GraphI.hh:3485
virtual std::string name() const =0
virtual const tinygltf::Buffer & get_buffer(int i) const
Definition GraphI.hh:3425
virtual int meshes_size() const
Definition GraphI.hh:3442
virtual int lights_size() const
Definition GraphI.hh:3490
virtual int images_size() const
Definition GraphI.hh:3460
virtual int cameras_size() const
Definition GraphI.hh:3478
virtual int materials_size() const
Definition GraphI.hh:3436
virtual int buffers_size() const
Definition GraphI.hh:3424
virtual int nodes_size() const
Definition GraphI.hh:3448
virtual int textures_size() const
Definition GraphI.hh:3454
ForwardGLTF(GLTFModelInterface *next)
Definition GraphI.hh:3394
virtual int NumLinks() const
Definition GraphI.hh:1823
virtual int NumAnchors() const
Definition GraphI.hh:1819
virtual int NumForceVolumes() const
Definition GraphI.hh:1826
virtual std::pair< int, int > Link(int i) const
Definition GraphI.hh:1824
virtual Vector ForceVolume(int v, Point p) const
Definition GraphI.hh:1827
virtual int NumForces(int i) const
Definition GraphI.hh:1821
ForwardPhysics(PhysicsNode &node)
Definition GraphI.hh:1818
virtual float LinkDistance(int i) const
Definition GraphI.hh:1825
virtual Vector Force(int i, int f) const
Definition GraphI.hh:1822
virtual Point AnchorPoint(int i) const
Definition GraphI.hh:1820
Definition GraphI.hh:1777
virtual void handle_event(FrameLoopEvent &e)=0
virtual ~FrameBufferLoop()
Definition GraphI.hh:1779
virtual void frame(DrawLoopEnv &e)=0
virtual void Prepare()=0
Definition GraphI.hh:1740
virtual void draw_rect(int pos_x, int pos_y, int sp_width, int sp_height, unsigned int color)=0
virtual void Prepare()=0
virtual ~FrameBuffer()
Definition GraphI.hh:1742
virtual int Depth() const =0
virtual int Width() const =0
virtual float * DepthBuffer() const =0
virtual void frame()=0
virtual FrameBufferFormat format() const =0
virtual int Height() const =0
virtual void handle_event(FrameLoopEvent &e)=0
virtual void draw_sprite(SourceBitmap *bm, int x, int y)=0
virtual void * Buffer() const =0
Definition GraphI.hh:2019
ETypes
Definition GraphI.hh:2026
@ EBDCalvinSprites
Definition GraphI.hh:2027
virtual void execute(MainLoopEnv &e)=0
virtual int get_type() const =0
virtual ~Frame()
Definition GraphI.hh:2022
T * dyn_cast(Frame *f, int type)
Definition GraphI.hh:2033
virtual void handle_event(FrameLoopEvent &e)
Definition GraphI.hh:2768
virtual void set_size(int w_, int h_)
Definition GameApi.cc:38896
virtual void set_pos(int x_, int y_)
Definition GameApi.cc:38877
void Collect(CollectVisitor &vis)
Definition GameApi.cc:38823
void print_vec(std::vector< int > v)
Definition GameApi.cc:38892
FrmContainerWidget(GameApi::Env &e, std::vector< FrmWidget * > wid, std::string url, std::string homepage)
Definition GraphI.hh:2760
virtual void Prepare()
Definition GameApi.cc:38842
virtual void frame(DrawLoopEnv &e)
Definition GraphI.hh:2776
void set_option(int i, int l, int t, int W, int H, int r, int b)
Definition GraphI.hh:2783
void HeavyPrepare()
Definition GameApi.cc:38829
virtual void handle_event(FrameLoopEvent &e)
Definition GraphI.hh:2816
virtual void Prepare()
Definition GraphI.hh:2811
FrmRootWidget(FrmWidget *w, int scrx, int scry)
Definition GraphI.hh:2805
void HeavyPrepare()
Definition GraphI.hh:2807
void Collect(CollectVisitor &vis)
Definition GraphI.hh:2806
virtual void frame(DrawLoopEnv &e)
Definition GraphI.hh:2817
Definition GraphI.hh:2731
virtual void Prepare()=0
virtual void set_pos(int x_, int y_)
Definition GraphI.hh:2739
int w
Definition GraphI.hh:2748
virtual void frame(DrawLoopEnv &e)=0
int y
Definition GraphI.hh:2747
int x
Definition GraphI.hh:2747
virtual ~FrmWidget()
Definition GraphI.hh:2734
int size_w() const
Definition GraphI.hh:2744
FrmWidget()
Definition GraphI.hh:2733
int h
Definition GraphI.hh:2748
virtual void set_label(std::string s)
Definition GraphI.hh:2741
int pos_x() const
Definition GraphI.hh:2742
int size_h() const
Definition GraphI.hh:2745
virtual void set_size(int w_, int h_)
Definition GraphI.hh:2740
int pos_y() const
Definition GraphI.hh:2743
virtual void handle_event(FrameLoopEvent &e)=0
Definition EffectI.hh:11
Definition GraphI.hh:3250
virtual int SizeY() const =0
virtual unsigned int Map(int x, int y) const =0
virtual ~GCBitmap()
Definition GraphI.hh:3252
virtual int SizeX() const =0
virtual void Prepare()=0
Definition GraphI.hh:3324
virtual bool Ready() const
Definition GraphI.hh:3336
virtual const tinygltf::Scene & get_scene(int i) const =0
virtual bool ReadyToFetch() const
Definition GraphI.hh:3331
virtual std::string BaseUrl() const =0
virtual int scenes_size() const =0
virtual LoadGltf * get_load() const =0
virtual int animations_size() const =0
virtual int nodes_size() const =0
virtual void Prepare()=0
virtual int meshes_size() const =0
virtual void set_loadgltf_unique_id(int id)
Definition GraphI.hh:3334
virtual const tinygltf::Image & get_image(int i) const =0
virtual const tinygltf::Node & get_node(int i) const =0
virtual int cameras_size() const =0
virtual int samplers_size() const =0
virtual const tinygltf::Accessor & get_accessor(int i) const =0
virtual int images_size() const =0
virtual int lights_size() const =0
virtual ~GLTFModelInterface()
Definition GraphI.hh:3326
virtual int get_default_scene() const =0
virtual const tinygltf::Camera & get_camera(int i) const =0
virtual std::string name() const =0
virtual const tinygltf::Mesh & get_mesh(int i) const =0
virtual const tinygltf::Skin & get_skin(int i) const =0
virtual int textures_size() const =0
virtual const tinygltf::Material & get_material(int i) const =0
virtual bool IsSketchFabZipASyncJoinImplementation() const
Definition GraphI.hh:3332
virtual const tinygltf::BufferView & get_bufferview(int i) const =0
virtual void execute()
Definition GraphI.hh:3333
virtual int bufferviews_size() const =0
virtual std::string Url() const =0
virtual const tinygltf::Sampler & get_sampler(int i) const =0
virtual int skins_size() const =0
virtual void Collect(CollectVisitor &vis)=0
virtual int accessors_size() const =0
virtual const tinygltf::Buffer & get_buffer(int i) const =0
virtual bool ReadyToPrepare() const
Definition GraphI.hh:3330
virtual int materials_size() const =0
virtual const tinygltf::Animation & get_animation(int i) const =0
virtual const tinygltf::Light & get_light(int i) const =0
virtual const tinygltf::Texture & get_texture(int i) const =0
virtual void HeavyPrepare()=0
virtual int buffers_size() const =0
Definition GraphI.hh:449
static uint32_t m_changed_mem
Definition GraphI.hh:455
const T * const_pointer
Definition GraphI.hh:459
static uint32_t m_used_mem
Definition GraphI.hh:456
const void * const_void_pointer
Definition GraphI.hh:461
static uint32_t m_free_mem
Definition GraphI.hh:454
void destroy(U *p)
Definition GraphI.hh:489
uint32_t size_type
Definition GraphI.hh:463
void construct(U *p, Args &&... args)
Definition GraphI.hh:476
void print() const
Definition GraphI.hh:465
T value_type
Definition GraphI.hh:462
void * void_pointer
Definition GraphI.hh:460
T * pointer
Definition GraphI.hh:458
int32_t difference_type
Definition GraphI.hh:464
Definition test.cpp:376
virtual std::string Name(int i) const =0
virtual std::string ApiName(int i) const =0
virtual std::string Symbols() const =0
virtual std::string Comment() const =0
virtual int ParamCount(int i) const =0
virtual std::string ReturnType(int i) const =0
virtual std::string DefaultAuthor(int i, int p) const =0
virtual void EndEnv(GameApi::ExecuteEnv &e)
Definition GraphI.hh:1385
virtual ~GameApiItem()
Definition GraphI.hh:1367
virtual std::string ParamDefault(int i, int p) const =0
virtual std::string ParamName(int i, int p) const =0
virtual std::string FuncName(int i) const =0
virtual int Count() const =0
virtual std::string DefaultLicense(int i, int p) const =0
virtual int Execute(std::stringstream &ss, GameApi::Env &ee, GameApi::EveryApi &ev, std::vector< std::string > params, GameApi::ExecuteEnv &e, int j)=0
virtual void BeginEnv(GameApi::ExecuteEnv &e, std::vector< GameApiParam > params)
Definition GraphI.hh:1384
virtual std::pair< std::string, std::string > CodeGen(GameApi::EveryApi &ev, std::vector< std::string > params, std::vector< std::string > param_names, std::vector< std::string > param_exprs, int j)=0
virtual std::string ParamType(int i, int p) const =0
Definition GraphI.hh:690
virtual const unsigned char * end() const =0
virtual int size() const =0
virtual ~ASyncVec()
Definition GraphI.hh:692
virtual const unsigned char & operator[](int i) const =0
virtual const unsigned char * begin() const =0
virtual void del()=0
Definition GraphI.hh:2078
virtual void HandleMouseMove(int x, int y)=0
virtual std::string GetValue() const =0
virtual void CurrentPos(Point &p) const =0
virtual void HandleMousePress(int type)=0
virtual ~EditNode()
Definition GraphI.hh:2080
virtual void SetSource(int i)=0
virtual void SetMode(int i)=0
Definition GameApi.hh:362
Definition GraphI.hh:679
virtual Point Pos(int i) const =0
virtual ~GlobalIlluminationData()
Definition GraphI.hh:681
virtual float Percentage(int i) const =0
virtual Vector Normal(int i) const =0
virtual int Size() const =0
Definition GraphI.hh:3240
virtual std::string * index_string(int i) const =0
virtual ~GameState()
Definition GraphI.hh:3242
virtual float * index_float(int i) const =0
virtual int * index_int(int i) const =0
Definition GraphI.hh:4196
virtual void Collect(CollectVisitor &vis)=0
virtual int NumItems() const =0
virtual void Prepare()=0
virtual unsigned int color(int i) const =0
virtual ~GaussianSplat()
Definition GraphI.hh:4198
virtual Matrix cov(int i) const =0
virtual void HeavyPrepare()=0
virtual Point center(int i) const =0
virtual void set_prim_i(int i)
Definition GraphI.hh:259
virtual bool transparent() const
Definition GraphI.hh:269
virtual float rest_mult() const
Definition GraphI.hh:265
virtual int mode() const
Definition GraphI.hh:275
virtual float mix() const
Definition GraphI.hh:263
virtual bool emissive() const
Definition GraphI.hh:267
virtual int animation() const
Definition GraphI.hh:271
virtual bool acesfilm() const
Definition GraphI.hh:270
virtual int material_id() const
Definition GraphI.hh:262
virtual int lod_level() const
Definition GraphI.hh:268
virtual void set_material_id(int id)
Definition GraphI.hh:261
virtual int border_width() const
Definition GraphI.hh:272
virtual int frame_skip() const
Definition GraphI.hh:274
virtual int prim_i() const
Definition GraphI.hh:260
virtual float self_mult() const
Definition GraphI.hh:264
virtual GltfMaterialParams * clone() const
Definition GraphI.hh:276
GltfMaterialParams_impl(int prim_i, int material_id, float mix, float self_mult, float rest_mult, Vector light_dir, bool emissive, int lod_level, bool transparent, bool acesfilm, int animation, float border_width, unsigned int border_color, int frame_skip, int mode)
Definition GraphI.hh:229
virtual Vector light_dir() const
Definition GraphI.hh:266
virtual unsigned int border_color() const
Definition GraphI.hh:273
Definition GraphI.hh:205
virtual int frame_skip() const =0
virtual bool acesfilm() const =0
virtual void set_prim_i(int i)=0
virtual unsigned int border_color() const =0
virtual void set_material_id(int id)=0
virtual int border_width() const =0
virtual int material_id() const =0
virtual GltfMaterialParams * clone() const =0
virtual int lod_level() const =0
virtual float rest_mult() const =0
virtual int prim_i() const =0
virtual Vector light_dir() const =0
virtual int animation() const =0
virtual bool emissive() const =0
virtual float self_mult() const =0
virtual float mix() const =0
virtual int mode() const =0
virtual bool transparent() const =0
Definition GraphI.hh:2294
virtual int Left() const =0
virtual ~GlyphInterface()
Definition GraphI.hh:2296
virtual void Prepare()
Definition GraphI.hh:2297
virtual int SizeX() const =0
virtual unsigned int Map(int x, int y) const =0
virtual int Top() const =0
virtual int Descender() const =0
virtual int Ascender() const =0
virtual int SizeY() const =0
virtual int AdvanceX() const =0
virtual int Height() const =0
Definition GraphI.hh:2542
virtual float SizeY() const =0
virtual int SplitType(float y, int idx) const =0
virtual ~Glyph()
Definition GraphI.hh:2544
virtual float Split(float y, int idx) const =0
virtual int NumSplits(float y) const =0
virtual float SizeX() const =0
virtual float Baseline() const =0
virtual float Top() const =0
Definition GraphI.hh:1215
virtual E Edge(int e, int v1, int v2) const =0
virtual V Vertex(int v) const =0
virtual ~GraphData()
Definition GraphI.hh:1217
Definition GraphI.hh:1206
virtual ~Graph()
Definition GraphI.hh:1208
virtual int NumVertexes() const =0
virtual std::pair< int, int > EdgeVertex(int edge) const =0
virtual int NumEdges() const =0
Definition GraphI.hh:3260
virtual void StartBatch(std::string name)=0
virtual ~GraphicsContext()
Definition GraphI.hh:3262
virtual int size_x() const =0
virtual void draw_line(int x, int y, int x2, int y2, unsigned int color)=0
virtual void draw_image2(int x, int y, int sx, int sy, GCBitmap &bitmap)=0
virtual void draw_pixel(int x, int y, unsigned int color)=0
virtual void EndBatch(std::string name)=0
virtual void draw_image(int x, int y, int sx, int sy, GCBitmap &bitmap)=0
virtual int size_y() const =0
virtual void draw_rect(int x, int y, int sx, int sy, unsigned int color)=0
virtual void update(Point2d mouse_pos, int button, int ch, int type, int mouse_wheel_y)=0
virtual std::vector< GuiWidget * > * child_from_path(std::string path)
Definition GraphI.hh:1325
virtual float dynamic_param(int id) const =0
virtual void set_size(Vector2d size)=0
virtual void select_item(int item)=0
virtual int chosen_item() const =0
virtual void hide()
Definition GraphI.hh:1307
GuiWidget()
Definition GraphI.hh:1298
void set_size2(int sz)
Definition GraphI.hh:1304
virtual bool content_changed() const =0
void set_id(std::string id_m)
Definition GraphI.hh:1300
void set_index(int j)
Definition GraphI.hh:1302
virtual void show()
Definition GraphI.hh:1308
virtual int render_to_bitmap()=0
virtual int child_count() const =0
virtual bool is_visible() const =0
virtual Vector2d get_size() const =0
virtual Point2d get_pos() const =0
virtual void clear_content_changed()=0
int get_index() const
Definition GraphI.hh:1303
virtual ~GuiWidget()
Definition GraphI.hh:1306
virtual void render()=0
virtual GuiWidget * child(int num) const =0
std::string get_id() const
Definition GraphI.hh:1301
virtual void set_pos(Point2d pos)=0
virtual void set_dynamic_param(int id, float val)=0
int get_size2() const
Definition GraphI.hh:1305
Definition GraphI.hh:1200
virtual ~HandleValue()
Definition GraphI.hh:1202
virtual void Handle(T t)=0
Definition GraphI.hh:2663
virtual void set_usage_index(int slot)=0
virtual bool RequestPrepares() const =0
virtual void * get_data(std::string type)=0
virtual ~HeavyOperation()
Definition GameApi.cc:36652
virtual void Prepare(int prepare)=0
virtual int NumPrepares() const =0
virtual int NumSlots() const =0
virtual void Slot(int slot)=0
virtual void TriggerPrepares()=0
virtual void FinishSlots()=0
Definition GraphI.hh:2956
virtual void Prepare()=0
virtual void SetCB(void(*fptr)(void *), void *data)=0
virtual std::string homepage() const =0
virtual std::string script_file() const =0
virtual ~Html()
Definition GraphI.hh:2958
Definition GraphI.hh:3903
virtual Material * GetMaterial(int i) const =0
virtual FaceCollection * GetFaces(int i) const =0
virtual int Num() const =0
virtual ~ICache()
Definition GraphI.hh:3905
Definition GraphI.hh:2583
virtual ~IStateMachine()
Definition GraphI.hh:2585
virtual void draw_frame(DrawLoopEnv &e)=0
virtual int num_flags() const =0
virtual void frame(MainLoopEnv &e)=0
virtual void Prepare()=0
virtual void event(MainLoopEvent &e)=0
virtual std::string flag(int val) const =0
virtual void draw_event(FrameLoopEvent &e)=0
Definition GraphI.hh:3893
virtual Matrix BlockRot(int i) const =0
virtual int BlockType(int i) const =0
virtual Point BlockPos(int i) const =0
virtual ~IWorld()
Definition GraphI.hh:3895
virtual int NumBlocks() const =0
Definition GraphI.hh:1903
virtual ~ImplicitFunction2d()
Definition GraphI.hh:1905
virtual float f2(float x) const =0
virtual float f(float x, float y) const =0
Definition GraphI.hh:1935
std::vector< ImplicitFunction3d * > vec
Definition GraphI.hh:1937
Definition GraphI.hh:1911
virtual float f(float x, float y, float z) const =0
virtual float pos_x() const =0
virtual float f_l(float x, float y) const =0
virtual float f_u(float x, float y) const =0
virtual unsigned int f_color_u(float x, float y) const
Definition GraphI.hh:1917
virtual float size_x() const =0
virtual float size_y() const =0
virtual unsigned int f_color_l(float x, float y) const
Definition GraphI.hh:1918
virtual float pos_y() const =0
virtual ~ImplicitFunction3d()
Definition GraphI.hh:1913
Definition GraphI.hh:1926
virtual float f_u(float x, float y, float t) const =0
virtual float f(float x, float y, float z, float t) const =0
virtual ~ImplicitFunction4d()
Definition GraphI.hh:1928
virtual float f_l(float x, float y, float t) const =0
Definition GraphI.hh:2531
virtual ~InputForMoving()
Definition GraphI.hh:2533
virtual float XPos() const =0
virtual void handle_event(MainLoopEvent &e)=0
virtual float YPos() const =0
virtual float ZPos() const =0
virtual void execute(MainLoopEnv &e)=0
Definition GraphI.hh:815
virtual bool ValueAvailable() const =0
virtual void Destroy()=0
virtual T Value() const =0
virtual void Alloc(AllocData ad)=0
virtual ~LazyAlloc()
Definition GraphI.hh:817
float P_x(Point2d p1, Point2d p2, Point2d p3, Point2d p4)
Definition GraphI.hh:760
float Edge(int y, int edge) const
Definition GraphI.hh:749
C EdgeLeftSide(int y, int edge) const
Definition GraphI.hh:780
int NumEdges(int y) const
Definition GraphI.hh:745
C EdgeRightSide(int y, int edge) const
Definition GraphI.hh:781
float det(float a, float b, float c, float d)
Definition GraphI.hh:776
LineShape(int sizey, Point2d pp1, Point2d pp2, C left, C right)
Definition GraphI.hh:743
int SizeY() const
Definition GraphI.hh:744
Definition GraphI.hh:2403
virtual Point2d Map(int i, bool second) const =0
virtual int Size() const =0
virtual ~LinesInPlane()
Definition GraphI.hh:2405
virtual unsigned int Color(int i, bool second) const =0
Definition GameApi_gltf.cc:701
Definition GraphI.hh:3114
virtual bool get_ch(unsigned char &ch)=0
virtual bool get_line(std::vector< unsigned char, GameApiAllocator< unsigned char > > &line)=0
virtual ~LoadStream()
Definition GraphI.hh:3116
virtual bool get_file(std::vector< unsigned char, GameApiAllocator< unsigned char > > &file)=0
virtual void Prepare()=0
virtual LoadStream * Clone()=0
virtual void Prepare()
Definition GraphI.hh:1640
virtual std::vector< int > shader_id()
Definition GraphI.hh:1644
MainLoopItemForward(MainLoopItem &prev)
Definition GraphI.hh:1637
virtual void HeavyPrepare()
Definition GraphI.hh:1639
virtual void Collect(CollectVisitor &vis)
Definition GraphI.hh:1638
virtual void handle_event(MainLoopEvent &e)
Definition GraphI.hh:1643
virtual bool ReadyToPrepare() const
Definition GraphI.hh:1645
virtual void FirstFrame()
Definition GraphI.hh:1641
virtual void execute(MainLoopEnv &e)
Definition GraphI.hh:1642
Definition GraphI.hh:1604
virtual std::vector< int > shader_id()
Definition GraphI.hh:1611
virtual void execute(MainLoopEnv &e)=0
virtual ~MainLoopItemWGPU()
Definition GraphI.hh:1606
virtual void Collect(CollectVisitor &vis)=0
virtual void HeavyPrepare()=0
virtual void handle_event(MainLoopEvent &e)=0
Definition GraphI.hh:1615
virtual void Prepare()=0
virtual ~MainLoopItem()
Definition GraphI.hh:1617
virtual void Collect(CollectVisitor &vis)=0
virtual void HeavyPrepare()=0
virtual std::vector< int > shader_id()
Definition GraphI.hh:1625
virtual void destroy()
Definition GraphI.hh:1627
virtual void set_vars(std::map< std::string, std::string > vars)
Definition GraphI.hh:1628
virtual std::map< std::string, std::string > get_vars() const
Definition GraphI.hh:1629
virtual void handle_event(MainLoopEvent &e)=0
virtual void FirstFrame()
Definition GraphI.hh:1622
virtual void logoexecute()
Definition GraphI.hh:1618
virtual void execute(MainLoopEnv &e)=0
virtual bool ReadyToPrepare() const
Definition GraphI.hh:1626
Definition GraphI.hh:3865
virtual Point pos(unsigned char c1, unsigned char c2)=0
virtual Vector gradient(unsigned char c1, unsigned char c2)=0
virtual bool start(unsigned char c1, unsigned char c2)=0
virtual bool end(unsigned char c1, unsigned char c2)=0
virtual ~MarchingCubesCellEdge()
Definition GraphI.hh:3867
Definition GraphI.hh:3857
virtual Vector gradient(bool x, bool y, bool z) const =0
virtual bool Map(bool x, bool y, bool z) const =0
virtual ~MarchingCubesCellInputData()
Definition GraphI.hh:3859
Definition GraphI.hh:3875
virtual Vector PointNormal(int point) const =0
virtual ~MarchingCubesCellPolygon()
Definition GraphI.hh:3877
virtual int NumPoints() const =0
virtual Point FacePoint(int point) const =0
Definition GraphI.hh:3838
virtual int start_y() const =0
virtual int end_y() const =0
virtual bool Map(int x, int y, int z) const =0
virtual ~MarchingCubesInputData()
Definition GraphI.hh:3840
virtual int end_x() const =0
virtual int startcell_x() const =0
virtual int startcell_z() const =0
virtual int start_x() const =0
virtual int start_z() const =0
virtual int end_z() const =0
virtual int startcell_y() const =0
virtual Vector gradient(int x, int y, int z) const =0
Definition GraphI.hh:3884
virtual ~MarchingCubesMesh()
Definition GraphI.hh:3886
virtual int NumPolygons(int x, int y, int z) const =0
virtual MarchingCubesCellPolygon * Polygon(int x, int y, int z, int poly_num) const =0
Definition GraphI.hh:3576
virtual float get_mat(int x, int y) const =0
virtual ~Mat2_a()
Definition GraphI.hh:3578
Definition GraphI.hh:3582
virtual float get_mat(int x, int y) const =0
virtual ~Mat3_a()
Definition GraphI.hh:3584
Definition GraphI.hh:3588
virtual float get_mat(int x, int y) const =0
virtual ~Mat4_a()
Definition GraphI.hh:3590
Definition GraphI.hh:1959
virtual ~Material()
Definition GraphI.hh:1961
virtual int mat_inst_matrix(int p, int ms) const =0
virtual int mat(int p) const =0
virtual int mat_inst2(int p, int pta) const =0
virtual void logoexecute()
Definition GraphI.hh:1962
virtual int mat_inst_va(int va, int pts) const =0
virtual int mat_inst_va_prepare(int p) const =0
virtual int mat_inst_fade(int p, int pts, bool flip, float start_time, float end_time) const =0
virtual int mat_inst(int p, int pts) const =0
Definition GraphI.hh:2005
virtual void HandleEvent(MainLoopEvent &event)
Definition GraphI.hh:2009
virtual Matrix Index(int i) const =0
virtual void Prepare()
Definition GraphI.hh:2008
virtual ~MatrixArray()
Definition GraphI.hh:2007
virtual int Size() const =0
virtual unsigned int Color(int i) const
Definition GraphI.hh:2014
virtual int MaxSize() const
Definition GraphI.hh:2012
virtual Vector Normal(int i) const
Definition GraphI.hh:2015
virtual bool Update(MainLoopEnv &e)
Definition GraphI.hh:2010
Definition VectorTools.hh:279
Definition GraphI.hh:846
virtual unsigned char * buffer() const =0
virtual int size_in_bytes() const =0
virtual void Prepare()=0
virtual ~MemoryBlock()
Definition GraphI.hh:848
Definition GraphI.hh:2566
virtual float EndTime() const =0
virtual int NumFaces() const =0
virtual Point Vertex(int face, int point, float time) const =0
virtual void Prepare()=0
virtual float StartTime() const =0
virtual int NumPoints(int face) const =0
virtual ~MeshAnim()
Definition GraphI.hh:2568
virtual Vector Normal(int face, int point, float time) const =0
virtual float TexCoord3(int face, int point, float time) const =0
virtual Point2d TexCoord(int face, int point, float time) const =0
virtual unsigned int Color(int face, int point, float time) const =0
Definition GraphI.hh:2093
virtual MixedI * Access(int i) const =0
virtual std::string Type() const =0
virtual std::string Name(int i) const =0
virtual std::string Print() const =0
virtual std::string Value(int i) const =0
virtual MixedI * Clone() const =0
virtual ~MixedI()
Definition GraphI.hh:2095
virtual int NumItems() const =0
Definition GraphI.hh:1884
virtual void draw_event(FrameLoopEvent &e)=0
virtual ~Movement()
Definition GraphI.hh:1886
virtual void draw_frame(DrawLoopEnv &e)=0
virtual void event(MainLoopEvent &e)=0
virtual void frame(MainLoopEnv &e)=0
virtual Matrix get_whole_matrix(float time, float delta_time) const =0
virtual void set_matrix(Matrix m)=0
Definition GraphI.hh:1154
virtual NDim< I, B > * Interpolate(const NDim< I, B > &b1, const NDim< I, B > &b2, I val) const =0
virtual B Map(I *array, int size) const =0
virtual std::vector< I > Count() const =0
virtual ~NDim()
Definition GraphI.hh:1159
Definition GraphI.hh:667
virtual void register_ogl(OpenGlNode *n)=0
virtual ~OGLVisitor()
Definition GraphI.hh:669
Definition GraphI.hh:2941
virtual void destroy()
Definition GraphI.hh:2951
virtual void execute(MainLoopEnv &e)=0
virtual ~Object3d()
Definition GraphI.hh:2943
virtual void Prepare()=0
virtual int shader_id()
Definition GraphI.hh:2950
virtual Prop3d & prop(int state)=0
virtual void handle_event(MainLoopEvent &e)=0
virtual int current_state() const =0
Definition GraphI.hh:983
bool is_leaf
Definition GraphI.hh:988
int end_y
Definition GraphI.hh:986
int start_x
Definition GraphI.hh:985
int start_y
Definition GraphI.hh:986
int end_z
Definition GraphI.hh:987
int start_z
Definition GraphI.hh:987
int end_x
Definition GraphI.hh:985
OctTreeLeaf()
Definition GraphI.hh:994
OctTreeColor color
Definition GraphI.hh:995
Definition GraphI.hh:971
std::string path
Definition GraphI.hh:973
Definition GraphI.hh:999
OctTreeBase * child[15]
Definition GraphI.hh:1001
Definition GraphI.hh:659
virtual ~OpenGlNode()
Definition GraphI.hh:662
OpenGlNode(OGLVisitor &vis)
Definition GraphI.hh:672
virtual void Render()=0
virtual void Prepare()=0
Definition GraphI.hh:1114
FaceCollection * find_from_cache(const CubeSpec &spec) const
Definition GraphI.hh:1125
virtual CubeSpec * find_spec_from_cache_id(OptCacheId id) const =0
bool is_in_cache(const CubeSpec &spec) const
Definition GraphI.hh:1120
virtual void add_to_cache(const CubeSpec &spec, FaceCollection *coll)=0
virtual OptCacheId resize_cache_id(const OptCacheId &o, const SizeSpec &sz)=0
virtual FaceCollection * find_from_cache_id(OptCacheId id) const =0
virtual ~OptCubeCache()
Definition GraphI.hh:1117
virtual OptCacheId find_id_from_cache(const CubeSpec &spec) const =0
Definition GraphI.hh:1095
virtual void Collect(CollectVisitor &vis)=0
virtual void Prepare()=0
virtual ~OptCubes()
Definition GraphI.hh:1097
virtual FaceCollection * create_cube(const CubeSpec &spec) const =0
virtual CubeSpec get_cube(unsigned int color, float border_width, unsigned int border_color, int sx, int sy, int sz) const =0
virtual void HeavyPrepare()=0
Definition GraphI.hh:1071
virtual ElemSpec WorldIndex(int w) const =0
virtual int SizeSize() const =0
virtual void Collect(CollectVisitor &vis)=0
virtual void Prepare()=0
virtual SizeSpec Size() const =0
virtual SizeSpec WorldSizeIndex(int szi) const =0
virtual ~OptVoxel()
Definition GraphI.hh:1073
virtual ShapeSpec WorldShapeIndex(int shi) const =0
virtual void HeavyPrepare()=0
virtual int ShapeSize() const =0
virtual int WorldSize() const =0
Definition test.cpp:118
IMPORT PathConfig conf_windows(bool has_unresolved_replaces)
Situation
Definition test.cpp:137
@ ETempDirReplace29
Definition test.cpp:175
@ ETempDirReplace31
Definition test.cpp:177
@ ETempDirReplace33
Definition test.cpp:179
@ ETempDirReplace21
Definition test.cpp:167
@ ETempDirReplace12
Definition test.cpp:158
@ ETempDirReplace4
Definition test.cpp:150
@ ETempDirReplace24
Definition test.cpp:170
@ EReplaceHomeDirForOfStream
Definition test.cpp:144
@ ESituationGeneric
Definition test.cpp:181
@ ETempDirReplace23
Definition test.cpp:169
@ ETempDirReplace32
Definition test.cpp:178
@ ETempDirReplace6
Definition test.cpp:152
@ EReplaceTmpForSystemAndMkDir0
Definition test.cpp:145
@ ETempDirReplace3
Definition test.cpp:149
@ ETempDirReplace19
Definition test.cpp:165
@ ETempDirReplace10
Definition test.cpp:156
@ ETempDirReplace30
Definition test.cpp:176
@ ETempDirReplace5
Definition test.cpp:151
@ ETempDirReplace11
Definition test.cpp:157
@ ETempDirReplace25
Definition test.cpp:171
@ ETempDirReplace1
Definition test.cpp:147
@ EReplaceHomeDirForPThreadSystem0
Definition test.cpp:143
@ ETempDirReplace14
Definition test.cpp:160
@ ETempDirReplace15
Definition test.cpp:161
@ ETempDirReplace16
Definition test.cpp:162
@ ETempDirReplace28
Definition test.cpp:174
@ ETempDirReplace7
Definition test.cpp:153
@ ETestIfAvailable2
Definition test.cpp:140
@ ETempDirReplace13
Definition test.cpp:159
@ ETempDirReplace27
Definition test.cpp:173
@ ETempDirReplace20
Definition test.cpp:166
@ ETempDirReplace0
Definition test.cpp:146
@ ETestIfAvailable1
Definition test.cpp:139
@ ETestIfAvailable0
Definition test.cpp:138
@ ETempDirReplace18
Definition test.cpp:164
@ ETestIfAvailable3
Definition test.cpp:141
@ EDragDropInfoMessage
Definition test.cpp:180
@ ETempDirReplace9
Definition test.cpp:155
@ ETempDirReplace22
Definition test.cpp:168
@ ETempDirReplace2
Definition test.cpp:148
@ ETempDirReplace26
Definition test.cpp:172
@ ETempDirReplace8
Definition test.cpp:154
@ ETempDirReplace17
Definition test.cpp:163
IMPORT PathConfig conf_linux(bool has_unresolved_replaces)
IMPORT GameApi::PAT convert_path(GameApi::Env &e, GameApi::PAT old, const PathConfig &pc)
IMPORT GameApi::PAT default_path()
IMPORT GameApi::PAT set_possible_default_path(GameApi::Env &e, GameApi::PAT p, std::string def, const PathConfig &pc)
IMPORT std::string use_path2(GameApi::Env &e, GameApi::PAT val, Situation s)
Definition GraphI.hh:420
IMPORT SituationConfig situ(Situation a)
IMPORT GameApi::PAT create_path_from_source(GameApi::Env &e, std::string val, const PathConfig &pc)
IMPORT SituationConfig situ(Situation a)
Definition GameApi_dep_env.cc:5933
IMPORT std::string use_path(GameApi::Env &e, GameApi::PAT val, const SituationConfig &sc)
Definition GameApi_dep_env.cc:6089
IMPORT PathConfig conf_user_input(const PathConfig &prev)
IMPORT std::string use_path(GameApi::Env &e, GameApi::PAT val, const SituationConfig &sc)
IMPORT PathConfig conf_file_url(bool has_unresolved_replaces)
IMPORT PathConfig conf_url(bool has_unresolved_replaces)
Definition GraphI.hh:2426
virtual T get(float x) const =0
virtual ~PathValues()
Definition GraphI.hh:2428
virtual float Size() const =0
Definition GraphI.hh:1801
virtual int NumForces(int i) const =0
virtual int NumAnchors() const =0
virtual ~PhysicsNode()
Definition GraphI.hh:1803
virtual Vector ForceVolume(int v, Point p) const =0
virtual std::pair< int, int > Link(int i) const =0
virtual int NumForceVolumes() const =0
virtual Point AnchorPoint(int i) const =0
virtual float LinkDistance(int i) const =0
virtual Vector Force(int i, int f) const =0
virtual int NumLinks() const =0
Definition GraphI.hh:602
virtual void clear()=0
virtual ~Pipeline()
Definition GraphI.hh:604
virtual Matrix get_matrix(int id) const =0
virtual void add_matrix(int id, Matrix m)=0
Definition GraphI.hh:4122
virtual Bitmap< Color > * get_xy() const =0
virtual Bitmap< Color > * get_all() const =0
virtual int SizeX() const =0
virtual Pixel2 Alloc()=0
virtual int SizeY() const =0
virtual ~PixelAllocator()
Definition GraphI.hh:4124
Definition GraphI.hh:3746
virtual void Prepare()=0
virtual unsigned int Id() const =0
virtual int SizeY() const =0
virtual ~PixelBufferObject()
Definition GraphI.hh:3748
virtual int SizeX() const =0
Definition GraphI.hh:2055
virtual float PosY() const =0
virtual float PosX() const =0
virtual float SizeX() const =0
virtual int NumPoints(int shape) const =0
virtual Point2d TexCoord(int shape, int point) const =0
virtual float SizeY() const =0
virtual int NumShapes() const =0
virtual ~PlaneShape()
Definition GraphI.hh:2057
virtual unsigned int Color(int shape, int point) const =0
virtual Point2d FacePoint(int shape, int point) const =0
Definition GraphI.hh:3913
virtual bool Allow(float x, float z) const =0
virtual FaceCollection * Render() const =0
virtual float Height(float x, float z) const =0
virtual ~Platform()
Definition GraphI.hh:3915
Definition GraphI.hh:3125
virtual ~PlayerStrings()
Definition GraphI.hh:3127
virtual std::string Player_ID(int i) const =0
virtual int NumPlayers() const =0
virtual std::string Player_Prop(int i) const =0
Definition GraphI.hh:2146
virtual Point Map(Point p, float delta_time) const =0
virtual ~PointTransform()
Definition GraphI.hh:2148
Definition GraphI.hh:2349
virtual Vector Normal(int i) const
Definition GraphI.hh:2358
virtual Point End(int i) const
Definition GraphI.hh:2362
virtual Point Start(int i) const
Definition GraphI.hh:2361
virtual int NumPoints() const =0
virtual unsigned int Color(int i) const =0
virtual bool Update(MainLoopEnv &e)
Definition GraphI.hh:2353
virtual void HandleEvent(MainLoopEvent &event)
Definition GraphI.hh:2352
virtual void Prepare()
Definition GraphI.hh:2351
virtual int MaxNumPoints() const
Definition GraphI.hh:2355
virtual Point Pos(int i) const =0
virtual bool has_changed() const
Definition GraphI.hh:2359
virtual ~PointsApiPoints()
Definition GraphI.hh:2363
Definition GraphI.hh:2394
virtual int Size() const =0
virtual Point2d Map(int i) const =0
virtual unsigned int Color(int i) const =0
virtual ~PointsInPlane()
Definition GraphI.hh:2396
Definition Shader.hh:75
Definition GraphI.hh:2377
virtual unsigned int Color(int i) const =0
virtual int NumProp() const =0
virtual ~PropertyArray()
Definition GraphI.hh:2379
Definition GraphI.hh:2694
virtual int NumAttribs() const =0
virtual std::string AttrName(int attr_i) const =0
virtual QMLData * Children(int child_i) const =0
virtual void Prepare()=0
virtual int NumImports() const =0
virtual QMLData * Parent() const =0
virtual std::string Type(int child_i) const =0
virtual int NumChildren() const =0
virtual std::string Import(int import_i) const =0
virtual std::string Type() const =0
virtual std::string Name(int child_i) const =0
virtual std::string AttrValue(int attr_i) const =0
virtual ~QMLData()
Definition GraphI.hh:2696
Definition GraphI.hh:2684
virtual ~QMLLoop()
Definition GraphI.hh:2686
virtual int NumChildren() const =0
virtual QMLLoop * Children(int i) const =0
Definition GraphI.hh:2864
QuadNode * parent
Definition GraphI.hh:2866
std::vector< QuadNode * > child
Definition GraphI.hh:2867
std::vector< Extends > child_extends
Definition GraphI.hh:2868
Definition GraphI.hh:2873
void push_poly(std::vector< Vertex > vec)
Definition GameApi.cc:39366
virtual QuadNode * Child(int i, QuadNode *n) const =0
virtual Extends ChildExtends(int i, QuadNode *n) const =0
virtual int NumChildren(QuadNode *n) const =0
void push_tri(Vertex v1, Vertex v2, Vertex v3)
Definition GameApi.cc:39306
virtual int ChildType(int i, QuadNode *n) const =0
virtual int RootType() const =0
void push_quad(Vertex v1, Vertex v2, Vertex v3, Vertex v4)
Definition GameApi.cc:39335
virtual Extends RootExtends() const =0
virtual QuadNode * Parent(QuadNode *n) const
Definition GraphI.hh:2883
virtual ~QuadTree()
Definition GraphI.hh:2875
virtual QuadNode * Root() const =0
Definition GraphI.hh:3103
virtual Rect5 GetRect(int i) const =0
virtual void Prepare()=0
virtual ~RectangleArray()
Definition GraphI.hh:3105
virtual int Type(int i) const =0
virtual int NumRects() const =0
Definition GraphI.hh:2223
RefBuilderValue(const T &ref)
Definition GraphI.hh:2225
T get() const
Definition GraphI.hh:2226
Definition GraphI.hh:1248
virtual int Id(int wave) const =0
virtual int SampleRate(int wave) const =0
virtual int NumWaves() const =0
virtual float Index(int wave, float val) const =0
virtual ~Samples()
Definition GraphI.hh:1250
virtual float Length(int wave) const =0
Definition GraphI.hh:3537
virtual ~Scalar()
Definition GraphI.hh:3539
virtual float get() const =0
Definition GraphI.hh:1973
virtual ~ScreenSpaceMaterial()
Definition GraphI.hh:1975
virtual int mat(int screen_txid, int depth_txid, int fullscreenquad, int position_txid, int normal_txid) const =0
virtual void Prepare()=0
Definition GraphI.hh:2502
virtual std::string bitmapbody_v_body() const =0
virtual std::string bitmapbody() const =0
virtual std::string bitmapbody_f_init() const =0
virtual ~ShaderBitmap()
Definition GraphI.hh:2504
virtual std::string bitmapname() const =0
virtual std::string bitmapbody_v_init() const =0
virtual std::string bitmapbody_f_body() const =0
Definition GraphI.hh:3512
virtual float start_time() const =0
virtual int get_uid() const =0
virtual std::string GetTexCoord() const =0
virtual ~ShaderBlock()
Definition GraphI.hh:3514
virtual float end_time() const =0
virtual std::string GetDistField() const =0
virtual std::string GetNormal() const =0
virtual const ShaderBlock * Children(int i) const =0
virtual int NumChildren() const =0
virtual std::string GetColor() const =0
virtual BBox BoundingBox(float time) const =0
virtual void set_vars(Program *sh)=0
Definition GraphI.hh:1981
virtual bool is_fragment() const
Definition GraphI.hh:1989
virtual ShaderCall * get_next() const =0
virtual int index(int base) const =0
virtual std::string func_name() const =0
virtual ~ShaderCall()
Definition GraphI.hh:1983
virtual std::string define_strings() const =0
std::string get_key() const
Definition GraphI.hh:1993
virtual std::string func_call() const =0
virtual std::string func_call2(int &index) const =0
virtual std::string cache_id() const
Definition GraphI.hh:1991
Definition GraphI.hh:3701
virtual std::string Code() const =0
virtual ~ShaderCode()
Definition GraphI.hh:3703
Definition GraphI.hh:3707
virtual void execute(MainLoopEnv &e)=0
virtual void set_inner(int num, std::string value)=0
virtual void handle_event(MainLoopEvent &e)=0
virtual Bindings set_var(const Bindings &b)=0
virtual std::string func_name() const =0
virtual std::string get_flags() const =0
virtual std::string get_webgl_function() const =0
virtual ~ShaderI2()
Definition GraphI.hh:3709
virtual std::string get_win32_header() const =0
virtual std::string get_win32_function() const =0
virtual std::string get_webgl_header() const =0
Definition GraphI.hh:2487
virtual ~ShaderI()
Definition GraphI.hh:2489
virtual std::string shader() const =0
virtual std::string funcname() const =0
Definition GraphI.hh:1281
virtual std::string Function() const =0
virtual std::string ArgName(int i) const =0
virtual std::string FunctionName() const =0
virtual std::string ColorFunctionName() const =0
virtual std::string ArgValue(int i) const =0
virtual ~ShaderModule()
Definition GraphI.hh:1283
virtual int NumArgs() const =0
Definition GraphI.hh:3724
virtual Point param_value_p3d(int i) const =0
virtual float param_value_f(int i) const =0
virtual ~ShaderParameterI()
Definition GraphI.hh:3726
virtual void set_time(float time)=0
virtual unsigned int param_value_u(int i) const =0
virtual Point param_value_uvw(int i) const =0
virtual int param_value_i(int i) const =0
Definition GraphI.hh:722
virtual C EdgeRightSide(int y, int edge) const =0
virtual int NumEdges(int y) const =0
virtual C EdgeLeftSide(int y, int edge) const =0
virtual int SizeY() const =0
virtual float Edge(int y, int edge) const =0
virtual ~SimpleShape()
Definition GraphI.hh:724
Definition GraphI.hh:2713
virtual int NumBones() const =0
virtual void Prepare()=0
virtual float PosAtBone(int pt) const =0
virtual ~SkeletalData()
Definition GraphI.hh:2715
virtual float BoneAngle(int pt) const =0
virtual int NumPoints() const =0
virtual Point Bone(int i, bool is_first) const =0
virtual float BoneDeltaAngle(int i) const =0
virtual int PointAttachBone(int pt) const =0
virtual float DistFromBone(int pt) const =0
Definition GraphI.hh:2070
virtual ~SkeletalNode()
Definition GraphI.hh:2072
virtual Point pos(float time) const =0
virtual Matrix mat(float time) const =0
Definition GraphI.hh:1706
int m_depth
Definition GraphI.hh:1720
DrawBufferFormat fmt
Definition GraphI.hh:1716
bool m_owned2
Definition GraphI.hh:1722
void set_data_mono1(void *data, int width, int height, int ydelta)
Definition GameApi.cc:33366
void * m_data
Definition GraphI.hh:1715
int m_width
Definition GraphI.hh:1717
SourceBitmap(DrawBufferFormat fmt, int depth)
Definition GameApi.cc:33304
void set_data(void *data, int width, int height, int ydelta)
Definition GameApi.cc:33355
bool m_owned
Definition GraphI.hh:1721
void operator=(const SourceBitmap &src)
Definition GameApi.cc:33331
int m_height
Definition GraphI.hh:1718
~SourceBitmap()
Definition GameApi.cc:33388
int m_ydelta
Definition GraphI.hh:1719
Definition GraphI.hh:2367
virtual ~Space3d()
Definition GraphI.hh:2369
virtual float SizeY() const =0
virtual int Map(float x, float y, float z) const =0
virtual float SizeZ() const =0
virtual float SizeX() const =0
Definition GraphI.hh:2130
virtual void Destroy()=0
GameApi::EveryApi * ev
Definition GraphI.hh:2133
virtual ~Splitter()
Definition GraphI.hh:2135
virtual bool NoMainLoop() const
Definition GraphI.hh:2140
virtual void EnvTransfer(Splitter *next)
Definition GraphI.hh:2142
virtual void RejectedIter()
Definition GraphI.hh:2138
virtual Splitter * NextState(int code)
Definition GraphI.hh:2141
GameApi::Env * e
Definition GraphI.hh:2132
virtual int Iter()=0
virtual void Init()=0
Definition GraphI.hh:1223
virtual Color Pixel(int frame, int x, int y) const =0
virtual int XSize(int frame) const =0
virtual int YSize(int frame) const =0
virtual Point2d Pos(int frame) const =0
virtual int NumFrames() const =0
virtual ~Sprite()
Definition GraphI.hh:1230
Definition GraphI.hh:2311
virtual int SX(int c) const =0
virtual int X(int c) const =0
virtual int Count() const =0
virtual ~StringDisplay()
Definition GraphI.hh:2313
virtual void Prepare()
Definition GraphI.hh:2314
virtual int Y(int c) const =0
virtual int SY(int c) const =0
virtual unsigned int Map(int c, int x, int y) const =0
Definition GraphI.hh:2454
virtual int texture() const =0
virtual std::vector< int > shader_id()
Definition GraphI.hh:2464
virtual void render(MainLoopEnv &e)=0
virtual void Prepare()
Definition GraphI.hh:2459
virtual ~TextureID()
Definition GraphI.hh:2456
virtual void HeavyPrepare()
Definition GraphI.hh:2458
virtual bool is_fbo() const =0
virtual void Collect(CollectVisitor &vis)
Definition GraphI.hh:2457
virtual void handle_event(MainLoopEvent &e)=0
Definition GraphI.hh:3756
virtual int Alt(int a, int i) const =0
virtual int NumAlts() const =0
virtual int NumArray() const =0
virtual ~TexturedAlternatives()
Definition GraphI.hh:3758
Definition GraphI.hh:3766
virtual TexturedVoxelArea * Index(int i) const =0
virtual int Bottom(int i) const =0
virtual int SX(int i) const =0
virtual int SZ(int i) const =0
virtual int Left(int i) const =0
virtual int Size() const =0
virtual int Top(int i) const =0
virtual int SY(int i) const =0
virtual ~TexturedAreaArray()
Definition GraphI.hh:3768
virtual int Back(int i) const =0
virtual int Right(int i) const =0
virtual int Front(int i) const =0
Definition GraphI.hh:3818
virtual int Size() const =0
virtual Point2d start(int type) const =0
virtual int SizeY() const =0
virtual Point P2(int i) const =0
virtual ~TexturedQuads()
Definition GraphI.hh:3820
virtual int SizeX() const =0
virtual int Type(int i) const =0
virtual Point2d end(int type) const =0
virtual Point P4(int i) const =0
virtual Color Map(int x, int y) const =0
virtual Point P3(int i) const =0
virtual Point P1(int i) const =0
Definition GraphI.hh:3783
virtual FaceCollection * faces() const =0
virtual int Parent() const =0
virtual int bounding_start_z() const =0
virtual int bounding_end_x() const =0
virtual int bounding_end_z() const =0
TexturedVoxelArea()
Definition GraphI.hh:3785
virtual ~TexturedVoxelArea()
Definition GraphI.hh:3786
virtual int bounding_start_x() const =0
virtual Bitmap< Color > * texture() const =0
virtual int bounding_end_y() const =0
virtual int bounding_start_y() const =0
virtual Color Map(int x, int y) const =0
virtual int SY() const =0
virtual unsigned char Map(int x, int y, int z) const =0
virtual bool IsEnabled(int x, int y, int z) const
Definition GraphI.hh:3811
virtual int SizeY() const
Definition GraphI.hh:3805
virtual int SizeX() const
Definition GraphI.hh:3804
TexturedVoxel(int num)
Definition GraphI.hh:3802
virtual int SZ() const =0
virtual ~TexturedVoxel()
Definition GraphI.hh:3803
virtual int SX() const =0
Definition GraphI.hh:4012
virtual void DeactivateTile(int x, int y, int z)=0
virtual void ActivateTile(int x, int y, int z)=0
virtual ~TileActivation()
Definition GraphI.hh:4014
Definition GraphI.hh:4021
virtual int NumBehaviours() const =0
virtual bool Condition(int behavior_num, int x, int y, int z) const =0
virtual int Tile(int behavior_num) const =0
virtual void SetTiles3d(Tiles3d *t)=0
virtual ~TileBehaviorMap()
Definition GraphI.hh:4023
virtual void SetTiles2d(Tiles2d *t)=0
virtual void SubmitActivations(int behavior_num, int x, int y, int z, TileActivation *target) const =0
virtual int TargetTile(int behavior_num) const =0
Definition GraphI.hh:4055
virtual int enemy_behavior_num(int e) const =0
virtual int enemy_tile(int e) const =0
virtual void SetTiles3d(Tiles3d *t)=0
virtual ~TileEnemies()
Definition GraphI.hh:4057
virtual int enemy_pos_z(int e) const =0
virtual void SetTiles2d(Tiles2d *t)=0
virtual int enemy_pos_y(int e) const =0
virtual int enemy_pos_x(int e) const =0
virtual int enemy_type(int e) const =0
virtual int NumEnemies() const =0
Definition GraphI.hh:4005
virtual ~TileEnemyCallback()
Definition GraphI.hh:4007
virtual void add_random_item(int x, int y, float delta_x)=0
Definition GraphI.hh:3978
virtual int get_lives() const =0
virtual void set_score(int score)=0
virtual ~TileHudInterface()
Definition GraphI.hh:3980
virtual void set_state(int state)=0
virtual int get_health() const =0
virtual int get_score() const =0
virtual void set_health(int health)=0
virtual void set_lives(int lives)=0
Definition GraphI.hh:4034
virtual float weapon_delta() const =0
virtual int player_dir() const =0
virtual bool weapon_active() const =0
virtual void kill_player()=0
virtual void handle_event(MainLoopEvent &e)=0
virtual int player_pos_x() const =0
virtual ~TilePlayer()
Definition GraphI.hh:4036
virtual void SetTiles2d(Tiles2d *t)=0
virtual bool in_jump() const =0
virtual int player_pos_y() const =0
virtual void SetTiles3d(Tiles3d *t)=0
virtual int player_pos_z() const =0
virtual int player_tile() const =0
virtual bool weapon_at_kill() const =0
virtual int player_type() const =0
virtual Point delta_pos() const =0
Definition GraphI.hh:3962
virtual MainLoopItem * get_renderer(TileScroller *scr) const =0
virtual void set_tiles_2d(Tiles2d *t, std::vector< Bitmap< Color > * > bm, std::vector< int > vec)=0
virtual ~TileRenderer2d()
Definition GraphI.hh:3964
Definition GraphI.hh:3970
virtual void set_tiles_3d(Tiles3d *t) const =0
virtual MainLoopItem * get_renderer() const =0
virtual ~TileRenderer3d()
Definition GraphI.hh:3972
Definition GraphI.hh:3952
virtual ~TileScroller()
Definition GraphI.hh:3954
virtual void handle_event(MainLoopEvent &e)=0
virtual Point get_pos() const =0
virtual void reset()=0
virtual void execute(MainLoopEnv &e)=0
Definition GraphI.hh:3998
virtual ~TileSplashScreenCallback()
Definition GraphI.hh:4000
virtual void reset()=0
Definition GraphI.hh:3991
virtual void reset()=0
virtual bool enabled() const =0
virtual ~TileSplashScreenInterface()
Definition GraphI.hh:3993
Definition GraphI.hh:3924
virtual int SizeY() const =0
virtual void set_previous_time2(int x, int y, float val)=0
virtual void set_current_move2(int x, int y, int val)=0
virtual int Tile2(int x, int y) const =0
virtual int get_current_move2(int x, int y) const =0
virtual int get_current_move1(int x, int y) const =0
virtual ~Tiles2d()
Definition GraphI.hh:3926
virtual void set_previous_time(int x, int y, float val)=0
virtual int Tile(int x, int y) const =0
virtual void set_current_move1(int x, int y, int val)=0
virtual int SizeX() const =0
virtual Point2d Tile2Delta(int x, int y) const
Definition GraphI.hh:3932
virtual float get_previous_time2(int x, int y) const =0
virtual float get_previous_time(int x, int y) const =0
virtual int Tile3(int x, int y) const =0
Definition GraphI.hh:3943
Definition GraphI.hh:3281
virtual void Prepare()=0
virtual float end_time() const =0
virtual FaceCollection * get_frame(float time) const =0
virtual float start_time() const =0
virtual void Collect(CollectVisitor &vis)=0
virtual void HeavyPrepare()=0
virtual ~TimeAnim()
Definition GraphI.hh:3283
virtual void HeavyPrepare()
Definition GraphI.hh:1665
virtual void execute(MainLoopEnv &e)
Definition GraphI.hh:1668
TimingForward(Timing &prev)
Definition GraphI.hh:1663
virtual void Prepare()
Definition GraphI.hh:1666
virtual bool ReadyToPrepare() const
Definition GraphI.hh:1670
virtual void FirstFrame()
Definition GraphI.hh:1667
virtual void handle_event(MainLoopEvent &e)
Definition GraphI.hh:1669
virtual float end_time() const
Definition GraphI.hh:1672
virtual void Collect(CollectVisitor &vis)
Definition GraphI.hh:1664
virtual void execute_without_draw(MainLoopEnv &e)
Definition GraphI.hh:1675
virtual float delta_time() const
Definition GraphI.hh:1673
Definition GraphI.hh:1651
virtual float delta_time() const =0
virtual ~Timing()
Definition GraphI.hh:1653
virtual void execute_without_draw(MainLoopEnv &e)=0
virtual float end_time() const =0
Definition GraphI.hh:1268
virtual int NumTimeSlots() const =0
virtual int Duration(int channel, int timeslot) const
Definition GraphI.hh:1274
virtual ~Tracker()
Definition GraphI.hh:1270
virtual int NumChannels() const =0
virtual int Type(int channel, int timeslot) const =0
virtual int NumData(int channel, int timeslot) const
Definition GraphI.hh:1276
virtual int Sample(int channel, int timeslot) const
Definition GraphI.hh:1275
virtual unsigned int Data(int channel, int timeslot, int data) const
Definition GraphI.hh:1277
Definition GraphI.hh:1941
virtual Matrix get_child(int i, float time) const =0
virtual ~TreeLevel()
Definition GraphI.hh:1943
virtual int num_childs() const =0
Definition GraphI.hh:1949
virtual ~TreeStack()
Definition GraphI.hh:1951
virtual TreeLevel * get_level(int i) const =0
virtual int num_levels() const =0
virtual Vector Normal(int i) const
Definition GraphI.hh:1853
TriStrip & next
Definition GraphI.hh:1855
virtual unsigned int Color(int i) const
Definition GraphI.hh:1851
TriStripForward(TriStrip &next)
Definition GraphI.hh:1847
virtual ~TriStripForward()
Definition GraphI.hh:1848
virtual Point2d TexCoord(int i) const
Definition GraphI.hh:1852
virtual Point Pos(int i) const
Definition GraphI.hh:1850
virtual int Size() const
Definition GraphI.hh:1849
Definition GraphI.hh:1834
virtual unsigned int Color(int i) const =0
virtual Point Pos(int i) const =0
virtual int Size() const =0
virtual Point2d TexCoord(int i) const =0
virtual ~TriStrip()
Definition GraphI.hh:1836
virtual Vector Normal(int i) const =0
Definition GraphI.hh:855
virtual std::string get_url(int i) const =0
virtual MemoryBlock * get_block(std::string url) const =0
virtual void Prepare()=0
virtual ~UrlMemoryMap()
Definition GraphI.hh:857
virtual int size() const =0
Definition GraphI.hh:3545
virtual float get_x() const =0
virtual float get_y() const =0
virtual ~Vec2()
Definition GraphI.hh:3547
Definition GraphI.hh:3553
virtual float get_y() const =0
virtual float get_x() const =0
virtual ~Vec3()
Definition GraphI.hh:3555
virtual float get_z() const =0
Definition GraphI.hh:3562
virtual float get_z() const =0
virtual ~Vec4()
Definition GraphI.hh:3564
float get_r() const
Definition GraphI.hh:3569
virtual float get_w() const =0
float get_g() const
Definition GraphI.hh:3570
float get_b() const
Definition GraphI.hh:3571
virtual float get_y() const =0
virtual float get_x() const =0
float get_a() const
Definition GraphI.hh:3572
Definition VectorTools.hh:125
float dy
Definition VectorTools.hh:268
float dz
Definition VectorTools.hh:268
float dx
Definition VectorTools.hh:268
Definition GraphI.hh:3183
virtual ~VelocityField()
Definition GraphI.hh:3185
virtual Vector Map(Point p) const =0
Definition GraphI.hh:2154
virtual int FaceColl(int keyframe_gap) const =0
virtual float StepDuration(int keyframe_gap) const =0
virtual int Lines(int keyframe_gap) const =0
virtual int NumKeyFrames()=0
virtual ~VertexAnimNode()
Definition GraphI.hh:2156
Definition GraphI.hh:865
virtual MemoryBlock * quad_polys2()=0
virtual MemoryBlock * poly_color()=0
virtual MemoryBlock * tri_color()=0
virtual MemoryBlock * tri_normals()=0
virtual MemoryBlock * quad_texcoord()=0
virtual MemoryBlock * quad_normals()=0
virtual ~VertexArray()
Definition GraphI.hh:867
virtual MemoryBlock * poly_polys2()=0
virtual MemoryBlock * tri_texcoord()=0
virtual MemoryBlock * poly_normals()=0
virtual MemoryBlock * quad_color()=0
virtual void Prepare()=0
virtual MemoryBlock * poly_polys()=0
virtual MemoryBlock * tri_polys2()=0
virtual MemoryBlock * quad_polys()=0
virtual MemoryBlock * poly_texcoord()=0
virtual MemoryBlock * triangle_polys()=0
Definition GraphI.hh:2444
virtual float SizeX() const =0
virtual ~VolumeValues()
Definition GraphI.hh:2450
virtual float SizeY() const =0
virtual T get(float x, float y, float z) const =0
virtual float SizeZ() const =0
Definition GraphI.hh:2831
virtual unsigned int Color(int i) const =0
virtual int SizeZ() const =0
virtual void Prepare()=0
virtual Pos Map(int i) const =0
virtual int SizeX() const =0
virtual ~VoxelArray()
Definition GraphI.hh:2833
virtual int Size() const =0
virtual int SizeY() const =0
virtual int State(int i) const =0
Definition GraphI.hh:1131
virtual void Prepare()=0
virtual C Map(int x, int y, int z) const =0
virtual int SizeX() const =0
virtual ~Voxel()
Definition GraphI.hh:1141
virtual int SizeY() const =0
virtual Vector Normal(int x, int y, int z) const
Definition GraphI.hh:1139
virtual unsigned int Color(int x, int y, int z) const
Definition GraphI.hh:1138
virtual int SizeZ() const =0
virtual void CleanPrepare()=0
Definition GraphI.hh:2611
virtual void add_enemy(float start_x, float end_x, float start_y, float end_y)=0
virtual void clear_enemies()=0
virtual int CellSizeX() const =0
virtual void SetMV3d(Matrix m)=0
virtual ~WorldBlocks()
Definition GraphI.hh:2613
virtual int SizeX() const =0
virtual std::pair< float, float > CellPositionF3d(Point ray_start, Point ray_end) const =0
virtual void SetElemBlock(int *array, int width, int height, int ydelta, int start_x, int start_y)=0
virtual std::pair< Point2d, Point2d > BlockToWorld(int x, int y) const =0
virtual Point GetTL3d() const =0
virtual std::pair< int, int > CellPosition3d(Point ray_start, Point ray_end) const =0
virtual std::pair< int, int > BlockPosition(Point2d pos) const =0
virtual void ReserveSize(int sx, int sy)=0
virtual float enemy_end_x(int e) const =0
virtual float enemy_start_y(int e) const =0
virtual void SetCellSize(int cx, int cy)=0
virtual std::pair< int, int > CellPosition(Point2d pos) const =0
virtual void SetElem(int x, int y, int val)=0
virtual void SetExtends3d(Point tl, Point tr, Point bl, Point br)=0
virtual int Map(int x, int y) const =0
virtual Point2d GetBR() const =0
virtual float enemy_end_y(int e) const =0
virtual std::pair< float, float > CellPositionF(Point2d pos) const =0
virtual int CellSizeY() const =0
virtual float enemy_start_x(int e) const =0
virtual Point2d GetTL() const =0
virtual int num_enemies() const =0
virtual std::pair< int, int > BlockPosition3d(Point ray_start, Point ray_end) const =0
virtual Point GetBR3d() const =0
virtual int SizeY() const =0
virtual void SetExtends(Point2d p1, Point2d p2)=0
Definition GraphI.hh:2468
virtual int Item(int i) const =0
virtual int NumItems() const =0
virtual int PosX(int i) const =0
virtual int PosY(int i) const =0
virtual ~WorldSpec()
Definition GraphI.hh:2470
Definition Containment.hh:60
Matrix enemy_matrix
Definition GraphI.hh:1482
Point world_pos
Definition GraphI.hh:1467
std::map< std::string, CollisionData * > collision_data
Definition GraphI.hh:1485
int world_sx
Definition GraphI.hh:1463
Vector world_dz
Definition GraphI.hh:1466
std::vector< PlayerPiece > player_pieces
Definition GraphI.hh:1474
std::vector< std::pair< std::string, std::string > > collisions
Definition GraphI.hh:1486
float rot_y
Definition GraphI.hh:1478
Vector world_dx
Definition GraphI.hh:1466
Vector world_dy
Definition GraphI.hh:1466
std::vector< EnemyPiece > enemy_pieces
Definition GraphI.hh:1483
Vector camera_normal
Definition GraphI.hh:1479
std::vector< WorldPiece > world_pieces
Definition GraphI.hh:1469
Point camera_pos
Definition GraphI.hh:1477
int world_sy
Definition GraphI.hh:1464
Matrix player_matrix
Definition GraphI.hh:1473
int world_sz
Definition GraphI.hh:1465
WorldElement * world
Definition GraphI.hh:1462
Point player_pos
Definition GraphI.hh:1472
Definition chaiscript.hpp:831
Definition GraphI.hh:4172
virtual void push_async_url(std::string url, const GameApi::ASyncVec *ptr)=0
virtual GameApi::ASyncVec * async_get2(std::string url)=0
virtual void del_vec(GameApi::ASyncVec *vec)=0
virtual void del_async_url(std::string url)=0
virtual void async_cache_clear()=0
virtual bool async_find(std::string url)=0
virtual ~del_map_interface()
Definition GraphI.hh:4174
virtual void print()
Definition GraphI.hh:4176
Definition GraphI.hh:4144
virtual void set_task_as_execute(task_data d)=0
virtual bool shutdown_ongoing()=0
virtual void wait_for_push_or_shutdown()=0
virtual void queue_mutex_init()=0
virtual void queue_mutex_start()=0
virtual task_data create_work(int id, void *(*fptr)(void *), void *data)=0
virtual void set_task_as_done(task_data d)=0
virtual void mutex_destroy()=0
virtual ~task_interface()
Definition GraphI.hh:4146
virtual bool queue_has_data()=0
virtual task_data front()=0
virtual void queue_mutex_end()=0
virtual void mutex_init()=0
virtual void spawn_thread()=0
virtual void pop_from_queue()=0
virtual void start_shutdown()=0
virtual void push_to_queue(task_data d)=0
virtual void join_id(int id)=0
Definition tiny_gltf.h:1030
std::string code
Definition test.cpp:145
IMPORT PathHandler * g_path_handler
Definition GameApi_dep_env.cc:6102
IMPORT CachedFileService * g_cached_serv
Definition GameApi.cc:46396
frame( $arr, $width, $height, $data, $i, $homepage, $noheaders, $seamless, $transparent)
Definition emscripten_frame.php:18
border radius
Definition gameapi_example.php:45
let delta_x
Definition gameapi_example.php:62
background color
Definition gameapi_example.php:46
d
Definition meshpage.php:3895
iVBORw0KGgoAAAANSUhEUgAAANcAAAB5CAMAAACdtUQZAAAA51BMVEX</div ></div >< div style="padding: 0px 0px; width: 1324px;">< div style="height: 400px; width: 1324px;"></div >< div itemscope itemtype="https: </div><div itemscope itemtype="https:</div >< div itemscope itemtype="https: </div></div><p><div style="padding:0px 0px;width:1324px;"><div></div><div itemscope itemtype="https:< ul >< li >< b > Application name
8AkrcAgqgAs9wqQ0ey2tkAo8gAuuQfeI4hPUH09fXHy8z4+fng4uNKXF/Lz9BzfoAcgpkQMTUAKjAbOT4Qr9AXhJ8Rl7ktMCwTosA...
Definition meshpage.php:1610
lazy data
Definition meshpage.php:1583
str
Definition meshpage.php:1778
line height
Definition meshpage.php:3536
tag src
Definition meshpage.php:1786
n< br > font size
Definition meshpage.php:3536
url
Definition meshpage.php:1781
not_this_one end(...)
string join(Range c, string delim)
Joins the elements of the Range c into a string, delimiting each with the delim string.
Definition FreeType.hh:46
Namespace chaiscript contains every API call that the average user will be concerned with.
@ Block
Definition chaiscript_common.hpp:67
std::string file_extension(const std::string &path)
Definition httplib.h:5026
double f(const std::string &, double, bool) noexcept
Definition profile_cpp_calls_2.cpp:4
DrawBufferFormat
Definition Parser.cc:293
FrameBufferFormat
Definition Parser.cc:285
bool operator==(const short_alloc< T, N, A1 > &x, const short_alloc< U, M, A2 > &y) noexcept
Definition short_alloc.hpp:145
bool operator!=(const short_alloc< T, N, A1 > &x, const short_alloc< U, M, A2 > &y) noexcept
Definition short_alloc.hpp:153
Definition test.cpp:815
std::string api_name
Definition test.cpp:816
int param_num
Definition test.cpp:818
std::string func_name
Definition test.cpp:817
Definition test.cpp:82
Array< int, int > * vec2
Definition GraphI.hh:2184
int type
Definition test.cpp:83
std::vector< int > vec
Definition test.cpp:84
Definition GraphI.hh:3501
float start_x
Definition GraphI.hh:3503
float start_y
Definition GraphI.hh:3505
int id
Definition GraphI.hh:3502
float end_x
Definition GraphI.hh:3504
float end_y
Definition GraphI.hh:3506
Definition GraphI.hh:80
std::vector< BlockBase * > vec
Definition GraphI.hh:81
Definition Buffer.hh:32
static BufferRef NewBuffer(int width, int height)
Definition Buffer.cc:36
Definition GameApi.h:30
Definition GraphI.hh:1451
std::vector< Point > bounding_box
Definition GraphI.hh:1452
Definition GraphI.hh:1496
std::vector< std::string > content_item_names
Definition GraphI.hh:1497
std::vector< ContentPiece > content_items
Definition GraphI.hh:1498
Definition GraphI.hh:1490
std::string url
Definition GraphI.hh:1491
std::string script
Definition GraphI.hh:1492
Definition GraphI.hh:954
friend bool operator==(const CubeSpec &c1, const CubeSpec &c2)
Definition GraphI.hh:957
ShapeSizeSpec shapesize
Definition GraphI.hh:955
Definition GraphI.hh:1729
int x
Definition GraphI.hh:1730
int y
Definition GraphI.hh:1730
unsigned int color
Definition GraphI.hh:1731
Definition GraphI.hh:1760
DrawBufferFormat format
Definition GraphI.hh:1761
float * depth_buffer
Definition GraphI.hh:1771
FrameBuffer * drawbuffer
Definition GraphI.hh:1766
float delta_time
Definition GraphI.hh:1769
float time
Definition GraphI.hh:1768
Definition GraphI.hh:1005
bool has_changed
Definition GraphI.hh:1010
float start_y
Definition GraphI.hh:1007
float end_x
Definition GraphI.hh:1006
float end_y
Definition GraphI.hh:1007
float start_x
Definition GraphI.hh:1006
float end_z
Definition GraphI.hh:1008
float start_z
Definition GraphI.hh:1008
Definition GameApi.h:43
Definition GraphI.hh:947
int sizeindex
Definition GraphI.hh:951
PosSpec pos
Definition GraphI.hh:949
bool enabled
Definition GraphI.hh:948
int shapeindex
Definition GraphI.hh:950
Definition GraphI.hh:1438
std::string script
Definition GraphI.hh:1439
int p
Definition GraphI.hh:1441
float enemy_rot_y
Definition GraphI.hh:1443
std::map< int, void * > user_data
Definition GraphI.hh:1444
Point delta_pos
Definition GraphI.hh:1440
Point enemy_position
Definition GraphI.hh:1442
Definition GraphI.hh:2856
float start_x
Definition GraphI.hh:2857
float start_y
Definition GraphI.hh:2858
float end_y
Definition GraphI.hh:2858
float end_z
Definition GraphI.hh:2859
float end_x
Definition GraphI.hh:2857
float start_z
Definition GraphI.hh:2859
Definition GraphI.hh:1556
float u
Definition GraphI.hh:1558
float v
Definition GraphI.hh:1558
int facenum
Definition GraphI.hh:1557
Definition GraphI.hh:3614
float * value
Definition GraphI.hh:3616
std::string key
Definition GraphI.hh:3615
Definition GraphI.hh:1696
int type
Definition GraphI.hh:1697
Point cursor_pos
Definition GraphI.hh:1699
int button
Definition GraphI.hh:1700
int ch
Definition GraphI.hh:1698
float time
Definition GraphI.hh:1702
bool pin[9]
Definition GraphI.hh:1701
Definition GraphI.hh:87
~G_BLOCK()
Definition GraphI.hh:90
std::vector< Block2 * > g_blocks
Definition GraphI.hh:88
Definition GraphI.hh:1409
std::vector< std::string > param_names
Definition GraphI.hh:1411
std::string function_name
Definition GraphI.hh:1410
std::vector< std::string > param_types
Definition GraphI.hh:1412
std::vector< GameApiLine > lines
Definition GraphI.hh:1413
Definition GraphI.hh:1398
std::string uid
Definition GraphI.hh:1401
std::vector< GameApiParam > params
Definition GraphI.hh:1405
int y
Definition GraphI.hh:1399
int x
Definition GraphI.hh:1399
std::string module_name
Definition GraphI.hh:1400
int sz
Definition GraphI.hh:1403
int j
Definition GraphI.hh:1402
bool array_return
Definition GraphI.hh:1404
Definition GraphI.hh:1417
std::vector< GameApiFunction > funcs
Definition GraphI.hh:1418
Definition test.cpp:367
std::string type
Definition GraphI.hh:1343
std::string param_name
Definition test.cpp:368
bool is_array
Definition test.cpp:370
GameApiLine * array_return_target
Definition test.cpp:371
std::string expr
Definition GraphI.hh:1347
std::string value
Definition test.cpp:369
int j
Definition GraphI.hh:1346
Definition GraphI.hh:572
std::string name
Definition GraphI.hh:572
bool value
Definition GraphI.hh:572
Definition GraphI.hh:573
Color value
Definition GraphI.hh:573
std::string name
Definition GraphI.hh:573
Definition GameApi.hh:4664
Definition GameApi.hh:301
Definition GraphI.hh:577
std::vector< PointExprEnv > point_env
Definition GraphI.hh:582
std::vector< IntExprEnv > int_env
Definition GraphI.hh:579
std::vector< BoolExprEnv > bool_env
Definition GraphI.hh:580
std::vector< FloatExprEnv > float_env
Definition GraphI.hh:578
std::vector< ColorExprEnv > color_env
Definition GraphI.hh:581
Definition GraphI.hh:570
float value
Definition GraphI.hh:570
std::string name
Definition GraphI.hh:570
Definition GraphI.hh:571
std::string name
Definition GraphI.hh:571
int value
Definition GraphI.hh:571
Definition GraphI.hh:574
Point value
Definition GraphI.hh:574
std::string name
Definition GraphI.hh:574
Definition GraphI.hh:3191
Point pos
Definition GraphI.hh:3192
float radius
Definition GraphI.hh:3193
Definition GraphI.hh:3619
int * value
Definition GraphI.hh:3621
std::string key
Definition GraphI.hh:3620
Definition GraphI.hh:1502
int screen_height
Definition GraphI.hh:1544
int screen_width
Definition GraphI.hh:1543
Matrix env
Definition GraphI.hh:1527
bool is_2d
Definition GraphI.hh:1545
std::string v_shader_functions
Definition GraphI.hh:1509
Matrix in_MV
Definition GraphI.hh:1533
int sh_color
Definition GraphI.hh:1503
int us_fragment_shader
Definition GraphI.hh:1531
int us_vertex_shader
Definition GraphI.hh:1530
int depthfunc
Definition GraphI.hh:1550
int screen_y
Definition GraphI.hh:1542
Matrix in_N
Definition GraphI.hh:1537
int spotlight_id
Definition GraphI.hh:1540
ContentCollection * avail_content
Definition GraphI.hh:1549
int sh_texture
Definition GraphI.hh:1504
World * current_world
Definition GraphI.hh:1548
std::string f_shader_functions
Definition GraphI.hh:1510
bool has_inverse
Definition GraphI.hh:1534
Matrix in_iMV
Definition GraphI.hh:1535
int depthmask
Definition GraphI.hh:1551
int sh_texture_2d
Definition GraphI.hh:1505
int screen_x
Definition GraphI.hh:1541
bool cullface
Definition GraphI.hh:1552
float time
Definition GraphI.hh:1522
int sh_array_texture
Definition GraphI.hh:1506
Matrix in_T
Definition GraphI.hh:1536
int sfo_id
Definition GraphI.hh:1539
float in_POS
Definition GraphI.hh:1525
Matrix in_P
Definition GraphI.hh:1538
float delta_time
Definition GraphI.hh:1523
Definition GraphI.hh:1562
bool joy0_button3
Definition GraphI.hh:1571
bool joy0_button2
Definition GraphI.hh:1570
int joy0_axis2
Definition GraphI.hh:1581
bool joy1_button0
Definition GraphI.hh:1573
int joy1_axis0
Definition GraphI.hh:1585
int joy1_ball0
Definition GraphI.hh:1593
Point event_location
Definition GraphI.hh:1599
bool joy0_button1
Definition GraphI.hh:1569
int joy0_ball0
Definition GraphI.hh:1591
int joy0_axis1
Definition GraphI.hh:1580
bool joy1_button3
Definition GraphI.hh:1576
int joy1_ball1
Definition GraphI.hh:1594
int joy1_current_axis
Definition GraphI.hh:1584
int joy0_axis0
Definition GraphI.hh:1579
std::string drag_drop_filename
Definition GraphI.hh:1597
int joy0_ball1
Definition GraphI.hh:1592
bool joy0_button0
Definition GraphI.hh:1568
int joy0_current_axis
Definition GraphI.hh:1578
bool joy1_button2
Definition GraphI.hh:1575
int type
Definition GraphI.hh:1563
int joy0_axis4
Definition GraphI.hh:1583
int joy1_axis1
Definition GraphI.hh:1586
int joy0_axis3
Definition GraphI.hh:1582
int joy1_axis2
Definition GraphI.hh:1587
Point cursor_pos
Definition GraphI.hh:1565
int joy1_axis3
Definition GraphI.hh:1588
int button
Definition GraphI.hh:1566
int ch
Definition GraphI.hh:1564
int joy1_axis4
Definition GraphI.hh:1589
bool joy1_button1
Definition GraphI.hh:1574
Definition GraphI.hh:977
unsigned int argb
Definition GraphI.hh:978
friend bool operator==(const OctTreeColor &c1, const OctTreeColor &c2)
Definition GraphI.hh:979
Definition GraphI.hh:942
int id
Definition GraphI.hh:943
Definition test.cpp:121
bool windows_path
Definition test.cpp:124
bool user_input
Definition test.cpp:122
bool url_with_unresolved_replaces
Definition test.cpp:128
bool normal_url
Definition test.cpp:125
bool path_with_unresolved_replaces
Definition test.cpp:127
bool file_url
Definition test.cpp:126
bool linux_path
Definition test.cpp:123
Definition test.cpp:185
Situation situ
Definition test.cpp:186
Definition Combination.hh:21
virtual ~Path()
Definition GraphI.hh:317
virtual bool is_path_with_unresolved_replaces() const =0
virtual std::string get_default_path() const =0
virtual bool is_file_url() const =0
virtual bool is_def_linux_path() const =0
virtual bool is_linux_path() const =0
virtual bool is_user_input() const =0
virtual bool is_def_path_with_unresolved_replaces() const =0
virtual bool is_windows_path() const =0
virtual bool is_def_user_input() const =0
virtual bool is_def_url_with_unresolved_replaces() const =0
virtual bool is_normal_url() const =0
virtual bool is_def_file_url() const =0
virtual bool is_default_set() const =0
virtual bool is_url_with_unresolved_replaces() const =0
virtual bool is_def_windows_path() const =0
virtual std::string get_path() const =0
virtual bool is_def_normal_url() const =0
Definition GraphI.hh:4116
int y
Definition GraphI.hh:4117
unsigned int * pixel
Definition GraphI.hh:4118
int x
Definition GraphI.hh:4117
Definition GraphI.hh:1431
std::string script
Definition GraphI.hh:1432
Point delta_pos
Definition GraphI.hh:1433
std::map< int, void * > user_data
Definition GraphI.hh:1435
int p
Definition GraphI.hh:1434
Definition VectorTools.hh:910
float x
Definition VectorTools.hh:911
float y
Definition VectorTools.hh:911
Definition GraphI.hh:3629
Point * value
Definition GraphI.hh:3631
std::string key
Definition GraphI.hh:3630
Definition Parser.cc:60
Definition GraphI.hh:2750
std::vector< int > b
Definition GraphI.hh:2751
std::vector< int > l
Definition GraphI.hh:2751
std::vector< int > W
Definition GraphI.hh:2751
std::vector< int > t
Definition GraphI.hh:2751
std::vector< int > r
Definition GraphI.hh:2751
std::vector< int > H
Definition GraphI.hh:2751
Definition GraphI.hh:2753
int l
Definition GraphI.hh:2754
int r
Definition GraphI.hh:2754
int t
Definition GraphI.hh:2754
int W
Definition GraphI.hh:2754
int b
Definition GraphI.hh:2754
int H
Definition GraphI.hh:2754
Definition GraphI.hh:906
int z
Definition GraphI.hh:907
int x
Definition GraphI.hh:907
int y
Definition GraphI.hh:907
Definition test.cpp:10
int x
Definition test.cpp:10
int y
Definition test.cpp:10
Definition GraphI.hh:2893
bool has_content_darkness
Definition GraphI.hh:2902
bool text_z_coord
Definition GraphI.hh:2933
bool has_background_color
Definition GraphI.hh:2915
bool has_focus
Definition GraphI.hh:2897
float red_multiplier
Definition GraphI.hh:2924
unsigned int background_color
Definition GraphI.hh:2936
bool has_red_adder
Definition GraphI.hh:2906
bool has_alpha_channel
Definition GraphI.hh:2909
bool has_blue_adder
Definition GraphI.hh:2908
unsigned int text_color
Definition GraphI.hh:2932
float border_width
Definition GraphI.hh:2921
bool has_text_z_coord
Definition GraphI.hh:2912
float font_size
Definition GraphI.hh:2935
float red_adder
Definition GraphI.hh:2927
float content_darkness
Definition GraphI.hh:2923
float green_adder
Definition GraphI.hh:2928
float corner_radius
Definition GraphI.hh:2931
float alpha_channel
Definition GraphI.hh:2930
bool focus
Definition GraphI.hh:2918
bool has_border_color
Definition GraphI.hh:2901
bool has_blue_multiplier
Definition GraphI.hh:2905
unsigned int content_color
Definition GraphI.hh:2919
std::string font_name
Definition GraphI.hh:2934
bool has_font_name
Definition GraphI.hh:2913
bool has_text_color
Definition GraphI.hh:2911
bool has_green_multiplier
Definition GraphI.hh:2904
bool has_red_multiplier
Definition GraphI.hh:2903
bool has_extends
Definition GraphI.hh:2896
bool border_enabled
Definition GraphI.hh:2920
bool has_content_color
Definition GraphI.hh:2898
bool has_border_enabled
Definition GraphI.hh:2899
float blue_multiplier
Definition GraphI.hh:2926
bool has_border_width
Definition GraphI.hh:2900
bool has_corner_radius
Definition GraphI.hh:2910
Prop3d * parent
Definition GraphI.hh:2894
float blue_adder
Definition GraphI.hh:2929
bool has_font_size
Definition GraphI.hh:2914
unsigned int border_color
Definition GraphI.hh:2922
bool has_green_added
Definition GraphI.hh:2907
float green_multiplier
Definition GraphI.hh:2925
Extends extends
Definition GraphI.hh:2917
Definition GraphI.hh:714
Color c2
Definition GraphI.hh:715
Color c4
Definition GraphI.hh:715
Color c3
Definition GraphI.hh:715
Color c1
Definition GraphI.hh:715
Definition GraphI.hh:710
Vector n2
Definition GraphI.hh:711
Vector n4
Definition GraphI.hh:711
Vector n1
Definition GraphI.hh:711
Vector n3
Definition GraphI.hh:711
Definition GraphI.hh:702
Point p3
Definition GraphI.hh:703
Point p1
Definition GraphI.hh:703
Point p2
Definition GraphI.hh:703
Point p4
Definition GraphI.hh:703
Definition GraphI.hh:3097
float sy
Definition GraphI.hh:3099
float x
Definition GraphI.hh:3098
float y
Definition GraphI.hh:3098
float sx
Definition GraphI.hh:3099
Definition GraphI.hh:98
~Rest()
Definition GraphI.hh:114
void delete_item_from_rest(T *ptr)
Definition GraphI.hh:102
std::vector< BlockBase * > g_rest
Definition GraphI.hh:99
Definition GraphI.hh:933
SizeSpec size
Definition GraphI.hh:934
ShapeSpec shape
Definition GraphI.hh:935
friend bool operator==(const ShapeSizeSpec &c1, const ShapeSizeSpec &c2)
Definition GraphI.hh:936
Definition GraphI.hh:920
unsigned int border_color
Definition GraphI.hh:923
float border_width
Definition GraphI.hh:922
unsigned int color
Definition GraphI.hh:921
friend bool operator==(const ShapeSpec &c1, const ShapeSpec &c2)
Definition GraphI.hh:924
Definition GraphI.hh:910
int sy
Definition GraphI.hh:911
friend bool operator==(const SizeSpec &s1, const SizeSpec &s2)
Definition GraphI.hh:912
int sz
Definition GraphI.hh:911
int sx
Definition GraphI.hh:911
Definition GraphI.hh:1234
int sx
Definition GraphI.hh:1235
int sy
Definition GraphI.hh:1235
Definition GraphI.hh:1735
std::vector< Dot > dots
Definition GraphI.hh:1736
Definition GraphI.hh:1242
float width
Definition GraphI.hh:1244
float y
Definition GraphI.hh:1243
float x
Definition GraphI.hh:1243
float height
Definition GraphI.hh:1244
Definition GameApi.h:42
Definition GraphI.hh:706
Point2d t4
Definition GraphI.hh:707
Point2d t1
Definition GraphI.hh:707
Point2d t3
Definition GraphI.hh:707
Point2d t2
Definition GraphI.hh:707
Definition GraphI.hh:3624
std::string key
Definition GraphI.hh:3625
unsigned int * value
Definition GraphI.hh:3626
Definition GameApi_dep_env_delmap.hh:6
Definition GraphI.hh:3083
std::vector< V_Area > vec
Definition GraphI.hh:3084
std::vector< Point > pos
Definition GraphI.hh:3085
Definition GraphI.hh:3025
int front_texture
Definition GraphI.hh:3058
float left_start_z
Definition GraphI.hh:3049
float end_y
Definition GraphI.hh:3030
float left_end_y
Definition GraphI.hh:3048
int left_texture
Definition GraphI.hh:3046
int voxel_types
Definition GraphI.hh:3027
float end_x
Definition GraphI.hh:3030
std::string name
Definition GraphI.hh:3026
float pos_x
Definition GraphI.hh:3032
float front_start_x
Definition GraphI.hh:3059
float front_end_x
Definition GraphI.hh:3060
float pos_z
Definition GraphI.hh:3032
float top_start_x
Definition GraphI.hh:3041
float start_y
Definition GraphI.hh:3029
V_Voxel * voxels
Definition GraphI.hh:3035
float pos_y
Definition GraphI.hh:3032
float top_end_z
Definition GraphI.hh:3044
int top_texture
Definition GraphI.hh:3040
int size_y
Definition GraphI.hh:3034
int wall
Definition GraphI.hh:3071
int size_z
Definition GraphI.hh:3034
float end_z
Definition GraphI.hh:3030
float left_start_y
Definition GraphI.hh:3047
float front_start_y
Definition GraphI.hh:3061
int size_x
Definition GraphI.hh:3034
float top_end_x
Definition GraphI.hh:3042
int obj_pos
Definition GraphI.hh:3074
float start_x
Definition GraphI.hh:3029
float top_start_z
Definition GraphI.hh:3043
float start_z
Definition GraphI.hh:3029
float front_end_y
Definition GraphI.hh:3062
int obj_type
Definition GraphI.hh:3073
float left_end_z
Definition GraphI.hh:3050
int ground_heightmap
Definition GraphI.hh:3037
Definition GraphI.hh:3079
int area_type
Definition GraphI.hh:3080
Definition GraphI.hh:2991
std::string pos_name
Definition GraphI.hh:2992
std::vector< V_Object > pos
Definition GraphI.hh:2993
Definition GraphI.hh:3004
std::string type_name
Definition GraphI.hh:3005
std::vector< V_Object_Type > vec
Definition GraphI.hh:3006
Definition GraphI.hh:2997
int obj
Definition GraphI.hh:2998
int mat
Definition GraphI.hh:3000
float radius
Definition GraphI.hh:3001
int move
Definition GraphI.hh:2999
Definition GraphI.hh:2982
float z
Definition GraphI.hh:2985
float x
Definition GraphI.hh:2985
int obj_type
Definition GraphI.hh:2983
float radius
Definition GraphI.hh:2988
float y
Definition GraphI.hh:2985
Definition GraphI.hh:2977
std::vector< V_Voxel_Type > vec
Definition GraphI.hh:2978
Definition GraphI.hh:2972
std::string voxel_name
Definition GraphI.hh:2973
int obj
Definition GraphI.hh:2974
Definition GraphI.hh:2967
unsigned char type
Definition GraphI.hh:2968
Definition GraphI.hh:3017
std::vector< V_Wall > vec
Definition GraphI.hh:3019
std::string name
Definition GraphI.hh:3018
Definition GraphI.hh:3011
int start_y
Definition GraphI.hh:3013
int start_x
Definition GraphI.hh:3012
int start_z
Definition GraphI.hh:3014
int end_y
Definition GraphI.hh:3013
int end_z
Definition GraphI.hh:3014
int end_x
Definition GraphI.hh:3012
Definition GameApi.h:17
Definition VectorTools.hh:972
Definition GraphI.hh:2847
unsigned int c
Definition GraphI.hh:2850
Vector n
Definition GraphI.hh:2849
Point p
Definition GraphI.hh:2848
float tx3
Definition GraphI.hh:2852
Point2d tx
Definition GraphI.hh:2851
Definition GraphI.hh:2840
int y
Definition GraphI.hh:2840
int z
Definition GraphI.hh:2840
int x
Definition GraphI.hh:2840
Definition GraphI.hh:1145
int sx
Definition GraphI.hh:1147
int sy
Definition GraphI.hh:1147
int x
Definition GraphI.hh:1146
int sz
Definition GraphI.hh:1147
int z
Definition GraphI.hh:1146
int y
Definition GraphI.hh:1146
Definition GameApi.h:89
Definition GraphI.hh:1259
std::vector< int > rate
Definition GraphI.hh:1262
std::vector< int > size
Definition GraphI.hh:1261
std::vector< int > ids
Definition GraphI.hh:1264
std::vector< void * > chunks
Definition GraphI.hh:1263
std::vector< unsigned char * > data
Definition GraphI.hh:1260
Definition GraphI.hh:1447
int index
Definition GraphI.hh:1448
Definition GraphI.hh:1424
std::string script
Definition GraphI.hh:1425
int p
Definition GraphI.hh:1427
Point delta_pos
Definition GraphI.hh:1426
std::map< int, void * > user_data
Definition GraphI.hh:1428
Definition GraphI.hh:4136
void * data
Definition GraphI.hh:4140
int id
Definition GraphI.hh:4137
int num
Definition GraphI.hh:4138
Definition tiny_gltf.h:840
Definition tiny_gltf.h:566
Definition tiny_gltf.h:811
Definition tiny_gltf.h:1058
Definition tiny_gltf.h:966
Definition tiny_gltf.h:637
Definition tiny_gltf.h:1125
Definition tiny_gltf.h:779
Definition tiny_gltf.h:1014
Definition tiny_gltf.h:603
Definition tiny_gltf.h:1093
Definition tiny_gltf.h:582
Definition tiny_gltf.h:680
get_material(i, filename)
Definition view.php:1412
you need to obtain reproduction rights and give meshpage org permission to publish the content in meshpage org While the content is available only to people who gets access to resulting urls
Definition view.php:234
num
Definition view.php:2821