pull/1/head
Kenney 2023-09-29 10:02:42 +07:00
parent bf164bd437
commit dd38efa167
15 changed files with 168 additions and 219 deletions

@ -3,11 +3,12 @@
[ext_resource type="PackedScene" uid="uid://lde2xq3vq635" path="res://models/enemy-flying.glb" id="1_3v8nl"]
[ext_resource type="Script" path="res://scripts/enemy.gd" id="1_jg24b"]
[ext_resource type="SpriteFrames" uid="uid://dbv3sy5qjatnl" path="res://sprites/burst_animation.tres" id="3_iblw5"]
[ext_resource type="Texture2D" uid="uid://diluv5007my5w" path="res://sprites/tracer.png" id="4_pknwg"]
[sub_resource type="SphereShape3D" id="SphereShape3D_iix87"]
radius = 0.75
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_kvqwh"]
[node name="enemy-flying" type="Area3D"]
script = ExtResource("1_jg24b")
@ -37,11 +38,11 @@ autostart = true
[node name="Sprite3D" type="Sprite3D" parent="."]
transform = Transform3D(-4.37114e-08, -0.5, 4.37114e-08, 0, -2.18557e-08, -1, 1, -2.18557e-08, 1.91069e-15, -0.458562, 0.296903, 2.63393)
visible = false
texture = ExtResource("4_pknwg")
texture = SubResource("CompressedTexture2D_kvqwh")
[node name="Sprite3D2" type="Sprite3D" parent="."]
transform = Transform3D(-4.37114e-08, -0.5, 4.37114e-08, 0, -2.18557e-08, -1, 1, -2.18557e-08, 1.91069e-15, 0.452015, 0.296903, 2.63393)
visible = false
texture = ExtResource("4_pknwg")
texture = SubResource("CompressedTexture2D_kvqwh")
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]

