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 : void parsevert(char *s, std::vector<vec> &out); 23 : 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 :