summaryrefslogtreecommitdiff
path: root/games/minimal/mods/default/textures/default_mossycobble.png
diff options
context:
space:
mode:
authorsfan5 <sfan5@live.de>2019-09-22 22:12:21 +0200
committerGitHub <noreply@github.com>2019-09-22 22:12:21 +0200
commit70f9e1aafa6cd7a2b2d204609cab6cc26539cdb9 (patch)
tree7ae4b3532d6f7aee52b3c2c16628fe82c88775fa /games/minimal/mods/default/textures/default_mossycobble.png
parentfec30e37ac1d160a942777b05a7717b5395c4d99 (diff)
downloadminetest-70f9e1aafa6cd7a2b2d204609cab6cc26539cdb9.tar.gz
minetest-70f9e1aafa6cd7a2b2d204609cab6cc26539cdb9.tar.bz2
minetest-70f9e1aafa6cd7a2b2d204609cab6cc26539cdb9.zip
Punchwear (improved) (#8959)
Diffstat (limited to 'games/minimal/mods/default/textures/default_mossycobble.png')
0 files changed, 0 insertions, 0 deletions
l ppc">#include "tileanimation.h" #include "util/serialize.h" void TileAnimationParams::serialize(std::ostream &os, u16 protocol_version) const { writeU8(os, type); if (type == TAT_VERTICAL_FRAMES) { writeU16(os, vertical_frames.aspect_w); writeU16(os, vertical_frames.aspect_h); writeF32(os, vertical_frames.length); } else if (type == TAT_SHEET_2D) { writeU8(os, sheet_2d.frames_w); writeU8(os, sheet_2d.frames_h); writeF32(os, sheet_2d.frame_length); } } void TileAnimationParams::deSerialize(std::istream &is, u16 protocol_version) { type = (TileAnimationType) readU8(is); if (type == TAT_VERTICAL_FRAMES) { vertical_frames.aspect_w = readU16(is); vertical_frames.aspect_h = readU16(is); vertical_frames.length = readF32(is); } else if (type == TAT_SHEET_2D) { sheet_2d.frames_w = readU8(is); sheet_2d.frames_h = readU8(is); sheet_2d.frame_length = readF32(is); } } void TileAnimationParams::determineParams(v2u32 texture_size, int *frame_count, int *frame_length_ms, v2u32 *frame_size) const { if (type == TAT_VERTICAL_FRAMES) { int frame_height = (float)texture_size.X / (float)vertical_frames.aspect_w * (float)vertical_frames.aspect_h; int _frame_count = texture_size.Y / frame_height; if (frame_count) *frame_count = _frame_count; if (frame_length_ms) *frame_length_ms = 1000.0 * vertical_frames.length / _frame_count; if (frame_size) *frame_size = v2u32(texture_size.X, frame_height); } else if (type == TAT_SHEET_2D) { if (frame_count) *frame_count = sheet_2d.frames_w * sheet_2d.frames_h; if (frame_length_ms) *frame_length_ms = 1000 * sheet_2d.frame_length; if (frame_size) *frame_size = v2u32(texture_size.X / sheet_2d.frames_w, texture_size.Y / sheet_2d.frames_h); } // caller should check for TAT_NONE } void TileAnimationParams::getTextureModifer(std::ostream &os, v2u32 texture_size, int frame) const { if (type == TAT_NONE) return; if (type == TAT_VERTICAL_FRAMES) { int frame_count; determineParams(texture_size, &frame_count, NULL, NULL); os << "^[verticalframe:" << frame_count << ":" << frame; } else if (type == TAT_SHEET_2D) { int q, r; q = frame / sheet_2d.frames_w; r = frame % sheet_2d.frames_w; os << "^[sheet:" << sheet_2d.frames_w << "x" << sheet_2d.frames_h << ":" << r << "," << q; } } v2f TileAnimationParams::getTextureCoords(v2u32 texture_size, int frame) const { v2u32 ret(0, 0); if (type == TAT_VERTICAL_FRAMES) { int frame_height = (float)texture_size.X / (float)vertical_frames.aspect_w * (float)vertical_frames.aspect_h; ret = v2u32(0, frame_height * frame); } else if (type == TAT_SHEET_2D) { v2u32 frame_size; determineParams(texture_size, NULL, NULL, &frame_size); int q, r; q = frame / sheet_2d.frames_w; r = frame % sheet_2d.frames_w; ret = v2u32(r * frame_size.X, q * frame_size.Y); } return v2f(ret.X / (float) texture_size.X, ret.Y / (float) texture_size.Y); }