diff --git a/src/blockly/actions/physics/applyImpulse.ts b/src/blockly/actions/physics/applyImpulse.ts index d020a53..7ae5f50 100644 --- a/src/blockly/actions/physics/applyImpulse.ts +++ b/src/blockly/actions/physics/applyImpulse.ts @@ -15,7 +15,7 @@ Blockly.Blocks['physics_apply_impulse_action'] = { this.setInputsInline(true) this.setPreviousStatement(true, null); this.setNextStatement(true, null); - this.setTooltip('Push me to a position'); + this.setTooltip('Push me in a direction'); this.setColour(150); } }; diff --git a/src/blockly/values/index.ts b/src/blockly/values/index.ts index dd0a919..ca1d111 100644 --- a/src/blockly/values/index.ts +++ b/src/blockly/values/index.ts @@ -7,3 +7,4 @@ export * from './position'; export * from './direction'; export * from './objectById'; export * from './directionToPosition'; +export * from './playerObject'; diff --git a/src/blockly/values/playerObject.ts b/src/blockly/values/playerObject.ts new file mode 100644 index 0000000..548e79f --- /dev/null +++ b/src/blockly/values/playerObject.ts @@ -0,0 +1,19 @@ +import * as Blockly from "blockly"; +import { javascriptGenerator, Order } from "blockly/javascript"; + +Blockly.Blocks['player_object_value'] = { + init(this: Blockly.Block) { + this.appendEndRowInput() + .appendField('Player'); + this.setInputsInline(false) + this.setOutput(true, 'Object'); + this.setTooltip('Returns object that is controlled by player'); + this.setColour(315); + } +}; + +javascriptGenerator.forBlock['player_object_value'] = function (_block, _generator) { + return ['(scene.playerObjectId?scene.objects[scene.playerObjectId]:undefined)', Order.ATOMIC]; +}; + +export { }; diff --git a/src/components/scriptEditor/ScriptEditorView.tsx b/src/components/scriptEditor/ScriptEditorView.tsx index b7a5949..d280f7a 100644 --- a/src/components/scriptEditor/ScriptEditorView.tsx +++ b/src/components/scriptEditor/ScriptEditorView.tsx @@ -36,6 +36,7 @@ const TOOLBOX: Blockly.utils.toolbox.ToolboxDefinition = { { kind: 'block', type: 'dpos_value' }, { kind: 'block', type: 'direction_to_position_value' }, { kind: 'block', type: 'object_by_id_value' }, + { kind: 'block', type: 'player_object_value' }, ], }, {