Line data Source code
1 : #ifndef OBJ_H_
2 : #define OBJ_H_
3 :
4 : struct obj;
5 :
6 : struct obj final : vertloader<obj>
7 : {
8 : obj(std::string name);
9 :
10 : static const char *formatname();
11 : static bool cananimate();
12 : bool flipy() const override final;
13 : int type() const override final;
14 : bool skeletal() const override final;
15 :
16 : struct objmeshgroup : vertmeshgroup
17 : {
18 : public:
19 : bool load(const char *filename, float smooth) override final;
20 :
21 : private:
22 : static void parsevert(char *s, std::vector<vec> &out);
23 : static void flushmesh(vertmesh &curmesh,
24 : const std::vector<vert> &verts,
25 : const std::vector<tcvert> &tcverts,
26 : const std::vector<tri> &tris,
27 : const std::vector<vec> &attrib,
28 : float smooth);
29 : };
30 :
31 0 : vertmeshgroup *newmeshes() override final
32 : {
33 0 : return new objmeshgroup;
34 : }
35 :
36 : bool loaddefaultparts() override final;
37 : /* note about objcommands variable:
38 : *
39 : * this variable is never used anywhere at all in the codebase
40 : * it only exists to call its constructor which adds commands to the cubescript
41 : * ident hash table of the given template type (obj)
42 : */
43 : static vertcommands<obj> objcommands;
44 : };
45 :
46 : #endif
47 :
|