From 2515fe7b27ca5f90fcdce508678a1176c8b5ac84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lera=20Elvo=C3=A9?= Date: Fri, 14 Feb 2025 15:17:05 +0300 Subject: [PATCH] add throw signal to player --- data/scripts/classes/player.lua | 9 +++++++++ data/scripts/game.lua | 6 ++++++ data/scripts/types/vector3.lua | 5 +++++ 3 files changed, 20 insertions(+) diff --git a/data/scripts/classes/player.lua b/data/scripts/classes/player.lua index 8388b9c..4f5ef9d 100644 --- a/data/scripts/classes/player.lua +++ b/data/scripts/classes/player.lua @@ -1,5 +1,6 @@ local Vector3 = require("types.vector3") local util = require("util") +local Signal = require("types.signal") local Player = { position = Vector3(0, 1, 0), @@ -10,6 +11,8 @@ local Player = { yaw = 0, yaw_speed = 0.05, + + ThrowPressed = Signal.new(), } function Player:tick(ctx) @@ -18,6 +21,8 @@ function Player:tick(ctx) input_action{name = "forward", control = "W"} input_action{name = "back", control = "S"} + input_action{name = "throw", control = "SPACE"} + local camera_forward = Vector3(draw_camera_from_principal_axes(self).direction) camera_forward.y = 0 camera_forward = camera_forward:normalized() @@ -29,6 +34,10 @@ function Player:tick(ctx) local direction = ((camera_forward * forward_input) + (camera_right * strafe_input)):normalized() self.velocity = direction * self.speed + if input_action_just_pressed{name = "throw"} then + self.ThrowPressed:emit(self.position:copy(), camera_forward:copy()) + end + if ctx.mouse_capture then self.yaw = self.yaw + self.mouse_sensitivity * ctx.mouse_movement.x end diff --git a/data/scripts/game.lua b/data/scripts/game.lua index 6590aa4..c1447e7 100644 --- a/data/scripts/game.lua +++ b/data/scripts/game.lua @@ -1,6 +1,7 @@ local player = require "classes.player" local util = require "util" local Vector3 = require "types.vector3" +local Signal = require("types.signal") -- called every frame, with constant delta time function game_tick() @@ -10,6 +11,11 @@ function game_tick() ctx.udata = { capture = false } + player.ThrowPressed:connect( + function (position, direction) + print(position, " ", direction) + end + ) end ctx.mouse_capture = ctx.udata.capture diff --git a/data/scripts/types/vector3.lua b/data/scripts/types/vector3.lua index 46af0ab..62e712a 100644 --- a/data/scripts/types/vector3.lua +++ b/data/scripts/types/vector3.lua @@ -211,6 +211,11 @@ function Vector3:rotated(axis, angle) return Vector3(v) end +---Returns a copy of this vector. +---@return Vector3 +function Vector3:copy() + return Vector3(self) +end ---- CONSTANTS Vector3.UP = Vector3(0, 1, 0)