[4.0] Sync with 3.2 (#39)

This commit is contained in:
Rafał Mikrut 2021-04-04 12:52:42 +02:00 committed by GitHub
parent 86e0a6c326
commit 3cde738314
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 398 additions and 1973 deletions

3
.gitignore vendored
View File

@ -8,6 +8,7 @@ logs/
TEMP/
#export_presets.cfg
logs/
.godot/
.import/
#.godot/
.godot/imported/
.godot/editor

File diff suppressed because one or more lines are too long

View File

@ -1,660 +0,0 @@
[gd_scene load_steps=37 format=2]
[ext_resource path="res://icon.png" type="Texture2D" id=50]
[sub_resource type="StandardMaterial3D" id=1]
[sub_resource type="SpriteFrames" id=2]
animations = [ {
"frames": [ ExtResource( 50 ), ExtResource( 50 ), ExtResource( 50 ) ],
"loop": true,
"name": @"default",
"speed": 5.0
} ]
[sub_resource type="BoxMesh" id=3]
[sub_resource type="StandardMaterial3D" id=4]
[sub_resource type="StandardMaterial3D" id=5]
[sub_resource type="StandardMaterial3D" id=6]
[sub_resource type="CapsuleMesh" id=7]
material = SubResource( 6 )
radius = 1.272
mid_height = 0.001
radial_segments = 4
rings = 2
[sub_resource type="CameraTexture" id=8]
camera_feed_id = 1
which_feed = 1
[sub_resource type="StandardMaterial3D" id=9]
roughness_texture = SubResource( 8 )
roughness_texture_channel = 1
[sub_resource type="StandardMaterial3D" id=10]
[sub_resource type="StandardMaterial3D" id=11]
vertex_color_use_as_albedo = true
[sub_resource type="StandardMaterial3D" id=12]
[sub_resource type="StandardMaterial3D" id=13]
[sub_resource type="StandardMaterial3D" id=14]
blend_mode = 1
cull_mode = 1
diffuse_mode = 1
specular_mode = 1
[sub_resource type="BoxMesh" id=15]
material = SubResource( 14 )
size = Vector3( 2.25, 1.56, 2.49 )
[sub_resource type="Skin" id=16]
bind_count = 10
bind/0/name = @""
bind/0/bone = -1
bind/0/pose = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
bind/1/name = @""
bind/1/bone = -1
bind/1/pose = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
bind/2/name = @""
bind/2/bone = -1
bind/2/pose = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
bind/3/name = @""
bind/3/bone = -1
bind/3/pose = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
bind/4/name = @""
bind/4/bone = -1
bind/4/pose = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
bind/5/name = @""
bind/5/bone = -1
bind/5/pose = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
bind/6/name = @""
bind/6/bone = -1
bind/6/pose = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
bind/7/name = @""
bind/7/bone = -1
bind/7/pose = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
bind/8/name = @""
bind/8/bone = -1
bind/8/pose = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
bind/9/name = @""
bind/9/bone = -1
bind/9/pose = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
[sub_resource type="StandardMaterial3D" id=17]
[sub_resource type="BoxMesh" id=18]
[sub_resource type="MultiMesh" id=19]
transform_format = 1
instance_count = 3
mesh = SubResource( 18 )
buffer = PackedFloat32Array( 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0 )
[sub_resource type="ParticlesMaterial" id=20]
render_priority = 127
emission_shape = 2
emission_box_extents = Vector3( 1, 1, 1 )
radial_accel = 6.0
radial_accel_random = 1.0
tangential_accel = 3.1
tangential_accel_random = 1.0
[sub_resource type="BoxMesh" id=21]
[sub_resource type="BakedLightmapData" id=22]
user_data = [ ]
probe_data = {
"bounds": AABB( 0, 0, 0, 0, 0, 0 ),
"bsp": PackedInt32Array( ),
"interior": false,
"points": PackedVector3Array( ),
"sh": PackedColorArray( ),
"tetrahedra": PackedInt32Array( )
}
[sub_resource type="BoxShape3D" id=23]
margin = 0.5
[sub_resource type="PhysicsMaterial" id=24]
[sub_resource type="PhysicsMaterial" id=25]
[sub_resource type="PhysicsMaterial" id=26]
friction = 0.53
[sub_resource type="AudioStreamGenerator" id=27]
[sub_resource type="ConcavePolygonShape3D" id=28]
margin = 0.067
[sub_resource type="CapsuleMesh" id=29]
[sub_resource type="MeshLibrary" id=30]
item/0/name = ""
item/0/mesh = SubResource( 29 )
item/0/mesh_transform = null
item/0/shapes = [ ]
item/0/navmesh_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
[sub_resource type="NavigationMesh" id=31]
polygons = [ ]
sample_partition_type/sample_partition_type = 2
geometry/parsed_geometry_type = 1
geometry/collision_mask = 2147483647
cell/size = 0.5
cell/height = 5.1
agent/height = 4.2
agent/radius = 5.8
agent/max_climb = 6.2
agent/max_slope = 0.0
region/min_size = 15.6
region/merge_size = 24.8
edge/max_length = 17.4
edge/max_error = 0.1
polygon/verts_per_poly = 9.0
detail/sample_distance = 0.0
detail/sample_max_error = 6.7
filter/low_hanging_obstacles = true
filter/ledge_spans = true
filter/filter_walkable_low_height_spans = true
[sub_resource type="Curve3D" id=32]
bake_interval = 10.0
_data = {
"points": PackedVector3Array( 0, 0, 0, 0, 0, 0, -4.21835, 8.31693, -11.5007, 0, 0, 0, 0, 0, 0, -18.4839, 0.381447, -2.2567, 0, 0, 0, 0, 0, 0, -9.25256, -1.66295, 1.34504, 0, 0, 0, 0, 0, 0, 14.3498, 1.51124, -0.660617, 0, 0, 0, 0, 0, 0, 16.5666, 7.48303, -8.42252, 0, 0, 0, 0, 0, 0, 5.21951, 11.8408, -15.3123, 0, 0, 0, 0, 0, 0, -6.34309, 13.0513, -18.0214, 0, 0, 0, 0, 0, 0, -22.2367, 9.90402, -15.3228, 0, 0, 0, 0, 0, 0, -5.97389, 1.40365, -2.43845, 0, 0, 0, 0, 0, 0, 1.22511, 4.12054, -5.38451, 0, 0, 0, 0, 0, 0, -4.21835, 8.31693, -11.5007 ),
"tilts": PackedFloat32Array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )
}
[sub_resource type="BoxShape3D" id=33]
margin = 1.21
[sub_resource type="CapsuleShape3D" id=34]
[sub_resource type="BoxMesh" id=35]
[node name="3DALL" type="Node3D"]
script = null
[node name="ARVROrigin" type="XROrigin3D" parent="."]
world_scale = 1.01
script = null
[node name="ARVRAnchor" type="XRAnchor3D" parent="ARVROrigin"]
anchor_id = 32
script = null
[node name="ARVRCamera_NOTHING" type="XRCamera3D" parent="ARVROrigin"]
h_offset = 0.159
v_offset = -0.909
doppler_tracking = 1
projection = 1
size = 91.71
near = 2235.15
far = 1.1
script = null
[node name="ARVRController" type="XRController3D" parent="ARVROrigin"]
controller_id = 3
script = null
[node name="Camera" type="Camera3D" parent="."]
h_offset = 0.032
v_offset = 0.03
doppler_tracking = 1
projection = 1
fov = 75.7
size = 1.23
near = 0.42
far = 356.3
script = null
[node name="ClippedCamera" type="ClippedCamera3D" parent="."]
h_offset = 0.038
v_offset = -0.146
fov = 64.8
size = 15954.2
near = 0.45
margin = 23.09
script = null
[node name="InterpolatedCamera" type="Node" parent="."]
script = null
[node name="AnimatedSprite3D" type="AnimatedSprite3D" parent="."]
material_override = SubResource( 1 )
offset = Vector2( 0.026, 0 )
flip_h = true
flip_v = true
modulate = Color( 0.454902, 0.25098, 0.25098, 1 )
opacity = 0.74
pixel_size = 0.0526
billboard = 1
shaded = true
frames = SubResource( 2 )
frame = 2
playing = true
script = null
[node name="Sprite3D" type="Sprite3D" parent="."]
flip_h = true
flip_v = true
texture = ExtResource( 50 )
hframes = 13
frame = 2
script = null
[node name="CPUParticles" type="CPUParticles3D" parent="."]
emitting = false
amount = 5
lifetime = 1.83
speed_scale = 2.68
explosiveness = 0.24
randomness = 0.87
lifetime_randomness = 0.75
mesh = SubResource( 3 )
emission_shape = 1
emission_sphere_radius = 1.0
script = null
[node name="CSGBox" type="CSGBox3D" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 25.6943 )
operation = 1
invert_faces = true
material = SubResource( 4 )
script = null
[node name="CSGCylinder" type="CSGCylinder3D" parent="."]
transform = Transform( 1, 0, 0, 0, 0.745602, 0, 0, 0, 1, 0, -21.0098, 0 )
invert_faces = true
radius = 123.75
height = 45.8309
sides = 3
cone = true
material = SubResource( 5 )
script = null
[node name="CSGMesh" type="CSGMesh3D" parent="."]
transform = Transform( 1, 0, 0, 0, 3.78, 0, 0, 0, 7.64, 5.27772, 5.196, 0 )
invert_faces = true
mesh = SubResource( 7 )
material = SubResource( 9 )
script = null
[node name="CSGPolygon" type="CSGPolygon3D" parent="."]
polygon = PackedVector2Array( 1.3, 0.59, 1, 0.06, 1, -6.56, 0, 0, 0, 0, 0, 0 )
depth = 1.123
material = SubResource( 10 )
script = null
[node name="CSGSphere" type="CSGSphere3D" parent="."]
invert_faces = true
radius = 19.668
radial_segments = 4
rings = 3
smooth_faces = false
material = SubResource( 11 )
script = null
[node name="CSGTorus" type="CSGTorus3D" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.71423, -3.42086 )
invert_faces = true
inner_radius = 0.001
outer_radius = 19.109
sides = 4
ring_sides = 5
material = SubResource( 12 )
script = null
[node name="CSGCombiner_NOTHING" type="CSGCombiner3D" parent="."]
operation = 1
script = null
[node name="CSGBox" type="CSGBox3D" parent="CSGCombiner_NOTHING"]
invert_faces = true
material = SubResource( 4 )
script = null
[node name="CSGBox2" type="CSGBox3D" parent="CSGCombiner_NOTHING"]
invert_faces = true
material = SubResource( 4 )
script = null
[node name="ImmediateGeometry" type="ImmediateGeometry3D" parent="."]
material_override = SubResource( 13 )
extra_cull_margin = 0.08
gi_mode = 1
script = null
[node name="MeshInstance" type="MeshInstance3D" parent="."]
mesh = SubResource( 15 )
skin = SubResource( 16 )
material/0 = SubResource( 17 )
script = null
[node name="MultiMeshInstance" type="MultiMeshInstance3D" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 18.9485, 0 )
multimesh = SubResource( 19 )
script = null
[node name="Particles" type="GPUParticles3D" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -27.0754 )
emitting = false
amount = 4
lifetime = 1.42
preprocess = 0.5
speed_scale = 1.3
explosiveness = 0.41
randomness = 0.34
fract_delta = false
local_coords = false
process_material = SubResource( 20 )
draw_pass_1 = SubResource( 21 )
script = null
[node name="BakedLightmap" type="BakedLightmap" parent="."]
light_data = SubResource( 22 )
script = null
[node name="DirectionalLight" type="DirectionalLight3D" parent="."]
transform = Transform( 1, 0, 0, 0, 0.639291, -0.768965, 0, 0.768965, 0.639291, 0, 21.5838, 0 )
light_energy = 7.54
shadow_enabled = true
script = null
[node name="SpotLight" type="SpotLight3D" parent="."]
transform = Transform( 1, 0, 0, 0, -0.171431, -0.985196, 0, 0.985196, -0.171431, 0, 0, -16.2155 )
light_energy = 4.05
light_negative = true
shadow_enabled = true
shadow_bias = 0.4
script = null
[node name="GIProbe" type="GIProbe" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.945391, 1.15135, 1.78806 )
extents = Vector3( 10, 10, 22.3077 )
script = null
[node name="ReflectionProbe" type="ReflectionProbe" parent="."]
intensity = 0.51
max_distance = 1.7
extents = Vector3( 1, 1.583, 1 )
box_projection = true
script = null
[node name="RootMotionView" type="RootMotionView" parent="."]
script = null
[node name="Area" type="Area3D" parent="."]
gravity = 22.39
linear_damp = 0.126
monitoring = false
script = null
[node name="CollisionShape" type="CollisionShape3D" parent="Area"]
shape = SubResource( 23 )
script = null
[node name="KinematicBody" type="KinematicBody3D" parent="."]
collision/safe_margin = 0.033
script = null
[node name="CollisionShape" type="CollisionShape3D" parent="KinematicBody"]
shape = SubResource( 23 )
script = null
[node name="PhysicalBone" type="PhysicalBone3D" parent="."]
mass = 1.21
script = null
[node name="CollisionShape" type="CollisionShape3D" parent="PhysicalBone"]
shape = SubResource( 23 )
script = null
[node name="RigidBody" type="RigidBody3D" parent="."]
mass = 1.19
physics_material_override = SubResource( 24 )
gravity_scale = 1.12
axis_lock_linear_x = true
script = null
[node name="CollisionShape" type="CollisionShape3D" parent="RigidBody"]
shape = SubResource( 23 )
script = null
[node name="VehicleBody" type="VehicleBody3D" parent="."]
physics_material_override = SubResource( 25 )
engine_force = 16.41
brake = 0.46
steering = 0.17
script = null
[node name="CollisionShape" type="CollisionShape3D" parent="VehicleBody"]
shape = SubResource( 23 )
script = null
[node name="VehicleWheel4" type="VehicleWheel3D" parent="VehicleBody"]
engine_force = 5.60519e-45
brake = 0.46
script = null
[node name="StaticBody" type="StaticBody3D" parent="."]
physics_material_override = SubResource( 26 )
constant_linear_velocity = Vector3( 0.049, 0, 0 )
script = null
[node name="CollisionShape" type="CollisionShape3D" parent="StaticBody"]
shape = SubResource( 23 )
script = null
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."]
stream = SubResource( 27 )
attenuation_model = 1
unit_db = 0.031
unit_size = 5.5
max_db = 2.953
pitch_scale = 1.42
script = null
[node name="BoneAttachment" type="BoneAttachment3D" parent="."]
script = null
[node name="CollisionPolygon" type="CollisionPolygon3D" parent="."]
polygon = PackedVector2Array( 66.9045, 31.0067, 286.784, -62.3473, 22.8219, -35.2817, -25.9028, -19.5722, -43.33, 5.94586, -43.7357, 15.5874, -36.475, 6.06905, -45.3994, 19.6661 )
script = null
[node name="CollisionShape" type="CollisionShape3D" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -26.583 )
shape = SubResource( 28 )
script = null
[node name="GridMap" type="GridMap" parent="."]
mesh_library = SubResource( 30 )
cell_size = Vector3( 2, 1.14, 3.08 )
data = {
"cells": PackedInt32Array( 23, 1, 0, 25, 1, 0, 26, 1, 0, 18, 2, 0, 65523, 5, 0, 65524, 5, 0, 65530, 65515, 0, 65520, 65520, 0, 65519, 65521, 0, 65520, 65521, 0, 65519, 65522, 0, 65518, 65523, 0, 65523, 65524, 0, 65526, 65528, 0, 65513, 65533, 0 )
}
script = null
__meta__ = {
"_editor_clip_": 0
}
[node name="Listener" type="Listener3D" parent="."]
current = true
script = null
[node name="Navigation" type="Node" parent="."]
script = null
[node name="NavigationMeshInstance" type="NavigationRegion3D" parent="Navigation"]
navmesh = SubResource( 31 )
script = null
[node name="NavigationMeshInstance" type="NavigationRegion3D" parent="."]
navmesh = SubResource( 31 )
script = null
[node name="Path" type="Path3D" parent="."]
curve = SubResource( 32 )
script = null
[node name="PathFollow" type="PathFollow3D" parent="Path"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -4.21835, 8.31693, -11.5007 )
script = null
[node name="PathFollow" type="PathFollow3D" parent="."]
offset = 2.09
h_offset = 0.101
script = null
[node name="Position3D_NOTHING" type="Position3D" parent="."]
script = null
[node name="Camera_DEFAULT_CAMERA" type="Camera3D" parent="."]
current = true
script = null
[node name="ProximityGroup" type="ProximityGroup3D" parent="."]
dispatch_mode = 1
script = null
[node name="RayCast" type="RayCast3D" parent="."]
script = null
[node name="RemoteTransform" type="RemoteTransform3D" parent="."]
remote_path = NodePath("../Camera")
script = null
[node name="Skeleton" type="Skeleton3D" parent="."]
script = null
[node name="PhysicalBone" type="PhysicalBone3D" parent="Skeleton"]
script = null
[node name="BoneAttachment" type="BoneAttachment3D" parent="Skeleton/PhysicalBone"]
transform = Transform( 1, -1.78814e-07, -1.78814e-07, -9.68575e-08, 1, -5.96046e-08, 0, 0, 1, 0, 0, 0 )
script = null
[node name="CollisionShape4" type="CollisionShape3D" parent="Skeleton/PhysicalBone"]
shape = SubResource( 33 )
script = null
[node name="PhysicalBone 3" type="PhysicalBone3D" parent="Skeleton"]
mass = 0.958163
friction = 0.62
bounce = 0.3
gravity_scale = 0.6
script = null
[node name="CollisionShape" type="CollisionShape3D" parent="Skeleton/PhysicalBone 3"]
shape = SubResource( 33 )
script = null
[node name="SpringArm" type="SpringArm3D" parent="."]
shape = SubResource( 34 )
script = null
[node name="VehicleWheel" type="VehicleWheel3D" parent="."]
engine_force = 0.49
brake = 0.74
steering = -0.63
script = null
[node name="VisibilityNotifier" type="VisibilityNotifier3D" parent="."]
aabb = AABB( -1, -0.982, -1, 2, 2.078, 2 )
script = null
[node name="VisibilityEnabler" type="VisibilityEnabler3D" parent="."]
script = null
[node name="Generic6DOFJoint" type="Generic6DOFJoint3D" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 1.63619, -0.392871, 2.48948 )
nodes/node_a = NodePath("../StaticBody")
nodes/node_b = NodePath("../PhysicalBone")
solver/priority = 5
collision/exclude_nodes = false
linear_limit_x/lower_distance = 0.261
angular_motor_z/enabled = true
angular_motor_z/target_velocity = 0.11
angular_motor_z/force_limit = 300.5
angular_spring_z/enabled = true
angular_spring_z/stiffness = 0.5
angular_spring_z/damping = 0.64
angular_spring_z/equilibrium_point = -0.9
script = null
[node name="HingeJoint" type="HingeJoint3D" parent="."]
nodes/node_a = NodePath("../StaticBody")
nodes/node_b = NodePath("../PhysicalBone")
params/bias = 0.99
angular_limit/enable = true
angular_limit/upper = 162.0
angular_limit/lower = -131.0
angular_limit/bias = 0.67
angular_limit/softness = 0.01
angular_limit/relaxation = 3.6
motor/enable = true
motor/target_velocity = -1.3
motor/max_impulse = 30.2
script = null
[node name="SliderJoint" type="SliderJoint3D" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 1.17785, 0.25203, 4.6063 )
nodes/node_a = NodePath("../VehicleBody")
nodes/node_b = NodePath("../StaticBody")
linear_limit/upper_distance = 1.19
linear_limit/lower_distance = -705.69
linear_limit/softness = 1.07
linear_limit/restitution = 1.12
linear_limit/damping = 1.18
linear_motion/softness = 1.14
linear_motion/restitution = 0.97
linear_motion/damping = 0.54
linear_ortho/softness = 1.4
linear_ortho/restitution = 1.19
linear_ortho/damping = 1.28
angular_limit/upper_angle = -28.8
angular_limit/lower_angle = 38.8
angular_motion/softness = 2.18
angular_motion/restitution = 1.77
angular_motion/damping = 4.88
script = null
[node name="PinJoint" type="PinJoint3D" parent="."]
nodes/node_a = NodePath("../KinematicBody")
nodes/node_b = NodePath("../StaticBody")
params/bias = 0.99
params/damping = 7.3
params/impulse_clamp = 7.2
script = null
[node name="ConeTwistJoint" type="ConeTwistJoint3D" parent="."]
nodes/node_a = NodePath("../PhysicalBone")
nodes/node_b = NodePath("../RigidBody")
solver/priority = 8
twist_span = 9500.4
bias = 0.46
softness = 0.95
relaxation = 0.83
script = null
[node name="OmniLight" type="OmniLight3D" parent="."]
light_energy = 1.61
light_indirect_energy = 1.35
light_specular = 0.68
omni_range = 118.9
omni_attenuation = 1.51572
omni_shadow_mode = 0
script = null
[node name="SoftBody" type="SoftBody3D" parent="."]
mesh = SubResource( 35 )
material/0 = null
pinned_points = [ ]
script = null

