Browse Source

Update 2D Skeleton demo for Godot 4.1 (#976)

David Briscoe 1 year ago
parent
commit
757cc4261c

+ 1 - 1
2d/skeleton/README.md

@@ -6,7 +6,7 @@ there is a simple character controller that controls the animations.
 
 
 Language: GDScript
 Language: GDScript
 
 
-Renderer: GLES 2
+Renderer: GL Compatibility
 
 
 Check out this demo on the asset library: https://godotengine.org/asset-library/asset/1027
 Check out this demo on the asset library: https://godotengine.org/asset-library/asset/1027
 
 

File diff suppressed because it is too large
+ 8 - 766
2d/skeleton/level.tscn


+ 1 - 1
2d/skeleton/level/background/cloud_1.png.import

@@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/cloud_1.png-d9f3821e0d58b8b79ac7a8bc81287ae8.
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
+compress/high_quality=false
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_compression=1
 compress/hdr_compression=1
-compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 compress/channel_pack=0
 compress/channel_pack=0
 mipmaps/generate=false
 mipmaps/generate=false

+ 1 - 1
2d/skeleton/level/background/cloud_2.png.import

@@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/cloud_2.png-1b2bb3f73839db8c5ad1d01ad2876ab2.
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
+compress/high_quality=false
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_compression=1
 compress/hdr_compression=1
-compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 compress/channel_pack=0
 compress/channel_pack=0
 mipmaps/generate=false
 mipmaps/generate=false

+ 1 - 1
2d/skeleton/level/background/cloud_3.png.import

@@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/cloud_3.png-a4ce274fb6c38e3b05e8f88cf8cfffb6.
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
+compress/high_quality=false
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_compression=1
 compress/hdr_compression=1
-compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 compress/channel_pack=0
 compress/channel_pack=0
 mipmaps/generate=false
 mipmaps/generate=false

+ 1 - 1
2d/skeleton/level/background/distant_platforms_1.png.import

@@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/distant_platforms_1.png-34bd3c6d35ad3a7b690f0
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
+compress/high_quality=false
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_compression=1
 compress/hdr_compression=1
-compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 compress/channel_pack=0
 compress/channel_pack=0
 mipmaps/generate=false
 mipmaps/generate=false

+ 1 - 1
2d/skeleton/level/background/distant_platforms_2.png.import

@@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/distant_platforms_2.png-2ecd927ea77506f4ec1f3
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
+compress/high_quality=false
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_compression=1
 compress/hdr_compression=1
-compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 compress/channel_pack=0
 compress/channel_pack=0
 mipmaps/generate=false
 mipmaps/generate=false

+ 1 - 1
2d/skeleton/level/background/sky.png.import

@@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/sky.png-c2b26f59be93d20195841091d4bd6a50.ctex
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
+compress/high_quality=false
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_compression=1
 compress/hdr_compression=1
-compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 compress/channel_pack=0
 compress/channel_pack=0
 mipmaps/generate=false
 mipmaps/generate=false

+ 7 - 12
2d/skeleton/level/level.gd

@@ -1,15 +1,10 @@
 extends Node2D
 extends Node2D
 
 
-const LIMIT_LEFT = -315
-const LIMIT_TOP = -250
-const LIMIT_RIGHT = 955
-const LIMIT_BOTTOM = 690
-
 func _ready():
 func _ready():
-	for child in get_children():
-		if child is Player:
-			var camera = child.get_node(^"Camera2D")
-			camera.limit_left = LIMIT_LEFT
-			camera.limit_top = LIMIT_TOP
-			camera.limit_right = LIMIT_RIGHT
-			camera.limit_bottom = LIMIT_BOTTOM
+	var camera = find_child("Camera2D")
+	var min_pos = $CameraLimit_min.global_position
+	var max_pos = $CameraLimit_max.global_position
+	camera.limit_left = min_pos.x
+	camera.limit_top = min_pos.y
+	camera.limit_right = max_pos.x
+	camera.limit_bottom = max_pos.y

+ 51 - 41
2d/skeleton/level/background.tscn → 2d/skeleton/level/parallax_background.tscn

@@ -1,25 +1,29 @@
-[gd_scene load_steps=7 format=2]
+[gd_scene load_steps=7 format=3 uid="uid://c1n07vnm2brb8"]
 
 
-[ext_resource path="res://level/background/distant_platforms_2.png" type="Texture2D" id=1]
-[ext_resource path="res://level/background/sky.png" type="Texture2D" id=2]
-[ext_resource path="res://level/background/cloud_1.png" type="Texture2D" id=3]
-[ext_resource path="res://level/background/cloud_2.png" type="Texture2D" id=4]
-[ext_resource path="res://level/background/cloud_3.png" type="Texture2D" id=5]
-[ext_resource path="res://level/background/distant_platforms_1.png" type="Texture2D" id=6]
+[ext_resource type="Texture2D" uid="uid://do8unqmg6yew6" path="res://level/background/distant_platforms_2.png" id="1"]
+[ext_resource type="Texture2D" uid="uid://c8jm7s3tbb3b" path="res://level/background/sky.png" id="2"]
+[ext_resource type="Texture2D" uid="uid://j28pf8bfgty" path="res://level/background/cloud_1.png" id="3"]
+[ext_resource type="Texture2D" uid="uid://kreppu5t30jn" path="res://level/background/cloud_2.png" id="4"]
+[ext_resource type="Texture2D" uid="uid://bwhwlduoqnb15" path="res://level/background/cloud_3.png" id="5"]
+[ext_resource type="Texture2D" uid="uid://b4lffygwgc7vy" path="res://level/background/distant_platforms_1.png" id="6"]
 
 
 [node name="ParallaxBackground" type="ParallaxBackground"]
 [node name="ParallaxBackground" type="ParallaxBackground"]
-scroll_base_scale = Vector2(0.4, 0)
+follow_viewport_enabled = true
+scroll_base_scale = Vector2(0.2, 0)
 
 
 [node name="Sky" type="ParallaxLayer" parent="."]
 [node name="Sky" type="ParallaxLayer" parent="."]
+motion_scale = Vector2(1, 0)
+motion_offset = Vector2(0, -15)
 motion_mirroring = Vector2(400, 0)
 motion_mirroring = Vector2(400, 0)
 
 
 [node name="Sprite2D" type="Sprite2D" parent="Sky"]
 [node name="Sprite2D" type="Sprite2D" parent="Sky"]
-scale = Vector2(64, 0.94)
-texture = ExtResource( 2 )
+position = Vector2(0, -80)
+scale = Vector2(136.169, 2)
+texture = ExtResource("2")
 centered = false
 centered = false
 
 
 [node name="Clouds" type="ParallaxLayer" parent="."]
 [node name="Clouds" type="ParallaxLayer" parent="."]
-motion_scale = Vector2(0.1, 1)
+motion_scale = Vector2(0.1, 0.3)
 motion_offset = Vector2(-550, 0)
 motion_offset = Vector2(-550, 0)
 
 
 [node name="CloudGroup1" type="Node2D" parent="Clouds"]
 [node name="CloudGroup1" type="Node2D" parent="Clouds"]
@@ -27,64 +31,64 @@ position = Vector2(-780, 0)
 
 
 [node name="Sprite1" type="Sprite2D" parent="Clouds/CloudGroup1"]
 [node name="Sprite1" type="Sprite2D" parent="Clouds/CloudGroup1"]
 position = Vector2(-200, 120)
 position = Vector2(-200, 120)
-texture = ExtResource( 3 )
+texture = ExtResource("3")
 centered = false
 centered = false
 
 
 [node name="Sprite2" type="Sprite2D" parent="Clouds/CloudGroup1"]
 [node name="Sprite2" type="Sprite2D" parent="Clouds/CloudGroup1"]
 position = Vector2(100, 10)
 position = Vector2(100, 10)
-texture = ExtResource( 3 )
+texture = ExtResource("3")
 centered = false
 centered = false
 
 
 [node name="Sprite3" type="Sprite2D" parent="Clouds/CloudGroup1"]
 [node name="Sprite3" type="Sprite2D" parent="Clouds/CloudGroup1"]
 position = Vector2(-60, 40)
 position = Vector2(-60, 40)
-texture = ExtResource( 4 )
+texture = ExtResource("4")
 centered = false
 centered = false
 
 
 [node name="Sprite4" type="Sprite2D" parent="Clouds/CloudGroup1"]
 [node name="Sprite4" type="Sprite2D" parent="Clouds/CloudGroup1"]
 position = Vector2(150, 65)
 position = Vector2(150, 65)
-texture = ExtResource( 4 )
+texture = ExtResource("4")
 centered = false
 centered = false
 
 
 [node name="Sprite5" type="Sprite2D" parent="Clouds/CloudGroup1"]
 [node name="Sprite5" type="Sprite2D" parent="Clouds/CloudGroup1"]
 position = Vector2(15, 75)
 position = Vector2(15, 75)
-texture = ExtResource( 5 )
+texture = ExtResource("5")
 centered = false
 centered = false
 
 
 [node name="Sprite6" type="Sprite2D" parent="Clouds/CloudGroup1"]
 [node name="Sprite6" type="Sprite2D" parent="Clouds/CloudGroup1"]
 position = Vector2(225, 35)
 position = Vector2(225, 35)
-texture = ExtResource( 5 )
+texture = ExtResource("5")
 centered = false
 centered = false
 
 
 [node name="CloudGroup2" type="Node2D" parent="Clouds"]
 [node name="CloudGroup2" type="Node2D" parent="Clouds"]
 
 
 [node name="Sprite1" type="Sprite2D" parent="Clouds/CloudGroup2"]
 [node name="Sprite1" type="Sprite2D" parent="Clouds/CloudGroup2"]
 position = Vector2(-200, 120)
 position = Vector2(-200, 120)
-texture = ExtResource( 3 )
+texture = ExtResource("3")
 centered = false
 centered = false
 
 
 [node name="Sprite2" type="Sprite2D" parent="Clouds/CloudGroup2"]
 [node name="Sprite2" type="Sprite2D" parent="Clouds/CloudGroup2"]
 position = Vector2(100, 10)
 position = Vector2(100, 10)
-texture = ExtResource( 3 )
+texture = ExtResource("3")
 centered = false
 centered = false
 
 
 [node name="Sprite3" type="Sprite2D" parent="Clouds/CloudGroup2"]
 [node name="Sprite3" type="Sprite2D" parent="Clouds/CloudGroup2"]
 position = Vector2(-60, 40)
 position = Vector2(-60, 40)
-texture = ExtResource( 4 )
+texture = ExtResource("4")
 centered = false
 centered = false
 
 
 [node name="Sprite4" type="Sprite2D" parent="Clouds/CloudGroup2"]
 [node name="Sprite4" type="Sprite2D" parent="Clouds/CloudGroup2"]
 position = Vector2(150, 65)
 position = Vector2(150, 65)
-texture = ExtResource( 4 )
+texture = ExtResource("4")
 centered = false
 centered = false
 
 
 [node name="Sprite5" type="Sprite2D" parent="Clouds/CloudGroup2"]
 [node name="Sprite5" type="Sprite2D" parent="Clouds/CloudGroup2"]
 position = Vector2(15, 75)
 position = Vector2(15, 75)
-texture = ExtResource( 5 )
+texture = ExtResource("5")
 centered = false
 centered = false
 
 
 [node name="Sprite6" type="Sprite2D" parent="Clouds/CloudGroup2"]
 [node name="Sprite6" type="Sprite2D" parent="Clouds/CloudGroup2"]
 position = Vector2(225, 35)
 position = Vector2(225, 35)
-texture = ExtResource( 5 )
+texture = ExtResource("5")
 centered = false
 centered = false
 
 
 [node name="CloudGroup3" type="Node2D" parent="Clouds"]
 [node name="CloudGroup3" type="Node2D" parent="Clouds"]
@@ -92,32 +96,32 @@ position = Vector2(390, 0)
 
 
 [node name="Sprite1" type="Sprite2D" parent="Clouds/CloudGroup3"]
 [node name="Sprite1" type="Sprite2D" parent="Clouds/CloudGroup3"]
 position = Vector2(-200, 120)
 position = Vector2(-200, 120)
-texture = ExtResource( 3 )
+texture = ExtResource("3")
 centered = false
 centered = false
 
 
 [node name="Sprite2" type="Sprite2D" parent="Clouds/CloudGroup3"]
 [node name="Sprite2" type="Sprite2D" parent="Clouds/CloudGroup3"]
 position = Vector2(100, 10)
 position = Vector2(100, 10)
-texture = ExtResource( 3 )
+texture = ExtResource("3")
 centered = false
 centered = false
 
 
 [node name="Sprite3" type="Sprite2D" parent="Clouds/CloudGroup3"]
 [node name="Sprite3" type="Sprite2D" parent="Clouds/CloudGroup3"]
 position = Vector2(-60, 40)
 position = Vector2(-60, 40)
-texture = ExtResource( 4 )
+texture = ExtResource("4")
 centered = false
 centered = false
 
 
 [node name="Sprite4" type="Sprite2D" parent="Clouds/CloudGroup3"]
 [node name="Sprite4" type="Sprite2D" parent="Clouds/CloudGroup3"]
 position = Vector2(150, 65)
 position = Vector2(150, 65)
-texture = ExtResource( 4 )
+texture = ExtResource("4")
 centered = false
 centered = false
 
 
 [node name="Sprite5" type="Sprite2D" parent="Clouds/CloudGroup3"]
 [node name="Sprite5" type="Sprite2D" parent="Clouds/CloudGroup3"]
 position = Vector2(15, 75)
 position = Vector2(15, 75)
-texture = ExtResource( 5 )
+texture = ExtResource("5")
 centered = false
 centered = false
 
 
 [node name="Sprite6" type="Sprite2D" parent="Clouds/CloudGroup3"]
 [node name="Sprite6" type="Sprite2D" parent="Clouds/CloudGroup3"]
 position = Vector2(225, 35)
 position = Vector2(225, 35)
-texture = ExtResource( 5 )
+texture = ExtResource("5")
 centered = false
 centered = false
 
 
 [node name="CloudGroup4" type="Node2D" parent="Clouds"]
 [node name="CloudGroup4" type="Node2D" parent="Clouds"]
@@ -125,50 +129,56 @@ position = Vector2(780, 0)
 
 
 [node name="Sprite1" type="Sprite2D" parent="Clouds/CloudGroup4"]
 [node name="Sprite1" type="Sprite2D" parent="Clouds/CloudGroup4"]
 position = Vector2(-200, 120)
 position = Vector2(-200, 120)
-texture = ExtResource( 3 )
+texture = ExtResource("3")
 centered = false
 centered = false
 
 
 [node name="Sprite2" type="Sprite2D" parent="Clouds/CloudGroup4"]
 [node name="Sprite2" type="Sprite2D" parent="Clouds/CloudGroup4"]
 position = Vector2(100, 10)
 position = Vector2(100, 10)
-texture = ExtResource( 3 )
+texture = ExtResource("3")
 centered = false
 centered = false
 
 
 [node name="Sprite3" type="Sprite2D" parent="Clouds/CloudGroup4"]
 [node name="Sprite3" type="Sprite2D" parent="Clouds/CloudGroup4"]
 position = Vector2(-60, 40)
 position = Vector2(-60, 40)
-texture = ExtResource( 4 )
+texture = ExtResource("4")
 centered = false
 centered = false
 
 
 [node name="Sprite4" type="Sprite2D" parent="Clouds/CloudGroup4"]
 [node name="Sprite4" type="Sprite2D" parent="Clouds/CloudGroup4"]
 position = Vector2(150, 65)
 position = Vector2(150, 65)
-texture = ExtResource( 4 )
+texture = ExtResource("4")
 centered = false
 centered = false
 
 
 [node name="Sprite5" type="Sprite2D" parent="Clouds/CloudGroup4"]
 [node name="Sprite5" type="Sprite2D" parent="Clouds/CloudGroup4"]
 position = Vector2(15, 75)
 position = Vector2(15, 75)
-texture = ExtResource( 5 )
+texture = ExtResource("5")
 centered = false
 centered = false
 
 
 [node name="Sprite6" type="Sprite2D" parent="Clouds/CloudGroup4"]
 [node name="Sprite6" type="Sprite2D" parent="Clouds/CloudGroup4"]
 position = Vector2(225, 35)
 position = Vector2(225, 35)
-texture = ExtResource( 5 )
+texture = ExtResource("5")
 centered = false
 centered = false
 
 
 [node name="Mountains2" type="ParallaxLayer" parent="."]
 [node name="Mountains2" type="ParallaxLayer" parent="."]
-position = Vector2(0, 243)
-motion_scale = Vector2(0.2, 1)
+position = Vector2(0, 400)
+motion_scale = Vector2(0.1, 0)
+motion_mirroring = Vector2(400, 0)
 
 
 [node name="Sprite2D" type="Sprite2D" parent="Mountains2"]
 [node name="Sprite2D" type="Sprite2D" parent="Mountains2"]
 position = Vector2(0, -64)
 position = Vector2(0, -64)
-texture = ExtResource( 1 )
+texture = ExtResource("1")
+centered = false
+offset = Vector2(0, -64)
 region_enabled = true
 region_enabled = true
 region_rect = Rect2(0, 0, 2048, 128)
 region_rect = Rect2(0, 0, 2048, 128)
 
 
 [node name="Mountains1" type="ParallaxLayer" parent="."]
 [node name="Mountains1" type="ParallaxLayer" parent="."]
-position = Vector2(0, 246)
-motion_scale = Vector2(0.4, 1)
+position = Vector2(0, 400)
+motion_scale = Vector2(0.3, 0)
+motion_mirroring = Vector2(400, 0)
 
 
 [node name="Sprite2D" type="Sprite2D" parent="Mountains1"]
 [node name="Sprite2D" type="Sprite2D" parent="Mountains1"]
 position = Vector2(0, -64)
 position = Vector2(0, -64)
-texture = ExtResource( 6 )
+texture = ExtResource("6")
+centered = false
+offset = Vector2(0, -64)
 region_enabled = true
 region_enabled = true
 region_rect = Rect2(0, 0, 2048, 128)
 region_rect = Rect2(0, 0, 2048, 128)

+ 1 - 1
2d/skeleton/level/tileset/tiles_demo.png.import

@@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/tiles_demo.png-68724c3ed5763f2cba827c6d71224f
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
+compress/high_quality=false
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_compression=1
 compress/hdr_compression=1
-compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 compress/channel_pack=0
 compress/channel_pack=0
 mipmaps/generate=false
 mipmaps/generate=false

+ 323 - 328
2d/skeleton/level/tileset/tileset.tres

@@ -1,335 +1,330 @@
-[gd_resource type="TileSet" load_steps=14 format=2]
+[gd_resource type="TileSet" load_steps=6 format=3 uid="uid://dlu6wo1aknvai"]
 
 
-[ext_resource path="res://level/tileset/tiles_demo.png" type="Texture2D" id=1]
+[ext_resource type="Texture2D" uid="uid://b54eod3j4xx34" path="res://level/tileset/tiles_demo.png" id="1_sa5xi"]
 
 
-[sub_resource type="ConvexPolygonShape2D" id=1]
-points = PackedVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 )
+[sub_resource type="TileMapPattern" id="TileMapPattern_4pfkh"]
+tile_data = PackedInt32Array(0, 393217, 65538, 1, 327681, 65538)
 
 
-[sub_resource type="ConvexPolygonShape2D" id=2]
-points = PackedVector2Array( 0, 6, 28, 6, 28, 32, 0, 32 )
+[sub_resource type="TileMapPattern" id="TileMapPattern_fatpo"]
+tile_data = PackedInt32Array(0, 327681, 2, 1, 393217, 2)
 
 
-[sub_resource type="ConvexPolygonShape2D" id=3]
-points = PackedVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
+[sub_resource type="TileMapPattern" id="TileMapPattern_hwg2d"]
+tile_data = PackedInt32Array(0, 262145, 0, 65536, 262145, 1, 131072, 262145, 2, 196608, 262145, 3)
 
 
-[sub_resource type="ConvexPolygonShape2D" id=4]
-points = PackedVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 )
-
-[sub_resource type="ConvexPolygonShape2D" id=5]
-points = PackedVector2Array( 32, 38, 32, 64, 0, 64, 0, 6 )
-
-[sub_resource type="ConvexPolygonShape2D" id=6]
-points = PackedVector2Array( 0, 0, 28, 0, 28, 32, 0, 32 )
-
-[sub_resource type="ConvexPolygonShape2D" id=7]
-points = PackedVector2Array( 28, 6, 32, 6, 32, 32, 0, 32, 0, 0, 28, 0 )
-
-[sub_resource type="ConvexPolygonShape2D" id=8]
-points = PackedVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 )
-
-[sub_resource type="ConvexPolygonShape2D" id=9]
-points = PackedVector2Array( 0, 6, 28, 6, 28, 32, 0, 32 )
-
-[sub_resource type="ConvexPolygonShape2D" id=10]
-points = PackedVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
-
-[sub_resource type="ConvexPolygonShape2D" id=11]
-points = PackedVector2Array( 0, 0, 32, 0, 32, 24, 0, 24 )
-
-[sub_resource type="ConvexPolygonShape2D" id=12]
-points = PackedVector2Array( 0, 0, 28, 0, 28, 24, 0, 24 )
+[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_v5kxh"]
+texture = ExtResource("1_sa5xi")
+texture_region_size = Vector2i(32, 32)
+0:0/0 = 0
+0:0/0/terrain_set = 0
+0:0/0/terrain = 0
+0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+0:0/0/physics_layer_0/angular_velocity = 0.0
+0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
+0:0/0/terrains_peering_bit/right_side = 0
+0:0/0/terrains_peering_bit/bottom_right_corner = 0
+0:0/0/terrains_peering_bit/bottom_side = 0
+0:0/0/terrains_peering_bit/bottom_left_corner = 0
+0:0/0/terrains_peering_bit/left_side = 0
+1:0/next_alternative_id = 2
+1:0/0 = 0
+1:0/0/terrain_set = 0
+1:0/0/terrain = 0
+1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+1:0/0/physics_layer_0/angular_velocity = 0.0
+1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
+1:0/0/terrains_peering_bit/bottom_side = 0
+1:0/0/terrains_peering_bit/bottom_left_corner = 0
+1:0/0/terrains_peering_bit/left_side = 0
+1:0/1 = 1
+1:0/1/flip_h = true
+1:0/1/terrain_set = 0
+1:0/1/terrain = 0
+1:0/1/physics_layer_0/linear_velocity = Vector2(0, 0)
+1:0/1/physics_layer_0/angular_velocity = 0.0
+1:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
+1:0/1/terrains_peering_bit/right_side = 0
+1:0/1/terrains_peering_bit/bottom_right_corner = 0
+1:0/1/terrains_peering_bit/bottom_side = 0
+2:0/0 = 0
+2:0/0/terrain_set = 0
+2:0/0/terrain = 0
+2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+2:0/0/physics_layer_0/angular_velocity = 0.0
+2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 8, -16, 8)
+2:0/0/terrains_peering_bit/right_side = 0
+2:0/0/terrains_peering_bit/left_side = 0
+3:0/next_alternative_id = 2
+3:0/0 = 0
+3:0/0/terrain_set = 0
+3:0/0/terrain = 0
+3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+3:0/0/physics_layer_0/angular_velocity = 0.0
+3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 8, -16, 8)
+3:0/0/terrains_peering_bit/left_side = 0
+3:0/1 = 1
+3:0/1/flip_h = true
+3:0/1/terrain_set = 0
+3:0/1/terrain = 0
+3:0/1/physics_layer_0/linear_velocity = Vector2(0, 0)
+3:0/1/physics_layer_0/angular_velocity = 0.0
+3:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 8, -16, 8)
+3:0/1/terrains_peering_bit/right_side = 0
+4:0/0 = 0
+4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+4:0/0/physics_layer_0/angular_velocity = 0.0
+6:0/0 = 0
+6:0/0/terrain_set = 0
+6:0/0/terrain = 0
+6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+6:0/0/physics_layer_0/angular_velocity = 0.0
+6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
+6:0/0/terrains_peering_bit/right_side = 0
+6:0/0/terrains_peering_bit/left_side = 0
+6:0/0/terrains_peering_bit/top_left_corner = 0
+6:0/0/terrains_peering_bit/top_side = 0
+6:0/0/terrains_peering_bit/top_right_corner = 0
+0:1/0 = 0
+0:1/0/terrain_set = 0
+0:1/0/terrain = 0
+0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+0:1/0/physics_layer_0/angular_velocity = 0.0
+0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
+0:1/0/terrains_peering_bit/right_side = 0
+0:1/0/terrains_peering_bit/bottom_right_corner = 0
+0:1/0/terrains_peering_bit/bottom_side = 0
+0:1/0/terrains_peering_bit/bottom_left_corner = 0
+0:1/0/terrains_peering_bit/left_side = 0
+0:1/0/terrains_peering_bit/top_left_corner = 0
+0:1/0/terrains_peering_bit/top_side = 0
+0:1/0/terrains_peering_bit/top_right_corner = 0
+1:1/next_alternative_id = 2
+1:1/0 = 0
+1:1/0/terrain_set = 0
+1:1/0/terrain = 0
+1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+1:1/0/physics_layer_0/angular_velocity = 0.0
+1:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
+1:1/0/terrains_peering_bit/bottom_side = 0
+1:1/0/terrains_peering_bit/bottom_left_corner = 0
+1:1/0/terrains_peering_bit/left_side = 0
+1:1/0/terrains_peering_bit/top_left_corner = 0
+1:1/0/terrains_peering_bit/top_side = 0
+1:1/1 = 1
+1:1/1/flip_h = true
+1:1/1/terrain_set = 0
+1:1/1/terrain = 0
+1:1/1/physics_layer_0/linear_velocity = Vector2(0, 0)
+1:1/1/physics_layer_0/angular_velocity = 0.0
+1:1/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
+1:1/1/terrains_peering_bit/right_side = 0
+1:1/1/terrains_peering_bit/bottom_right_corner = 0
+1:1/1/terrains_peering_bit/bottom_side = 0
+1:1/1/terrains_peering_bit/top_side = 0
+1:1/1/terrains_peering_bit/top_right_corner = 0
+4:1/0 = 0
+4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+4:1/0/physics_layer_0/angular_velocity = 0.0
+5:1/0 = 0
+5:1/0/terrain_set = 0
+5:1/0/terrain = 0
+5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+5:1/0/physics_layer_0/angular_velocity = 0.0
+5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
+5:1/0/terrains_peering_bit/right_side = 0
+5:1/0/terrains_peering_bit/bottom_side = 0
+5:1/0/terrains_peering_bit/bottom_left_corner = 0
+5:1/0/terrains_peering_bit/left_side = 0
+5:1/0/terrains_peering_bit/top_left_corner = 0
+5:1/0/terrains_peering_bit/top_side = 0
+5:1/0/terrains_peering_bit/top_right_corner = 0
+6:1/0 = 0
+6:1/0/terrain_set = 0
+6:1/0/terrain = 0
+6:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+6:1/0/physics_layer_0/angular_velocity = 0.0
+6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
+6:1/0/terrains_peering_bit/right_side = 0
+6:1/0/terrains_peering_bit/left_side = 0
+6:1/0/terrains_peering_bit/top_left_corner = 0
+6:1/0/terrains_peering_bit/top_side = 0
+6:1/0/terrains_peering_bit/top_right_corner = 0
+7:1/next_alternative_id = 2
+7:1/0 = 0
+7:1/0/terrain_set = 0
+7:1/0/terrain = 0
+7:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+7:1/0/physics_layer_0/angular_velocity = 0.0
+7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
+7:1/0/terrains_peering_bit/left_side = 0
+7:1/0/terrains_peering_bit/top_left_corner = 0
+7:1/0/terrains_peering_bit/top_side = 0
+7:1/1 = 1
+7:1/1/flip_h = true
+7:1/1/terrain_set = 0
+7:1/1/terrain = 0
+7:1/1/physics_layer_0/linear_velocity = Vector2(0, 0)
+7:1/1/physics_layer_0/angular_velocity = 0.0
+7:1/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
+7:1/1/terrains_peering_bit/right_side = 0
+7:1/1/terrains_peering_bit/top_side = 0
+7:1/1/terrains_peering_bit/top_right_corner = 0
+1:2/next_alternative_id = 2
+1:2/0 = 0
+1:2/0/terrain_set = 0
+1:2/0/terrain = 0
+1:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+1:2/0/physics_layer_0/angular_velocity = 0.0
+1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
+1:2/0/terrains_peering_bit/right_side = 0
+1:2/0/terrains_peering_bit/bottom_right_corner = 0
+1:2/0/terrains_peering_bit/bottom_side = 0
+1:2/0/terrains_peering_bit/bottom_left_corner = 0
+1:2/0/terrains_peering_bit/left_side = 0
+1:2/0/terrains_peering_bit/top_left_corner = 0
+1:2/0/terrains_peering_bit/top_side = 0
+1:2/1 = 1
+1:2/1/flip_h = true
+1:2/1/terrain_set = 0
+1:2/1/terrain = 0
+1:2/1/physics_layer_0/linear_velocity = Vector2(0, 0)
+1:2/1/physics_layer_0/angular_velocity = 0.0
+1:2/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
+1:2/1/terrains_peering_bit/right_side = 0
+1:2/1/terrains_peering_bit/bottom_right_corner = 0
+1:2/1/terrains_peering_bit/bottom_side = 0
+1:2/1/terrains_peering_bit/bottom_left_corner = 0
+1:2/1/terrains_peering_bit/left_side = 0
+1:2/1/terrains_peering_bit/top_side = 0
+1:2/1/terrains_peering_bit/top_right_corner = 0
+2:2/next_alternative_id = 2
+2:2/0 = 0
+2:2/0/terrain_set = 0
+2:2/0/terrain = 0
+2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+2:2/0/physics_layer_0/angular_velocity = 0.0
+2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, 16, -16, 16)
+2:2/0/terrains_peering_bit/bottom_side = 0
+2:2/0/terrains_peering_bit/bottom_left_corner = 0
+2:2/0/terrains_peering_bit/left_side = 0
+2:2/1 = 1
+2:2/1/flip_h = true
+2:2/1/terrain_set = 0
+2:2/1/terrain = 0
+2:2/1/physics_layer_0/linear_velocity = Vector2(0, 0)
+2:2/1/physics_layer_0/angular_velocity = 0.0
+2:2/1/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 16, 16, -16, 16)
+2:2/1/terrains_peering_bit/right_side = 0
+2:2/1/terrains_peering_bit/bottom_right_corner = 0
+2:2/1/terrains_peering_bit/bottom_side = 0
+4:2/0 = 0
+4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+4:2/0/physics_layer_0/angular_velocity = 0.0
+5:2/next_alternative_id = 2
+5:2/0 = 0
+5:2/0/terrain_set = 0
+5:2/0/terrain = 0
+5:2/0/probability = 0.0
+5:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+5:2/0/physics_layer_0/angular_velocity = 0.0
+5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
+5:2/0/terrains_peering_bit/bottom_side = 0
+5:2/0/terrains_peering_bit/bottom_left_corner = 0
+5:2/0/terrains_peering_bit/left_side = 0
+5:2/0/terrains_peering_bit/top_left_corner = 0
+5:2/0/terrains_peering_bit/top_side = 0
+5:2/1 = 1
+5:2/1/flip_h = true
+5:2/1/terrain_set = 0
+5:2/1/terrain = 0
+5:2/1/probability = 0.0
+5:2/1/physics_layer_0/linear_velocity = Vector2(0, 0)
+5:2/1/physics_layer_0/angular_velocity = 0.0
+5:2/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
+5:2/1/terrains_peering_bit/right_side = 0
+5:2/1/terrains_peering_bit/bottom_right_corner = 0
+5:2/1/terrains_peering_bit/bottom_side = 0
+5:2/1/terrains_peering_bit/top_side = 0
+5:2/1/terrains_peering_bit/top_right_corner = 0
+6:2/next_alternative_id = 2
+6:2/0 = 0
+6:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+6:2/0/physics_layer_0/angular_velocity = 0.0
+6:2/1 = 1
+6:2/1/flip_h = true
+6:2/1/physics_layer_0/linear_velocity = Vector2(0, 0)
+6:2/1/physics_layer_0/angular_velocity = 0.0
+2:3/next_alternative_id = 3
+2:3/0 = 0
+2:3/0/terrain_set = 0
+2:3/0/terrain = 0
+2:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+2:3/0/physics_layer_0/angular_velocity = 0.0
+2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
+2:3/0/terrains_peering_bit/right_side = 0
+2:3/0/terrains_peering_bit/bottom_right_corner = 0
+2:3/0/terrains_peering_bit/bottom_side = 0
+2:3/0/terrains_peering_bit/bottom_left_corner = 0
+2:3/0/terrains_peering_bit/left_side = 0
+2:3/0/terrains_peering_bit/top_left_corner = 0
+2:3/0/terrains_peering_bit/top_side = 0
+2:3/1 = 1
+2:3/1/flip_h = true
+2:3/1/terrain_set = 0
+2:3/1/terrain = 0
+2:3/1/physics_layer_0/linear_velocity = Vector2(0, 0)
+2:3/1/physics_layer_0/angular_velocity = 0.0
+2:3/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
+2:3/1/terrains_peering_bit/right_side = 0
+2:3/1/terrains_peering_bit/bottom_right_corner = 0
+2:3/1/terrains_peering_bit/bottom_side = 0
+2:3/1/terrains_peering_bit/bottom_left_corner = 0
+2:3/1/terrains_peering_bit/left_side = 0
+2:3/1/terrains_peering_bit/top_side = 0
+2:3/1/terrains_peering_bit/top_right_corner = 0
+3:3/0 = 0
+3:3/0/terrain_set = 0
+3:3/0/terrain = 0
+3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+3:3/0/physics_layer_0/angular_velocity = 0.0
+3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
+3:3/0/terrains_peering_bit/right_side = 0
+3:3/0/terrains_peering_bit/bottom_right_corner = 0
+3:3/0/terrains_peering_bit/bottom_side = 0
+3:3/0/terrains_peering_bit/bottom_left_corner = 0
+3:3/0/terrains_peering_bit/left_side = 0
+4:3/0 = 0
+4:3/0/terrain_set = 0
+4:3/0/terrain = 0
+4:3/0/probability = 0.0
+4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+4:3/0/physics_layer_0/angular_velocity = 0.0
+4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
+4:3/0/terrains_peering_bit/right_side = 0
+4:3/0/terrains_peering_bit/bottom_right_corner = 0
+4:3/0/terrains_peering_bit/bottom_side = 0
+4:3/0/terrains_peering_bit/bottom_left_corner = 0
+4:3/0/terrains_peering_bit/left_side = 0
+5:3/0 = 0
+5:3/0/terrain_set = 0
+5:3/0/terrain = 0
+5:3/0/probability = 0.25
+5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
+5:3/0/physics_layer_0/angular_velocity = 0.0
+5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
+5:3/0/terrains_peering_bit/right_side = 0
+5:3/0/terrains_peering_bit/bottom_right_corner = 0
+5:3/0/terrains_peering_bit/bottom_side = 0
+5:3/0/terrains_peering_bit/bottom_left_corner = 0
+5:3/0/terrains_peering_bit/left_side = 0
 
 
 [resource]
 [resource]
