@@ -144,12 +144,25 @@ Blockly.JavaScript.minecraft = function() {
144144" }\n" +
145145"}\n" +
146146"\n" +
147+ "MCPI.turtleYaw = function(angleDegrees) {\n" +
148+ " MCPI.matrix = mmMultiply(MCPI.matrix, MCPI.yawMatrix(angleDegrees));\n" +
149+ "};\n" +
150+ "\n" +
151+ "MCPI.turtlePitch = function(angleDegrees) {\n" +
152+ " MCPI.matrix = mmMultiply(MCPI.matrix, MCPI.pitchMatrix(angleDegrees));\n" +
153+ "};\n" +
154+ "\n" +
155+ "MCPI.turtleRoll = function(angleDegrees) {\n" +
156+ " MCPI.matrix = mmMultiply(MCPI.matrix, MCPI.rollMatrix(angleDegrees));\n" +
157+ "};\n" +
158+ "\n" +
147159"MCPI.turtleGo = function(distance) {\n" +
148- " var heading = [MCPI.curMatrix[0][2],MCPI.curMatrix[1][2],MCPI.curMatrix[2][2]]\n" +
149- " var newX = MCPI.curX + MCPI.curMatrix[0][2] * distance;\n" +
150- " var newY = MCPI.curY + MCPI.curMatrix[1][2] * distance;\n" +
151- " var newZ = MCPI.curZ + MCPI.curMatrix[2][2] * distance;\n" +
152- " MCPI.drawLine(MCPI.curX,MCPI.curY,MCPI.curZ,newX,newY,newZ);\n" +
160+ " var heading = [MCPI.matrix[0][2],MCPI.matrix[1][2],MCPI.matrix[2][2]]\n" +
161+ " var newX = MCPI.curX + MCPI.matrix[0][2] * distance;\n" +
162+ " var newY = MCPI.curY + MCPI.matrix[1][2] * distance;\n" +
163+ " var newZ = MCPI.curZ + MCPI.matrix[2][2] * distance;\n" +
164+ " if (MCPI.penDown)\n" +
165+ " MCPI.drawLine(MCPI.curX,MCPI.curY,MCPI.curZ,newX,newY,newZ);\n" +
153166" MCPI.curX = newX;\n" +
154167" MCPI.curY = newY;\n" +
155168" MCPI.curZ = newZ;\n" +
@@ -172,9 +185,8 @@ Blockly.JavaScript.minecraft = function() {
172185"\n" +
173186" MCPI.socket.onmessage = function(event) {\n" +
174187" var pitch = parseFloat(event.data.trim());\n" +
175- " MCPI.curMatrix = MCPI.mmMultiply(MCPI.yawMatrix(yaw), MCPI.pitchMatrix(-pitch));\n" +
176- "\n" +
177- " MCPI.turtleGo(20);\n" ;
188+ " MCPI.matrix = MCPI.mmMultiply(MCPI.yawMatrix(yaw), MCPI.pitchMatrix(-pitch));\n" +
189+ "\n" ;
178190 Blockly . JavaScript . cleanups_ [ 'minecraft' ] = "MCPI.socket.close();\n" +
179191"}; // end MCPI.socket.onmessage for player.getRotation()\n" +
180192"MCPI.socket.send(\"player.getPitch()\");\n" +
@@ -199,13 +211,15 @@ Blockly.JavaScript['minecraft_set_block'] = function(block) {
199211} ;
200212
201213Blockly . JavaScript [ 'minecraft_turtle_go' ] = function ( block ) {
214+ Blockly . JavaScript . minecraft ( ) ;
202215 var value_distance = Blockly . JavaScript . valueToCode ( block , 'DISTANCE' , Blockly . JavaScript . ORDER_ATOMIC ) ;
203216 // TODO: Assemble JavaScript into code variable.
204217 var code = 'MCPI.turtleGo(' + value_distance + ');\n' ;
205218 return code ;
206219} ;
207220
208221Blockly . JavaScript [ 'minecraft_turtle_yaw' ] = function ( block ) {
222+ Blockly . JavaScript . minecraft ( ) ;
209223 var dropdown_direction = block . getFieldValue ( 'DIRECTION' ) ;
210224 var angle_angle = block . getFieldValue ( 'ANGLE' ) ;
211225 var value_name = Blockly . JavaScript . valueToCode ( block , 'NAME' , Blockly . JavaScript . ORDER_ATOMIC ) ;
@@ -214,6 +228,7 @@ Blockly.JavaScript['minecraft_turtle_yaw'] = function(block) {
214228} ;
215229
216230Blockly . JavaScript [ 'minecraft_turtle_pitch' ] = function ( block ) {
231+ Blockly . JavaScript . minecraft ( ) ;
217232 var dropdown_direction = block . getFieldValue ( 'DIRECTION' ) ;
218233 var angle_angle = block . getFieldValue ( 'ANGLE' ) ;
219234 var value_name = Blockly . JavaScript . valueToCode ( block , 'NAME' , Blockly . JavaScript . ORDER_ATOMIC ) ;
@@ -222,6 +237,7 @@ Blockly.JavaScript['minecraft_turtle_pitch'] = function(block) {
222237} ;
223238
224239Blockly . JavaScript [ 'minecraft_turtle_roll' ] = function ( block ) {
240+ Blockly . JavaScript . minecraft ( ) ;
225241 var dropdown_direction = block . getFieldValue ( 'DIRECTION' ) ;
226242 var angle_angle = block . getFieldValue ( 'ANGLE' ) ;
227243 var value_name = Blockly . JavaScript . valueToCode ( block , 'NAME' , Blockly . JavaScript . ORDER_ATOMIC ) ;
0 commit comments