View File

@ -1,16 +0,0 @@
[gd_scene load_steps=5 format=2]
[ext_resource path="res://AIO/AllNodes/OtherALL.tscn" type="PackedScene" id=1]
[ext_resource path="res://AIO/AllNodes/2DALL.tscn" type="PackedScene" id=2]
[ext_resource path="res://AIO/AllNodes/ControlALL.tscn" type="PackedScene" id=4]
[ext_resource path="res://AIO/AllNodes/3DALL.tscn" type="PackedScene" id=5]
[node name="ALL" type="Node"]
[node name="2DALL" parent="." instance=ExtResource( 2 )]
[node name="3DALL" parent="." instance=ExtResource( 5 )]
[node name="ControlALL" parent="." instance=ExtResource( 4 )]
[node name="OtherALL" parent="." instance=ExtResource( 1 )]

View File

@ -1,447 +0,0 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://icon.png" type="Texture2D" id=1]
[sub_resource type="Theme" id=1]
[node name="ControlALL" type="GridContainer"]
anchor_right = 1.0
anchor_bottom = 1.0
columns = 9
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Popup" type="Popup" parent="."]
theme = SubResource( 1 )
script = null
[node name="WindowDialog" type="Node" parent="."]
script = null
[node name="AcceptDialog" type="AcceptDialog" parent="."]
position = Vector2i( 0, 64 )
dialog_text = "fqwfqwfqwf"
dialog_hide_on_ok = false
dialog_autowrap = true
script = null
[node name="ConfirmationDialog" type="ConfirmationDialog" parent="."]
position = Vector2i( 0, 64 )
dialog_text = "fas"
dialog_hide_on_ok = false
dialog_autowrap = true
script = null
[node name="FileDialog" type="FileDialog" parent="."]
position = Vector2i( 0, 64 )
size = Vector2i( 371, 122 )
dialog_text = "sffasfasf"
dialog_hide_on_ok = true
dialog_autowrap = true
mode_overrides_title = false
access = 1
filters = PackedStringArray( "", "as", "", "fasf", "", "s", "", "asfasfa", "sf", "", "" )
show_hidden_files = true
current_dir = "user://"
current_file = "asf"
current_path = "user://asf"
script = null
[node name="PopupDialog_NOTHING" type="Node" parent="."]
script = null
[node name="PopupMenu" type="PopupMenu" parent="."]
items = [ ]
hide_on_item_selection = false
hide_on_checkable_item_selection = false
hide_on_state_item_selection = true
submenu_popup_delay = 5.32352e+07
script = null
[node name="PopupPanel_NOTHING" type="PopupPanel" parent="."]
script = null
[node name="Button" type="Button" parent="."]
offset_right = 58.0
offset_bottom = 40.0
text = "asfasf"
flat = true
clip_text = true
align = 0
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="CheckBox_NOTHING" type="CheckBox" parent="."]
offset_left = 62.0
offset_right = 370.0
offset_bottom = 40.0
text = "safasf"
flat = true
clip_text = true
align = 2
script = null
[node name="CheckButton_NOTHING" type="CheckButton" parent="."]
offset_left = 374.0
offset_right = 454.0
offset_bottom = 40.0
text = "asfq"
flat = true
clip_text = true
align = 1
script = null
[node name="ColorPickerButton" type="ColorPickerButton" parent="."]
offset_left = 458.0
offset_right = 532.0
offset_bottom = 40.0
text = "asfasf"
flat = true
clip_text = true
align = 2
color = Color( 0.639216, 0.576471, 0.576471, 1 )
edit_alpha = false
script = null
[node name="MenuButton" type="MenuButton" parent="."]
offset_left = 536.0
offset_right = 580.0
offset_bottom = 40.0
icon = ExtResource( 1 )
items = [ ]
switch_on_hover = true
script = null
[node name="OptionButton" type="OptionButton" parent="."]
offset_left = 584.0
offset_right = 645.0
offset_bottom = 40.0
icon = ExtResource( 1 )
items = [ ]
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="ToolButton_NOTHING" type="Button" parent="."]
offset_left = 649.0
offset_right = 695.0
offset_bottom = 40.0
text = "asfasf"
icon = ExtResource( 1 )
clip_text = true
align = 2
script = null
[node name="LinkButton" type="LinkButton" parent="."]
offset_left = 699.0
offset_right = 751.0
offset_bottom = 40.0
text = "asfqfqwf"
underline = 2
structured_text_bidi_override_options = [ ]
script = null
[node name="TextureButton" type="TextureButton" parent="."]
offset_left = 755.0
offset_right = 767.0
offset_bottom = 40.0
expand = true
stretch_mode = 5
script = null
[node name="Container" type="Container" parent="."]
offset_top = 44.0
offset_right = 58.0
offset_bottom = 454.0
script = null
[node name="Control" type="Control" parent="Container"]
script = null
[node name="Control2" type="Control" parent="Container"]
script = null
[node name="ColorPicker" type="ColorPicker" parent="."]
offset_left = 62.0
offset_top = 44.0
offset_right = 370.0
offset_bottom = 454.0
alignment = 1
edit_alpha = false
raw_mode = true
deferred_mode = true
presets_enabled = false
presets_visible = false
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="HBoxContainer_NOTHING" type="HBoxContainer" parent="."]
offset_left = 374.0
offset_top = 44.0
offset_right = 454.0
offset_bottom = 454.0
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="VBoxContainer_NOTHING" type="VBoxContainer" parent="."]
offset_left = 458.0
offset_top = 44.0
offset_right = 532.0
offset_bottom = 454.0
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="CenterContainer" type="CenterContainer" parent="."]
offset_left = 536.0
offset_top = 44.0
offset_right = 580.0
offset_bottom = 454.0
use_top_left = true
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="ScrollContainer" type="ScrollContainer" parent="."]
offset_left = 584.0
offset_top = 44.0
offset_right = 645.0
offset_bottom = 454.0
script = null
[node name="GraphNode" type="GraphNode" parent="."]
offset_left = 649.0
offset_top = 44.0
offset_right = 695.0
offset_bottom = 454.0
script = null
[node name="GridContainer" type="GridContainer" parent="."]
offset_left = 699.0
offset_top = 44.0
offset_right = 751.0
offset_bottom = 454.0
script = null
[node name="HSplitContainer_NOTHING" type="HSplitContainer" parent="."]
offset_left = 755.0
offset_top = 44.0
offset_right = 767.0
offset_bottom = 454.0
script = null
__meta__ = {
"_edit_use_anchors_": false
}
[node name="VSplitContainer_NOTHING" type="VSplitContainer" parent="."]
offset_top = 458.0
offset_right = 58.0
offset_bottom = 490.0
script = null
[node name="MarginContainer_NOTHING" type="MarginContainer" parent="."]
offset_left = 62.0
offset_top = 458.0
offset_right = 370.0
offset_bottom = 490.0
script = null
[node name="PanelContainer_NOTHING" type="PanelContainer" parent="."]
offset_left = 374.0
offset_top = 458.0
offset_right = 454.0
offset_bottom = 490.0
script = null
[node name="TabContainer" type="TabContainer" parent="."]
offset_left = 458.0
offset_top = 458.0
offset_right = 532.0
offset_bottom = 490.0
script = null
[node name="ViewportContainer" type="SubViewportContainer" parent="."]
offset_left = 536.0
offset_top = 458.0
offset_right = 580.0
offset_bottom = 490.0
script = null
[node name="ColorRect" type="ColorRect" parent="."]
offset_left = 584.0
offset_top = 458.0
offset_right = 645.0
offset_bottom = 490.0
script = null
[node name="GraphEdit" type="GraphEdit" parent="."]
offset_left = 649.0
offset_top = 458.0
offset_right = 695.0
offset_bottom = 490.0
script = null
[node name="HScrollBar_NOTHING" type="HScrollBar" parent="."]
offset_left = 699.0
offset_top = 458.0
offset_right = 751.0
offset_bottom = 470.0
script = null
[node name="VScrollBar_NOTHING" type="VScrollBar" parent="."]
offset_left = 755.0
offset_top = 458.0
offset_right = 767.0
offset_bottom = 490.0
script = null
[node name="HSlider_NOTHING" type="HSlider" parent="."]
offset_top = 494.0
offset_right = 58.0
offset_bottom = 510.0
script = null
[node name="VSlider_NOTHING" type="VSlider" parent="."]
offset_left = 62.0
offset_top = 494.0
offset_right = 78.0
offset_bottom = 518.0
script = null
[node name="ProgressBar" type="ProgressBar" parent="."]
offset_left = 374.0
offset_top = 494.0
offset_right = 454.0
offset_bottom = 508.0
script = null
[node name="SpinBox" type="SpinBox" parent="."]
offset_left = 458.0
offset_top = 494.0
offset_right = 532.0
offset_bottom = 518.0
script = null
[node name="TextureProgress" type="TextureProgressBar" parent="."]
offset_left = 536.0
offset_top = 494.0
offset_right = 580.0
offset_bottom = 518.0
script = null
[node name="HSeparator" type="HSeparator" parent="."]
offset_left = 584.0
offset_top = 494.0
offset_right = 645.0
offset_bottom = 518.0
script = null
[node name="VSeparator" type="VSeparator" parent="."]
offset_left = 649.0
offset_top = 494.0
offset_right = 695.0
offset_bottom = 518.0
script = null
[node name="ItemList" type="ItemList" parent="."]
offset_left = 699.0
offset_top = 494.0
offset_right = 751.0
offset_bottom = 518.0
items = [ ]
script = null
[node name="Label" type="Label" parent="."]
offset_left = 755.0
offset_top = 499.0
offset_right = 767.0
offset_bottom = 513.0
structured_text_bidi_override_options = [ ]
script = null
[node name="LineEdit" type="LineEdit" parent="."]
offset_top = 522.0
offset_right = 58.0
offset_bottom = 546.0
structured_text_bidi_override_options = [ ]
caret_blink = true
script = null
[node name="NinePatchRect" type="NinePatchRect" parent="."]
offset_left = 62.0
offset_top = 522.0
offset_right = 370.0
offset_bottom = 546.0
script = null
[node name="Panel_NOTHING" type="Panel" parent="."]
offset_left = 374.0
offset_top = 522.0
offset_right = 454.0
offset_bottom = 546.0
script = null
[node name="ReferenceRect" type="ReferenceRect" parent="."]
offset_left = 458.0
offset_top = 522.0
offset_right = 532.0
offset_bottom = 546.0
script = null
[node name="RichTextLabel" type="RichTextLabel" parent="."]
offset_left = 536.0
offset_top = 522.0
offset_right = 580.0
offset_bottom = 546.0
custom_effects = [ ]
structured_text_bidi_override_options = [ ]
script = null
[node name="Tabs" type="Tabs" parent="."]
offset_left = 584.0
offset_top = 522.0
offset_right = 645.0
offset_bottom = 546.0
script = null
[node name="TextEdit" type="TextEdit" parent="."]
offset_left = 649.0
offset_top = 522.0
offset_right = 695.0
offset_bottom = 546.0
structured_text_bidi_override_options = [ ]
script = null
[node name="TextureRect" type="TextureRect" parent="."]
offset_left = 699.0
offset_top = 522.0
offset_right = 751.0
offset_bottom = 546.0
script = null
[node name="Tree" type="Tree" parent="."]
offset_left = 755.0
offset_top = 522.0
offset_right = 767.0
offset_bottom = 546.0
script = null
[node name="VideoPlayer" type="VideoPlayer" parent="."]
offset_top = 550.0
offset_right = 58.0
offset_bottom = 550.0
script = null
__meta__ = {
"_edit_use_anchors_": false
}

View File

@ -1,95 +0,0 @@
[gd_scene load_steps=5 format=2]
[sub_resource type="Animation" id=1]
resource_name = "New Anim"
tracks/0/type = "method"
tracks/0/path = NodePath("../Tween")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PackedFloat32Array( 1.4, 4.6, 8.1 ),
"transitions": PackedFloat32Array( 1, 1, 1 ),
"values": [ {
"args": [ ],
"method": @"stop_all"
}, {
"args": [ ],
"method": @"resume_all"
}, {
"args": [ ],
"method": @"is_active"
} ]
}
[sub_resource type="AnimationNodeBlendSpace1D" id=2]
[sub_resource type="AudioStreamSample" id=3]
[sub_resource type="Environment" id=4]
[node name="OtherALL" type="Node"]
script = null
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
root_node = NodePath("../AudioStreamPlayer")
"anims/New Anim" = SubResource( 1 )
blend_times = [ ]
script = null
[node name="AnimationTree" type="AnimationTree" parent="."]
tree_root = SubResource( 2 )
anim_player = NodePath("../AnimationPlayer")
parameters/blend_position = 0
script = null
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = SubResource( 3 )
volume_db = 0.066
pitch_scale = 2.48
script = null
[node name="CanvasLayer" type="CanvasLayer" parent="."]
layer = 55
offset = Vector2( 0.019, 0 )
transform = Transform2D( 1, 0, 0, 1, 0.019, 0 )
follow_viewport_enable = true
script = null
[node name="ParallaxBackground" type="ParallaxBackground" parent="."]
scroll_offset = Vector2( 0.026, 0 )
scroll_base_offset = Vector2( 0.038, 0 )
scroll_base_scale = Vector2( 1, 1.045 )
script = null
[node name="HTTPRequest" type="HTTPRequest" parent="."]
use_threads = true
script = null
[node name="ResourcePreloader" type="ResourcePreloader" parent="."]
resources = [ PackedStringArray( ), [ ] ]
script = null
[node name="SkeletonIK" type="SkeletonIK3D" parent="."]
process_priority = 1
interpolation = 0.942
target = Transform( 2.49, 1.02, -0.07, 1.15, 1, -1.97, -0.7, -1.01, 2.42, -0.7, -0.59, -0.29 )
magnet = Vector3( 2.8, -3.69, -0.95 )
target_node = NodePath("../ResourcePreloader")
script = null
[node name="Timer" type="Timer" parent="."]
script = null
[node name="Tween" type="Tween" parent="."]
repeat = true
playback/repeat = true
script = null
[node name="Viewport" type="SubViewport" parent="."]
script = null
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource( 4 )
script = null

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=10 format=2]
[gd_scene load_steps=8 format=2]
[ext_resource path="res://Nodes/Nodes.tscn" type="PackedScene" id=1]
[ext_resource path="res://AIO/Operators/Operators.tscn" type="PackedScene" id=5]
@ -6,8 +6,6 @@
[ext_resource path="res://Rendering/Lights3D/Lights3D.tscn" type="PackedScene" id=7]
[ext_resource path="res://Rendering/Lights2D/Lights2D.tscn" type="PackedScene" id=8]
[ext_resource path="res://Physics/3D/Physics3D.tscn" type="PackedScene" id=9]
[ext_resource path="res://Text/Text.tscn" type="PackedScene" id=10]
[ext_resource path="res://AIO/AllNodes/ALL.tscn" type="PackedScene" id=11]
[ext_resource path="res://ReparentingDeleting/ReparentingDeleting.tscn" type="PackedScene" id=12]
[node name="All" type="Node"]
@ -24,14 +22,10 @@
[node name="Lights3D" parent="Rendering" instance=ExtResource( 7 )]
[node name="Text" parent="." instance=ExtResource( 10 )]
[node name="ReparentingDeleting" parent="." instance=ExtResource( 12 )]
[node name="AIO" type="Node" parent="."]
[node name="ALL" parent="AIO" instance=ExtResource( 11 )]
[node name="Node2D" parent="AIO" instance=ExtResource( 5 )]
[node name="Operators" parent="AIO" instance=ExtResource( 5 )]
[node name="MainScenes" parent="." instance=ExtResource( 1 )]

View File

@ -14,46 +14,40 @@ var time_for_each_step : int = -1
# Each scene runs alone
const alone_steps : Array = [
"res://Nodes/Nodes.tscn",
"res://ReparentingDeleting/ReparentingDeleting.tscn",
"res://Physics/2D/Physics2D.tscn",
"res://Physics/3D/Physics3D.tscn",
"res://Rendering/Lights2D/Lights2D.tscn",
"res://Rendering/Lights3D/Lights3D.tscn",
"res://Nodes/Nodes.tscn",
"res://ReparentingDeleting/ReparentingDeleting.tscn",
"res://Text/Text.tscn",
"res://AutomaticBugs/FunctionExecutor.tscn", # Only Needs to be executed once, but this is workaround a little
]
# All scenes run in one step
# This should be put regression scripts which needs to run only once
const all_in_one : Array = [
"res://AIO/Operators/Operators.tscn",
"res://AutomaticBugs/FunctionExecutor.tscn",
#"res://AIO/AllNodes/ALL.tscn", # Take too much time - opens ~ 20 seconds in CI inside xvfb-run
]
func _ready():
func _init():
start_time = OS.get_ticks_msec()
var time_set : bool = false
# In case when user doesn't provide time
time_for_each_step = time_to_show / (alone_steps.size())
for argument in OS.get_cmdline_args():
if argument.is_valid_float(): # Ignore all non numeric arguments
time_set = true
time_to_show = int(argument.to_float() * 1000)
time_for_each_step = time_to_show / (alone_steps.size())
print("Time set to: " + str(time_to_show / 1000.0) + " seconds with "+ str(alone_steps.size()) + " steps, each step will take " + str(time_for_each_step / 1000.0) + " seconds.")
break # We only need to take first argument
# In case when user doesn't provide time
if !time_set:
time_for_each_step = time_to_show / (alone_steps.size())
print("Default time - " + str(time_to_show / 1000.0) + " seconds with "+ str(alone_steps.size()) + " steps, each step will take " + str(time_for_each_step / 1000.0) + " seconds.")
func _process(delta: float) -> void:
var current_run_time : int = OS.get_ticks_msec() - start_time
while current_run_time > time_to_print_next_time: # This will allow to properly regulate time under heavy operations(e.g. Thread sanitizer)
# While loop instead if, will allow to properly flush results under heavy operations(e.g. Thread sanitizer)
while current_run_time > time_to_print_next_time:
print("Test is running now " + str(int(time_to_print_next_time / 1000)) + " seconds")
time_to_print_next_time += PRINT_TIME_EVERY_MILISECONDS

View File

@ -1,5 +1,10 @@
extends Node
var regression_test_project : bool = true # Set it to true in RegressionTestProject
# Contains info about disabled classes
# Also allows to get list of available classes
var properties_exceptions : Array = [
"user_data",
"config_file",
@ -7,8 +12,7 @@ var properties_exceptions : Array = [
"",
]
var function_exceptions : Array = [
"play",
#GODOT 4.0
#GODOT 4.0
"create_from_image",
"set_point_position",
"connect", # OTHER THINGS
@ -34,15 +38,20 @@ var function_exceptions : Array = [
"_activate",
"add_node", #GH 46012
"_set_user_data",
"get_packet", # TODO
"create_from_mesh",
# They exists without assigment like Class.method, because they may be a parent of other objects and children also should have disabled child.method, its children also etc. which is too much to do
"connect_to_signal", # GH 47572
"set_config_file", # GH 45997
"class_get_property", # GH 47573
"class_set_property", # GH 47573
"_editor_settings_changed",# GH 45979
"_submenu_timeout", # GH 45981
"set_config_file", # GH 45997
"_gui_input", # GH 45998
"_unhandled_key_input", # GH 45998
"navpoly_add", #GH 43288
"_thread_done", #GH 46000
"generate", #GH 46001
"_proximity_group_broadcast", #GH 46002
@ -50,13 +59,9 @@ var function_exceptions : Array = [
"create_from", #GH 46004
"create_from_blend_shape", #GH 46004
"append_from", #GH 46004
"get_column_width", #GH 46005
"_unhandled_input", # TODO
"_input", # TODO
"_set_tile_data", #GH 46015
"_edit_set_state", #GH 46017
"_edit_set_position", #GH 46018
"_edit_set_rect", #GH 46018
"get", #GH 46019
"instance_has", #GH 46020
"get_var", #GH 46096
@ -64,10 +69,7 @@ var function_exceptions : Array = [
"set_script", #GH 46120
"getvar", #GH 46019
"get_available_chars", #GH 46118
"set_primary_interface", #GH 46180
"add_feed", #GH 46181
"open_midi_inputs", #GH 46183
"get_unix_time_from_datetime", #GH 46188
"set_icon", #GH 46189
"get_latin_keyboard_variant", #GH TODO Memory Leak
"set_editor_hint", #GH 46252
@ -76,17 +78,14 @@ var function_exceptions : Array = [
"_range_click_timeout",
"draw", #GH 46648
"get_indexed", #GH 46019
"set_RGB_img", #GH 46724
"_set_RGB_img", #GH 46724
"_set_YCbCr_img", #GH 46724
"set_YCbCr_img", #GH 46724
"set_YCbCr_imgs", #GH 46724
"_set_YCbCr_imgs", #GH 46724
"_vp_input", # TODO
"_vp_unhandled_input", # TODO
"remove_joy_mapping", #GH 46754
"add_joy_mapping", #GH 46754
"add_vertex", #GH 47066
"create_client", # TODO, strange memory leak
"create_shape_owner", #47135
"shape_owner_get_owner", #47135
"collide", #GH 46137
"collide_and_get_contacts", #GH 46137
@ -102,6 +101,7 @@ var function_exceptions : Array = [
"_update_inputs", # Cause big spam with add_input
# Spam when i~1000 - change to specific
"update_bitmask_region",
"set_enabled_inputs",
# Slow Function
"_update_sky",
@ -190,7 +190,14 @@ var function_exceptions : Array = [
"raise",
"add_child",
"add_child_below_node",
"add_sibling",
]
var exported : Array = [
"get_bind_bone",
"get_bind_name",
"get_bind_pose",
]
# List of slow functions, which may frooze project(not simple executing each function alone)
var slow_functions : Array = [
"interpolate_baked",
@ -249,9 +256,19 @@ var disabled_classes : Array = [
"ProjectSettings", # Don't mess with project settings, because they can broke entire your workflow
"EditorSettings", # Also don't mess with editor settings
"_OS", # This may sometimes crash compositor, but it should be tested manually sometimes
"GDScript", # Broke script
# Godot 4.0 Leaks, crashes etc.
# This classes have problems with static/non static methods
"PhysicsDirectSpaceState",
"PhysicsDirectSpaceState2D",
"PhysicsDirectBodyState",
"PhysicsDirectBodyState2D",
"BulletPhysicsDirectSpaceState",
"InputDefault",
"IP_Unix",
"JNISingleton",
# Godot 4.0 Leaks, crashes etc.
"World3D",
"GPUParticlesCollisionHeightField", #4.0 Crash
"NavigationAgent2D",
@ -259,18 +276,51 @@ var disabled_classes : Array = [
"Image",
"GIProbe",
# Just don't use these because they are not normal things
"_Thread",
"_Semaphore",
"_Mutex",
"Image",
"PhysicalSkyMaterial", # Slow
"ProceduralSkyMaterial", # Slow
"PanoramaSkyMaterial", # Slow
]
# GH 47358
func _init():
function_exceptions.append_array(exported)
# Checks if function can be executed
# Looks at its arguments an
func check_if_is_allowed(method_data : Dictionary) -> bool:
# Function is virtual, so we just skip it
if method_data.get("flags") == method_data.get("flags") | METHOD_FLAG_VIRTUAL:
return false
for arg in method_data.get("args"):
var name_of_class : String = arg.get("class_name")
if name_of_class.is_empty():
continue
if name_of_class in disabled_classes:
return false
if name_of_class.find("Server") != -1 && ClassDB.class_exists(name_of_class) && !ClassDB.is_parent_class(name_of_class,"Reference"):
return false
if name_of_class.find("Editor") != -1: # TODO not sure about it
return false
#This is only for RegressionTestProject, because it needs for now clear visual info what is going on screen, but some nodes broke view
if regression_test_project:
if !ClassDB.is_parent_class(name_of_class, "Node") && !ClassDB.is_parent_class(name_of_class, "Reference"):
return false
# In case of adding new type, this prevents from crashing due not recognizing this type
var t : int = arg.get("type")
if t == TYPE_CALLABLE:
return false
elif !(t == TYPE_NIL|| t == TYPE_MAX|| t == TYPE_AABB|| t == TYPE_ARRAY|| t == TYPE_BASIS|| t == TYPE_BOOL|| t == TYPE_COLOR|| t == TYPE_COLOR_ARRAY|| t == TYPE_DICTIONARY|| t == TYPE_INT|| t == TYPE_INT32_ARRAY|| t == TYPE_INT64_ARRAY|| t == TYPE_NODE_PATH|| t == TYPE_OBJECT|| t == TYPE_PLANE|| t == TYPE_QUAT|| t == TYPE_RAW_ARRAY|| t == TYPE_FLOAT|| t == TYPE_FLOAT32_ARRAY|| t == TYPE_FLOAT64_ARRAY|| t == TYPE_RECT2|| t == TYPE_RECT2I|| t == TYPE_RID|| t == TYPE_STRING|| t == TYPE_STRING_NAME|| t == TYPE_STRING_ARRAY|| t == TYPE_TRANSFORM|| t == TYPE_TRANSFORM2D|| t == TYPE_VECTOR2|| t == TYPE_VECTOR2I|| t == TYPE_VECTOR2_ARRAY|| t == TYPE_VECTOR3|| t == TYPE_VECTOR3I|| t == TYPE_VECTOR3_ARRAY):
print("----------------------------------------------------------- TODO - MISSING TYPE, ADD SUPPORT IT")
return false
return true
# Return all available classes to instance and test
func get_list_of_available_classes(must_be_instantable : bool = true) -> Array:
var full_class_list : Array = Array(ClassDB.get_class_list())
@ -284,16 +334,18 @@ func get_list_of_available_classes(must_be_instantable : bool = true) -> Array:
continue
# if rr < 550:
# continue
# continue
#This is only for RegressionTestProject, because it needs for now clear visual info what is going on screen, but some nodes broke view
if regression_test_project:
if !ClassDB.is_parent_class(name_of_class, "Node") && !ClassDB.is_parent_class(name_of_class, "Reference"):
continue
if name_of_class.find("Server") != -1 && !ClassDB.is_parent_class(name_of_class,"Reference"):
continue
if name_of_class.find("Editor") != -1 || name_of_class == "GLTFMesh": # TODO not sure about it, GLTFMesh is Editor node
if name_of_class.find("Editor") != -1: # TODO not sure about it
continue
# Enable This for RegressionTestProject, to get visual info about what is going on the screen, because without it different nodes can broke view
if !ClassDB.is_parent_class(name_of_class, "Node") && !ClassDB.is_parent_class(name_of_class, "Reference"):
continue
if !must_be_instantable || ClassDB.can_instance(name_of_class):
classes.push_back(name_of_class)

View File

@ -1,21 +1,29 @@
extends Node
# Execute every object function
var debug_print: bool = true
var add_to_tree: bool = true # Adds nodes to tree
var add_to_tree: bool = false # Adds nodes to tree, freeze godot when removing a lot of nodes
var use_parent_methods: bool = false # Allows Node2D use Node methods etc. - it is a little slow option which rarely shows
var use_always_new_object: bool = true # Don't allow to "remeber" other function effects
var exiting: bool = true
func _ready() -> void:
tests_all_functions()
if BasicData.regression_test_project:
tests_all_functions()
func _process(_delta: float) -> void:
if !BasicData.regression_test_project:
tests_all_functions()
if exiting:
get_tree().quit()
# Test all functions
func tests_all_functions() -> void:
for name_of_class in BasicData.get_list_of_available_classes():
# Instance object to be able to execute on it specific functions and later delete to prevent memory leak if it is a Node
var object: Object = ClassDB.instance(name_of_class)
assert(object != null) # This should be checked before when collectiong functions
if add_to_tree:
if object is Node:
add_child(object)
@ -32,126 +40,37 @@ func tests_all_functions() -> void:
method_list.remove(index)
if debug_print:
print("############### CLASS ############### - " + name_of_class)
print("#################### " + name_of_class +" ####################")
for _i in range(1):
for method_data in method_list:
# Function is virtual, so we just skip it
if method_data.get("flags") == method_data.get("flags") | METHOD_FLAG_VIRTUAL:
if !BasicData.check_if_is_allowed(method_data):
continue
if debug_print:
print(name_of_class + "." + method_data.get("name"))
var arguments: Array = return_for_all(method_data)
var arguments: Array = ParseArgumentType.parse_and_return_objects(method_data, debug_print)
object.callv(method_data.get("name"), arguments)
for argument in arguments:
if argument is Object:
assert(argument != null)
if argument is Node:
argument.queue_free()
elif argument is Object && !(argument is Reference):
argument.free()
if argument is Node:
argument.queue_free()
elif argument is Object && !(argument is Reference):
argument.free()
if use_always_new_object:
if object is Object:
assert(object != null)
if object is Node:
object.queue_free()
elif object is Object && !(object is Reference):
object.free()
assert(object != null, "Object must be instantable")
if object is Node:
object.queue_free()
elif object is Object && !(object is Reference):
object.free()
object = ClassDB.instance(name_of_class)
if add_to_tree:
if object is Node:
add_child(object)
if object is Node: # Just prevent memory leak
if object is Node:
object.queue_free()
elif object is Object && !(object is Reference):
object.free()
func return_for_all(method_data: Dictionary) -> Array:
var arguments_array: Array = []
ValueCreator.number = 100
ValueCreator.random = false
ValueCreator.should_be_always_valid = false
for argument in method_data.get("args"):
var type = argument.get("type")
if type == TYPE_NIL: # Looks that this means VARIANT not null
arguments_array.push_back(false) # TODO Add some randomization
# assert(false)
elif type == TYPE_MAX:
assert(false)
elif type == TYPE_AABB:
arguments_array.push_back(ValueCreator.get_aabb())
elif type == TYPE_ARRAY:
arguments_array.push_back(ValueCreator.get_array())
elif type == TYPE_BASIS:
arguments_array.push_back(ValueCreator.get_basis())
elif type == TYPE_BOOL:
arguments_array.push_back(ValueCreator.get_bool())
elif type == TYPE_COLOR:
arguments_array.push_back(ValueCreator.get_color())
elif type == TYPE_COLOR_ARRAY:
arguments_array.push_back(PackedColorArray([]))
elif type == TYPE_DICTIONARY:
arguments_array.push_back(ValueCreator.get_dictionary())
elif type == TYPE_INT:
arguments_array.push_back(ValueCreator.get_int())
elif type == TYPE_INT32_ARRAY:
arguments_array.push_back(PackedInt32Array([]))
elif type == TYPE_INT64_ARRAY:
arguments_array.push_back(PackedInt64Array([]))
elif type == TYPE_NODE_PATH:
arguments_array.push_back(ValueCreator.get_nodepath())
elif type == TYPE_OBJECT:
arguments_array.push_back(ValueCreator.get_object(argument.get("class_name")))
elif type == TYPE_PLANE:
arguments_array.push_back(ValueCreator.get_plane())
elif type == TYPE_QUAT:
arguments_array.push_back(ValueCreator.get_quat())
elif type == TYPE_RAW_ARRAY:
arguments_array.push_back(PackedByteArray([]))
elif type == TYPE_FLOAT:
arguments_array.push_back(ValueCreator.get_float())
elif type == TYPE_FLOAT32_ARRAY:
arguments_array.push_back(PackedFloat32Array([]))
elif type == TYPE_FLOAT64_ARRAY:
arguments_array.push_back(PackedFloat64Array([]))
elif type == TYPE_RECT2:
arguments_array.push_back(ValueCreator.get_rect2())
elif type == TYPE_RECT2I:
arguments_array.push_back(ValueCreator.get_rect2i())
elif type == TYPE_RID:
arguments_array.push_back(RID())
elif type == TYPE_STRING:
arguments_array.push_back(ValueCreator.get_string())
elif type == TYPE_STRING_NAME:
arguments_array.push_back(StringName(ValueCreator.get_string()))
elif type == TYPE_STRING_ARRAY:
arguments_array.push_back(PackedStringArray([]))
elif type == TYPE_TRANSFORM:
arguments_array.push_back(ValueCreator.get_transform())
elif type == TYPE_TRANSFORM2D:
arguments_array.push_back(ValueCreator.get_transform2D())
elif type == TYPE_VECTOR2:
arguments_array.push_back(ValueCreator.get_vector2())
elif type == TYPE_VECTOR2I:
arguments_array.push_back(ValueCreator.get_vector2i())
elif type == TYPE_VECTOR2_ARRAY:
arguments_array.push_back(PackedVector2Array([]))
elif type == TYPE_VECTOR3:
arguments_array.push_back(ValueCreator.get_vector3())
elif type == TYPE_VECTOR3I:
arguments_array.push_back(ValueCreator.get_vector3i())
elif type == TYPE_VECTOR3_ARRAY:
arguments_array.push_back(PackedVector3Array([]))
elif type== TYPE_CALLABLE:
arguments_array.push_back(Callable(BoxMesh.new(),"Rar"))
else:
assert(false) # Missed some types, add it
if debug_print:
print("Parameters " + str(arguments_array))
return arguments_array

View File

@ -2,5 +2,5 @@
[ext_resource path="res://AutomaticBugs/FunctionExecutor.gd" type="Script" id=1]
[node name="FunctionExecutor" type="Node2D"]
[node name="FunctionExecutor" type="Node"]
script = ExtResource( 1 )

View File

@ -0,0 +1,236 @@
extends Node
# Parse arguments and return needed info/objects etc.
class SingleArgument:
var name: String # E.G. var roman, can be empty, so temp variable isn't created(nodes and objects must be created with temp_variable due to memory leaks)
var type: String # np. Vector2 or Object
var value: String # np. randi() % 100 or
var is_object: bool = false # Check if this is object e.g. Node not Vector2
var is_only_object: bool = false # Only needs to freed with .free()
var is_only_reference: bool = false # Don't needs to be removed manually
var is_only_node: bool = false # Needs to be removed with .queue_free()
func create_gdscript_arguments(arguments: Array) -> Array:
var argument_array: Array = []
ValueCreator.number = 10
ValueCreator.random = true
ValueCreator.should_be_always_valid = true # DO NOT CHANGE, BECAUSE NON VALID VALUES WILL SHOW GDSCRIPT ERRORS!
var counter = 0
for argument in arguments:
var typ = argument.get("type")
counter += 1
var sa: SingleArgument = SingleArgument.new()
sa.name = "variable" + str(counter)
if typ == TYPE_NIL: # Looks that this means VARIANT not null
sa.type = "Variant"
sa.value = "false"
elif typ ==TYPE_AABB:
sa.type = "AABB"
sa.value = ValueCreator.get_aabb_string()
elif typ ==TYPE_ARRAY:
sa.type = "Array"
sa.value = "[]"
elif typ ==TYPE_BASIS:
sa.type = "Basis"
sa.value = ValueCreator.get_basis_string()
elif typ ==TYPE_BOOL:
sa.type = "bool"
sa.value = ValueCreator.get_bool_string().to_lower()
elif typ ==TYPE_COLOR:
sa.type = "Color"
sa.value = ValueCreator.get_color_string()
elif typ ==TYPE_COLOR_ARRAY:
sa.type = "PackedColorArray"
sa.value = "PackedColorArray([])"
elif typ ==TYPE_DICTIONARY:
sa.type = "Dictionary"
sa.value = "{}" # TODO Why not all use ValueCreator?
elif typ ==TYPE_INT:
sa.type = "int"
sa.value = ValueCreator.get_int_string()
elif typ ==TYPE_INT32_ARRAY:
sa.type = "PackedInt32Array"
sa.value = "PackedInt32Array([])"
elif typ ==TYPE_INT64_ARRAY:
sa.type = "PackedInt64Array"
sa.value = "PackedInt64Array([])"
elif typ ==TYPE_NODE_PATH:
sa.type = "NodePath"
sa.value = "NodePath(\".\")"
elif typ ==TYPE_OBJECT:
sa.type = ValueCreator.get_object_string(argument.get("class_name"))
sa.value = sa.type + ".new()"
sa.is_object = true
if ClassDB.is_parent_class(sa.type, "Node"):
sa.is_only_node = true
elif ClassDB.is_parent_class(sa.type, "Reference"):
sa.is_only_reference = true
else:
sa.is_only_object = true
elif typ ==TYPE_PLANE:
sa.type = "Plane"
sa.value = ValueCreator.get_plane_string()
elif typ ==TYPE_QUAT:
sa.type = "Quat"
sa.value = ValueCreator.get_quat_string()
elif typ ==TYPE_RAW_ARRAY:
sa.type = "PackedByteArray"
sa.value = "PackedByteArray([])"
elif typ ==TYPE_FLOAT:
sa.type = "float"
sa.value = ValueCreator.get_float_string()
elif typ ==TYPE_FLOAT32_ARRAY:
sa.type = "PackedFloat32Array"
sa.value = "PackedFloat32Array([])"
elif typ ==TYPE_FLOAT64_ARRAY:
sa.type = "PackedFloat64Array"
sa.value = "PackedFloat64Array([])"
elif typ ==TYPE_RECT2:
sa.type = "Rect2"
sa.value = ValueCreator.get_rect2_string()
elif typ ==TYPE_RID:
sa.type = "RID"
sa.value = "RID()"
elif typ ==TYPE_STRING:
sa.type = "String"
sa.value = ValueCreator.get_string_string()
elif typ ==TYPE_STRING_NAME:
sa.type = "StringName"
sa.value = StringName(ValueCreator.get_string_string())
elif typ ==TYPE_STRING_ARRAY:
sa.type = "PackedStringArray"
sa.value = "PackedStringArray([])"
elif typ ==TYPE_TRANSFORM:
sa.type = "Transform"
sa.value = ValueCreator.get_transform_string()
elif typ ==TYPE_TRANSFORM2D:
sa.type = "Transform2D"
sa.value = ValueCreator.get_transform2D_string()
elif typ ==TYPE_VECTOR2:
sa.type = "Vector2"
sa.value = ValueCreator.get_vector2_string()
elif typ ==TYPE_VECTOR2_ARRAY:
sa.type = "PackedVector2Array"
sa.value = "PackedVector2Array([])"
elif typ ==TYPE_VECTOR2I:
sa.type = "Vector2i"
sa.value = ValueCreator.get_vector2i_string()
elif typ ==TYPE_VECTOR3:
sa.type = "Vector3"
sa.value = ValueCreator.get_vector3_string()
elif typ ==TYPE_VECTOR3_ARRAY:
sa.type = "PackedVector3Array"
sa.value = "PackedVector3Array([])"
elif typ ==TYPE_VECTOR3I:
sa.type = "Vector3i"
sa.value = ValueCreator.get_vector3i_string()
elif typ ==TYPE_RECT2I:
sa.type = "Rect2i"
sa.value = ValueCreator.get_rect2i_string()
elif typ ==TYPE_CALLABLE:
sa.type= "Callable"
sa.value = """Callable(BoxMesh.new(),StringName("a"))"""
else:
print("Missing " + str(argument) )
assert(false) # Missed some types, add it
argument_array.append(sa)
return argument_array
func parse_and_return_objects(method_data: Dictionary, debug_print: bool = false) -> Array:
var arguments_array: Array = []
if BasicData.regression_test_project:
ValueCreator.number = 100
ValueCreator.random = false # Results in RegressionTestProject must be always reproducible
else:
ValueCreator.number = 1000
ValueCreator.random = true
ValueCreator.should_be_always_valid = false
for argument in method_data.get("args"):
var type = argument.get("type")
if type == TYPE_NIL: # Looks that this means VARIANT not null
arguments_array.push_back(false) # TODO Add some randomization
# assert(false)
elif type == TYPE_MAX:
assert(false)
elif type == TYPE_AABB:
arguments_array.push_back(ValueCreator.get_aabb())
elif type == TYPE_ARRAY:
arguments_array.push_back(ValueCreator.get_array())
elif type == TYPE_BASIS:
arguments_array.push_back(ValueCreator.get_basis())
elif type == TYPE_BOOL:
arguments_array.push_back(ValueCreator.get_bool())
elif type == TYPE_COLOR:
arguments_array.push_back(ValueCreator.get_color())
elif type == TYPE_COLOR_ARRAY:
arguments_array.push_back(PackedColorArray([]))
elif type == TYPE_DICTIONARY:
arguments_array.push_back(ValueCreator.get_dictionary())
elif type == TYPE_INT:
arguments_array.push_back(ValueCreator.get_int())
elif type == TYPE_INT32_ARRAY:
arguments_array.push_back(PackedInt32Array([]))
elif type == TYPE_INT64_ARRAY:
arguments_array.push_back(PackedInt64Array([]))
elif type == TYPE_NODE_PATH:
arguments_array.push_back(ValueCreator.get_nodepath())
elif type == TYPE_OBJECT:
arguments_array.push_back(ValueCreator.get_object(argument.get("class_name")))
elif type == TYPE_PLANE:
arguments_array.push_back(ValueCreator.get_plane())
elif type == TYPE_QUAT:
arguments_array.push_back(ValueCreator.get_quat())
elif type == TYPE_RAW_ARRAY:
arguments_array.push_back(PackedByteArray([]))
elif type == TYPE_FLOAT:
arguments_array.push_back(ValueCreator.get_float())
elif type == TYPE_FLOAT32_ARRAY:
arguments_array.push_back(PackedFloat32Array([]))
elif type == TYPE_FLOAT64_ARRAY:
arguments_array.push_back(PackedFloat64Array([]))
elif type == TYPE_RECT2:
arguments_array.push_back(ValueCreator.get_rect2())
elif type == TYPE_RECT2I:
arguments_array.push_back(ValueCreator.get_rect2i())
elif type == TYPE_RID:
arguments_array.push_back(RID())
elif type == TYPE_STRING:
arguments_array.push_back(ValueCreator.get_string())
elif type == TYPE_STRING_NAME:
arguments_array.push_back(StringName(ValueCreator.get_string()))
elif type == TYPE_STRING_ARRAY:
arguments_array.push_back(PackedStringArray([]))
elif type == TYPE_TRANSFORM:
arguments_array.push_back(ValueCreator.get_transform())
elif type == TYPE_TRANSFORM2D:
arguments_array.push_back(ValueCreator.get_transform2D())
elif type == TYPE_VECTOR2:
arguments_array.push_back(ValueCreator.get_vector2())
elif type == TYPE_VECTOR2I:
arguments_array.push_back(ValueCreator.get_vector2i())
elif type == TYPE_VECTOR2_ARRAY:
arguments_array.push_back(PackedVector2Array([]))
elif type == TYPE_VECTOR3:
arguments_array.push_back(ValueCreator.get_vector3())
elif type == TYPE_VECTOR3I:
arguments_array.push_back(ValueCreator.get_vector3i())
elif type == TYPE_VECTOR3_ARRAY:
arguments_array.push_back(PackedVector3Array([]))
elif type== TYPE_CALLABLE:
arguments_array.push_back(Callable(BoxMesh.new(),"Rar"))
else:
assert(false) # Missed some types, add it
if debug_print:
print("Parameters " + str(arguments_array))
return arguments_array

View File

@ -1,5 +1,6 @@
extends Node
# Creates random or not objects, variables etc.
var number: float = 0.0
var random: bool = false
var should_be_always_valid: bool = true # Generate only valid values e.g. to Node generate Node2D instead
@ -219,9 +220,9 @@ func get_Packed_color_array() -> PackedColorArray:
func get_object(object_name: String) -> Object:
assert(ClassDB.class_exists(object_name))
if object_name == "PhysicsDirectSpaceState" || object_name == "Physics2DDirectSpaceState":
return BoxMesh.new()
assert(ClassDB.class_exists(object_name), "Class doesn't exists.")
if object_name == "PhysicsDirectSpaceState3D" || object_name == "PhysicsDirectSpaceState2D" :
return BoxShape3D.new()
var a = 0
if random:
@ -242,14 +243,14 @@ func get_object(object_name: String) -> Object:
var to_use_classes = ClassDB.get_inheriters_from_class(object_name)
to_use_classes.append(object_name)
if !ClassDB.can_instance(object_name) && object_name in BasicData.disabled_classes:
assert(to_use_classes.size() > 0)
assert(to_use_classes.size() > 0, "Cannot find proper instantable child for ")
while true:
a += 1
if a > 50:
# Object doesn't have children which can be instanced
# This shouldn't happens, but sadly happen with e.g. SpatialGizmo
assert(false)
assert(false, "Cannot find proper instantable child for ")
var choosen_class: String = to_use_classes[randi() % to_use_classes.size()]
if ClassDB.can_instance(choosen_class) && !(choosen_class in BasicData.disabled_classes):
return ClassDB.instance(choosen_class)
@ -257,7 +258,7 @@ func get_object(object_name: String) -> Object:
while true:
a += 1
if a > 50:
assert(false)
assert(false, "Cannot find proper instantable child for ")
var choosen_class: String = classes[randi() % classes.size()]
if ClassDB.can_instance(choosen_class) && !ClassDB.is_parent_class(choosen_class, object_name) && !(choosen_class in BasicData.disabled_classes):
return ClassDB.instance(choosen_class)
@ -266,14 +267,14 @@ func get_object(object_name: String) -> Object:
var to_use_classes = ClassDB.get_inheriters_from_class(object_name)
to_use_classes.append(object_name)
if !ClassDB.can_instance(object_name) && object_name in BasicData.disabled_classes:
assert(to_use_classes.size() > 0)
assert(to_use_classes.size() > 0, "Cannot find proper instantable child for ")
while true:
a += 1
if a > 50:
# Object doesn't have children which can be instanced
# This shouldn't happens, but sadly happen with e.g. SpatialGizmo
assert(false)
assert(false, "Cannot find proper instantable child for ")
var choosen_class: String = to_use_classes[randi() % to_use_classes.size()]
if ClassDB.can_instance(choosen_class) && !(choosen_class in BasicData.disabled_classes):
return ClassDB.instance(choosen_class)
@ -283,14 +284,14 @@ func get_object(object_name: String) -> Object:
return ClassDB.instance(object_name)
else: # Found child of non instantable object
var list_of_class = ClassDB.get_inheriters_from_class(object_name)
assert(list_of_class.size() > 0) # Number of inherited class of non instantable class must be greater than 0, otherwise this function would be useless
assert(list_of_class.size() > 0, "Cannot find proper instantable child for ") # Number of inherited class of non instantable class must be greater than 0, otherwise this function would be useless
for i in list_of_class:
if ClassDB.can_instance(i) && (ClassDB.is_parent_class(i, "Node") || ClassDB.is_parent_class(i, "Reference")):
return ClassDB.instance(i)
assert(false)
assert(false, "Cannot find proper instantable child for ")
assert(false)
return BoxMesh.new()
assert(false, "Cannot find proper instantable child for ")
return BoxShape3D.new()
# TODO Update this with upper implementation
@ -312,14 +313,14 @@ func get_object_string(object_name: String) -> String:
var to_use_classes = ClassDB.get_inheriters_from_class(object_name)
to_use_classes.append(object_name)
if !ClassDB.can_instance(object_name):
assert(to_use_classes.size() > 0)
assert(to_use_classes.size() > 0, "Cannot find proper instantable child for ")
while true:
a += 1
if a > 30:
# Object doesn't have children which can be instanced
# This shouldn't happens, but sadly happen with e.g. SpatialGizmo
assert(false)
assert(false, "Cannot find proper instantable child for ")
var choosen_class: String = to_use_classes[randi() % to_use_classes.size()]
if ClassDB.can_instance(choosen_class):
return choosen_class
@ -327,7 +328,7 @@ func get_object_string(object_name: String) -> String:
while true:
a += 1
if a > 30:
assert(false)
assert(false, "Cannot find proper instantable child for ")
var choosen_class: String = classes[randi() % classes.size()]
if !ClassDB.is_parent_class(choosen_class, object_name):
return choosen_class
@ -336,14 +337,14 @@ func get_object_string(object_name: String) -> String:
var to_use_classes = ClassDB.get_inheriters_from_class(object_name)
to_use_classes.append(object_name)
if !ClassDB.can_instance(object_name) && object_name in BasicData.disabled_classes:
assert(to_use_classes.size() > 0)
assert(to_use_classes.size() > 0, "Cannot find proper instantable child for ")
while true:
a += 1
if a > 50:
# Object doesn't have children which can be instanced
# This shouldn't happens, but sadly happen with e.g. SpatialGizmo
assert(false)
assert(false, "Cannot find proper instantable child for ")
var choosen_class: String = to_use_classes[randi() % to_use_classes.size()]
if ClassDB.can_instance(choosen_class) && !(choosen_class in BasicData.disabled_classes):
return choosen_class
@ -353,11 +354,11 @@ func get_object_string(object_name: String) -> String:
return object_name
else: # Found child of non instantable object
var list_of_class = ClassDB.get_inheriters_from_class(object_name)
assert(list_of_class.size() > 0) # Number of inherited class of non instantable class must be greater than 0, otherwise this function would be useless
assert(list_of_class.size() > 0, "Cannot find proper instantable child for ") # Number of inherited class of non instantable class must be greater than 0, otherwise this function would be useless
for i in list_of_class:
if ClassDB.can_instance(i) && (ClassDB.is_parent_class(i, "Node") || ClassDB.is_parent_class(i, "Reference")):
return i
assert(false)
assert(false, "Cannot find proper instantable child for ")
assert(false)
assert(false, "Cannot find proper instantable child for ")
return "BoxMesh"

View File

@ -48,7 +48,7 @@ func _process(delta: float) -> void:
if time_to_delete < 0:
time_to_delete += TIME_TO_DELETE
# for i in get_children():
# i.queue_free()
#
# _populate()
for i in get_children():
i.queue_free()
_populate()

View File

@ -1,22 +1,19 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://icon.png" type="Texture2D" id=1]
[ext_resource path="res://icon.png" type="Texture" id=1]
[ext_resource path="res://Physics/2D/Area2D.gd" type="Script" id=2]
[node name="Area2D" type="Area2D"]
script = ExtResource( 2 )
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."]
polygon = PackedVector2Array( 4.018, -13.1782, -15.9057, 3.23778, 1.63277, 17.5492, 19.3115, 2.39594 )
script = null
polygon = PoolVector2Array( 4.018, -13.1782, -15.9057, 3.23778, 1.63277, 17.5492, 19.3115, 2.39594 )
[node name="CollisionPolygon2D2" type="CollisionPolygon2D" parent="."]
polygon = PackedVector2Array( -4.58427, -16.8342, -20.5974, -4.94143, -8.23639, 16.784, 20.4187, 13.5065 )
script = null
polygon = PoolVector2Array( -4.58427, -16.8342, -20.5974, -4.94143, -8.23639, 16.784, 20.4187, 13.5065 )
[node name="Sprite" type="Sprite2D" parent="."]
[node name="Sprite" type="Sprite" parent="."]
texture = ExtResource( 1 )
script = null
[connection signal="area_entered" from="." to="." method="_on_Area2D_area_entered"]
[connection signal="body_entered" from="." to="." method="_on_Area2D_body_entered"]

View File

@ -60,14 +60,14 @@ func _process(delta: float) -> void:
var random_node = find_node("Special Node " + str(randi() % number_of_nodes),true,false)
parent_of_node.remove_child(choosen_node)
# if randi() % 10 == 0: # 10% chance to remove node with children
# var names_to_remove : Array = find_all_special_children_names(choosen_node)
# for name_to_remove in names_to_remove:
# var node : Node = ClassDB.instance(collected_nodes[randi() % collected_nodes.size()])
# node.set_name(name_to_remove)
# add_child(node)
# choosen_node.queue_free()
# continue
if randi() % 6 == 0: # 16% chance to remove node with children
var names_to_remove : Array = find_all_special_children_names(choosen_node)
for name_to_remove in names_to_remove:
var node : Node = ClassDB.instance(collected_nodes[randi() % collected_nodes.size()])
node.set_name(name_to_remove)
add_child(node)
choosen_node.queue_free()
continue
if choosen_node.find_node(random_node.get_name(),true,false) != null: # Cannot set as node parent one of its child

View File

@ -1,18 +0,0 @@
extends Label
const TIME : float = 0.1
var time_to_stop : float = TIME
var current_type : int = 0
func _process(delta: float) -> void:
time_to_stop -= delta
if time_to_stop < 0:
time_to_stop = TIME
current_type += 1
current_type %= 2
if current_type == 0:
set_text("ŚWIERSZCZ NAD GŻEGŻÓŁKĄ W ŻÓŁCI")
else:
text += "AQWAMARYNA"

View File

@ -1,12 +0,0 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://Text/Label.gd" type="Script" id=1]
[node name="Label" type="Label"]
margin_right = 83.0
margin_bottom = 14.0
text = "Stomatologia"
script = ExtResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}

View File

@ -1,18 +0,0 @@
extends RichTextLabel
const TIME : float = 0.1
var time_to_stop : float = TIME
var current_type : int = 0
func _process(delta: float) -> void:
time_to_stop -= delta
if time_to_stop < 0:
time_to_stop = TIME
current_type += 1
current_type %= 2
if current_type == 0:
set_text("ŚWIERSZCZ NAD GŻEGŻÓŁKĄ W ŻÓŁCI, Świeci nad Źrebięciem w ciągu szeleszczącej burzy")
else:
text += "AQWAMARYNA JEST ZROBIONA Z KROMKI PO MAŚLE I NAD REDUNDANCJĄ TRZEBA ZROBIĆ DWIE ABY SIĘ NIE POŚLIZGNĄĆ"

View File

@ -1,15 +0,0 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://Text/RichTextLabel.gd" type="Script" id=1]
[node name="RichTextLabel" type="RichTextLabel"]
anchor_right = 1.0
anchor_bottom = 1.0
size_flags_horizontal = 3
size_flags_vertical = 3
bbcode_text = "Szyszka"
text = "Szyszka"
script = ExtResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}

View File

@ -1,27 +0,0 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://Text/RichTextLabel.tscn" type="PackedScene" id=1]
[ext_resource path="res://Text/Label.tscn" type="PackedScene" id=2]
[node name="Text" type="GridContainer"]
anchor_right = 1.0
anchor_bottom = 1.0
columns = 5
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Label" parent="." instance=ExtResource( 2 )]
margin_top = 293.0
margin_bottom = 307.0
[node name="RichTextLabel" parent="." instance=ExtResource( 1 )]
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 87.0
margin_right = 321.0
margin_bottom = 600.0
bbcode_text = "Roman
"
text = "Roman
"

View File

@ -29,8 +29,6 @@ if (
print("FATAL ERROR: Godot has been crashed.")
sys.exit(1)
sys.exit(0)
# Finding memory leaks in Godot is quite difficult, because we need to take into
# account leaks also in external libraries. They are usually provided without
# debugging symbols, so the leak report from it usually has only 2/3 lines,

View File

@ -28,6 +28,7 @@ config/icon="res://icon.png"
Autoload="*res://Autoload/Autoload.gd"
ValueCreator="*res://AutomaticBugs/ValueCreator.gd"
BasicData="*res://AutomaticBugs/BasicData.gd"
ParseArgumentType="*res://AutomaticBugs/ParseArgumentType.gd"
[debug]