~sircmpwn/gdwlroots

acb7f21a80929f7616a6123ac290f262164080a8 — Drew DeVault 1 year, 2 months ago 7d52a0b
threeston: initial commit
A threeston/LICENSE => threeston/LICENSE +21 -0
@@ 0,0 1,21 @@
MIT License

Copyright (c) 2019 dgilmarj

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

A threeston/README.md => threeston/README.md +1 -0
@@ 0,0 1,1 @@
# godot-first-person-character
\ No newline at end of file

A threeston/default_env.tres => threeston/default_env.tres +9 -0
@@ 0,0 1,9 @@
[gd_resource type="Environment" load_steps=2 format=2]

[sub_resource type="ProceduralSky" id=1]

[resource]
background_mode = 2
background_sky = SubResource( 1 )
ambient_light_color = Color( 1, 1, 1, 1 )
ambient_light_energy = 3.91

A threeston/icon.png => threeston/icon.png +0 -0

A threeston/icon.png.import => threeston/icon.png.import +34 -0
@@ 0,0 1,34 @@
[remap]

importer="texture"
type="StreamTexture"
path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
metadata={
"vram_texture": false
}

[deps]

source_file="res://icon.png"
dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]

[params]

compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

A threeston/icon_fpc.PNG => threeston/icon_fpc.PNG +0 -0

A threeston/icon_fpc.PNG.import => threeston/icon_fpc.PNG.import +34 -0
@@ 0,0 1,34 @@
[remap]

importer="texture"
type="StreamTexture"
path="res://.import/icon_fpc.PNG-a20822e59310bdd1c8e658e960ec81ca.stex"
metadata={
"vram_texture": false
}

[deps]

source_file="res://icon_fpc.PNG"
dest_files=[ "res://.import/icon_fpc.PNG-a20822e59310bdd1c8e658e960ec81ca.stex" ]

[params]

compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

A threeston/prefabs/environment/Environment.tscn => threeston/prefabs/environment/Environment.tscn +25 -0
@@ 0,0 1,25 @@
[gd_scene load_steps=5 format=2]

[ext_resource path="res://prefabs/environment/chess_texture.png" type="Texture" id=1]

[sub_resource type="PlaneMesh" id=1]
size = Vector2( 100, 100 )

[sub_resource type="SpatialMaterial" id=2]
albedo_texture = ExtResource( 1 )
metallic_specular = 0.03

[sub_resource type="BoxShape" id=3]
extents = Vector3( 50, 1, 50 )

[node name="Environment" type="Spatial"]

[node name="floor" type="StaticBody" parent="."]

[node name="MeshInstance" type="MeshInstance" parent="floor"]
mesh = SubResource( 1 )
material/0 = SubResource( 2 )

[node name="CollisionShape" type="CollisionShape" parent="floor"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0 )
shape = SubResource( 3 )

A threeston/prefabs/environment/chess_texture.png => threeston/prefabs/environment/chess_texture.png +0 -0

A threeston/prefabs/environment/chess_texture.png.import => threeston/prefabs/environment/chess_texture.png.import +36 -0
@@ 0,0 1,36 @@
[remap]

importer="texture"
type="StreamTexture"
path.s3tc="res://.import/chess_texture.png-b9a4de8e47b1ee422f356d65d924b1fb.s3tc.stex"
path.etc2="res://.import/chess_texture.png-b9a4de8e47b1ee422f356d65d924b1fb.etc2.stex"
metadata={
"imported_formats": [ "s3tc", "etc2" ],
"vram_texture": true
}

[deps]

source_file="res://prefabs/environment/chess_texture.png"
dest_files=[ "res://.import/chess_texture.png-b9a4de8e47b1ee422f356d65d924b1fb.s3tc.stex", "res://.import/chess_texture.png-b9a4de8e47b1ee422f356d65d924b1fb.etc2.stex" ]

[params]

compress/mode=2
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=true
flags/filter=true
flags/mipmaps=true
flags/anisotropic=false
flags/srgb=1
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

A threeston/prefabs/first_person_controller/First_Person.gd => threeston/prefabs/first_person_controller/First_Person.gd +76 -0
@@ 0,0 1,76 @@
extends KinematicBody