-0/name = "ground"
-0/texture = ExtResource( 1 )
-0/tex_offset = Vector2( 0, 0 )
-0/modulate = Color( 1, 1, 1, 1 )
-0/region = Rect2( 0, 0, 32, 32 )
-0/tile_mode = 0
-0/occluder_offset = Vector2( 0, 0 )
-0/navigation_offset = Vector2( 0, 0 )
-0/shape_offset = Vector2( 0, 0 )
-0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-0/shape = SubResource( 1 )
-0/shape_one_way = false
-0/shape_one_way_margin = 1.0
-0/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": false,
-"one_way_margin": 1.0,
-"shape": SubResource( 1 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
-0/z_index = 0
-1/name = "ground_end"
-1/texture = ExtResource( 1 )
-1/tex_offset = Vector2( 0, 0 )
-1/modulate = Color( 1, 1, 1, 1 )
-1/region = Rect2( 32, 0, 32, 32 )
-1/tile_mode = 0
-1/occluder_offset = Vector2( 0, 0 )
-1/navigation_offset = Vector2( 0, 0 )
-1/shape_offset = Vector2( 0, 0 )
-1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-1/shape = SubResource( 2 )
-1/shape_one_way = false
-1/shape_one_way_margin = 1.0
-1/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": false,
-"one_way_margin": 1.0,
-"shape": SubResource( 2 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
-1/z_index = 0
-2/name = "slope"
-2/texture = ExtResource( 1 )
-2/tex_offset = Vector2( 0, 0 )
-2/modulate = Color( 1, 1, 1, 1 )
-2/region = Rect2( 64, 64, 32, 64 )
-2/tile_mode = 0
-2/occluder_offset = Vector2( 0, 0 )
-2/navigation_offset = Vector2( 0, 0 )
-2/shape_offset = Vector2( 0, 0 )
-2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-2/shape = SubResource( 5 )
-2/shape_one_way = false
-2/shape_one_way_margin = 1.0
-2/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": false,
-"one_way_margin": 1.0,
-"shape": SubResource( 5 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
-2/z_index = 0
-3/name = "wall"
-3/texture = ExtResource( 1 )
-3/tex_offset = Vector2( 0, 0 )
-3/modulate = Color( 1, 1, 1, 1 )
-3/region = Rect2( 32, 32, 32, 32 )
-3/tile_mode = 0
-3/occluder_offset = Vector2( 0, 0 )
-3/navigation_offset = Vector2( 0, 0 )
-3/shape_offset = Vector2( 0, 0 )
-3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-3/shape = SubResource( 6 )
-3/shape_one_way = false
-3/shape_one_way_margin = 1.0
-3/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": false,
-"one_way_margin": 1.0,
-"shape": SubResource( 6 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
-3/z_index = 0
-4/name = "slope_top"
-4/texture = ExtResource( 1 )
-4/tex_offset = Vector2( 0, 0 )
-4/modulate = Color( 1, 1, 1, 1 )
-4/region = Rect2( 32, 64, 32, 32 )
-4/tile_mode = 0
-4/occluder_offset = Vector2( 0, 0 )
-4/navigation_offset = Vector2( 0, 0 )
-4/shape_offset = Vector2( 0, 0 )
-4/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-4/shape = SubResource( 7 )
-4/shape_one_way = false
-4/shape_one_way_margin = 1.0
-4/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": false,
-"one_way_margin": 1.0,
-"shape": SubResource( 7 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
-4/z_index = 0
-5/name = "one_way"
-5/texture = ExtResource( 1 )
-5/tex_offset = Vector2( 0, 0 )
-5/modulate = Color( 1, 1, 1, 1 )
-5/region = Rect2( 64, 0, 32, 32 )
-5/tile_mode = 0
-5/occluder_offset = Vector2( 0, 0 )
-5/navigation_offset = Vector2( 0, 0 )
-5/shape_offset = Vector2( 0, 0 )
-5/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-5/shape = SubResource( 8 )
-5/shape_one_way = true
-5/shape_one_way_margin = 1.0
-5/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": true,
-"one_way_margin": 1.0,
-"shape": SubResource( 8 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
-5/z_index = 0
-6/name = "one_way_end"
-6/texture = ExtResource( 1 )
-6/tex_offset = Vector2( 0, 0 )
-6/modulate = Color( 1, 1, 1, 1 )
-6/region = Rect2( 96, 0, 32, 32 )
-6/tile_mode = 0
-6/occluder_offset = Vector2( 0, 0 )
-6/navigation_offset = Vector2( 0, 0 )
-6/shape_offset = Vector2( 0, 0 )
-6/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-6/shape = SubResource( 9 )
-6/shape_one_way = true
-6/shape_one_way_margin = 1.0
-6/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": true,
-"one_way_margin": 1.0,
-"shape": SubResource( 9 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
-6/z_index = 0
-7/name = "rock"
-7/texture = ExtResource( 1 )
-7/tex_offset = Vector2( 0, 0 )
-7/modulate = Color( 1, 1, 1, 1 )
-7/region = Rect2( 0, 32, 32, 32 )
-7/tile_mode = 0
-7/occluder_offset = Vector2( 0, 0 )
-7/navigation_offset = Vector2( 0, 0 )
-7/shape_offset = Vector2( 0, 0 )
-7/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-7/shape = SubResource( 10 )
-7/shape_one_way = false
-7/shape_one_way_margin = 1.0
-7/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": false,
-"one_way_margin": 1.0,
-"shape": SubResource( 10 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
-7/z_index = 0
-8/name = "bottom"
-8/texture = ExtResource( 1 )
-8/tex_offset = Vector2( 0, 0 )
-8/modulate = Color( 1, 1, 1, 1 )
-8/region = Rect2( 192, 32, 32, 32 )
-8/tile_mode = 0
-8/occluder_offset = Vector2( 0, 0 )
-8/navigation_offset = Vector2( 0, 0 )
-8/shape_offset = Vector2( 0, 0 )
-8/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-8/shape = SubResource( 11 )
-8/shape_one_way = false
-8/shape_one_way_margin = 1.0
-8/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": false,
-"one_way_margin": 1.0,
-"shape": SubResource( 11 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
-8/z_index = 0
-9/name = "bottom_end"
-9/texture = ExtResource( 1 )
-9/tex_offset = Vector2( 0, 0 )
-9/modulate = Color( 1, 1, 1, 1 )
-9/region = Rect2( 224, 32, 32, 32 )
-9/tile_mode = 0
-9/occluder_offset = Vector2( 0, 0 )
-9/navigation_offset = Vector2( 0, 0 )
-9/shape_offset = Vector2( 0, 0 )
-9/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-9/shape = SubResource( 12 )
-9/shape_one_way = false
-9/shape_one_way_margin = 1.0
-9/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": false,
-"one_way_margin": 1.0,
-"shape": SubResource( 12 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
-9/z_index = 0
-10/name = "bottom_corner"
-10/texture = ExtResource( 1 )
-10/tex_offset = Vector2( 0, 0 )
-10/modulate = Color( 1, 1, 1, 1 )
-10/region = Rect2( 160, 32, 32, 32 )
-10/tile_mode = 0
-10/occluder_offset = Vector2( 0, 0 )
-10/navigation_offset = Vector2( 0, 0 )
-10/shape_offset = Vector2( 0, 0 )
-10/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-10/shape = SubResource( 3 )
-10/shape_one_way = false
-10/shape_one_way_margin = 1.0
-10/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": false,
-"one_way_margin": 1.0,
-"shape": SubResource( 3 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
-10/z_index = 0
-11/name = "tree_trunk_0"
-11/texture = ExtResource( 1 )
-11/tex_offset = Vector2( 0, 0 )
-11/modulate = Color( 1, 1, 1, 1 )
-11/region = Rect2( 128, 64, 32, 32 )
-11/tile_mode = 0
-11/occluder_offset = Vector2( 0, 0 )
-11/navigation_offset = Vector2( 0, 0 )
-11/shape_offset = Vector2( 0, 0 )
-11/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-11/shape_one_way = false
-11/shape_one_way_margin = 0.0
-11/shapes = [  ]
-11/z_index = 0
-12/name = "tree_trunk_1"
-12/texture = ExtResource( 1 )
-12/tex_offset = Vector2( 0, 0 )
-12/modulate = Color( 1, 1, 1, 1 )
-12/region = Rect2( 128, 32, 32, 32 )
-12/tile_mode = 0
-12/occluder_offset = Vector2( 0, 0 )
-12/navigation_offset = Vector2( 0, 0 )
-12/shape_offset = Vector2( 0, 0 )
-12/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-12/shape_one_way = false
-12/shape_one_way_margin = 0.0
-12/shapes = [  ]
-12/z_index = 0
-13/name = "tree_base"
-13/texture = ExtResource( 1 )
-13/tex_offset = Vector2( 0, 0 )
-13/modulate = Color( 1, 1, 1, 1 )
-13/region = Rect2( 128, 96, 32, 32 )
-13/tile_mode = 0
-13/occluder_offset = Vector2( 0, 0 )
-13/navigation_offset = Vector2( 0, 0 )
-13/shape_offset = Vector2( 0, 0 )
-13/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-13/shape = SubResource( 4 )
-13/shape_one_way = false
-13/shape_one_way_margin = 1.0
-13/shapes = [ {
-"autotile_coord": Vector2( 0, 0 ),
-"one_way": false,
-"one_way_margin": 1.0,
-"shape": SubResource( 4 ),
-"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
-} ]
-13/z_index = 0
-14/name = "tree_top"
-14/texture = ExtResource( 1 )
-14/tex_offset = Vector2( 0, 0 )
-14/modulate = Color( 1, 1, 1, 1 )
-14/region = Rect2( 128, 0, 32, 32 )
-14/tile_mode = 0
-14/occluder_offset = Vector2( 0, 0 )
-14/navigation_offset = Vector2( 0, 0 )
-14/shape_offset = Vector2( 0, 0 )
-14/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
-14/shape_one_way = false
-14/shape_one_way_margin = 0.0
-14/shapes = [  ]
-14/z_index = 0
+tile_size = Vector2i(32, 32)
+physics_layer_0/collision_layer = 16
+physics_layer_0/collision_mask = 0
+terrain_set_0/mode = 0
+terrain_set_0/terrain_0/name = "Terrain 0"
+terrain_set_0/terrain_0/color = Color(0.5, 0.34375, 0.25, 1)
+sources/1 = SubResource("TileSetAtlasSource_v5kxh")
+pattern_0 = SubResource("TileMapPattern_4pfkh")
+pattern_1 = SubResource("TileMapPattern_fatpo")
+pattern_2 = SubResource("TileMapPattern_hwg2d")

+ 1 - 1
2d/skeleton/player/gBot.png.import

@@ -16,9 +16,9 @@ dest_files=["res://.godot/imported/gBot.png-b94e4323e02d18e8c6fabf612fa396da.cte
 [params]
 [params]
 
 
 compress/mode=0
 compress/mode=0
+compress/high_quality=false
 compress/lossy_quality=0.7
 compress/lossy_quality=0.7
 compress/hdr_compression=1
 compress/hdr_compression=1
-compress/bptc_ldr=0
 compress/normal_map=0
 compress/normal_map=0
 compress/channel_pack=0
 compress/channel_pack=0
 mipmaps/generate=false
 mipmaps/generate=false

+ 62 - 35
2d/skeleton/player/player.gd

@@ -1,16 +1,21 @@
 class_name Player
 class_name Player
 extends CharacterBody2D
 extends CharacterBody2D
 
 
-# Keep this in sync with the AnimationTree's state names and numbers.
-enum States {
-	IDLE = 0,
-	WALK = 1,
-	RUN = 2,
-	FLY = 3,
-	FALL = 4,
+# Keep this in sync with the AnimationTree's state names.
+const States = {
+	IDLE = "idle",
+	WALK = "walk",
+	RUN = "run",
+	FLY = "fly",
+	FALL = "fall",
 }
 }
 
 
-var speed = Vector2(120.0, 360.0)
+const WALK_SPEED = 200.0
+const ACCELERATION_SPEED = WALK_SPEED * 6.0
+const JUMP_VELOCITY = -400.0
+## Maximum speed at which the player can fall.
+const TERMINAL_VELOCITY = 400
+
 var falling_slow = false
 var falling_slow = false
 var falling_fast = false
 var falling_fast = false
 var no_move_horizontal_time = 0.0
 var no_move_horizontal_time = 0.0
@@ -24,51 +29,73 @@ func _ready():
 	$AnimationTree.active = true
 	$AnimationTree.active = true
 
 
 
 
-func _physics_process(delta):
-	velocity.y += gravity * delta
+func _physics_process(delta: float) -> void:
+	var is_jumping = false
+	if Input.is_action_just_pressed("jump"):
+		is_jumping = try_jump()
+	elif Input.is_action_just_released("jump") and velocity.y < 0.0:
+		# The player let go of jump early, reduce vertical momentum.
+		velocity.y *= 0.6
+	# Fall.
+	velocity.y = minf(TERMINAL_VELOCITY, velocity.y + gravity * delta)
+
+	var direction := Input.get_axis("move_left", "move_right") * WALK_SPEED
+	velocity.x = move_toward(velocity.x, direction, ACCELERATION_SPEED * delta)
+
 	if no_move_horizontal_time > 0.0:
 	if no_move_horizontal_time > 0.0:
 		# After doing a hard fall, don't move for a short time.
 		# After doing a hard fall, don't move for a short time.
 		velocity.x = 0.0
 		velocity.x = 0.0
 		no_move_horizontal_time -= delta
 		no_move_horizontal_time -= delta
-	else:
-		velocity.x = (Input.get_axis(&"move_left", &"move_right")) * speed.x
-		if Input.is_action_pressed(&"walk"):
-			velocity.x *= 0.2
-	# TODO: This information should be set to the CharacterBody properties instead of arguments: , Vector2.UP
-	# TODO: Rename velocity to linear_velocity in the rest of the script.
+
+	if not is_zero_approx(velocity.x):
+		if velocity.x > 0.0:
+			sprite.scale.x = 1.0 * sprite_scale
+		else:
+			sprite.scale.x = -1.0 * sprite_scale
+
 	move_and_slide()
 	move_and_slide()
-	# Calculate flipping and falling speed for animation purposes.
-	if velocity.x > 0:
-		sprite.transform.x = Vector2(sprite_scale, 0)
-	elif velocity.x < 0:
-		sprite.transform.x = Vector2(-sprite_scale, 0)
-	if velocity.y > 500:
+
+	# After applying our motion, update our animation to match.
+
+	# Calculate falling speed for animation purposes.
+	if velocity.y >= TERMINAL_VELOCITY:
 		falling_fast = true
 		falling_fast = true
 		falling_slow = false
 		falling_slow = false
 	elif velocity.y > 300:
 	elif velocity.y > 300:
 		falling_slow = true
 		falling_slow = true
-	# Check if on floor and do mostly animation stuff based on it.
+
+	if is_jumping:
+		$AnimationTree["parameters/jump/request"] = AnimationNodeOneShot.ONE_SHOT_REQUEST_FIRE
+
 	if is_on_floor():
 	if is_on_floor():
+		# Most animations change when we run, land, or take off.
 		if falling_fast:
 		if falling_fast:
-			$AnimationTree["parameters/land_hard/active"] = true
+			$AnimationTree["parameters/land_hard/request"] = AnimationNodeOneShot.ONE_SHOT_REQUEST_FIRE
 			no_move_horizontal_time = 0.4
 			no_move_horizontal_time = 0.4
-			falling_fast = false
 		elif falling_slow:
 		elif falling_slow:
-			$AnimationTree["parameters/land/active"] = true
-			falling_slow = false
-		if Input.is_action_just_pressed(&"jump"):
-			$AnimationTree["parameters/jump/active"] = true
-			velocity.y = -speed.y
+			$AnimationTree["parameters/land/request"] = AnimationNodeOneShot.ONE_SHOT_REQUEST_FIRE
+
 		if abs(velocity.x) > 50:
 		if abs(velocity.x) > 50:
-			$AnimationTree["parameters/state/current"] = States.RUN
+			$AnimationTree["parameters/state/transition_request"] = States.RUN
 			$AnimationTree["parameters/run_timescale/scale"] = abs(velocity.x) / 60
 			$AnimationTree["parameters/run_timescale/scale"] = abs(velocity.x) / 60
 		elif velocity.x:
 		elif velocity.x:
-			$AnimationTree["parameters/state/current"] = States.WALK
+			$AnimationTree["parameters/state/transition_request"] = States.WALK
 			$AnimationTree["parameters/walk_timescale/scale"] = abs(velocity.x) / 12
 			$AnimationTree["parameters/walk_timescale/scale"] = abs(velocity.x) / 12
 		else:
 		else:
-			$AnimationTree["parameters/state/current"] = States.IDLE
+			$AnimationTree["parameters/state/transition_request"] = States.IDLE
+
+		falling_fast = false
+		falling_slow = false
 	else:
 	else:
 		if velocity.y > 0:
 		if velocity.y > 0:
-			$AnimationTree["parameters/state/current"] = States.FALL
+			$AnimationTree["parameters/state/transition_request"] = States.FALL
 		else:
 		else:
-			$AnimationTree["parameters/state/current"] = States.FLY
+			$AnimationTree["parameters/state/transition_request"] = States.FLY
+
+
+
+func try_jump() -> bool:
+	if is_on_floor():
+		velocity.y = JUMP_VELOCITY
+		return true
+	return false

File diff suppressed because it is too large
+ 154 - 166
2d/skeleton/player/player.tscn


+ 15 - 23
2d/skeleton/project.godot

@@ -8,31 +8,21 @@
 
 
 config_version=5
 config_version=5
 
 
-_global_script_classes=[{
-"base": "CharacterBody2D",
-"class": &"Player",
-"language": &"GDScript",
-"path": "res://player/player.gd"
-}]
-_global_script_class_icons={
-"Player": ""
-}
-
 [application]
 [application]
 
 
 config/name="Skeleton2D Demo"
 config/name="Skeleton2D Demo"
 config/description="This demo shows how to create a rigged and animated character in 2D using
 config/description="This demo shows how to create a rigged and animated character in 2D using
 Godot's Skeleton2D node. There are several movement-related animations and
 Godot's Skeleton2D node. There are several movement-related animations and
 there is a simple character controller that controls the animations."
 there is a simple character controller that controls the animations."
+config/tags=PackedStringArray("2d", "animation", "demo", "official", "rendering")
 run/main_scene="res://level.tscn"
 run/main_scene="res://level.tscn"
-config/features=PackedStringArray("4.0")
+config/features=PackedStringArray("4.1")
 config/icon="res://icon.webp"
 config/icon="res://icon.webp"
-config/tags=PackedStringArray("2d", "animation", "demo", "official", "rendering")
 
 
 [display]
 [display]
 
 
-window/size/viewport_width=1600
-window/size/viewport_height=900
+window/size/viewport_width=1920
+window/size/viewport_height=1080
 window/stretch/mode="canvas_items"
 window/stretch/mode="canvas_items"
 window/stretch/aspect="keep_height"
 window/stretch/aspect="keep_height"
 
 
@@ -40,39 +30,39 @@ window/stretch/aspect="keep_height"
 
 
 move_left={
 move_left={
 "deadzone": 0.5,
 "deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":65,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777231,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":65,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
+, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777231,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
 , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null)
 , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null)
 ]
 ]
 }
 }
 move_right={
 move_right={
 "deadzone": 0.5,
 "deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":68,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777233,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":68,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
+, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777233,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
 , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null)
 , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null)
 ]
 ]
 }
 }
 jump={
 jump={
 "deadzone": 0.5,
 "deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":87,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
-, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777232,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
+, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":87,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
+, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777232,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
 , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null)
 , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null)
 ]
 ]
 }
 }
 exit={
 exit={
 "deadzone": 0.5,
 "deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777217,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777217,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null)
 ]
 ]
 }
 }
 walk={
 walk={
 "deadzone": 0.5,
 "deadzone": 0.5,
-"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777237,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777237,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null)
 , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null)
 ]
 ]
 }
 }
@@ -87,6 +77,8 @@ limits/debugger_stdout/max_chars_per_second=1000000
 
 
 [rendering]
 [rendering]
 
 
+renderer/rendering_method="gl_compatibility"
+renderer/rendering_method.mobile="gl_compatibility"
 quality/driver/driver_name="GLES2"
 quality/driver/driver_name="GLES2"
 2d/snapping/use_gpu_pixel_snap=true
 2d/snapping/use_gpu_pixel_snap=true
 vram_compression/import_etc=true
 vram_compression/import_etc=true

Some files were not shown because too many files changed in this diff