mirror of
https://github.com/tonytins/citylimits
synced 2025-06-24 17:04:44 -04:00
Merge Kenny's City Builder Starter Kit
This commit is contained in:
parent
dd04a01651
commit
36edaaf17b
510 changed files with 2236 additions and 7925 deletions
503
.gitignore
vendored
503
.gitignore
vendored
|
@ -1,6 +1,6 @@
|
|||
# File created using '.gitignore Generator' for Visual Studio Code: https://bit.ly/vscode-gig
|
||||
# Created by https://www.toptal.com/developers/gitignore/api/windows,web,visualstudiocode,monodevelop,macos,linux,godot,executable,dotnetcore,backup
|
||||
# Edit at https://www.toptal.com/developers/gitignore?templates=windows,web,visualstudiocode,monodevelop,macos,linux,godot,executable,dotnetcore,backup
|
||||
# Created by https://www.toptal.com/developers/gitignore/api/windows,visualstudiocode,rider,macos,linux,godot,executable,backup,visualstudio
|
||||
# Edit at https://www.toptal.com/developers/gitignore?templates=windows,visualstudiocode,rider,macos,linux,godot,executable,backup,visualstudio
|
||||
|
||||
### Backup ###
|
||||
*.bak
|
||||
|
@ -9,15 +9,6 @@
|
|||
*.orig
|
||||
*.tmp
|
||||
|
||||
### DotnetCore ###
|
||||
# .NET Core build folders
|
||||
bin/
|
||||
obj/
|
||||
|
||||
# Common node modules locations
|
||||
/node_modules
|
||||
/wwwroot/node_modules
|
||||
|
||||
### Executable ###
|
||||
*.app
|
||||
*.bat
|
||||
|
@ -95,15 +86,84 @@ Temporary Items
|
|||
# iCloud generated files
|
||||
*.icloud
|
||||
|
||||
### MonoDevelop ###
|
||||
#User Specific
|
||||
*.userprefs
|
||||
*.usertasks
|
||||
### Rider ###
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||
|
||||
#Mono Project Files
|
||||
*.pidb
|
||||
*.resources
|
||||
test-results/
|
||||
# User-specific stuff
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/shelf
|
||||
|
||||
# AWS User-specific
|
||||
.idea/**/aws.xml
|
||||
|
||||
# Generated files
|
||||
.idea/**/contentModel.xml
|
||||
|
||||
# Sensitive or high-churn files
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/dbnavigator.xml
|
||||
|
||||
# Gradle
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
|
||||
# Gradle and Maven with auto-import
|
||||
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||
# since they will be recreated, and may cause churn. Uncomment if using
|
||||
# auto-import.
|
||||
# .idea/artifacts
|
||||
# .idea/compiler.xml
|
||||
# .idea/jarRepositories.xml
|
||||
# .idea/modules.xml
|
||||
# .idea/*.iml
|
||||
# .idea/modules
|
||||
# *.iml
|
||||
# *.ipr
|
||||
|
||||
# CMake
|
||||
cmake-build-*/
|
||||
|
||||
# Mongo Explorer plugin
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
# File-based project format
|
||||
*.iws
|
||||
|
||||
# IntelliJ
|
||||
out/
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
|
||||
# JIRA plugin
|
||||
atlassian-ide-plugin.xml
|
||||
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# SonarLint plugin
|
||||
.idea/sonarlint/
|
||||
|
||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
|
||||
# Editor-based Rest Client
|
||||
.idea/httpRequests
|
||||
|
||||
# Android studio 3.1+ serialized cache file
|
||||
.idea/caches/build_file_checksums.ser
|
||||
|
||||
### VisualStudioCode ###
|
||||
.vscode/*
|
||||
|
@ -124,21 +184,6 @@ test-results/
|
|||
.history
|
||||
.ionide
|
||||
|
||||
### Web ###
|
||||
*.asp
|
||||
*.cer
|
||||
*.csr
|
||||
*.css
|
||||
*.htm
|
||||
*.html
|
||||
*.js
|
||||
*.jsp
|
||||
*.php
|
||||
*.rss
|
||||
*.wasm
|
||||
*.wat
|
||||
*.xhtml
|
||||
|
||||
### Windows ###
|
||||
# Windows thumbnail cache files
|
||||
Thumbs.db
|
||||
|
@ -165,7 +210,395 @@ $RECYCLE.BIN/
|
|||
# Windows shortcuts
|
||||
*.lnk
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/windows,web,visualstudiocode,monodevelop,macos,linux,godot,executable,dotnetcore,backup
|
||||
### VisualStudio ###
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
##
|
||||
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
|
||||
|
||||
# User-specific files
|
||||
*.rsuser
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Mono auto generated files
|
||||
mono_crash.*
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
x64/
|
||||
x86/
|
||||
[Ww][Ii][Nn]32/
|
||||
[Aa][Rr][Mm]/
|
||||
[Aa][Rr][Mm]64/
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
[Ll]og/
|
||||
[Ll]ogs/
|
||||
|
||||
# Visual Studio 2015/2017 cache/options directory
|
||||
.vs/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
# Visual Studio 2017 auto generated files
|
||||
Generated\ Files/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUnit
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
nunit-*.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# Benchmark Results
|
||||
BenchmarkDotNet.Artifacts/
|
||||
|
||||
# .NET Core
|
||||
project.lock.json
|
||||
project.fragment.lock.json
|
||||
artifacts/
|
||||
|
||||
# ASP.NET Scaffolding
|
||||
ScaffoldingReadMe.txt
|
||||
|
||||
# StyleCop
|
||||
StyleCopReport.xml
|
||||
|
||||
# Files built by Visual Studio
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_h.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.iobj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.ipdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp_proj
|
||||
*_wpftmp.csproj
|
||||
*.log
|
||||
*.tlog
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
*.VC.VC.opendb
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# Visual Studio Trace Files
|
||||
*.e2e
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# AxoCover is a Code Coverage Tool
|
||||
.axoCover/*
|
||||
!.axoCover/settings.json
|
||||
|
||||
# Coverlet is a free, cross platform Code Coverage Tool
|
||||
coverage*.json
|
||||
coverage*.xml
|
||||
coverage*.info
|
||||
|
||||
# Visual Studio code coverage results
|
||||
*.coverage
|
||||
*.coveragexml
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
nCrunchTemp_*
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||
# but database connection strings (with potential passwords) will be unencrypted
|
||||
*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||
# in these scripts will be unencrypted
|
||||
PublishScripts/
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# NuGet Symbol Packages
|
||||
*.snupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/[Pp]ackages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/[Pp]ackages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/[Pp]ackages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignorable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Windows Store app package directories and files
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
Package.StoreAssociation.xml
|
||||
_pkginfo.txt
|
||||
*.appx
|
||||
*.appxbundle
|
||||
*.appxupload
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!?*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
~$*
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.jfm
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
orleans.codegen.cs
|
||||
|
||||
# Including strong name files can present a security risk
|
||||
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||
#*.snk
|
||||
|
||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||
#bower_components/
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
ServiceFabricBackup/
|
||||
*.rptproj.bak
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
*.ndf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
*.rptproj.rsuser
|
||||
*- [Bb]ackup.rdl
|
||||
*- [Bb]ackup ([0-9]).rdl
|
||||
*- [Bb]ackup ([0-9][0-9]).rdl
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
node_modules/
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||
*.vbw
|
||||
|
||||
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
|
||||
*.vbp
|
||||
|
||||
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
|
||||
*.dsw
|
||||
*.dsp
|
||||
|
||||
# Visual Studio 6 technical files
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/ModelManifest.xml
|
||||
**/*.Server/GeneratedArtifacts
|
||||
**/*.Server/ModelManifest.xml
|
||||
_Pvt_Extensions
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/paket.exe
|
||||
paket-files/
|
||||
|
||||
# FAKE - F# Make
|
||||
.fake/
|
||||
|
||||
# CodeRush personal settings
|
||||
.cr/personal
|
||||
|
||||
# Python Tools for Visual Studio (PTVS)
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
# Cake - Uncomment if you are using it
|
||||
# tools/**
|
||||
# !tools/packages.config
|
||||
|
||||
# Tabs Studio
|
||||
*.tss
|
||||
|
||||
# Telerik's JustMock configuration file
|
||||
*.jmconfig
|
||||
|
||||
# BizTalk build output
|
||||
*.btp.cs
|
||||
*.btm.cs
|
||||
*.odx.cs
|
||||
*.xsd.cs
|
||||
|
||||
# OpenCover UI analysis results
|
||||
OpenCover/
|
||||
|
||||
# Azure Stream Analytics local run output
|
||||
ASALocalRun/
|
||||
|
||||
# MSBuild Binary and Structured Log
|
||||
*.binlog
|
||||
|
||||
# NVidia Nsight GPU debugger configuration file
|
||||
*.nvuser
|
||||
|
||||
# MFractors (Xamarin productivity tool) working folder
|
||||
.mfractor/
|
||||
|
||||
# Local History for Visual Studio
|
||||
.localhistory/
|
||||
|
||||
# Visual Studio History (VSHistory) files
|
||||
.vshistory/
|
||||
|
||||
# BeatPulse healthcheck temp database
|
||||
healthchecksdb
|
||||
|
||||
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
||||
MigrationBackup/
|
||||
|
||||
# Ionide (cross platform F# VS Code tools) working folder
|
||||
.ionide/
|
||||
|
||||
# Fody - auto-generated XML schema
|
||||
FodyWeavers.xsd
|
||||
|
||||
# VS Code files for those working on multiple tools
|
||||
*.code-workspace
|
||||
|
||||
# Local History for Visual Studio Code
|
||||
|
||||
# Windows Installer files from build outputs
|
||||
|
||||
# JetBrains Rider
|
||||
*.sln.iml
|
||||
|
||||
### VisualStudio Patch ###
|
||||
# Additional files built by Visual Studio
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/windows,visualstudiocode,rider,macos,linux,godot,executable,backup,visualstudio
|
||||
|
||||
# Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option)
|
||||
|
||||
|
|
16
README.md
16
README.md
|
@ -7,7 +7,7 @@
|
|||
<hr>
|
||||
</p>
|
||||
|
||||
Based on Godot, CityLimits is an open source reimagining of SimCity Classic based on Godot. In the long run, I plan on adding on gameplay mechanics used in later iterations. Like it's cousin, everything learned in the making of CityLimits will go towards the building and customization that I've been itching to create.
|
||||
CityLimits is an open source reimagining of SimCity Classic based on Godot. In the long run, I plan on adding on gameplay mechanics used in later iterations. Like it's cousin, everything learned in the making of CityLimits will go towards the building and customization that I've been itching to create.
|
||||
|
||||
## Getting Started
|
||||
|
||||
|
@ -15,6 +15,20 @@ Based on Godot, CityLimits is an open source reimagining of SimCity Classic base
|
|||
|
||||
- Godot Engine 4.x
|
||||
|
||||
### Controls
|
||||
|
||||
| Key | Command |
|
||||
| --- | --- |
|
||||
| <kbd>W</kbd> <kbd>A</kbd> <kbd>S</kbd> <kbd>D</kbd> | Move camera |
|
||||
| <kbd>F</kbd> | Camera to center |
|
||||
| <kbd>Middle mouse button</kbd> | Hold to rotate camera |
|
||||
| <kbd>Left mouse button</kbd> | Place building |
|
||||
| <kbd>DEL</kbd> | Remove building |
|
||||
| <kbd>Right mouse button</kbd> | Rotate building |
|
||||
| <kbd>Q</kbd> <kbd>E</kbd> | Toggle between buildings |
|
||||
| <kbd>F1</kbd> | Save |
|
||||
| <kbd>F2</kbd> | Load |
|
||||
|
||||
## Authors
|
||||
|
||||
- **Tony Bark** - _Initial work_ - [tonytins](https://github.com/tonytins)
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 913 B |
|
@ -1,34 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bnkl8rujlgv0h"
|
||||
path="res://.godot/imported/Checker.png-95b82ca4c05ab143e1e16c56d598421b.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/SpritesheetGenerator/Checker.png"
|
||||
dest_files=["res://.godot/imported/Checker.png-95b82ca4c05ab143e1e16c56d598421b.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
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=1
|
|
@ -1,13 +0,0 @@
|
|||
@tool
|
||||
extends EditorPlugin
|
||||
|
||||
func _enter_tree() -> void:
|
||||
add_tool_menu_item("Open Spritesheet Generator", run_generator)
|
||||
get_editor_interface().get_command_palette().add_command("Open Spritesheet Generator", "addons/open_spritesheet_generator", run_generator)
|
||||
|
||||
func _exit_tree() -> void:
|
||||
remove_tool_menu_item("Open Spritesheet Generator")
|
||||
get_editor_interface().get_command_palette().remove_command("addons/open_spritesheet_generator")
|
||||
|
||||
func run_generator():
|
||||
get_editor_interface().play_custom_scene("res://addons/SpritesheetGenerator/SpritesheetGenerator.tscn")
|
|
@ -1,77 +0,0 @@
|
|||
[gd_scene load_steps=3 format=3 uid="uid://cd5wndu01c1sn"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="2"]
|
||||
resource_local_to_scene = true
|
||||
bg_color = Color(0, 0.501961, 0.501961, 1)
|
||||
|
||||
[sub_resource type="GDScript" id="3"]
|
||||
resource_name = "Prefab"
|
||||
script/source = "extends PanelContainer
|
||||
|
||||
var odd: Vector2
|
||||
|
||||
func set_frame_margin(margin: Vector2):
|
||||
$MarginContainer.add_theme_constant_override(&\"margin_left\", margin.x)
|
||||
$MarginContainer.add_theme_constant_override(&\"margin_top\", margin.y)
|
||||
|
||||
margin += odd
|
||||
|
||||
$MarginContainer.add_theme_constant_override(&\"margin_right\", margin.x)
|
||||
$MarginContainer.add_theme_constant_override(&\"margin_bottom\", margin.y)
|
||||
|
||||
func set_texture(texture: Texture2D):
|
||||
%TextureRect.texture = texture
|
||||
odd = Vector2(int(get_texture_size().x) % 2, int(get_texture_size().y) % 2)
|
||||
|
||||
func get_texture_size() -> Vector2:
|
||||
return %TextureRect.texture.get_size()
|
||||
|
||||
func get_position2() -> Vector2:
|
||||
return position + %TextureRect.position
|
||||
|
||||
func get_texture_data() -> Image:
|
||||
return %TextureRect.texture.get_image()
|
||||
|
||||
func set_display_background(display: bool):
|
||||
get_theme_stylebox(&\"panel\").draw_center = display
|
||||
|
||||
func set_background_color(color: Color):
|
||||
get_theme_stylebox(&\"panel\").bg_color = color
|
||||
|
||||
func _get_drag_data(p: Vector2):
|
||||
var preview = TextureRect.new()
|
||||
preview.texture = %TextureRect.texture
|
||||
preview.ignore_texture_size = true
|
||||
preview.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED
|
||||
preview.size = Vector2(64, 64)
|
||||
set_drag_preview(preview)
|
||||
return {type = \"SpritesheetFrame\", node = self}
|
||||
|
||||
func _can_drop_data(p: Vector2, data) -> bool:
|
||||
return data is Dictionary and data.get(\"type\", \"\") == \"SpritesheetFrame\"
|
||||
|
||||
func _drop_data(p: Vector2, data) -> void:
|
||||
var index = get_index()
|
||||
get_parent().move_child(self, data.node.get_index())
|
||||
get_parent().move_child(data.node, index)
|
||||
get_tree().current_scene.refresh_grid()
|
||||
|
||||
func _gui_input(event: InputEvent) -> void:
|
||||
if event is InputEventMouseButton:
|
||||
if event.pressed and event.button_index == MOUSE_BUTTON_RIGHT:
|
||||
get_tree().current_scene.remove_frame.call_deferred(self)
|
||||
"
|
||||
|
||||
[node name="FramePrefab" type="PanelContainer" groups=["frame"]]
|
||||
theme_override_styles/panel = SubResource("2")
|
||||
script = SubResource("3")
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="."]
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="MarginContainer"]
|
||||
unique_name_in_owner = true
|
||||
texture_filter = 1
|
||||
layout_mode = 2
|
||||
stretch_mode = 4
|
|
@ -1,714 +0,0 @@
|
|||
[gd_scene load_steps=5 format=3 uid="uid://bf3b0i8scthbm"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://bnkl8rujlgv0h" path="res://addons/SpritesheetGenerator/Checker.png" id="1_hs1uu"]
|
||||
|
||||
[sub_resource type="GDScript" id="1"]
|
||||
resource_name = "Generator"
|
||||
script/source = "extends Control
|
||||
|
||||
const SUPPORTED_FORMATS: PackedStringArray = [\"bmp\", \"dds\", \"exr\", \"hdr\", \"jpg\", \"jpeg\", \"png\", \"tga\", \"svg\", \"svgz\", \"webp\"]
|
||||
|
||||
@onready var grid := %GridContainer
|
||||
|
||||
var file_list: Array
|
||||
var image_list: Array
|
||||
var texture_list: Array
|
||||
|
||||
var images_to_process: Array
|
||||
var images_to_texturize: Array
|
||||
var first_time := true
|
||||
var image_count: int
|
||||
var output_path: String
|
||||
|
||||
var auto := true
|
||||
var margin := Vector2.ONE
|
||||
|
||||
var pan_origin: Vector2
|
||||
var pan_start: Vector2
|
||||
|
||||
signal images_processed
|
||||
|
||||
func _enter_tree() -> void:
|
||||
$SplitDialog.hide()
|
||||
$StashDialog.hide()
|
||||
|
||||
func _ready():
|
||||
$Status.text = $Status.text % \", \".join(SUPPORTED_FORMATS)
|
||||
|
||||
get_viewport().files_dropped.connect(load_files)
|
||||
grid.minimum_size_changed.connect(refresh_background)
|
||||
set_process(false)
|
||||
|
||||
func refresh_background():
|
||||
%Background.custom_minimum_size = grid.get_minimum_size()
|
||||
|
||||
func load_files(files: PackedStringArray):
|
||||
file_list.clear()
|
||||
image_list.clear()
|
||||
|
||||
%CustomName.text = \"\"
|
||||
%Reload.disabled = false
|
||||
%SavePNG.disabled = false
|
||||
|
||||
if files.size() == 1 and not FileAccess.file_exists(files[0]):
|
||||
var dir := DirAccess.open(files[0])
|
||||
if not dir:
|
||||
show_error(\"Can't open directory.\")
|
||||
return
|
||||
|
||||
for file in dir.get_files():
|
||||
if file.get_extension() in SUPPORTED_FORMATS:
|
||||
file_list.append(str(dir.get_current_dir().path_join(file)))
|
||||
else:
|
||||
var wrong_count: int
|
||||
for file in files:
|
||||
if file.get_extension() in SUPPORTED_FORMATS:
|
||||
file_list.append(file)
|
||||
else:
|
||||
wrong_count += 1
|
||||
|
||||
if wrong_count > 0:
|
||||
show_error(\"Skipped %s file(s) with unsupported extension.\" % wrong_count)
|
||||
|
||||
if file_list.is_empty():
|
||||
show_error(\"No valid files or directories to process.\")
|
||||
return
|
||||
|
||||
load_images()
|
||||
|
||||
func load_images():
|
||||
texture_list.clear()
|
||||
|
||||
for image in grid.get_children():
|
||||
image.free()
|
||||
|
||||
for image in %StashImages.get_children():
|
||||
image.free()
|
||||
update_stash()
|
||||
|
||||
var size_map: Dictionary
|
||||
|
||||
if not file_list.is_empty():
|
||||
image_list = file_list.map(func(file: String):
|
||||
var image := Image.load_from_file(file)
|
||||
if image:
|
||||
image.set_meta(&\"path\", file)
|
||||
return image)
|
||||
|
||||
for image in image_list:
|
||||
if not image:
|
||||
continue
|
||||
|
||||
if not image.get_size() in size_map:
|
||||
size_map[image.get_size()] = []
|
||||
size_map[image.get_size()].append(image)
|
||||
|
||||
var output_name: String
|
||||
var most_common_size: Vector2i
|
||||
var most_common_count: int
|
||||
|
||||
for size in size_map:
|
||||
if size_map[size].size() > most_common_count:
|
||||
most_common_size = size
|
||||
most_common_count = size_map[size].size()
|
||||
|
||||
for image in size_map[most_common_size]:
|
||||
if output_path.is_empty():
|
||||
var path: String = image.get_meta(&\"path\", \"\")
|
||||
output_path = path.get_base_dir()
|
||||
output_name = path.get_base_dir().get_file()
|
||||
|
||||
images_to_process.append(image)
|
||||
size_map.clear()
|
||||
|
||||
if not output_name.is_empty() and %CustomName.text.is_empty():
|
||||
%CustomName.text = output_name
|
||||
update_save_button()
|
||||
|
||||
if images_to_process.size() < file_list.size():
|
||||
show_error(\"Rejected %s image(s) due to size mismatch.\" % (file_list.size() - images_to_process.size()))
|
||||
|
||||
if images_to_process.size() == 1:
|
||||
if file_list.size() > 1:
|
||||
images_to_process.clear()
|
||||
show_error(\"Only one dropped image was valid.\")
|
||||
else:
|
||||
%SplitPreview.texture = ImageTexture.create_from_image(images_to_process[0])
|
||||
$SplitDialog.reset_size()
|
||||
$SplitDialog.popup_centered()
|
||||
|
||||
return
|
||||
|
||||
$Status.show()
|
||||
%CenterContainer.hide()
|
||||
|
||||
image_count = images_to_process.size()
|
||||
%Columns.max_value = image_count
|
||||
|
||||
threshold = %Threshold.value
|
||||
min_x = 9999999
|
||||
min_y = 9999999
|
||||
max_x = -9999999
|
||||
max_y = -9999999
|
||||
|
||||
set_process(true)
|
||||
|
||||
await images_processed
|
||||
|
||||
for texture in texture_list:
|
||||
add_frame(texture)
|
||||
|
||||
toggle_auto(auto)
|
||||
refresh_margin()
|
||||
|
||||
$Status.hide()
|
||||
%CenterContainer.show()
|
||||
|
||||
var threshold: float
|
||||
var min_x: int
|
||||
var min_y: int
|
||||
var max_x: int
|
||||
var max_y: int
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
if not images_to_process.is_empty():
|
||||
var image: Image = images_to_process.pop_front()
|
||||
$Status.text = str(\"Preprocessing image \", image_count - images_to_process.size(), \"/\", image_count)
|
||||
|
||||
for x in image.get_width():
|
||||
for y in image.get_height():
|
||||
if image.get_pixel(x, y).a >= threshold:
|
||||
min_x = mini(min_x, x)
|
||||
min_y = mini(min_y, y)
|
||||
max_x = maxi(max_x, x)
|
||||
max_y = maxi(max_y, y)
|
||||
|
||||
images_to_texturize.append(image)
|
||||
elif not images_to_texturize.is_empty():
|
||||
var rect := Rect2i(min_x, min_y, max_x - min_x + 1, max_y - min_y + 1)
|
||||
var image: Image = images_to_texturize.pop_front()
|
||||
$Status.text = str(\"Creating texture \", image_count - images_to_texturize.size(), \"/\", image_count)
|
||||
|
||||
var true_image := Image.create(rect.size.x, rect.size.y, false, image.get_format())
|
||||
true_image.blit_rect(image, rect, Vector2())
|
||||
|
||||
var texture := ImageTexture.create_from_image(true_image)
|
||||
texture_list.append(texture)
|
||||
|
||||
if images_to_texturize.is_empty():
|
||||
set_process(false)
|
||||
images_processed.emit()
|
||||
if first_time:
|
||||
recenter()
|
||||
first_time = false
|
||||
|
||||
func toggle_grid(show: bool) -> void:
|
||||
get_tree().call_group(&\"frame\", &\"set_display_background\", show)
|
||||
|
||||
func toggle_auto(button_pressed: bool) -> void:
|
||||
%Columns.editable = not button_pressed
|
||||
auto = button_pressed
|
||||
|
||||
if button_pressed:
|
||||
var best: int
|
||||
var best_score = -9999999
|
||||
|
||||
for i in range(1, image_count + 1):
|
||||
var cols = i
|
||||
var rows = ceili(image_count / float(i))
|
||||
|
||||
var score = image_count - cols * rows - maxi(cols, rows) - rows
|
||||
if score > best_score:
|
||||
best = i
|
||||
best_score = score
|
||||
|
||||
grid.columns = best
|
||||
else:
|
||||
grid.columns = %Columns.value
|
||||
refresh_grid()
|
||||
|
||||
func hmargin_changed(value: float) -> void:
|
||||
margin.x = value
|
||||
refresh_margin()
|
||||
|
||||
func vmargin_changed(value: float) -> void:
|
||||
margin.y = value
|
||||
refresh_margin()
|
||||
|
||||
func refresh_margin():
|
||||
get_tree().call_group(&\"frame\", &\"set_frame_margin\", margin)
|
||||
|
||||
func columns_changed(value: float) -> void:
|
||||
grid.columns = value
|
||||
refresh_grid()
|
||||
|
||||
func refresh_grid():
|
||||
var coord: Vector2
|
||||
var dark = false
|
||||
|
||||
for rect in grid.get_children():
|
||||
rect.set_background_color(Color(0, 0, 0, 0.2 if dark else 0.1))
|
||||
dark = not dark
|
||||
coord.x += 1
|
||||
|
||||
if coord.x == grid.columns:
|
||||
coord.x = 0
|
||||
coord.y += 1
|
||||
dark = int(coord.y) % 2 == 1
|
||||
|
||||
func save_png() -> void:
|
||||
var image_size: Vector2 = grid.get_child(0).get_minimum_size()
|
||||
|
||||
var image := Image.create(image_size.x * grid.columns, image_size.y * (ceil(grid.get_child_count() / float(grid.columns))), false, Image.FORMAT_RGBA8)
|
||||
|
||||
for rect in grid.get_children():
|
||||
image.blit_rect(rect.get_texture_data(), Rect2(Vector2(), image_size), rect.get_position2())
|
||||
|
||||
image.save_png(output_path.path_join(%CustomName.text) + \".png\")
|
||||
|
||||
func show_error(text: String):
|
||||
if not %Error.visible:
|
||||
%Error.show()
|
||||
else:
|
||||
%Error.text += \"\\n\"
|
||||
%Error.text += text
|
||||
%Timer.start()
|
||||
|
||||
func error_hidden() -> void:
|
||||
%Error.text = \"\"
|
||||
|
||||
func _input(event: InputEvent) -> void:
|
||||
if event is InputEventMouseButton:
|
||||
var cc: Control = %CenterContainer
|
||||
|
||||
if event.button_index == MOUSE_BUTTON_MIDDLE:
|
||||
if event.pressed:
|
||||
pan_origin = get_local_mouse_position()
|
||||
pan_start = cc.position
|
||||
else:
|
||||
pan_origin = Vector2()
|
||||
|
||||
if event.button_index == MOUSE_BUTTON_WHEEL_DOWN:
|
||||
var lm = cc.get_local_mouse_position()
|
||||
cc.scale -= Vector2.ONE * 0.05
|
||||
if cc.scale.x <= 0:
|
||||
cc.scale = Vector2.ONE * 0.05
|
||||
|
||||
cc.position -= (lm - cc.get_local_mouse_position()) * cc.scale
|
||||
elif event.button_index == MOUSE_BUTTON_WHEEL_UP:
|
||||
var lm = cc.get_local_mouse_position()
|
||||
cc.scale += Vector2.ONE * 0.05
|
||||
cc.position -= (lm - cc.get_local_mouse_position()) * cc.scale
|
||||
|
||||
if event is InputEventMouseMotion:
|
||||
if pan_origin != Vector2():
|
||||
%CenterContainer.position = pan_start + (get_local_mouse_position() - pan_origin)
|
||||
|
||||
func recenter() -> void:
|
||||
%CenterContainer.position = get_viewport().size / 2 - Vector2i(%CenterContainer.size) / 2
|
||||
%CenterContainer.scale = Vector2.ONE
|
||||
|
||||
func update_split_preview():
|
||||
%SplitPreview.queue_redraw()
|
||||
|
||||
func draw_split_preview() -> void:
|
||||
var preview: TextureRect = %SplitPreview
|
||||
var frame_count := Vector2(%SplitX.value, %SplitY.value)
|
||||
var frame_size := preview.size / frame_count
|
||||
|
||||
for x in range(1, frame_count.x):
|
||||
for y in int(frame_count.y):
|
||||
preview.draw_line(frame_size * Vector2(x, y), frame_size * Vector2(x, y + 1), Color.WHITE)
|
||||
preview.draw_line(frame_size * Vector2(x, y) + Vector2.RIGHT, frame_size * Vector2(x, y + 1) + Vector2.RIGHT, Color.BLACK)
|
||||
|
||||
for y in range(1, frame_count.y):
|
||||
for x in int(frame_count.x):
|
||||
preview.draw_line(frame_size * Vector2(x, y), frame_size * Vector2(x + 1, y), Color.WHITE)
|
||||
preview.draw_line(frame_size * Vector2(x, y) + Vector2.DOWN, frame_size * Vector2(x + 1, y) + Vector2.DOWN, Color.BLACK)
|
||||
|
||||
func split_spritesheet() -> void:
|
||||
file_list.clear()
|
||||
image_list.clear()
|
||||
|
||||
var image: Image = images_to_process[0]
|
||||
var sub_image_size := image.get_size() / Vector2i(%SplitX.value, %SplitY.value)
|
||||
|
||||
for y in %SplitY.value:
|
||||
for x in %SplitX.value:
|
||||
image_list.append(image.get_region(Rect2i(Vector2i(x, y) * sub_image_size, sub_image_size)))
|
||||
|
||||
images_to_process.clear()
|
||||
load_images()
|
||||
|
||||
func remove_frame(frame):
|
||||
var image: Image = frame.get_texture_data()
|
||||
var texture := ImageTexture.create_from_image(image)
|
||||
|
||||
var button := TextureButton.new()
|
||||
button.texture_normal = texture
|
||||
button.custom_minimum_size = Vector2(128, 128)
|
||||
button.stretch_mode = TextureButton.STRETCH_KEEP_ASPECT_CENTERED
|
||||
button.ignore_texture_size = true
|
||||
button.pressed.connect(re_add_image.bind(button), CONNECT_DEFERRED)
|
||||
%StashImages.add_child(button)
|
||||
|
||||
var ref := ReferenceRect.new()
|
||||
button.add_child(ref)
|
||||
ref.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
|
||||
ref.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
ref.editor_only = false
|
||||
|
||||
frame.free()
|
||||
refresh_grid()
|
||||
update_stash()
|
||||
|
||||
func update_stash():
|
||||
%Stash.disabled = %StashImages.get_child_count() == 0
|
||||
|
||||
func re_add_image(tb: TextureButton):
|
||||
add_frame(tb.texture_normal)
|
||||
tb.free()
|
||||
refresh_grid()
|
||||
update_stash()
|
||||
|
||||
if %Stash.disabled:
|
||||
$StashDialog.hide()
|
||||
|
||||
func add_frame(texture: Texture2D):
|
||||
var rect := preload(\"res://addons/SpritesheetGenerator/SpritesheetFrame.tscn\").instantiate()
|
||||
rect.set_texture(texture)
|
||||
rect.set_display_background(%DisplayGrid.button_pressed)
|
||||
rect.set_frame_margin(margin)
|
||||
grid.add_child(rect)
|
||||
|
||||
func update_save_button() -> void:
|
||||
%SavePNG.disabled = %CustomName.text.is_empty()
|
||||
"
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="5"]
|
||||
content_margin_left = 20.0
|
||||
content_margin_top = 20.0
|
||||
content_margin_right = 20.0
|
||||
content_margin_bottom = 20.0
|
||||
bg_color = Color(0, 0, 0, 0.25098)
|
||||
|
||||
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_kjgn5"]
|
||||
texture = ExtResource("1_hs1uu")
|
||||
axis_stretch_horizontal = 1
|
||||
axis_stretch_vertical = 1
|
||||
|
||||
[node name="Main" type="HBoxContainer"]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
script = SubResource("1")
|
||||
|
||||
[node name="MarginContainer" type="PanelContainer" parent="."]
|
||||
layout_mode = 2
|
||||
theme_override_styles/panel = SubResource("5")
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 10
|
||||
|
||||
[node name="Label5" type="Label" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Alpha Threshold"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="Threshold" type="SpinBox" parent="MarginContainer/VBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
max_value = 1.0
|
||||
step = 0.005
|
||||
value = 0.9
|
||||
|
||||
[node name="Reload" type="Button" parent="MarginContainer/VBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "Reload"
|
||||
|
||||
[node name="HSeparator" type="HSeparator" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Columns"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="Columns" type="SpinBox" parent="MarginContainer/VBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
min_value = 1.0
|
||||
value = 1.0
|
||||
editable = false
|
||||
|
||||
[node name="Grid" type="CheckButton" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
button_pressed = true
|
||||
text = "Auto"
|
||||
|
||||
[node name="Label3" type="Label" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Horizontal Margin"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="MarginH" type="SpinBox" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
value = 1.0
|
||||
suffix = "px"
|
||||
|
||||
[node name="Label4" type="Label" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Vertical Margin"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="MarginV" type="SpinBox" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
max_value = 128.0
|
||||
value = 1.0
|
||||
suffix = "px"
|
||||
|
||||
[node name="Stash" type="Button" parent="MarginContainer/VBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "Image Stash"
|
||||
|
||||
[node name="HSeparator2" type="HSeparator" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Button" type="Button" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Recenter View
|
||||
"
|
||||
|
||||
[node name="DisplayGrid" type="CheckBox" parent="MarginContainer/VBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
button_pressed = true
|
||||
text = "Show Grid"
|
||||
|
||||
[node name="HSeparator3" type="HSeparator" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="CustomName" type="LineEdit" parent="MarginContainer/VBoxContainer/HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
placeholder_text = "Image Name"
|
||||
|
||||
[node name="SavePNG" type="Button" parent="MarginContainer/VBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "Save PNG"
|
||||
|
||||
[node name="Status" type="Label" parent="."]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "Drop folder or image files here to start.
|
||||
|
||||
Images should be of the same size. If their sizes don't match, the generator will try to use the dominating size.
|
||||
|
||||
The images will be automatically cropped based on the Alpha Threshold value. Greater value means more exact crop.
|
||||
|
||||
Supported formats: %s
|
||||
|
||||
If you drop a single image, the generator will instead edit it as spritesheet."
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="View" type="CanvasLayer" parent="."]
|
||||
layer = -1
|
||||
|
||||
[node name="CenterContainer" type="CenterContainer" parent="View"]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="Background" type="ColorRect" parent="View/CenterContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
mouse_filter = 1
|
||||
color = Color(0, 0.501961, 0.501961, 1)
|
||||
|
||||
[node name="GridContainer" type="GridContainer" parent="View/CenterContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme_override_constants/h_separation = 0
|
||||
theme_override_constants/v_separation = 0
|
||||
columns = 3
|
||||
|
||||
[node name="VBoxContainer" type="GridContainer" parent="View"]
|
||||
anchors_preset = 3
|
||||
anchor_left = 1.0
|
||||
anchor_top = 1.0
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -40.0
|
||||
offset_top = -40.0
|
||||
grow_horizontal = 0
|
||||
grow_vertical = 0
|
||||
mouse_filter = 2
|
||||
columns = 3
|
||||
|
||||
[node name="Label" type="Label" parent="View/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "LMB"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="VSeparator" type="VSeparator" parent="View/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label2" type="Label" parent="View/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "rearrange images"
|
||||
|
||||
[node name="Label3" type="Label" parent="View/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "RMB"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="VSeparator2" type="VSeparator" parent="View/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label4" type="Label" parent="View/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "delete images"
|
||||
|
||||
[node name="Label5" type="Label" parent="View/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "MMB"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="VSeparator3" type="VSeparator" parent="View/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label6" type="Label" parent="View/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "pan view"
|
||||
|
||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||
|
||||
[node name="Error" type="Label" parent="CanvasLayer"]
|
||||
unique_name_in_owner = true
|
||||
modulate = Color(1, 0, 0, 1)
|
||||
anchors_preset = 12
|
||||
anchor_top = 1.0
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_top = -14.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 0
|
||||
size_flags_vertical = 0
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="Timer" type="Timer" parent="CanvasLayer"]
|
||||
unique_name_in_owner = true
|
||||
wait_time = 5.0
|
||||
one_shot = true
|
||||
|
||||
[node name="SplitDialog" type="ConfirmationDialog" parent="."]
|
||||
title = "Edit Spritesheet"
|
||||
position = Vector2i(-500, 0)
|
||||
size = Vector2i(272, 343)
|
||||
visible = true
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="SplitDialog"]
|
||||
offset_left = 8.0
|
||||
offset_top = 8.0
|
||||
offset_right = 264.0
|
||||
offset_bottom = 294.0
|
||||
|
||||
[node name="Label" type="Label" parent="SplitDialog/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Split Frames"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="SplitDialog/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
alignment = 1
|
||||
|
||||
[node name="SplitX" type="SpinBox" parent="SplitDialog/VBoxContainer/HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
min_value = 1.0
|
||||
max_value = 1000.0
|
||||
value = 1.0
|
||||
select_all_on_focus = true
|
||||
|
||||
[node name="Label" type="Label" parent="SplitDialog/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "x"
|
||||
|
||||
[node name="SplitY" type="SpinBox" parent="SplitDialog/VBoxContainer/HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
min_value = 1.0
|
||||
max_value = 1000.0
|
||||
value = 1.0
|
||||
select_all_on_focus = true
|
||||
|
||||
[node name="CenterContainer" type="CenterContainer" parent="SplitDialog/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="SplitDialog/VBoxContainer/CenterContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_styles/panel = SubResource("StyleBoxTexture_kjgn5")
|
||||
|
||||
[node name="SplitPreview" type="TextureRect" parent="SplitDialog/VBoxContainer/CenterContainer/PanelContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
|
||||
[node name="StashDialog" type="AcceptDialog" parent="."]
|
||||
title = "Image Stash"
|
||||
position = Vector2i(-500, 500)
|
||||
size = Vector2i(309, 100)
|
||||
visible = true
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="StashDialog"]
|
||||
offset_left = 8.0
|
||||
offset_top = 8.0
|
||||
offset_right = 301.0
|
||||
offset_bottom = 51.0
|
||||
|
||||
[node name="Label" type="Label" parent="StashDialog/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Click frame to re-add it to spritesheet."
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="StashImages" type="HFlowContainer" parent="StashDialog/VBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
|
||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/Reload" to="." method="load_images"]
|
||||
[connection signal="value_changed" from="MarginContainer/VBoxContainer/Columns" to="." method="columns_changed"]
|
||||
[connection signal="toggled" from="MarginContainer/VBoxContainer/Grid" to="." method="toggle_auto"]
|
||||
[connection signal="value_changed" from="MarginContainer/VBoxContainer/MarginH" to="." method="hmargin_changed"]
|
||||
[connection signal="value_changed" from="MarginContainer/VBoxContainer/MarginV" to="." method="vmargin_changed"]
|
||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/Stash" to="StashDialog" method="popup_centered_ratio" binds= [0.5]]
|
||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/Button" to="." method="recenter"]
|
||||
[connection signal="toggled" from="MarginContainer/VBoxContainer/DisplayGrid" to="." method="toggle_grid"]
|
||||
[connection signal="text_changed" from="MarginContainer/VBoxContainer/HBoxContainer/CustomName" to="." method="update_save_button" unbinds=1]
|
||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/SavePNG" to="." method="save_png"]
|
||||
[connection signal="hidden" from="CanvasLayer/Error" to="." method="error_hidden"]
|
||||
[connection signal="timeout" from="CanvasLayer/Timer" to="CanvasLayer/Error" method="hide"]
|
||||
[connection signal="confirmed" from="SplitDialog" to="." method="split_spritesheet"]
|
||||
[connection signal="value_changed" from="SplitDialog/VBoxContainer/HBoxContainer/SplitX" to="." method="update_split_preview" unbinds=1]
|
||||
[connection signal="value_changed" from="SplitDialog/VBoxContainer/HBoxContainer/SplitY" to="." method="update_split_preview" unbinds=1]
|
||||
[connection signal="draw" from="SplitDialog/VBoxContainer/CenterContainer/PanelContainer/SplitPreview" to="." method="draw_split_preview"]
|
|
@ -1,7 +0,0 @@
|
|||
[plugin]
|
||||
|
||||
name="Spritesheet Generator"
|
||||
description="Generates cropped spritesheets from multiple images."
|
||||
author="KoBeWi"
|
||||
version="1.2"
|
||||
script="SpriteSheetGenerator.gd"
|
File diff suppressed because it is too large
Load diff
|
@ -1,44 +0,0 @@
|
|||
@tool
|
||||
extends Label
|
||||
|
||||
@export_category("FontAwesome")
|
||||
@export_range(1, 16384) var icon_size: int = 16: set = set_icon_size
|
||||
@export_enum("solid", "regular", "brands") var icon_type: String = "solid": set = set_icon_type
|
||||
@export var icon_name: String = "circle-question": set = set_icon_name
|
||||
|
||||
const icon_fonts: Dictionary = {
|
||||
"solid": "res://addons/fontawesome/fonts/fa-solid-900.woff2",
|
||||
"regular": "res://addons/fontawesome/fonts/fa-regular-400.woff2",
|
||||
"brands": "res://addons/fontawesome/fonts/fa-brands-400.woff2"
|
||||
}
|
||||
|
||||
const cheatsheet: Dictionary = preload("res://addons/fontawesome/All.gd").all
|
||||
|
||||
func _init():
|
||||
horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
vertical_alignment = VERTICAL_ALIGNMENT_CENTER
|
||||
# disable some things, this is icon not text
|
||||
auto_translate = false
|
||||
localize_numeral_system = false
|
||||
|
||||
set_icon_type(icon_type)
|
||||
set_icon_size(icon_size)
|
||||
set_icon_name(icon_name)
|
||||
|
||||
func set_icon_size(new_size: int):
|
||||
icon_size = clamp(new_size, 1, 16384)
|
||||
add_theme_font_size_override("font_size", icon_size)
|
||||
size = Vector2(icon_size, icon_size)
|
||||
|
||||
func set_icon_type(new_type: String):
|
||||
icon_type = new_type
|
||||
match icon_type:
|
||||
"solid", "regular", "brands":
|
||||
add_theme_font_override("font", load(icon_fonts[icon_type]))
|
||||
|
||||
func set_icon_name(new_name: String):
|
||||
icon_name = new_name
|
||||
var iconcode = ""
|
||||
if icon_name in cheatsheet[icon_type]:
|
||||
iconcode = cheatsheet[icon_type][icon_name]
|
||||
set_text(iconcode)
|
|
@ -1,21 +0,0 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2023 LetterN
|
||||
|
||||
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.
|
|
@ -1 +0,0 @@
|
|||
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="flag" class="svg-inline--fa fa-flag fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="16" height="16"><path stroke="black" stroke-width="2" fill="#a5efac" d="M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z"></path></svg>
|
Before Width: | Height: | Size: 806 B |
|
@ -1,37 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cdk6bwkag1wre"
|
||||
path="res://.godot/imported/flag-solid.svg-f443982cac7d006eea43c772e2428bae.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/fontawesome/flag-solid.svg"
|
||||
dest_files=["res://.godot/imported/flag-solid.svg-f443982cac7d006eea43c772e2428bae.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
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=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
Binary file not shown.
|
@ -1,33 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://clt4puu367e82"
|
||||
path="res://.godot/imported/fa-brands-400.woff2-01946f939132baa0e37dbdeac9412933.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/fontawesome/fonts/fa-brands-400.woff2"
|
||||
dest_files=["res://.godot/imported/fa-brands-400.woff2-01946f939132baa0e37dbdeac9412933.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
|
@ -1,33 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://ew3t30vlpjit"
|
||||
path="res://.godot/imported/fa-regular-400.woff2-bb494eebb9050a2fb4b1382e97f43781.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/fontawesome/fonts/fa-regular-400.woff2"
|
||||
dest_files=["res://.godot/imported/fa-regular-400.woff2-bb494eebb9050a2fb4b1382e97f43781.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
|
@ -1,33 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://bkqnxsphaabhw"
|
||||
path="res://.godot/imported/fa-solid-900.woff2-a9219e5bf1517e35af668434330a4deb.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/fontawesome/fonts/fa-solid-900.woff2"
|
||||
dest_files=["res://.godot/imported/fa-solid-900.woff2-a9219e5bf1517e35af668434330a4deb.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
|
@ -1,6 +0,0 @@
|
|||
[plugin]
|
||||
name="FontAwesome"
|
||||
description="FontAwesome 6 Icons"
|
||||
author="LetterN"
|
||||
version="6.3.0"
|
||||
script="plugin.gd"
|
|
@ -1,8 +0,0 @@
|
|||
@tool
|
||||
extends EditorPlugin
|
||||
|
||||
func _enter_tree():
|
||||
add_custom_type("FontAwesome", "Label", preload("res://addons/fontawesome/FontAwesome.gd"), preload("res://addons/fontawesome/flag-solid.svg"))
|
||||
|
||||
func _exit_tree():
|
||||
remove_custom_type("FontAwesome")
|
|
@ -1,21 +0,0 @@
|
|||
|
||||
|
||||
UI SFX Set
|
||||
|
||||
by Kenney Vleugels (Kenney.nl)
|
||||
|
||||
------------------------------
|
||||
|
||||
License (Creative Commons Zero, CC0)
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
|
||||
You may use these assets in personal and commercial projects.
|
||||
Credit (Kenney or www.kenney.nl) would be nice but is not mandatory.
|
||||
|
||||
------------------------------
|
||||
|
||||
Donate: http://support.kenney.nl
|
||||
Request: http://request.kenney.nl
|
||||
|
||||
Follow on Twitter for updates:
|
||||
@KenneyNL
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://qsfmauhsas17"
|
||||
path="res://.godot/imported/click1.wav-6455415d999fb02a4d0e65426c8e3fbb.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/click1.wav"
|
||||
dest_files=["res://.godot/imported/click1.wav-6455415d999fb02a4d0e65426c8e3fbb.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://vjq6jqpqpyxm"
|
||||
path="res://.godot/imported/click2.wav-e4d4f6fc85d10146603686d4a7b23a41.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/click2.wav"
|
||||
dest_files=["res://.godot/imported/click2.wav-e4d4f6fc85d10146603686d4a7b23a41.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://d3koabe21yusw"
|
||||
path="res://.godot/imported/click3.wav-191e18de041e05b52c4992cf5dba790b.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/click3.wav"
|
||||
dest_files=["res://.godot/imported/click3.wav-191e18de041e05b52c4992cf5dba790b.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://de0mgr75dqogp"
|
||||
path="res://.godot/imported/click4.wav-d9ec980ae5410495fe7f07a33dce82bb.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/click4.wav"
|
||||
dest_files=["res://.godot/imported/click4.wav-d9ec980ae5410495fe7f07a33dce82bb.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://d0mc5wktyasre"
|
||||
path="res://.godot/imported/click5.wav-69a681cdf29c823e702327e1e8f5476b.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/click5.wav"
|
||||
dest_files=["res://.godot/imported/click5.wav-69a681cdf29c823e702327e1e8f5476b.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://djpfxob43wiul"
|
||||
path="res://.godot/imported/mouseclick1.wav-50584c065a760e99151dd6a173cc33ec.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/mouseclick1.wav"
|
||||
dest_files=["res://.godot/imported/mouseclick1.wav-50584c065a760e99151dd6a173cc33ec.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://jehejt5mpgdh"
|
||||
path="res://.godot/imported/mouserelease1.wav-925ae13f439fe21624dc79f7c203d6eb.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/mouserelease1.wav"
|
||||
dest_files=["res://.godot/imported/mouserelease1.wav-925ae13f439fe21624dc79f7c203d6eb.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://blc0r2oliif3m"
|
||||
path="res://.godot/imported/rollover1.wav-2290a57362715e9e23e123b2bbb2adba.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/rollover1.wav"
|
||||
dest_files=["res://.godot/imported/rollover1.wav-2290a57362715e9e23e123b2bbb2adba.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://w64g2ahka6dk"
|
||||
path="res://.godot/imported/rollover2.wav-76041bda4383c69214b9e7ccf1a2051e.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/rollover2.wav"
|
||||
dest_files=["res://.godot/imported/rollover2.wav-76041bda4383c69214b9e7ccf1a2051e.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://4rjpsf1lkph1"
|
||||
path="res://.godot/imported/rollover3.wav-8a4f0c940c94c60009c4b5b83a84ddf0.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/rollover3.wav"
|
||||
dest_files=["res://.godot/imported/rollover3.wav-8a4f0c940c94c60009c4b5b83a84ddf0.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://d275uw1nvvnhu"
|
||||
path="res://.godot/imported/rollover4.wav-c67a43968eafc478e9fdb0188e82bcaf.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/rollover4.wav"
|
||||
dest_files=["res://.godot/imported/rollover4.wav-c67a43968eafc478e9fdb0188e82bcaf.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://bh8617vgogm38"
|
||||
path="res://.godot/imported/rollover5.wav-764adea13c87e7d15f82dd85339d9c65.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/rollover5.wav"
|
||||
dest_files=["res://.godot/imported/rollover5.wav-764adea13c87e7d15f82dd85339d9c65.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://b5etqpq8bq66i"
|
||||
path="res://.godot/imported/rollover6.wav-5b4b75ae4621ba2f0753784e2b2f1c07.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/rollover6.wav"
|
||||
dest_files=["res://.godot/imported/rollover6.wav-5b4b75ae4621ba2f0753784e2b2f1c07.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://c2gdjew17v5rb"
|
||||
path="res://.godot/imported/switch1.wav-49860a273fb84f64ada51aa5f0c1fb32.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch1.wav"
|
||||
dest_files=["res://.godot/imported/switch1.wav-49860a273fb84f64ada51aa5f0c1fb32.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://cl6yeh0ac8o8s"
|
||||
path="res://.godot/imported/switch10.wav-e25e39fd217c6c92fcc7fa9e725113dd.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch10.wav"
|
||||
dest_files=["res://.godot/imported/switch10.wav-e25e39fd217c6c92fcc7fa9e725113dd.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://btmwmg064j55y"
|
||||
path="res://.godot/imported/switch11.wav-dd799b7d6a321bd4bf7ad99179889d2f.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch11.wav"
|
||||
dest_files=["res://.godot/imported/switch11.wav-dd799b7d6a321bd4bf7ad99179889d2f.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://c4frog61dyv5q"
|
||||
path="res://.godot/imported/switch12.wav-11a273a32ba3db16df867f4ff5a04360.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch12.wav"
|
||||
dest_files=["res://.godot/imported/switch12.wav-11a273a32ba3db16df867f4ff5a04360.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://dsgjokwvkbcgi"
|
||||
path="res://.godot/imported/switch13.wav-a06d1bafecd411d3f1bb80d48e308bec.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch13.wav"
|
||||
dest_files=["res://.godot/imported/switch13.wav-a06d1bafecd411d3f1bb80d48e308bec.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://ytymxv6u0780"
|
||||
path="res://.godot/imported/switch14.wav-407774019f5dd6aa7e70f9fd3fa5489d.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch14.wav"
|
||||
dest_files=["res://.godot/imported/switch14.wav-407774019f5dd6aa7e70f9fd3fa5489d.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://bd7j1lk0hv7qh"
|
||||
path="res://.godot/imported/switch15.wav-db1d62c5a4d9439335ac0f95dc0e619f.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch15.wav"
|
||||
dest_files=["res://.godot/imported/switch15.wav-db1d62c5a4d9439335ac0f95dc0e619f.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://cn2t8ft6nosb4"
|
||||
path="res://.godot/imported/switch16.wav-c4112140396afc1b2d36178d6c49c40c.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch16.wav"
|
||||
dest_files=["res://.godot/imported/switch16.wav-c4112140396afc1b2d36178d6c49c40c.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://c0l1cdq5b5npn"
|
||||
path="res://.godot/imported/switch17.wav-670b57edd62be09830bdd22627c799c5.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch17.wav"
|
||||
dest_files=["res://.godot/imported/switch17.wav-670b57edd62be09830bdd22627c799c5.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://dos7071gdsgx5"
|
||||
path="res://.godot/imported/switch18.wav-65be9ca1cdea7fa5d09ec8896ee33792.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch18.wav"
|
||||
dest_files=["res://.godot/imported/switch18.wav-65be9ca1cdea7fa5d09ec8896ee33792.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://bdv77j62j4pwe"
|
||||
path="res://.godot/imported/switch19.wav-fe04c5ae10fb08b254e642147cdcc822.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch19.wav"
|
||||
dest_files=["res://.godot/imported/switch19.wav-fe04c5ae10fb08b254e642147cdcc822.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://bvrxe0vxh3e8p"
|
||||
path="res://.godot/imported/switch2.wav-ed517ffaa6f14bdd73fd3371bdf79cb7.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch2.wav"
|
||||
dest_files=["res://.godot/imported/switch2.wav-ed517ffaa6f14bdd73fd3371bdf79cb7.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://done74gww38t0"
|
||||
path="res://.godot/imported/switch20.wav-9636539e81da6e33e01e70300e0359a1.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch20.wav"
|
||||
dest_files=["res://.godot/imported/switch20.wav-9636539e81da6e33e01e70300e0359a1.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://dlf4xa2hok7k5"
|
||||
path="res://.godot/imported/switch21.wav-510c5f69909c2b7a8ffa835ff38911bc.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch21.wav"
|
||||
dest_files=["res://.godot/imported/switch21.wav-510c5f69909c2b7a8ffa835ff38911bc.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://bq2wj3laeuqev"
|
||||
path="res://.godot/imported/switch22.wav-3f139a30e3a59e44b1338d53a3ed2db2.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch22.wav"
|
||||
dest_files=["res://.godot/imported/switch22.wav-3f139a30e3a59e44b1338d53a3ed2db2.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://fhk13nrud16d"
|
||||
path="res://.godot/imported/switch23.wav-cbe79ac12494b64dcf8592499fd45943.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch23.wav"
|
||||
dest_files=["res://.godot/imported/switch23.wav-cbe79ac12494b64dcf8592499fd45943.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://k102cb3r3so6"
|
||||
path="res://.godot/imported/switch24.wav-d78702457e3037d3e442ffa9f491a233.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch24.wav"
|
||||
dest_files=["res://.godot/imported/switch24.wav-d78702457e3037d3e442ffa9f491a233.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://dk0xypj8w53c6"
|
||||
path="res://.godot/imported/switch25.wav-3084dc0e8799b7c7642353637b8ee6d9.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch25.wav"
|
||||
dest_files=["res://.godot/imported/switch25.wav-3084dc0e8799b7c7642353637b8ee6d9.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://bqj5ir00eibn5"
|
||||
path="res://.godot/imported/switch26.wav-d5a7e4e7f2b93b80c57e83e23cfcce44.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch26.wav"
|
||||
dest_files=["res://.godot/imported/switch26.wav-d5a7e4e7f2b93b80c57e83e23cfcce44.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://m11etanqcw1j"
|
||||
path="res://.godot/imported/switch27.wav-8cfb1e1957d61484e98a000b23c8235e.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch27.wav"
|
||||
dest_files=["res://.godot/imported/switch27.wav-8cfb1e1957d61484e98a000b23c8235e.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://c1dawxq8yba0p"
|
||||
path="res://.godot/imported/switch28.wav-ff2685c2f081f5d35c3851ea3fed5d9d.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch28.wav"
|
||||
dest_files=["res://.godot/imported/switch28.wav-ff2685c2f081f5d35c3851ea3fed5d9d.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://b82sxkmw3kih4"
|
||||
path="res://.godot/imported/switch29.wav-a972c4cb7e4b7ecc8feb7d741d7a457a.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch29.wav"
|
||||
dest_files=["res://.godot/imported/switch29.wav-a972c4cb7e4b7ecc8feb7d741d7a457a.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://bs8npgsvmkoi6"
|
||||
path="res://.godot/imported/switch3.wav-d5bafaa3cd1d942b879acd4703db9dee.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch3.wav"
|
||||
dest_files=["res://.godot/imported/switch3.wav-d5bafaa3cd1d942b879acd4703db9dee.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://dokyp5h8t2gk4"
|
||||
path="res://.godot/imported/switch30.wav-132fce3f6994d6372657ec5f19880428.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch30.wav"
|
||||
dest_files=["res://.godot/imported/switch30.wav-132fce3f6994d6372657ec5f19880428.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://dasvl7gtguf2c"
|
||||
path="res://.godot/imported/switch31.wav-b646841697882c6b050db5f8e3066922.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch31.wav"
|
||||
dest_files=["res://.godot/imported/switch31.wav-b646841697882c6b050db5f8e3066922.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Binary file not shown.
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://dprnxsh3ygpiq"
|
||||
path="res://.godot/imported/switch32.wav-87a4efca708b499ed7a5cc66246564fd.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/kenney_ui_audio/switch32.wav"
|
||||
dest_files=["res://.godot/imported/switch32.wav-87a4efca708b499ed7a5cc66246564fd.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue