actual initial commit lmao
This commit is contained in:
69
entities/grabject.gd
Normal file
69
entities/grabject.gd
Normal file
@@ -0,0 +1,69 @@
|
||||
extends RigidBody3D
|
||||
|
||||
var grabject : bool = true
|
||||
var low_height : bool = false
|
||||
|
||||
@export var model : String = "mug"
|
||||
@export var impact_loud : bool = false
|
||||
@export var impact_lethal : bool = false
|
||||
@export var impact_annoyonly : bool = false
|
||||
@export var impact_sound : String = "genericimpact"
|
||||
@export var prompt : String = "Grab mug"
|
||||
@export var icon : String = "hand"
|
||||
var icon_offset : float = 0.0
|
||||
var collided_this_frame : bool = false
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
if model == "mug" or "mug_full":
|
||||
$mesh_mugge.visible = true
|
||||
$shape_mugge.disabled = false
|
||||
$shape_mugge_secondary.disabled = false
|
||||
icon_offset = $shape_mugge.shape.height / 2
|
||||
if model == "mug_full":
|
||||
$mesh_mugge/coffee.visible = true
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(_delta: float) -> void:
|
||||
pass
|
||||
|
||||
func _physics_process(_delta: float) -> void:
|
||||
if linear_velocity.length() < 0.025:
|
||||
$SleepTimer.start(2)
|
||||
|
||||
func sleep():
|
||||
freeze = true
|
||||
|
||||
func hold(delay):
|
||||
freeze = true
|
||||
$DelayTimer.start(delay)
|
||||
|
||||
func hold2():
|
||||
set_collision_layer_value(1, false)
|
||||
if model == "mug" or model == "mug_full":
|
||||
$mesh_mugge.visible = false
|
||||
if model == "mug_full":
|
||||
mug_spill(global_transform.origin)
|
||||
global_transform.origin.y += 500
|
||||
|
||||
func unhold(spawnlocation):
|
||||
global_transform.origin = spawnlocation
|
||||
freeze = false
|
||||
if model == "mug" or model == "mug_full":
|
||||
$mesh_mugge.visible = true
|
||||
|
||||
func throw(spawnlocation, direction, force):
|
||||
unhold(spawnlocation)
|
||||
apply_central_impulse(direction * force)
|
||||
|
||||
func handle_collision(_hush):
|
||||
var colliders = get_colliding_bodies()
|
||||
for body in colliders:
|
||||
print(body.get_name())
|
||||
if !collided_this_frame and body.get("npc"):
|
||||
body.impact()
|
||||
|
||||
func mug_spill(_location):
|
||||
$mesh_mugge/coffee.visible = false
|
||||
model = "mug"
|
||||
prompt = "Grab mug"
|
||||
Reference in New Issue
Block a user