Line data Source code
1 : #ifndef OBJ_H_
2 : #define OBJ_H_
3 :
4 : struct obj final : vertloader<obj>
5 : {
6 : obj(std::string name);
7 :
8 : static const char *formatname();
9 : static bool cananimate();
10 : bool flipy() const override final;
11 : int type() const override final;
12 : bool skeletal() const override final;
13 :
14 : struct objmeshgroup : vertmeshgroup
15 : {
16 : public:
17 : bool load(const char *filename, float smooth) override final;
18 :
19 : private:
20 : static void parsevert(char *s, std::vector<vec> &out);
21 : static void flushmesh(vertmesh &curmesh,
22 : const std::vector<vert> &verts,
23 : const std::vector<tcvert> &tcverts,
24 : const std::vector<tri> &tris,
25 : const std::vector<vec> &attrib,
26 : float smooth);
27 : };
28 :
29 0 : vertmeshgroup *newmeshes() override final
30 : {
31 0 : return new objmeshgroup;
32 : }
33 :
34 : bool loaddefaultparts() override final;
35 :
36 : private:
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 :
|