#constants
const GRAVITY = 9.8

#mouse sensitivity
export(float,0.1,1.0) var sensitivity_x = 0.5
export(float,0.1,1.0) var sensitivity_y = 0.4

#physics
export(float,10.0, 30.0) var speed = 15.0
export(float,10.0, 50.0) var jump_height = 25
export(float,1.0, 10.0) var mass = 8.0
export(float,0.1, 3.0, 0.1) var gravity_scl = 1.0

#instances ref
onready var player_cam = $Camera
onready var ground_ray = $GroundRay

#variables
var mouse_motion = Vector2()
var gravity_speed = 0

func _ready():
	Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
	ground_ray.enabled = true
	pass


func _physics_process(delta):
	
	#camera and body rotation
	rotate_y(deg2rad(20)* - mouse_motion.x * sensitivity_x * delta)
	player_cam.rotate_x(deg2rad(20) * - mouse_motion.y * sensitivity_y * delta)
	player_cam.rotation.x = clamp(player_cam.rotation.x, deg2rad(-47), deg2rad(47))
	mouse_motion = Vector2()
	
	#gravity
	gravity_speed -= GRAVITY * gravity_scl * mass * delta
	
	#character moviment
	var velocity = Vector3()
	velocity = _axis() * speed
	velocity.y = gravity_speed
	
	#jump
	if Input.is_action_just_pressed("space") and ground_ray.is_colliding():
		velocity.y = jump_height
	
	gravity_speed = move_and_slide(velocity).y
	
	pass


func _input(event):
	
	if event is InputEventMouseMotion:
		mouse_motion = event.relative


func _axis():
	var direction = Vector3()
	
	if Input.is_key_pressed(KEY_W):
		direction -= get_global_transform().basis.z.normalized()
		
	if Input.is_key_pressed(KEY_S):
		direction += get_global_transform().basis.z.normalized()
		
	if Input.is_key_pressed(KEY_A):
		direction -= get_global_transform().basis.x.normalized()
		
	if Input.is_key_pressed(KEY_D):
		direction += get_global_transform().basis.x.normalized()
		
	return direction.normalized()
\ No newline at end of file

A threeston/prefabs/first_person_controller/First_Person_Character.tscn => threeston/prefabs/first_person_controller/First_Person_Character.tscn +31 -0
@@ 0,0 1,31 @@
[gd_scene load_steps=4 format=2]

[ext_resource path="res://prefabs/first_person_controller/First_Person.gd" type="Script" id=1]

[sub_resource type="CubeMesh" id=1]

size = Vector3( 1, 4, 1 )

[sub_resource type="CapsuleShape" id=2]

height = 2.0

[node name="Character" type="KinematicBody"]
script = ExtResource( 1 )

[node name="mesh" type="MeshInstance" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0 )
mesh = SubResource( 1 )
material/0 = null

[node name="Camera" type="Camera" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.4, 0 )

[node name="CollisionShape" type="CollisionShape" parent="."]
transform = Transform( 1, 0, 0, 0, -4.37114e-008, 1, 0, -1, -4.37114e-008, 0, 2, 0 )
shape = SubResource( 2 )

[node name="GroundRay" type="RayCast" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0 )
enabled = true


A threeston/prefabs/player_demo/Player.gd => threeston/prefabs/player_demo/Player.gd +55 -0
@@ 0,0 1,55 @@
extends KinematicBody

#constants
const GRAVITY = 9.8

#mouse sensitivity
export(float,0.1,1.0) var sensitivity_x = 0.5
export(float,0.1,1.0) var sensitivity_y = 0.4

#physics
export(float,10.0, 30.0) var speed = 15.0
export(float,10.0, 50.0) var jump_height = 25
export(float,1.0, 10.0) var mass = 8.0
export(float,0.1, 3.0, 0.1) var gravity_scl = 1.0

#instances ref
onready var player_cam = $Camera
onready var ground_ray = $GroundRay

#variables
var mouse_motion = Vector2()
var gravity_speed = 0

func _ready():
	ground_ray.enabled = true

