From 82727cb24d0cc2824bb7a3cd89afd903a50be5fa Mon Sep 17 00:00:00 2001 From: jomo Date: Sun, 22 Nov 2015 03:28:09 +0100 Subject: [PATCH] add back head support --- lib/renders.js | 93 ++++++++++++++++++++++++++------------------------ 1 file changed, 49 insertions(+), 44 deletions(-) diff --git a/lib/renders.js b/lib/renders.js index ca6c8f2..8e6df1c 100644 --- a/lib/renders.js +++ b/lib/renders.js @@ -34,10 +34,10 @@ function flip(src) { var skew_a = 26 / 45; // 0.57777777 var skew_b = skew_a * 2; // 1.15555555 -exp.draw_model = function(rid, img, scale, helm, type, callback) { +exp.draw_model = function(rid, img, scale, helm, is_body, callback) { var canvas = new Canvas(); canvas.width = scale * 20; - canvas.height = scale * 45.1; + canvas.height = scale * (is_body ? 45.1 : 18.5); var ctx = canvas.getContext("2d"); @@ -60,20 +60,6 @@ exp.draw_model = function(rid, img, scale, helm, type, callback) { var right_shoulder = getPart(skin, 44, 16, 4, 4, scale); var left_shoulder = flip(right_shoulder); // TODO - - // pre-render front onto separate canvas - var front = new Canvas(); - front.width = scale * 16; - front.height = scale * 24; - var frontc = front.getContext("2d"); - frontc.patternQuality = "fast"; - - frontc.drawImage(right_arm, (4 - arm_width) * scale, 0 * scale, arm_width * scale, 12 * scale); - frontc.drawImage(left_arm, 12 * scale, 0 * scale, arm_width * scale, 12 * scale); - frontc.drawImage(body, 4 * scale, 0 * scale, 8 * scale, 12 * scale); - frontc.drawImage(right_leg, 4 * scale, 12 * scale, 4 * scale, 12 * scale); - frontc.drawImage(left_leg, 8 * scale, 12 * scale, 4 * scale, 12 * scale); - var x = 0; var y = 0; var z = 0; @@ -81,45 +67,64 @@ exp.draw_model = function(rid, img, scale, helm, type, callback) { var z_offset = scale * 3; var x_offset = scale * 2; - // top + if (is_body) { + // pre-render front onto separate canvas + var front = new Canvas(); + front.width = scale * 16; + front.height = scale * 24; + var frontc = front.getContext("2d"); + frontc.patternQuality = "fast"; + + frontc.drawImage(right_arm, (4 - arm_width) * scale, 0 * scale, arm_width * scale, 12 * scale); + frontc.drawImage(left_arm, 12 * scale, 0 * scale, arm_width * scale, 12 * scale); + frontc.drawImage(body, 4 * scale, 0 * scale, 8 * scale, 12 * scale); + frontc.drawImage(right_leg, 4 * scale, 12 * scale, 4 * scale, 12 * scale); + frontc.drawImage(left_leg, 8 * scale, 12 * scale, 4 * scale, 12 * scale); + + // top + x = x_offset + scale * 2; + y = scale * -4; + z = z_offset + scale * 8; + ctx.setTransform(1, -skew_a, 1, skew_a, 0, 0); + ctx.drawImage(right_shoulder, y - z - 0.5, x + z, right_shoulder.width + 1, right_shoulder.height + 1); + + y = scale * 8; + ctx.drawImage(left_shoulder, y - z, x + z, 4 * scale, 4 * scale + 1); + + // right side + ctx.setTransform(1, skew_a, 0, skew_b, 0, 0); + x = x_offset + scale * 2; + y = 0; + z = z_offset + scale * 20; + ctx.drawImage(right_leg_side, x + y, z - y, right_leg_side.width, right_leg_side.height); + + x = x_offset + scale * 2; + y = scale * -4; + z = z_offset + scale * 8; + ctx.drawImage(right_arm_side, x + y, z - y - 0.5, right_arm_side.width, right_arm_side.height + 1); + + // front + z = z_offset + scale * 12; + y = 0; + ctx.setTransform(1, -skew_a, 0, skew_b, 0, skew_a); + ctx.drawImage(front, y + x, x + z - 0.5, front.width, front.height); + } + + // head top x = x_offset; y = -0.5; z = z_offset; ctx.setTransform(1, -skew_a, 1, skew_a, 0, 0); ctx.drawImage(head_top, y - z, x + z, head_top.width, head_top.height + 1); - x = x_offset + scale * 2; - y = scale * -4; - z = z_offset + scale * 8; - ctx.drawImage(right_shoulder, y - z - 0.5, x + z, right_shoulder.width + 1, right_shoulder.height + 1); - - y = scale * 8; - ctx.drawImage(left_shoulder, y - z, x + z, 4 * scale, 4 * scale + 1); - - // right side - ctx.setTransform(1, skew_a, 0, skew_b, 0, 0); - x = x_offset + scale * 2; - y = 0; - z = z_offset + scale * 20; - ctx.drawImage(right_leg_side, x + y, z - y, right_leg_side.width, right_leg_side.height); - - x = x_offset + scale * 2; - y = scale * -4; - z = z_offset + scale * 8; - ctx.drawImage(right_arm_side, x + y, z - y - 0.5, right_arm_side.width, right_arm_side.height + 1); - - // front - z = z_offset + scale * 12; - y = 0; - ctx.setTransform(1, -skew_a, 0, skew_b, 0, skew_a); - ctx.drawImage(front, y + x, x + z - 0.5, front.width, front.height); - + // head front x = x_offset + 8 * scale; y = 0; z = z_offset - 0.5; + ctx.setTransform(1, -skew_a, 0, skew_b, 0, skew_a); ctx.drawImage(face, y + x, x + z, face.width, face.height); - // right head + // head right x = x_offset; y = 0; z = z_offset;