Cleanup in content_mapblock (#5746)
[oweals/minetest.git] / src / tileanimation.h
index d5172ed50f292ae9b83053bcf5921a87c9a50852..9872e79172ac6f72175e874c3c5eb31eaafbc3ba 100644 (file)
@@ -20,30 +20,43 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #ifndef TILEANIMATION_HEADER
 #define TILEANIMATION_HEADER
 
-#include "irrlichttypes_bloated.h"
 #include <iostream>
+#include "irrlichttypes_bloated.h"
 
-enum TileAnimationType {
+enum TileAnimationType
+{
        TAT_NONE = 0,
        TAT_VERTICAL_FRAMES = 1,
+       TAT_SHEET_2D = 2,
 };
 
-struct TileAnimationParams {
+struct TileAnimationParams
+{
        enum TileAnimationType type;
-       union {
+       union
+       {
                // struct {
                // } none;
-               struct {
+               struct
+               {
                        int aspect_w; // width for aspect ratio
                        int aspect_h; // height for aspect ratio
                        float length; // seconds
                } vertical_frames;
+               struct
+               {
+                       int frames_w;       // number of frames left-to-right
+                       int frames_h;       // number of frames top-to-bottom
+                       float frame_length; // seconds
+               } sheet_2d;
        };
 
        void serialize(std::ostream &os, u16 protocol_version) const;
        void deSerialize(std::istream &is, u16 protocol_version);
-       void determineParams(v2u32 texture_size, int *frame_count, int *frame_length_ms) const;
+       void determineParams(v2u32 texture_size, int *frame_count, int *frame_length_ms,
+                       v2u32 *frame_size) const;
        void getTextureModifer(std::ostream &os, v2u32 texture_size, int frame) const;
+       v2f getTextureCoords(v2u32 texture_size, int frame) const;
 };
 
 #endif