func _physics_process(delta):
	rotate_y(deg2rad(20)* - mouse_motion.x * sensitivity_x * delta)
	player_cam.rotate_x(deg2rad(20) * - mouse_motion.y * sensitivity_y * delta)
	player_cam.rotation.x = clamp(player_cam.rotation.x, deg2rad(-47), deg2rad(47))
	mouse_motion = Vector2()
	
	gravity_speed -= GRAVITY * gravity_scl * mass * delta
	
	var velocity = Vector3()
	velocity = _axis() * speed
	velocity.y = gravity_speed
	
	gravity_speed = move_and_slide(velocity).y

func _input(event):
	if event is InputEventMouseMotion and Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED:
		mouse_motion = event.relative

func _axis():
	var direction = Vector3()
	if Input.is_key_pressed(KEY_W):
		direction -= get_global_transform().basis.z.normalized()
	if Input.is_key_pressed(KEY_S):
		direction += get_global_transform().basis.z.normalized()
	if Input.is_key_pressed(KEY_A):
		direction -= get_global_transform().basis.x.normalized()
	if Input.is_key_pressed(KEY_D):
		direction += get_global_transform().basis.x.normalized()
	return direction.normalized()
\ No newline at end of file

A threeston/prefabs/player_demo/Player.tscn => threeston/prefabs/player_demo/Player.tscn +20 -0
@@ 0,0 1,20 @@
[gd_scene load_steps=3 format=2]

[ext_resource path="res://prefabs/player_demo/Player.gd" type="Script" id=1]

[sub_resource type="CapsuleShape" id=2]
height = 2.0

[node name="Player" type="KinematicBody"]
script = ExtResource( 1 )

[node name="Camera" type="Camera" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.4, 0 )

[node name="CollisionShape" type="CollisionShape" parent="."]
transform = Transform( 1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 2, 0 )
shape = SubResource( 2 )

[node name="GroundRay" type="RayCast" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0 )
enabled = true

A threeston/prefabs/player_demo/bullet_mat.tres => threeston/prefabs/player_demo/bullet_mat.tres +10 -0
@@ 0,0 1,10 @@
[gd_resource type="SpatialMaterial" format=2]

[resource]

emission_enabled = true
emission = Color( 1, 0.890196, 0, 1 )
emission_energy = 1.0
emission_operator = 0
emission_on_uv2 = false


A threeston/prefabs/surface/Surface.gd => threeston/prefabs/surface/Surface.gd +37 -0
@@ 0,0 1,37 @@
extends Spatial

export var xdg_surface: WlrXdgSurface = null setget _xdg_surface_set

signal map(surface)
signal unmap(surface)

func _xdg_surface_set(val):
	$Viewport2D/SurfaceNode.xdg_surface = val
	xdg_surface = val

func _on_SurfaceNode_map(surface):
	var state = xdg_surface.get_wlr_surface().get_current_state()
	var size = Vector2(state.get_width(), state.get_height())
	if $Viewport2D.get_size() != size:
		$Viewport2D.set_size(size)
		$Viewport2D.set_size_override(true, size)
	emit_signal("map", self)
	set_process(true)

func _on_SurfaceNode_unmap(surface):
	emit_signal("unmap", self)
	set_process(false)

func _process(delta):
	if xdg_surface == null:
		return
	var surface = xdg_surface.get_wlr_surface()
	if surface == null:
		return
	var state = surface.get_current_state()
	var size = Vector2(state.get_width(), state.get_height())
	if $Viewport2D.get_size() != size:
		# TODO: This doesn't seem to work when resizing the viewport at runtime :<
		$Viewport2D.set_size(size)
		$Viewport2D.set_size_override(true, size)
		print("Set viewport size", size)
\ No newline at end of file

A threeston/prefabs/surface/Surface.tscn => threeston/prefabs/surface/Surface.tscn +24 -0
@@ 0,0 1,24 @@
[gd_scene load_steps=4 format=2]

[ext_resource path="res://prefabs/surface/Surface_Node2D.gd" type="Script" id=1]
[ext_resource path="res://prefabs/surface/Surface.gd" type="Script" id=2]

[sub_resource type="ViewportTexture" id=1]
viewport_path = NodePath("Viewport2D")