@ -30,12 +30,12 @@ var container_offset = Vector3(1.2, -1.1, -2.75)
var tween:Tween
@onready var sound_footsteps = $SoundFootsteps
@onready var item_container = $Head/Camera/SubViewportContainer/SubViewport/CameraItem/Container
@onready var container = $Head/Camera/SubViewportContainer/SubViewport/CameraItem/Container
@onready var camera = $Head/Camera
@onready var raycast = $Head/Camera/ShootCast
@onready var blaster_cooldown = $BlasterCooldown
@onready var raycast = $Head/Camera/RayCast
@onready var blaster_cooldown = $Cooldown
@onready var burst = $Head/Camera/SubViewportContainer/SubViewport/CameraItem/Burst
@onready var sound_footsteps = $SoundFootsteps
@export var crosshair:TextureRect
@ -45,7 +45,7 @@ func _ready():
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
change_weapon(weapon_index)
initiate_change_weapon(weapon_index)
func _process(delta):
@ -73,10 +73,10 @@ func _process(delta):
camera.rotation.x = lerp_angle(camera.rotation.x, rotation_target.x, delta * 25)
rotation.y = lerp_angle(rotation.y, rotation_target.y, delta * 25)
item_container.rotation.y = lerp_angle(item_container.rotation.y, -input_mouse.x * 4, delta * 5)
#item_container.rotation.x = lerp_angle(item_container.rotation.x, -rotation_target.x / 3, delta * 10)
container.rotation.y = lerp_angle(container.rotation.y, -input_mouse.x * 4, delta * 5)
#container.rotation.x = lerp_angle(v.rotation.x, -rotation_target.x / 3, delta * 10)
item_container.position = lerp(item_container.position, container_offset - (applied_velocity / 30), delta * 10)
container.position = lerp(container.position, container_offset - (applied_velocity / 30), delta * 10)
# Movement sound
@ -96,7 +96,10 @@ func _process(delta):
previously_floored = is_on_floor()
input_mouse = Vector2.ZERO
# Falling/respawning
if position.y < -10:
get_tree().reload_current_scene()
# Mouse movement
@ -107,7 +110,6 @@ func _input(event):
rotation_target.y -= event.relative.x / mouse_sensitivity
rotation_target.x -= event.relative.y / mouse_sensitivity
rotation_target.x = clamp(rotation_target.x, deg_to_rad(-90), deg_to_rad(90))
func handle_controls(delta):
@ -128,30 +130,39 @@ func handle_controls(delta):
movement_velocity = input.normalized() * movement_speed * delta
# Rotation
var rotation_input := Vector3.ZERO
input.y = Input.get_axis("camera_left", "camera_right")
input.x = Input.get_axis("camera_up", "camera_down") / 2
rotation_target -= input.limit_length(1.0) * 5 * delta
rotation_target.x = clamp(rotation_target.x, deg_to_rad(-90), deg_to_rad(90))
input_mouse = Vector2.ZERO
# Shooting
if Input.is_action_pressed("shoot"):
shoot()
action_shoot()
# Jumping
if Input.is_action_just_pressed("jump"):
if jump_single or jump_double:
Audio.play_random("sounds/jump_a.ogg, sounds/jump_b.ogg, sounds/jump_c.ogg")
Audio.play("sounds/jump_a.ogg, sounds/jump_b.ogg, sounds/jump_c.ogg")
if jump_double:
gravity = -jump_strength
jump_double = false
if(jump_single): jump()
if(jump_single): action_jump()
# Weapon switching
if Input.is_action_just_pressed("weapon_next"):
next_weapon()
action_weapon_toggle()
# Handle gravity
@ -166,7 +177,7 @@ func handle_gravity(delta):
# Jumping
func jump():
func action_jump():
gravity = -jump_strength
@ -175,79 +186,94 @@ func jump():
# Shooting
func shoot():
if !blaster_cooldown.is_stopped(): return
Audio.play_random(weapon.sound_shoot)
item_container.position.z += 0.25
burst.play("default")
burst.rotation_degrees.z = randf_range(-45, 45)
burst.scale = Vector3.ONE * randf_range(0.40, 0.75)
burst.position = item_container.position - Vector3(0.1, -0.4, 1.5)
blaster_cooldown.start(weapon.cooldown)
func action_shoot():
# What or where the blaster hit
for n in weapon.shot_count:
if Input.is_action_pressed("shoot"):
raycast.target_position.x = randf_range(-weapon.spread, weapon.spread)
raycast.target_position.y = randf_range(-weapon.spread, weapon.spread)
if !blaster_cooldown.is_stopped(): return
raycast.force_raycast_update()
Audio.play(weapon.sound_shoot)
container.position.z += 0.25
if !raycast.is_colliding():
return
var collider = raycast.get_collider()
burst.play("default")
burst.rotation_degrees.z = randf_range(-45, 45)
burst.scale = Vector3.ONE * randf_range(0.40, 0.75)
if collider.has_method("damage"):
collider.damage(weapon.damage)
burst.position = container.position - Vector3(0.1, -0.4, 1.5)
var impact = preload("res://objects/impact.tscn")
var impact_instance = impact.instantiate()
blaster_cooldown.start(weapon.cooldown)
impact_instance.play("shot")
# What or where the blaster hit
get_tree().root.add_child(impact_instance)
for n in weapon.shot_count:
impact_instance.position = raycast.get_collision_point() + (raycast.get_collision_normal() / 10)
impact_instance.look_at(position, Vector3.UP, true)
#impact_instance.rotation_degrees.z = randf_range(-45, 45)
# Weapons
raycast.target_position.x = randf_range(-weapon.spread, weapon.spread)
raycast.target_position.y = randf_range(-weapon.spread, weapon.spread)
raycast.force_raycast_update()
if !raycast.is_colliding():
return
var collider = raycast.get_collider()
if collider.has_method("damage"):
collider.damage(weapon.damage)
var impact = preload("res://objects/impact.tscn")
var impact_instance = impact.instantiate()
impact_instance.play("shot")
get_tree().root.add_child(impact_instance)
impact_instance.position = raycast.get_collision_point() + (raycast.get_collision_normal() / 10)
impact_instance.look_at(position, Vector3.UP, true)
#impact_instance.rotation_degrees.z = randf_range(-45, 45)
# Weapons
func next_weapon():
Audio.play("sounds/blaster_change.ogg")
# Toggle between available weapons (listed in 'weapons')
func action_weapon_toggle():
if weapon_index < weapons.size() - 1:
weapon_index += 1
else:
weapon_index = 0
if Input.is_action_just_pressed("weapon_toggle"):
weapon_index = wrap(weapon_index + 1, 0, weapons.size())
initiate_change_weapon(weapon_index)
change_weapon(weapon_index)
Audio.play("sounds/weapon_change.ogg")
# Initiates the weapon changing animation (tween)
func initiate_change_weapon(index):
weapon_index = index
tween = get_tree().create_tween()
tween.set_ease(Tween.EASE_OUT_IN)
tween.tween_property(container, "position", container_offset - Vector3(0, 1, 0), 0.1)
tween.tween_callback(change_weapon) # Changes the model
# Switches the weapon model (off-screen)
func change_weapon_apply():
func change_weapon():
weapon = weapons[weapon_index]
# Step 1. Remove all children in (weapon) container
# Step 1. Remove previous weapon model(s) from container
for n in item_container.get_children():
item_container.remove_child(n)
for n in container.get_children():
container.remove_child(n)
# Step 2. Load new model into container
# Step 2. Place new weapon model in container
var weapon_model = weapon.model.instantiate()
item_container.add_child(weapon_model)
container.add_child(weapon_model)
weapon_model.position = weapon.position
weapon_model.rotation_degrees = weapon.rotation
# Step 3. Set model to only render on layer 2
# Step 3. Set model to only render on layer 2 (the weapon camera)
for child in weapon_model.find_children("*", "MeshInstance3D"):
child.layers = 2
@ -257,14 +283,5 @@ func change_weapon_apply():
raycast.target_position = Vector3(0, 0, -1) * weapon.max_distance
crosshair.texture = weapon.crosshair
func change_weapon(index):
weapon_index = index
tween = get_tree().create_tween()
tween.set_ease(Tween.EASE_OUT_IN)
tween.tween_property(item_container, "position", container_offset - Vector3(0, 1, 0), 0.1)
tween.tween_callback(change_weapon_apply)
func get_hurt():
pass

