scene changers now work with playlist
This commit is contained in:
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@@ -1,3 +1,3 @@
|
||||
{
|
||||
"godotTools.editorPath.godot4": "c:\\Program Files\\Godot_v4.2.2-stable_win64.exe\\Godot_v4.2.2-stable_win64.exe"
|
||||
"godotTools.editorPath.godot4": "c:\\Program Files\\Godot\\Godot_v4.4-stable_win64.exe\\Godot_v4.4-stable_win64.exe"
|
||||
}
|
||||
@@ -66,7 +66,6 @@ layout_mode = 1
|
||||
hub_world = ExtResource("4_3fnrj")
|
||||
maps_in_rotation = Array[ExtResource("4_p7b2e")]([ExtResource("5_rnncn"), ExtResource("6_3fnrj"), ExtResource("7_m04lp"), ExtResource("8_1thib")])
|
||||
gamemodes_in_rotation = Array[ExtResource("4_p0ng4")]([ExtResource("5_lv7ko")])
|
||||
levels_per_round = 4
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="."]
|
||||
layout_mode = 1
|
||||
|
||||
@@ -1,16 +1,18 @@
|
||||
[gd_scene load_steps=18 format=3 uid="uid://otkecr0hcyon"]
|
||||
[gd_scene load_steps=20 format=3 uid="uid://otkecr0hcyon"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bj1y0fbjtul4a" path="res://post_processing.tscn" id="1_48lr2"]
|
||||
[ext_resource type="PackedScene" uid="uid://drwae3loscbw7" path="res://assets/player.tscn" id="1_ibypk"]
|
||||
[ext_resource type="Script" uid="uid://bkii8jwf0k7tq" path="res://scripts/LevelManager.gd" id="1_v17bv"]
|
||||
[ext_resource type="PackedScene" uid="uid://dgvmwyhj43bol" path="res://levels/LevelModels/Hub1.blend" id="2_ibypk"]
|
||||
[ext_resource type="Resource" uid="uid://bxcxqt7rmfvdw" path="res://GameModes/hubworld.tres" id="2_pxx7p"]
|
||||
[ext_resource type="Script" uid="uid://clph3byphno03" path="res://scripts/playlist_loader.gd" id="3_3c1m5"]
|
||||
[ext_resource type="PackedScene" uid="uid://c1xw80jkg3reb" path="res://assets/target_1.tscn" id="6_sibpp"]
|
||||
[ext_resource type="PackedScene" uid="uid://b0y5rqfeh1hb1" path="res://assets/chair_1.tscn" id="7_rgl24"]
|
||||
[ext_resource type="PackedScene" uid="uid://c0uv33kbndbvy" path="res://assets/trashcan.tscn" id="8_7e18o"]
|
||||
[ext_resource type="PackedScene" uid="uid://dyu46bns8mesv" path="res://assets/mac10_pickup.tscn" id="9_7e18o"]
|
||||
[ext_resource type="PackedScene" uid="uid://dugcxo2665me0" path="res://assets/revolver1_pickup.tscn" id="10_20m5p"]
|
||||
[ext_resource type="PackedScene" uid="uid://dgapcuvg0gtmm" path="res://assets/scene_changer.tscn" id="11_titu4"]
|
||||
[ext_resource type="PackedScene" uid="uid://eujx0yilqqcp" path="res://assets/level_sign.tscn" id="13_ng05k"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_48lr2"]
|
||||
sky_horizon_color = Color(0.662243, 0.671743, 0.686743, 1)
|
||||
@@ -104,6 +106,12 @@ script = ExtResource("1_v17bv")
|
||||
map_name = "Hub 1"
|
||||
gamemode = ExtResource("2_pxx7p")
|
||||
|
||||
[node name="LEVEL UTILS" type="Node" parent="."]
|
||||
|
||||
[node name="PlaylistLoader" type="Node" parent="LEVEL UTILS" node_paths=PackedStringArray("portal_parent")]
|
||||
script = ExtResource("3_3c1m5")
|
||||
portal_parent = NodePath("../../Tubes")
|
||||
|
||||
[node name="Player" parent="." instance=ExtResource("1_ibypk")]
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
@@ -241,3 +249,60 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -19.6736, 6.57787, -17.6494)
|
||||
|
||||
[node name="Scene Changer" parent="Tubes" instance=ExtResource("11_titu4")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.07024, -64.2195, -11.6417)
|
||||
|
||||
[node name="Level Sign" parent="Tubes/Scene Changer" instance=ExtResource("13_ng05k")]
|
||||
transform = Transform3D(-0.00479963, 0, 0.999989, 0, 1, 0, -0.999989, 0, -0.00479963, -2.91949, 65.7011, -0.162403)
|
||||
|
||||
[node name="Scene Changer2" parent="Tubes" instance=ExtResource("11_titu4")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.07024, -64.2195, -19.1273)
|
||||
|
||||
[node name="Level Sign" parent="Tubes/Scene Changer2" instance=ExtResource("13_ng05k")]
|
||||
transform = Transform3D(-0.00479963, 0, 0.999989, 0, 1, 0, -0.999989, 0, -0.00479963, -2.91949, 65.7011, -0.162403)
|
||||
|
||||
[node name="Scene Changer3" parent="Tubes" instance=ExtResource("11_titu4")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.07024, -64.2195, -27.1599)
|
||||
|
||||
[node name="Level Sign" parent="Tubes/Scene Changer3" instance=ExtResource("13_ng05k")]
|
||||
transform = Transform3D(-0.00479963, 0, 0.999989, 0, 1, 0, -0.999989, 0, -0.00479963, -2.91949, 65.7011, -0.162403)
|
||||
|
||||
[node name="Scene Changer4" parent="Tubes" instance=ExtResource("11_titu4")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.07024, -64.2195, -34.7607)
|
||||
|
||||
[node name="Level Sign" parent="Tubes/Scene Changer4" instance=ExtResource("13_ng05k")]
|
||||
transform = Transform3D(-0.00479963, 0, 0.999989, 0, 1, 0, -0.999989, 0, -0.00479963, -2.91949, 65.7011, -0.162403)
|
||||
|
||||
[node name="Scene Changer5" parent="Tubes" instance=ExtResource("11_titu4")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.07024, -64.2195, -42.1311)
|
||||
|
||||
[node name="Level Sign" parent="Tubes/Scene Changer5" instance=ExtResource("13_ng05k")]
|
||||
transform = Transform3D(-0.00479963, 0, 0.999989, 0, 1, 0, -0.999989, 0, -0.00479963, -2.91949, 65.7011, -0.162403)
|
||||
|
||||
[node name="Scene Changer6" parent="Tubes" instance=ExtResource("11_titu4")]
|
||||
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.17812, -64.2195, -42.2864)
|
||||
|
||||
[node name="Level Sign" parent="Tubes/Scene Changer6" instance=ExtResource("13_ng05k")]
|
||||
transform = Transform3D(-0.00479963, 0, 0.999989, 0, 1, 0, -0.999989, 0, -0.00479963, -2.91949, 65.7011, -0.162403)
|
||||
|
||||
[node name="Scene Changer7" parent="Tubes" instance=ExtResource("11_titu4")]
|
||||
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.21706, -64.2195, -34.8009)
|
||||
|
||||
[node name="Level Sign" parent="Tubes/Scene Changer7" instance=ExtResource("13_ng05k")]
|
||||
transform = Transform3D(-0.00479963, 0, 0.999989, 0, 1, 0, -0.999989, 0, -0.00479963, -2.91949, 65.7011, -0.162403)
|
||||
|
||||
[node name="Scene Changer8" parent="Tubes" instance=ExtResource("11_titu4")]
|
||||
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.25883, -64.2195, -26.7684)
|
||||
|
||||
[node name="Level Sign" parent="Tubes/Scene Changer8" instance=ExtResource("13_ng05k")]
|
||||
transform = Transform3D(-0.00479963, 0, 0.999989, 0, 1, 0, -0.999989, 0, -0.00479963, -2.91949, 65.7011, -0.162403)
|
||||
|
||||
[node name="Scene Changer9" parent="Tubes" instance=ExtResource("11_titu4")]
|
||||
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.29837, -64.2195, -19.1677)
|
||||
|
||||
[node name="Level Sign" parent="Tubes/Scene Changer9" instance=ExtResource("13_ng05k")]
|
||||
transform = Transform3D(-0.00479963, 0, 0.999989, 0, 1, 0, -0.999989, 0, -0.00479963, -2.91949, 65.7011, -0.162403)
|
||||
|
||||
[node name="Scene Changer10" parent="Tubes" instance=ExtResource("11_titu4")]
|
||||
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.3367, -64.2195, -11.7974)
|
||||
|
||||
[node name="Level Sign" parent="Tubes/Scene Changer10" instance=ExtResource("13_ng05k")]
|
||||
transform = Transform3D(-0.00479963, 0, 0.999989, 0, 1, 0, -0.999989, 0, -0.00479963, -2.91949, 65.7011, -0.162403)
|
||||
|
||||
@@ -127,7 +127,7 @@ _data = {
|
||||
}
|
||||
|
||||
[node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("weapon_holder") groups=["persist", "player"]]
|
||||
transform = Transform3D(1, 0.000164476, 0.000583754, -0.000165075, 0.999999, 0.00104027, -0.000583585, -0.00104036, 0.999999, 0, 1.11359, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0)
|
||||
collision_layer = 6
|
||||
collision_mask = 523
|
||||
script = ExtResource("1_x7wms")
|
||||
|
||||
@@ -18,7 +18,7 @@ fire_mode = 0
|
||||
fov_zoom_amt = 0.98
|
||||
crosshair_radius = 50
|
||||
ads = false
|
||||
recoil_amount = Vector3(0.025, 0.05, 0.05)
|
||||
recoil_amount = Vector3(0.05, 0.05, 0.05)
|
||||
crosshair_jump_amount = 10
|
||||
kick_amount = 0.1
|
||||
max_ammo = 20
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=24 format=3 uid="uid://jdwpc622vmok"]
|
||||
[gd_scene load_steps=22 format=3 uid="uid://jdwpc622vmok"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bkii8jwf0k7tq" path="res://scripts/LevelManager.gd" id="1_1bnbi"]
|
||||
[ext_resource type="Resource" uid="uid://bxcxqt7rmfvdw" path="res://GameModes/hubworld.tres" id="2_62iy8"]
|
||||
@@ -9,8 +9,6 @@
|
||||
[ext_resource type="PackedScene" uid="uid://drwae3loscbw7" path="res://assets/player.tscn" id="4_04o4y"]
|
||||
[ext_resource type="PackedScene" uid="uid://dgapcuvg0gtmm" path="res://assets/scene_changer.tscn" id="5_alya6"]
|
||||
[ext_resource type="PackedScene" uid="uid://bessq6hl7qsh8" path="res://assets/stats.tscn" id="6_mkn70"]
|
||||
[ext_resource type="Resource" uid="uid://bs8yvpq65yh3w" path="res://GameModes/cookie_mode.tres" id="6_pf4wj"]
|
||||
[ext_resource type="Resource" uid="uid://dn3t7wcoumlm3" path="res://GameModes/standard.tres" id="6_t16kj"]
|
||||
[ext_resource type="PackedScene" uid="uid://bj1y0fbjtul4a" path="res://post_processing.tscn" id="7_2h1ea"]
|
||||
[ext_resource type="PackedScene" uid="uid://bvjrsc86n2ak0" path="res://assets/deposit_money.tscn" id="8_n0nhe"]
|
||||
[ext_resource type="PackedScene" uid="uid://c6bpysq1tjhy4" path="res://vendingmahcine.tscn" id="9_nu6q5"]
|
||||
@@ -36,10 +34,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0169516, 0.0284452, -0.008
|
||||
[node name="LEVEL UTILS" type="Node" parent="."]
|
||||
|
||||
[node name="Playlist Generator" parent="LEVEL UTILS" instance=ExtResource("3_udqcb")]
|
||||
checksum_test = null
|
||||
load_playlist_from_file = null
|
||||
chest_drops = null
|
||||
chests_per_match = null
|
||||
chest_drops = Array[Resource]([])
|
||||
|
||||
[node name="PlaylistLoader" type="Node" parent="LEVEL UTILS"]
|
||||
script = ExtResource("3_2u2e7")
|
||||
@@ -182,28 +177,15 @@ transform = Transform3D(1, 0.000164476, 0.000583754, -0.000165075, 0.999999, 0.0
|
||||
|
||||
[node name="EnemyWorkingScene" parent="." instance=ExtResource("5_alya6")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.3745, -57.3609, -4.76346)
|
||||
scene_path = "res://scenes/enemy_working_scene.tscn"
|
||||
scene_name = "Enemy Working Scene"
|
||||
level_gamemode = ExtResource("6_t16kj")
|
||||
hub_portal = true
|
||||
|
||||
[node name="Blockout2" parent="." instance=ExtResource("5_alya6")]
|
||||
transform = Transform3D(0.00439817, 0, 0.99999, 0, 1, 0, -0.99999, 0, 0.00439817, -18.9232, -57.3609, -0.308022)
|
||||
hub_portal = true
|
||||
|
||||
[node name="Gulag of Money" parent="." instance=ExtResource("5_alya6")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.869051, -57.3609, 22.9677)
|
||||
scene_path = "res://scenes/Arena of Money.tscn"
|
||||
scene_name = "The Gulag"
|
||||
level_gamemode = ExtResource("6_pf4wj")
|
||||
hub_portal = true
|
||||
|
||||
[node name="TestLevel2v2" parent="." instance=ExtResource("5_alya6")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.379696, -57.3609, -23.5075)
|
||||
scene_path = "res://scenes/test_level_2v2.tscn"
|
||||
scene_name = "Test Level 2v2"
|
||||
level_gamemode = ExtResource("6_t16kj")
|
||||
hub_portal = true
|
||||
|
||||
[node name="Stats" parent="." instance=ExtResource("6_mkn70")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.212402, 1.9891, -6.02898)
|
||||
@@ -222,21 +204,17 @@ item_name = "ammo"
|
||||
item_price = 25
|
||||
number_uses = 15
|
||||
|
||||
[node name="Level Sign" parent="." node_paths=PackedStringArray("portal_node") instance=ExtResource("11_p3sg0")]
|
||||
[node name="Level Sign" parent="." instance=ExtResource("11_p3sg0")]
|
||||
transform = Transform3D(0.738985, 0, -0.673722, 0, 1, 0, 0.673722, 0, 0.738985, 7.37127, 1.19867, -9.17978)
|
||||
portal_node = NodePath("../EnemyWorkingScene")
|
||||
|
||||
[node name="Level Sign4" parent="." node_paths=PackedStringArray("portal_node") instance=ExtResource("11_p3sg0")]
|
||||
[node name="Level Sign4" parent="." instance=ExtResource("11_p3sg0")]
|
||||
transform = Transform3D(0.744626, 0, 0.667482, 0, 1, 0, -0.667482, 0, 0.744626, -2.45327, 1.19867, -9.41885)
|
||||
portal_node = NodePath("../TestLevel2v2")
|
||||
|
||||
[node name="Level Sign2" parent="." node_paths=PackedStringArray("portal_node") instance=ExtResource("11_p3sg0")]
|
||||
[node name="Level Sign2" parent="." instance=ExtResource("11_p3sg0")]
|
||||
transform = Transform3D(-0.529904, 0, 0.848057, 0, 1, 0, -0.848057, 0, -0.529904, -7.68211, 1.19868, 2.00196)
|
||||
portal_node = NodePath("../Blockout2")
|
||||
|
||||
[node name="Level Sign3" parent="." node_paths=PackedStringArray("portal_node") instance=ExtResource("11_p3sg0")]
|
||||
[node name="Level Sign3" parent="." instance=ExtResource("11_p3sg0")]
|
||||
transform = Transform3D(-0.899916, 0, -0.436063, 0, 1, 0, 0.436063, 0, -0.899916, 2.88079, 1.19868, 10.7051)
|
||||
portal_node = NodePath("../Gulag of Money")
|
||||
|
||||
[node name="HealthDispenser" parent="." instance=ExtResource("13_h5xga")]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 7.99763, 1.77484, -1.41809)
|
||||
|
||||
@@ -1,16 +1,18 @@
|
||||
extends Node3D
|
||||
|
||||
@export var portal_node : Node
|
||||
@onready var portal_node = get_parent()
|
||||
|
||||
@onready var level_name: Label3D = $"Level Name"
|
||||
@onready var gamemode_label: Label3D = $Gamemode
|
||||
@onready var active: Label3D = $Active
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
|
||||
if portal_node.active:
|
||||
level_name.text = portal_node.scene_name
|
||||
if portal_node.level_gamemode != null:
|
||||
gamemode_label.text = portal_node.level_gamemode.gamemode_name
|
||||
level_name.text = portal_node.level_info["level_name"]
|
||||
if portal_node.level_info["gamemode_path"] != null:
|
||||
gamemode_label.text = load(portal_node.level_info["gamemode_path"]).gamemode_name
|
||||
active.text = str("active: ",portal_node.active)
|
||||
else:
|
||||
level_name.text = "closed for maintenance"
|
||||
|
||||
@@ -6,7 +6,7 @@ extends Node
|
||||
@export var maps_in_rotation : Array[level_resource] = []
|
||||
@export var gamemodes_in_rotation : Array[gamemode]= []
|
||||
@export var chest_drops : Array[Resource]
|
||||
@export var levels_per_round : int = 5
|
||||
@export var levels_per_round : int = 10
|
||||
@export var rounds_per_match : int = 3
|
||||
@export var chests_per_match : int = 100
|
||||
@export var matches_per_year : int = 52
|
||||
@@ -46,7 +46,7 @@ func generate_playlist() -> void:
|
||||
|
||||
var numbers = []
|
||||
for i in range(chests_per_match):
|
||||
numbers.append(i+1)
|
||||
numbers.append(i)
|
||||
|
||||
numbers.shuffle()
|
||||
|
||||
|
||||
@@ -1,20 +1,21 @@
|
||||
extends Node
|
||||
|
||||
@export var portal_parent : Node3D
|
||||
|
||||
@onready var playlist_generator: Control = $"../Playlist Generator"
|
||||
@onready var current_match = GameGlobals.playlist[GameGlobals.current_match_id]
|
||||
@onready var current_round = current_match[GameGlobals.current_round_id]["round"]
|
||||
|
||||
var portals = []
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
if GameGlobals.current_match[GameGlobals.current_round_id] == [] or GameGlobals.current_match[GameGlobals.current_round_id] == null:
|
||||
playlist_generator.load_playlist()
|
||||
|
||||
print("CURRENT MATCH : ",GameGlobals.current_match)
|
||||
for i in get_tree().current_scene.get_children():
|
||||
if i.is_in_group("portal"):
|
||||
for i in portal_parent.get_children():
|
||||
if i is Portal:
|
||||
portals.append(i)
|
||||
|
||||
if GameGlobals.current_match[GameGlobals.current_round_id].size() == 0:
|
||||
|
||||
if GameGlobals.playlist[0][GameGlobals.current_round_id].size() == 0:
|
||||
var next_round = GameGlobals.current_round_id + 1
|
||||
if next_round <= (GameGlobals.current_match.size() - 1):
|
||||
GameGlobals.current_round_id = next_round
|
||||
@@ -22,19 +23,10 @@ func _ready() -> void:
|
||||
|
||||
var id = 0
|
||||
for i in portals:
|
||||
if id <= (GameGlobals.current_match[GameGlobals.current_round_id].size() - 1):
|
||||
if GameGlobals.current_match[GameGlobals.current_round_id][id] != null:
|
||||
var level_spawn = GameGlobals.current_match[GameGlobals.current_round_id][id]
|
||||
i.index = id
|
||||
i.active = true
|
||||
i.scene_path = str(level_spawn["level_path"])
|
||||
i.scene_name = str(level_spawn["level_name"])
|
||||
i.level_gamemode = load(level_spawn["gamemode_path"])
|
||||
if id <= (current_round.size() - 1):
|
||||
var level_spawn = current_round[id]
|
||||
i.level_info = level_spawn
|
||||
else:
|
||||
i.active = false
|
||||
i.scene_name = "closed"
|
||||
else:
|
||||
i.active = false
|
||||
i.scene_name = "closed"
|
||||
id += 1
|
||||
SaveLoad.save_user_data()
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
extends Area3D
|
||||
class_name Portal
|
||||
|
||||
@export var scene_path : String
|
||||
@export var scene_name : String
|
||||
@export var level_gamemode : gamemode
|
||||
@export var scene_thumbnail : Texture2D
|
||||
@export var hub_portal : bool = false
|
||||
const ENEMY_WORKING_SCENE_ASYNCTEST = preload("res://scenes/enemy_working_scene_ASYNCTEST.tscn")
|
||||
var level_info = {}
|
||||
|
||||
|
||||
var timer_active = false
|
||||
var active = true
|
||||
var index : int
|
||||
@@ -25,16 +22,10 @@ func _on_body_entered(body: Node3D) -> void:
|
||||
if body.is_in_group("player"):
|
||||
if active and timer_active:
|
||||
active = false
|
||||
var scene = load(level_info["level_path"]).instantiate()
|
||||
|
||||
var scene = ENEMY_WORKING_SCENE_ASYNCTEST.instantiate()
|
||||
get_tree().current_scene.add_child(scene)
|
||||
scene.global_position = global_position
|
||||
#Set incoming gamemode
|
||||
GameGlobals.loading_gamemode = level_gamemode
|
||||
#Save data
|
||||
if get_tree().current_scene.gamemode.load_save == true:
|
||||
SaveLoad.save_game_data(get_tree().current_scene.get_name())
|
||||
SaveLoad.save_user_data()
|
||||
|
||||
|
||||
func _on_start_activation_timeout() -> void:
|
||||
|
||||
@@ -38,3 +38,5 @@ class_name weapon_resource
|
||||
@export var tracker_asset : Resource
|
||||
@export_group("Hitscan Settings")
|
||||
@export var hitscan_range : float = 100 ##for hitscan and melee weapons
|
||||
|
||||
var calculated_rigidbody_spawn_velocity = {}
|
||||
|
||||
Reference in New Issue
Block a user