[node name="Spatial" type="Spatial"]
script = ExtResource( 2 )

[node name="Viewport2D" type="Viewport" parent="."]
size = Vector2( 512, 512 )
transparent_bg = true
usage = 0
render_target_v_flip = true

[node name="SurfaceNode" type="Node2D" parent="Viewport2D"]
script = ExtResource( 1 )

[node name="Sprite3D" type="Sprite3D" parent="."]
texture = SubResource( 1 )
[connection signal="map" from="Viewport2D/SurfaceNode" to="." method="_on_SurfaceNode_map"]
[connection signal="unmap" from="Viewport2D/SurfaceNode" to="." method="_on_SurfaceNode_unmap"]

A threeston/prefabs/surface/Surface_Node2D.gd => threeston/prefabs/surface/Surface_Node2D.gd +45 -0
@@ 0,0 1,45 @@
extends Node2D

export var xdg_surface: WlrXdgSurface = null setget _xdg_surface_set
var toplevel: WlrXdgToplevel

signal map(surface)
signal unmap(surface)

func _xdg_surface_set(val):
	if xdg_surface != null:
		xdg_surface.disconnect("destroy", self, "_on_xdg_surface_destroy")
		xdg_surface.disconnect("map", self, "_on_xdg_surface_map")
		xdg_surface.disconnect("unmap", self, "_on_xdg_surface_unmap")
	xdg_surface = val
	xdg_surface.connect("destroy", self, "_on_xdg_surface_destroy")
	xdg_surface.connect("map", self, "_on_xdg_surface_map")
	xdg_surface.connect("unmap", self, "_on_xdg_surface_unmap")

func _on_xdg_surface_destroy(xdg_surface):
	pass # TODO
	
func _on_xdg_surface_map(xdg_surface):
	set_process(true)
	emit_signal("map", self)
	
func _on_xdg_surface_unmap(xdg_surface):
	set_process(false)
	emit_signal("unmap", self)

func _process(delta):
	update()

func _draw_surface(surface, sx, sy):
	var texture = surface.get_texture()
	if texture == null:
		return
	draw_rect(get_viewport_rect(), Color.red)
	var state = xdg_surface.get_wlr_surface().get_current_state()
	draw_texture(texture, Vector2(0, 0))
	surface.send_frame_done()

func _draw():
	if xdg_surface != null:
		var fn = funcref(self, "_draw_surface")
		xdg_surface.for_each_surface(fn)
\ No newline at end of file

A threeston/project.godot => threeston/project.godot +43 -0
@@ 0,0 1,43 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
;   [section] ; section goes between []
;   param=value ; assign values to parameters

config_version=4

_global_script_classes=[  ]
_global_script_class_icons={

}

[application]

config/name="First_Person_Character"
run/main_scene="res://scenes/Main.tscn"
config/icon="res://icon_fpc.PNG"

[input]

space={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"unicode":0,"echo":false,"script":null)
 ]
}
fire={
"deadzone": 0.5,
"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null)
 ]
}
reload={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":82,"unicode":0,"echo":false,"script":null)
 ]
}

[rendering]

quality/driver/driver_name="GLES2"
environment/default_environment="res://default_env.tres"

A threeston/scenes/Game_Manager.gd => threeston/scenes/Game_Manager.gd +38 -0
@@ 0,0 1,38 @@
extends Node

var Surface = load("res://prefabs/surface/Surface.tscn")

onready var spawn_point = $Spawn_Point

func _ready():
	Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
	var display = $WaylandDisplay
	display.run()

func _input(event):
	if Input.is_action_just_pressed("ui_cancel"):
		Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
	if Input.is_mouse_button_pressed(BUTTON_LEFT):
		Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)

func _on_Dead_Zone_body_entered(body):
	body.translation = spawn_point.translation

func _on_WlrXdgShell_new_surface(xdg_surface):
	if xdg_surface.get_role() != WlrXdgSurface.XDG_SURFACE_ROLE_TOPLEVEL:
		return
	var surface = Surface.instance()
	surface.xdg_surface = xdg_surface
	surface.connect("map", self, "_on_surface_map")
	surface.connect("unmap", self, "_on_surface_unmap")
	var pos = $Player/Camera.to_global(Vector3(0, 0, -5))
	surface.transform = (
		Transform.translated(pos) *
		Transform.rotated(Vector3(0, 1, 0), $Player.rotation.y) *
		Transform.rotated(Vector3(1, 0, 0), $Player/Camera.rotation.x))