@ -56,7 +56,7 @@ layers = 2
sprite_frames = ExtResource("4_m6ukc")
frame = 2
[node name="ShootCast" type="RayCast3D" parent="Head/Camera"]
[node name="RayCast" type="RayCast3D" parent="Head/Camera"]
exclude_parent = false
target_position = Vector3(0, 0, -10)
collide_with_areas = true
@ -73,5 +73,5 @@ stream = ExtResource("5_ics1s")
volume_db = -5.0
autoplay = true
[node name="BlasterCooldown" type="Timer" parent="."]
[node name="Cooldown" type="Timer" parent="."]
one_shot = true

@ -1,4 +1,6 @@
extends Node
extends AnimatedSprite3D
# Remove this impact effect after the animation has completed
func _on_animation_finished():
queue_free()

@ -61,26 +61,22 @@ jump={
}
camera_left={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":-1.0,"script":null)
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":-1.0,"script":null)
]
}
camera_right={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":1.0,"script":null)
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":1.0,"script":null)
]
}
camera_up={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":-1.0,"script":null)
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":-1.0,"script":null)
]
}
camera_down={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":1.0,"script":null)
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":1.0,"script":null)
]
}
mouse_capture={
@ -96,11 +92,13 @@ mouse_capture_exit={
shoot={
"deadzone": 0.5,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(92, 12),"global_position":Vector2(96, 55),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":5,"axis_value":1.0,"script":null)
]
}
weapon_next={
weapon_toggle={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":10,"pressure":0.0,"pressed":true,"script":null)
]
}

@ -38,44 +38,48 @@ grow_vertical = 2
scale = Vector2(0.35, 0.35)
pivot_offset = Vector2(64, 64)
[node name="wall-low" parent="." instance=ExtResource("5_6vel1")]
[node name="Enemies" type="Node" parent="."]
[node name="enemy-flying" parent="Enemies" node_paths=PackedStringArray("player") instance=ExtResource("8_7ty2f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.5, 2.5, -6)
player = NodePath("../../Player")
[node name="enemy-flying2" parent="Enemies" node_paths=PackedStringArray("player") instance=ExtResource("8_7ty2f")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -9.5, 2.5, 1.5)
player = NodePath("../../Player")
[node name="enemy-flying3" parent="Enemies" node_paths=PackedStringArray("player") instance=ExtResource("8_7ty2f")]
transform = Transform3D(-0.707107, 0, -0.707107, 0, 1, 0, 0.707107, 0, -0.707107, 5.5, 3.5, 9)
player = NodePath("../../Player")
[node name="Level" type="Node" parent="."]
[node name="wall-low" parent="Level" instance=ExtResource("5_6vel1")]
transform = Transform3D(0.965926, 0, 0.258819, 0, 1, 0, -0.258819, 0, 0.965926, -1.92088, 1.05, -6.90166)
[node name="wall-low3" parent="." instance=ExtResource("5_6vel1")]
[node name="wall-low3" parent="Level" instance=ExtResource("5_6vel1")]
transform = Transform3D(-1, 0, -1.19209e-07, 0, 1, 0, 1.19209e-07, 0, -1, 6.07912, 1.05, 6.59834)
[node name="platform-falling" parent="." instance=ExtResource("5_3s40e")]
[node name="platform-falling" parent="Level" instance=ExtResource("5_3s40e")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5, 0, 6.5)
[node name="platform-falling2" parent="." instance=ExtResource("5_3s40e")]
[node name="platform-falling2" parent="Level" instance=ExtResource("5_3s40e")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.5, 2.5, -2.5)
[node name="platform-falling3" parent="." instance=ExtResource("5_3s40e")]
[node name="platform-falling3" parent="Level" instance=ExtResource("5_3s40e")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 3, -3.5)
[node name="wall-high" parent="." instance=ExtResource("7_cabne")]
[node name="wall-high" parent="Level" instance=ExtResource("7_cabne")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, -1.5)
[node name="platform-large-grass" parent="." instance=ExtResource("7_wggef")]
[node name="platform-large-grass" parent="Level" instance=ExtResource("7_wggef")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0)
[node name="platform-large-grass2" parent="." instance=ExtResource("7_wggef")]
[node name="platform-large-grass2" parent="Level" instance=ExtResource("7_wggef")]
transform = Transform3D(0.965926, 0, 0.258819, 0, 1, 0, -0.258819, 0, 0.965926, -2, 0.5, -6)
[node name="platform-large-grass3" parent="." instance=ExtResource("7_wggef")]
[node name="platform-large-grass3" parent="Level" instance=ExtResource("7_wggef")]
transform = Transform3D(0.965926, 0, -0.258819, 0, 1, 0, 0.258819, 0, 0.965926, -6, 1, 2.5)
[node name="platform-large-grass4" parent="." instance=ExtResource("7_wggef")]
[node name="platform-large-grass4" parent="Level" instance=ExtResource("7_wggef")]
transform = Transform3D(0.965926, 0, 0.258819, 0, 1, 0, -0.258819, 0, 0.965926, 5, 0.5, 5.5)
[node name="enemy-flying" parent="." node_paths=PackedStringArray("player") instance=ExtResource("8_7ty2f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.5, 2.5, -6)
player = NodePath("../Player")
[node name="enemy-flying2" parent="." node_paths=PackedStringArray("player") instance=ExtResource("8_7ty2f")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -9.5, 2.5, 1.5)
player = NodePath("../Player")
[node name="enemy-flying3" parent="." node_paths=PackedStringArray("player") instance=ExtResource("8_7ty2f")]
transform = Transform3D(-0.707107, 0, -0.707107, 0, 1, 0, 0.707107, 0, -0.707107, 5.5, 3.5, 9)
player = NodePath("../Player")

@ -24,13 +24,9 @@ func _ready():
func _on_stream_finished(stream):
available.append(stream)
func play(sound_path): # Path
queue.append("res://" + sound_path)
func play_random(sound_paths): # Multiple paths, separate by commas
var sounds = sound_paths.split(",")
play(sounds[randi() % sounds.size()].strip_edges())
func play(sound_path): # Path (or multiple, separated by commas)
var sounds = sound_path.split(",")
queue.append("res://" + sounds[randi() % sounds.size()].strip_edges())
func _process(_delta):

@ -2,19 +2,20 @@ extends Resource
class_name Weapon
@export_subgroup("Model")
@export var model:PackedScene
@export var position:Vector3
@export var rotation:Vector3
@export var model:PackedScene # Model of the weapon
@export var position:Vector3 # On-screen position
@export var rotation:Vector3 # On-screen rotation
@export var burst_position:Vector3 # On-screen position of burst
@export_subgroup("Properties")
@export_range(0.1, 1) var cooldown: float = 0.1
@export_range(1, 20) var max_distance: int = 10
@export_range(0, 100) var damage: float = 25
@export_range(0, 5) var spread: float = 0
@export_range(1, 5) var shot_count: int = 1
@export_range(0.1, 1) var cooldown: float = 0.1 # Firerate
@export_range(1, 20) var max_distance: int = 10 # Fire distance
@export_range(0, 100) var damage: float = 25 # Damage per hit
@export_range(0, 5) var spread: float = 0 # Spread of each shot
@export_range(1, 5) var shot_count: int = 1 # Amount of shots
@export_subgroup("Sounds")
@export var sound_shoot: String
@export var sound_shoot: String # Sound path
@export_subgroup("Crosshair")
@export var crosshair: Texture2D
@export var crosshair: Texture2D # Image of crosshair on-screen

@ -1,19 +0,0 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://cmc2ufr6o30gl"
path="res://.godot/imported/blaster_change.ogg-27f755a5dfe4b513b0b5bc81eb113dc3.oggvorbisstr"
[deps]
source_file="res://sounds/blaster_change.ogg"
dest_files=["res://.godot/imported/blaster_change.ogg-27f755a5dfe4b513b0b5bc81eb113dc3.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://cmc2ufr6o30gl"
path="res://.godot/imported/weapon_change.ogg-7ebfd5dcd3026b79e24db351d30b1a1b.oggvorbisstr"
[deps]
source_file="res://sounds/weapon_change.ogg"
dest_files=["res://.godot/imported/weapon_change.ogg-7ebfd5dcd3026b79e24db351d30b1a1b.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bs6puxrivhkk2"
path.s3tc="res://.godot/imported/particle.png-9c8c1748211b697ea72e6a5d18d7f578.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://sprites/particle.png"
dest_files=["res://.godot/imported/particle.png-9c8c1748211b697ea72e6a5d18d7f578.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 B

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://diluv5007my5w"
path.s3tc="res://.godot/imported/tracer.png-e5030356ca26a83ff0fd1b2d5a878c23.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://sprites/tracer.png"
dest_files=["res://.godot/imported/tracer.png-e5030356ca26a83ff0fd1b2d5a878c23.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0