Merge branch 'master' of github.com:unfa/liblast

remotes/1699310152913738325/tmp_refs/heads/legacy
unfa 2021-05-03 00:55:00 +02:00
commit 04a3662bab
12 changed files with 131 additions and 77 deletions

View File

@ -89,9 +89,8 @@ void fragment() {
vec3 n_out4p0 = n_out15p0 * vec3(n_out5p0);
// Fresnel:2
bool n_in2p2 = true;
float n_in2p3 = 0.50000;
float n_out2p0 = n_in2p2 ? (pow(clamp(dot(NORMAL, VIEW), 0.0, 1.0), n_in2p3)) : (pow(1.0 - clamp(dot(NORMAL, VIEW), 0.0, 1.0), n_in2p3));
float n_out2p0 = pow(clamp(dot(NORMAL, VIEW), 0.0, 1.0), n_in2p3);
// ScalarOp:12
float n_in12p1 = 0.50000;

View File

@ -0,0 +1,4 @@
extends RigidBody
func explode():
queue_free()

View File

@ -0,0 +1,31 @@
[gd_scene load_steps=5 format=2]
[ext_resource path="res://Assets/Weapons/GrenadeLauncher/Grenade.gd" type="Script" id=1]
[sub_resource type="PhysicsMaterial" id=3]
friction = 0.3
bounce = 0.7
[sub_resource type="SphereShape" id=1]
radius = 0.1
[sub_resource type="SphereMesh" id=2]
radius = 0.1
height = 0.2
[node name="Grenade" type="RigidBody"]
physics_material_override = SubResource( 3 )
script = ExtResource( 1 )
[node name="CollisionShape" type="CollisionShape" parent="."]
shape = SubResource( 1 )
[node name="MeshInstance" type="MeshInstance" parent="."]
mesh = SubResource( 2 )
material/0 = null
[node name="Timer" type="Timer" parent="."]
wait_time = 2.0
autostart = true
[connection signal="timeout" from="Timer" to="." method="explode"]

View File

@ -0,0 +1,28 @@
extends "res://Classes/Weapon/Weapon.gd"
var grenade = preload("res://Assets/Weapons/GrenadeLauncher/Grenade.tscn")
func set_trigger_held_primary(active:bool):
trigger_held_primary = active
if active:
shoot(camera)
func shoot(camera):
if is_reloading:
return
if currently_fireing == true:
cached_fire = true
yield($Model/AnimationPlayer, "animation_finished")
rpc("fire_weapon")
sync func fire_weapon():
var grenade_instance = grenade.instance()
var muzzle_transform = $Model/Muzzle.global_transform
grenade_instance.global_transform = muzzle_transform
grenade_instance.linear_velocity = muzzle_transform.basis.y * 40 + player.velocity
get_tree().root.call_deferred("add_child", grenade_instance)

View File

@ -2,12 +2,12 @@
importer="scene"
type="PackedScene"
path="res://.import/GranadeLauncher.gltf-ca56a6672dae21dfb777c46e15746d8e.scn"
path="res://.import/GrenadeLauncher.gltf-097e9ef9a1df3c2d00f87164cabfb0b1.scn"
[deps]
source_file="res://Assets/Weapons/GrenadeLauncher/GranadeLauncher.gltf"
dest_files=[ "res://.import/GranadeLauncher.gltf-ca56a6672dae21dfb777c46e15746d8e.scn" ]
source_file="res://Assets/Weapons/GrenadeLauncher/GrenadeLauncher.gltf"
dest_files=[ "res://.import/GrenadeLauncher.gltf-097e9ef9a1df3c2d00f87164cabfb0b1.scn" ]
[params]
@ -16,6 +16,7 @@ nodes/root_name="Scene Root"
nodes/root_scale=1.0
nodes/custom_script=""
nodes/storage=0
nodes/use_legacy_names=true
materials/location=1
materials/storage=1
materials/keep_on_reimport=true

View File

@ -1,7 +1,7 @@
[gd_scene load_steps=10 format=2]
[ext_resource path="res://Assets/Weapons/GrenadeLauncher/GranadeLauncher.gltf" type="PackedScene" id=1]
[ext_resource path="res://Classes/Weapon/Weapon.gd" type="Script" id=2]
[ext_resource path="res://Assets/Weapons/GrenadeLauncher/GrenadeLauncher.gltf" type="PackedScene" id=1]
[ext_resource path="res://Assets/Weapons/GrenadeLauncher/GrenadeLauncher.gd" type="Script" id=2]
[ext_resource path="res://Classes/Audio/LayeredSoundPlayer.gd" type="Script" id=3]
[ext_resource path="res://Assets/Effects/CircleSoft.svg" type="Texture" id=4]
[ext_resource path="res://Assets/Audio/SFX/Weapons_Empty.wav" type="AudioStream" id=5]
@ -24,9 +24,6 @@ size = Vector2( 0.3, 0.3 )
[node name="Weapon" type="Spatial"]
script = ExtResource( 2 )
Delay = 0.05
Automatic = true
Rounds = 100
[node name="Model" parent="." instance=ExtResource( 1 )]

View File

@ -4,14 +4,10 @@ func set_trigger_held_primary(active:bool):
trigger_held_primary = active
if active:
shoot(camera, true)
shoot(camera)
print("trigger_active", active)
func shoot(camera, primary):
if not Automatic:
if cached_fire == true:
return
func shoot(camera):
if is_reloading:
return
@ -62,3 +58,62 @@ func shoot(camera, primary):
reload()
return current_rounds
sync func fire_weapon(var rounds_left):
show_muzzle_flash(rounds_left)
show_tracer()
spawn_casing()
yield($Model/AnimationPlayer, "animation_finished")
if !cached_fire:
currently_fireing = false
func show_muzzle_flash(var rounds_left):
$Model/AnimationPlayer.stop()
if rounds_left == 1:
$Model/AnimationPlayer.play("Empty", -1, 2)
else:
$Model/AnimationPlayer.play("Shoot", -1, 2)
$Effects/Flash.stop(true)
$Effects/Flash.play("Flash")
$Effects/MuzzleFlash.emitting = true
yield(get_tree().create_timer(0.07),"timeout")
$Effects/MuzzleFlash.emitting = false
$Sounds/Shoot.play()
func show_tracer():
var tracer_instance = tracer.instance()
tracer_instance.hide()
tracer_instance.global_transform = global_transform
tracer_instance.translation = $Model/Muzzle.global_transform.origin
get_tree().root.call_deferred("add_child", tracer_instance)
tracer_instance.call_deferred("show")
func spawn_casing():
#while [ true ]:
#var casing_instance = load("res://Assets/Weapons/Handgun/Casing.tscn").instance()
var casing_instance = casing.instance()
casing_instance.global_transform = ejector.global_transform
casing_instance.rotate_object_local(Vector3.FORWARD, deg2rad(90))
casing_instance.angular_velocity = - ejector.global_transform.basis[2] * rand_range(23, 37)
casing_instance.linear_velocity = ejector.global_transform.basis[0] * rand_range(3.2, 4.5) - ejector.global_transform.basis[2] * rand_range(2.6, 3.7)
get_tree().root.call_deferred("add_child", casing_instance)
remote func compute_bullet_flyby():
var local_player = get_tree().root.get_node("Game").local_player
var transform = find_node("Muzzle").global_transform
var from = global_transform.xform(Vector3())
var to = global_transform.xform(Vector3(-1000, 0, 0))
if local_player:
local_player.on_bullet_flyby(from, to)

View File

@ -42,70 +42,9 @@ func _ready():
func switched_to_weapon():
emit_signal("ammo_changed", self)
sync func fire_weapon(var rounds_left):
show_muzzle_flash(rounds_left)
show_tracer()
spawn_casing()
yield($Model/AnimationPlayer, "animation_finished")
if !cached_fire:
currently_fireing = false
sync func dry_fire():
pass
func show_muzzle_flash(var rounds_left):
$Model/AnimationPlayer.stop()
if rounds_left == 1:
$Model/AnimationPlayer.play("Empty", -1, 2)
else:
$Model/AnimationPlayer.play("Shoot", -1, 2)
$Effects/Flash.stop(true)
$Effects/Flash.play("Flash")
$Effects/MuzzleFlash.emitting = true
yield(get_tree().create_timer(0.07),"timeout")
$Effects/MuzzleFlash.emitting = false
$Sounds/Shoot.play()
func show_tracer():
var tracer_instance = tracer.instance()
tracer_instance.hide()
tracer_instance.global_transform = global_transform
tracer_instance.translation = $Model/Muzzle.global_transform.origin
get_tree().root.call_deferred("add_child", tracer_instance)
tracer_instance.call_deferred("show")
func spawn_casing():
#while [ true ]:
#var casing_instance = load("res://Assets/Weapons/Handgun/Casing.tscn").instance()
var casing_instance = casing.instance()
casing_instance.global_transform = ejector.global_transform
casing_instance.rotate_object_local(Vector3.FORWARD, deg2rad(90))
casing_instance.angular_velocity = - ejector.global_transform.basis[2] * rand_range(23, 37)
casing_instance.linear_velocity = ejector.global_transform.basis[0] * rand_range(3.2, 4.5) - ejector.global_transform.basis[2] * rand_range(2.6, 3.7)
get_tree().root.call_deferred("add_child", casing_instance)
#yield(get_tree().create_timer(1),"timeout")
remote func compute_bullet_flyby():
var local_player = get_tree().root.get_node("Game").local_player
var transform = find_node("Muzzle").global_transform
var from = global_transform.xform(Vector3())
var to = global_transform.xform(Vector3(-1000, 0, 0))
if local_player:
local_player.on_bullet_flyby(from, to)
func reload():
rpc("play_reload_animation")