func _on_surface_map(surface):
	add_child(surface)
	
func _on_surface_unmap(surface):
	remove_child(surface)
\ No newline at end of file

A threeston/scenes/Main.tscn => threeston/scenes/Main.tscn +67 -0
@@ 0,0 1,67 @@
[gd_scene load_steps=8 format=2]

[ext_resource path="res://scenes/Game_Manager.gd" type="Script" id=1]
[ext_resource path="res://prefabs/player_demo/Player.tscn" type="PackedScene" id=2]
[ext_resource path="res://sprites/crosshair.png" type="Texture" id=3]
[ext_resource path="res://prefabs/environment/Environment.tscn" type="PackedScene" id=4]
[ext_resource path="res://prefabs/player_demo/bullet_mat.tres" type="Material" id=5]

[sub_resource type="BoxShape" id=1]
extents = Vector3( 300, 1, 300 )

[sub_resource type="CubeMesh" id=2]

[node name="Game_Manager" type="Node"]
script = ExtResource( 1 )

[node name="Environment" parent="." instance=ExtResource( 4 )]

[node name="Dead_Zone" type="Area" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -30, 0 )

[node name="CollisionShape" type="CollisionShape" parent="Dead_Zone"]
shape = SubResource( 1 )

[node name="Spawn_Point" type="Position3D" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 35, 0 )

[node name="CrossHair" type="Control" parent="."]
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
__meta__ = {
"_edit_use_anchors_": false
}

[node name="Sprite" type="Sprite" parent="CrossHair"]
scale = Vector2( 0.15, 0.15 )
texture = ExtResource( 3 )

[node name="Player" parent="." instance=ExtResource( 2 )]

[node name="MeshInstance" type="MeshInstance" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.88192, 1, -16.4228 )
visible = false
mesh = SubResource( 2 )
material/0 = ExtResource( 5 )

[node name="WaylandDisplay" type="WaylandDisplay" parent="."]

[node name="WlrBackend" type="WlrBackend" parent="WaylandDisplay"]

[node name="WlrCompositor" type="WlrCompositor" parent="WaylandDisplay/WlrBackend"]

[node name="WlrOutput" type="WlrOutput" parent="WaylandDisplay/WlrBackend"]

[node name="WlrDataDeviceManager" type="WlrDataDeviceManager" parent="WaylandDisplay"]

[node name="WlrSeat" type="WlrSeat" parent="WaylandDisplay"]

[node name="WlrXdgShell" type="WlrXdgShell" parent="WaylandDisplay"]
[connection signal="body_entered" from="Dead_Zone" to="." method="_on_Dead_Zone_body_entered"]
[connection signal="new_surface" from="WaylandDisplay/WlrXdgShell" to="." method="_on_WlrXdgShell_new_surface"]

[editable path="Environment"]

[editable path="Player"]

A threeston/sprites/crosshair.png => threeston/sprites/crosshair.png +0 -0

A threeston/sprites/crosshair.png.import => threeston/sprites/crosshair.png.import +36 -0
@@ 0,0 1,36 @@
[remap]

importer="texture"
type="StreamTexture"
path.s3tc="res://.import/crosshair.png-1281ee32d6777347e0f43a202c603c1b.s3tc.stex"
path.etc2="res://.import/crosshair.png-1281ee32d6777347e0f43a202c603c1b.etc2.stex"
metadata={
"imported_formats": [ "s3tc", "etc2" ],
"vram_texture": true
}

[deps]

source_file="res://sprites/crosshair.png"
dest_files=[ "res://.import/crosshair.png-1281ee32d6777347e0f43a202c603c1b.s3tc.stex", "res://.import/crosshair.png-1281ee32d6777347e0f43a202c603c1b.etc2.stex" ]

[params]

compress/mode=2
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=true
flags/filter=true
flags/mipmaps=true
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0