Merge pull request #328 from Excello-Recherche-Education/3.0.1
Merge 3.0.1 into main
@@ -1,6 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
from collections import defaultdict, Counter
|
||||||
|
|
||||||
|
|
||||||
def split_params(param_string: str):
|
def split_params(param_string: str):
|
||||||
@@ -56,58 +57,164 @@ def split_params(param_string: str):
|
|||||||
params = [p for p in params if p]
|
params = [p for p in params if p]
|
||||||
return params
|
return params
|
||||||
|
|
||||||
|
|
||||||
EXCLUDED_DIRS = {"addons", ".git", ".github"}
|
EXCLUDED_DIRS = {"addons", ".git", ".github"}
|
||||||
EXCLUDED_FILES = {os.path.normpath("script_templates/Node/default.gd")}
|
EXCLUDED_FILES = {os.path.normpath("script_templates/Node/default.gd")}
|
||||||
|
|
||||||
issues = []
|
issues: list = []
|
||||||
|
|
||||||
|
# ─── Messages ────────────────────────────────────────────────────────────────
|
||||||
|
# Structural issue messages. Use {key} for context-specific values.
|
||||||
|
# Naming issues are rendered dynamically (see format_message / SUGGESTION_FN).
|
||||||
|
|
||||||
MESSAGES = {
|
MESSAGES = {
|
||||||
'class': 'is a class name and should be in PascalCase',
|
# File/header structure
|
||||||
'function': 'is a function name and should be in snake_case',
|
'annotation_order': "annotation not allowed here: '{found}' — only @tool, @icon or @static_unload are allowed at the top of the file",
|
||||||
'variable': 'is a variable name and should be in snake_case',
|
'class_position': "class_name must appear right after annotations (if any)",
|
||||||
'constant': 'is a constant name and should be in UPPER_SNAKE_CASE',
|
'extends_position': "extends must appear after annotations and class_name",
|
||||||
'signal': 'is a signal name and should be in snake_case',
|
'extends_missing': "extends is missing — add 'extends BaseClass' (or 'extends RefCounted' for base classes)",
|
||||||
'annotation_order': 'annotations must be on the first line and include only \@tool, \@icon or \@static_unload',
|
|
||||||
'class_position': 'class_name must appear after annotations (if any)',
|
# Function spacing
|
||||||
'extends_position': 'extends must appear after annotation and class_name',
|
'func_blank': "expected 2 blank lines before function (found {found})",
|
||||||
'extends_missing': 'extends is required and must follow annotation and class_name',
|
|
||||||
'func_blank': 'functions must be preceded by exactly two empty lines (or only one if preceded by a #region comment)',
|
# Signals
|
||||||
'signal_position': 'signals must come right after extends',
|
'signal_position': "signal found after {after} — expected order: signal > enum > const > static var > @export > var > @onready",
|
||||||
'signal_format': 'signals must end with ()',
|
'signal_format': "signal must declare parameters with () — found: '{found}'",
|
||||||
'signal_blank': 'signals must not be separated by empty lines',
|
'signal_blank_extra': "remove blank line between signal declarations — signals must be grouped together",
|
||||||
'enum_position': 'enums must come after signals and be grouped together',
|
|
||||||
'enum_format': "enum declaration should be 'enum Name {'",
|
# Enums
|
||||||
'enum_member_blank': 'enum members must not be separated by empty lines',
|
'enum_position': "enum found after {after} — expected order: signal > enum > const > static var > @export > var > @onready",
|
||||||
'enum_member_indent': 'enum members must be indented with a single tab',
|
'enum_format': "enum declaration should be 'enum Name {{' — found: '{found}'",
|
||||||
'enum_no_close': 'enum declaration is missing a closing }',
|
'enum_member_blank': "remove blank line between enum members",
|
||||||
'enum_blank': 'enums must be preceded by one empty line and must not be separated by empty lines',
|
'enum_member_indent': "enum member must be indented with a single tab — found: '{found}'",
|
||||||
'const_position': 'constants must come after enums and be grouped together',
|
'enum_no_close': "enum declaration is missing a closing '}'",
|
||||||
'const_blank': 'constants must be preceded by one empty line and must not be separated by empty lines',
|
'enum_blank_missing': "missing blank line before the enum section",
|
||||||
'static_position': 'static variables must come after constants and be grouped together',
|
'enum_blank_extra': "remove blank line between enum declarations — enums must be grouped together",
|
||||||
'static_blank': 'static variables must be preceded by one empty line and must not be separated by empty lines',
|
|
||||||
'export_position': 'export variables must come after static variables and be grouped together',
|
# Constants
|
||||||
'export_blank': 'export variables must be preceded by one empty line and must not be separated by empty lines',
|
'const_position': "const found after {after} — expected order: signal > enum > const > static var > @export > var > @onready",
|
||||||
'var_position': 'variables must come after export variables and be grouped together',
|
'const_blank_missing': "missing blank line before the const section",
|
||||||
'var_blank': 'variables must be preceded by one empty line and must not be separated by empty lines',
|
'const_blank_extra': "remove blank line between const declarations — constants must be grouped together",
|
||||||
'onready_position': '@onready variables must come after other variables and be grouped together',
|
|
||||||
'onready_blank': '@onready variables must be preceded by one empty line and must not be separated by empty lines',
|
# Static variables
|
||||||
|
'static_position': "static var found after {after} — expected order: signal > enum > const > static var > @export > var > @onready",
|
||||||
|
'static_blank_missing': "missing blank line before the static var section",
|
||||||
|
'static_blank_extra': "remove blank line between static var declarations — static variables must be grouped together",
|
||||||
|
|
||||||
|
# Export variables
|
||||||
|
'export_position': "@export found after {after} — expected order: signal > enum > const > static var > @export > var > @onready",
|
||||||
|
'export_blank_missing': "missing blank line before the @export section",
|
||||||
|
'export_blank_extra': "remove blank line between @export declarations — export variables must be grouped together",
|
||||||
|
|
||||||
|
# Regular variables
|
||||||
|
'var_position': "var found after {after} — expected order: signal > enum > const > static var > @export > var > @onready",
|
||||||
|
'var_blank_missing': "missing blank line before the var section",
|
||||||
|
'var_blank_extra': "remove blank line between var declarations — variables must be grouped together",
|
||||||
|
|
||||||
|
# @onready variables
|
||||||
|
'onready_position': "@onready var found after {after} — expected order: signal > enum > const > static var > @export > var > @onready",
|
||||||
|
'onready_blank_missing': "missing blank line before the @onready section",
|
||||||
|
'onready_blank_extra': "remove blank line between @onready declarations — @onready variables must be grouped together",
|
||||||
}
|
}
|
||||||
|
|
||||||
# Naming conventions
|
# ─── Naming conventions ───────────────────────────────────────────────────────
|
||||||
|
|
||||||
PASCAL_CASE = re.compile(r"^[A-Z][A-Za-z0-9]*$")
|
PASCAL_CASE = re.compile(r"^[A-Z][A-Za-z0-9]*$")
|
||||||
SNAKE_CASE = re.compile(r"^_?[a-z][a-z0-9_]*$")
|
SNAKE_CASE = re.compile(r"^_?[a-z][a-z0-9_]*$")
|
||||||
UPPER_SNAKE_CASE = re.compile(r"^_?[A-Z][A-Z0-9_]*$")
|
UPPER_SNAKE_CASE = re.compile(r"^_?[A-Z][A-Z0-9_]*$")
|
||||||
REGION_RE = re.compile(r"#\s*(region|endregion)\b", re.IGNORECASE)
|
REGION_RE = re.compile(r"#\s*(region|endregion)\b", re.IGNORECASE)
|
||||||
|
|
||||||
|
|
||||||
|
def _to_snake_case(name: str) -> str:
|
||||||
|
prefix = '_' if name.startswith('_') else ''
|
||||||
|
core = name.lstrip('_')
|
||||||
|
s = re.sub(r'([a-z0-9])([A-Z])', r'\1_\2', core)
|
||||||
|
s = re.sub(r'([A-Z]+)([A-Z][a-z])', r'\1_\2', s)
|
||||||
|
return prefix + s.lower()
|
||||||
|
|
||||||
|
|
||||||
|
def _to_pascal_case(name: str) -> str:
|
||||||
|
prefix = '_' if name.startswith('_') else ''
|
||||||
|
core = name.lstrip('_')
|
||||||
|
# Split on camelCase boundaries first, then on underscores/spaces
|
||||||
|
# e.g. 'myBadEnum' → 'my_Bad_Enum' → 'MyBadEnum'
|
||||||
|
snake = re.sub(r'([a-z0-9])([A-Z])', r'\1_\2', core)
|
||||||
|
snake = re.sub(r'([A-Z]+)([A-Z][a-z])', r'\1_\2', snake)
|
||||||
|
return prefix + ''.join(w.capitalize() for w in re.split(r'[_\s]+', snake) if w)
|
||||||
|
|
||||||
|
|
||||||
|
def _to_upper_snake_case(name: str) -> str:
|
||||||
|
prefix = '_' if name.startswith('_') else ''
|
||||||
|
core = name.lstrip('_')
|
||||||
|
s = re.sub(r'([a-z0-9])([A-Z])', r'\1_\2', core)
|
||||||
|
s = re.sub(r'([A-Z]+)([A-Z][a-z])', r'\1_\2', s)
|
||||||
|
return prefix + s.upper()
|
||||||
|
|
||||||
|
|
||||||
|
CONVENTION_NAMES: dict[str, str] = {
|
||||||
|
'class': 'PascalCase',
|
||||||
|
'enum_name': 'PascalCase',
|
||||||
|
'enum_member': 'UPPER_SNAKE_CASE',
|
||||||
|
'function': 'snake_case',
|
||||||
|
'variable': 'snake_case',
|
||||||
|
'constant': 'UPPER_SNAKE_CASE',
|
||||||
|
'signal': 'snake_case',
|
||||||
|
}
|
||||||
|
|
||||||
|
SUGGESTION_FN: dict = {
|
||||||
|
'class': _to_pascal_case,
|
||||||
|
'enum_name': _to_pascal_case,
|
||||||
|
'enum_member': _to_upper_snake_case,
|
||||||
|
'function': _to_snake_case,
|
||||||
|
'variable': _to_snake_case,
|
||||||
|
'constant': _to_upper_snake_case,
|
||||||
|
'signal': _to_snake_case,
|
||||||
|
}
|
||||||
|
|
||||||
|
NAMING_KINDS = frozenset({'class', 'enum_name', 'enum_member', 'function', 'variable', 'constant', 'signal'})
|
||||||
|
|
||||||
|
# ─── Naming check ─────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
def _check_enum_member(path: str, idx: int, name: str) -> None:
|
||||||
|
"""Flag a single enum member name if it is not UPPER_SNAKE_CASE."""
|
||||||
|
if name and not UPPER_SNAKE_CASE.match(name):
|
||||||
|
issues.append((path, idx, 'enum_member', name))
|
||||||
|
|
||||||
|
|
||||||
def check_naming(path: str, lines: list[str]):
|
def check_naming(path: str, lines: list[str]):
|
||||||
|
in_enum = False # True while scanning the body of a multi-line enum
|
||||||
|
|
||||||
for idx, line in enumerate(lines, 1):
|
for idx, line in enumerate(lines, 1):
|
||||||
stripped = line.strip()
|
stripped = line.strip()
|
||||||
if stripped.startswith('#') or stripped.startswith('@warning_ignore(') or not stripped:
|
if stripped.startswith('#') or stripped.startswith('@warning_ignore(') or not stripped:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
# ── Enum-body lines ────────────────────────────────────────────────────
|
||||||
|
if in_enum:
|
||||||
|
close = stripped.find('}')
|
||||||
|
if close != -1:
|
||||||
|
in_enum = False
|
||||||
|
# Any identifiers before the closing brace on this line
|
||||||
|
before = stripped[:close]
|
||||||
|
for part in before.split(','):
|
||||||
|
m = re.match(r"\s*([A-Za-z0-9_]+)", part)
|
||||||
|
if m:
|
||||||
|
_check_enum_member(path, idx, m.group(1))
|
||||||
|
else:
|
||||||
|
# One (or more) members on this line: "NAME," or "NAME = val,"
|
||||||
|
for part in stripped.split(','):
|
||||||
|
m = re.match(r"\s*([A-Za-z0-9_]+)", part)
|
||||||
|
if m:
|
||||||
|
_check_enum_member(path, idx, m.group(1))
|
||||||
|
continue
|
||||||
|
# ── End enum-body ──────────────────────────────────────────────────────
|
||||||
|
|
||||||
match_class = re.match(r"class_name\s+([A-Za-z0-9_]+)", stripped)
|
match_class = re.match(r"class_name\s+([A-Za-z0-9_]+)", stripped)
|
||||||
if match_class:
|
if match_class:
|
||||||
name = match_class.group(1)
|
name = match_class.group(1)
|
||||||
if not PASCAL_CASE.match(name):
|
if not PASCAL_CASE.match(name):
|
||||||
issues.append((path, idx, 'class', name))
|
issues.append((path, idx, 'class', name))
|
||||||
|
|
||||||
match_func = re.match(r"(?:static\s+)?func\s+([A-Za-z0-9_]+)\s*(\([^)]*\))?", stripped)
|
match_func = re.match(r"(?:static\s+)?func\s+([A-Za-z0-9_]+)\s*(\([^)]*\))?", stripped)
|
||||||
if match_func:
|
if match_func:
|
||||||
name = match_func.group(1)
|
name = match_func.group(1)
|
||||||
@@ -120,51 +227,82 @@ def check_naming(path: str, lines: list[str]):
|
|||||||
param_name = param.split(':')[0].split('=')[0].strip()
|
param_name = param.split(':')[0].split('=')[0].strip()
|
||||||
if param_name and not SNAKE_CASE.match(param_name):
|
if param_name and not SNAKE_CASE.match(param_name):
|
||||||
issues.append((path, idx, 'variable', param_name))
|
issues.append((path, idx, 'variable', param_name))
|
||||||
match_export = re.match(r"(?:@export\s+)?var\s+([A-Za-z0-9_]+)", stripped)
|
|
||||||
if match_export:
|
# Match variable declarations with any annotation/modifier prefix.
|
||||||
name = match_export.group(1)
|
# Handles: var, static var, @export var, @export_range(...) var,
|
||||||
|
# @export_multiline var, @onready var, etc.
|
||||||
|
# Does NOT match annotation-only lines like @export_category("Difficulty").
|
||||||
|
match_var = re.match(r"(?:(?:static|@\w+(?:\([^)]*\))?)\s+)*var\s+([A-Za-z0-9_]+)", stripped)
|
||||||
|
if match_var:
|
||||||
|
name = match_var.group(1)
|
||||||
if not SNAKE_CASE.match(name):
|
if not SNAKE_CASE.match(name):
|
||||||
issues.append((path, idx, 'variable', name))
|
issues.append((path, idx, 'variable', name))
|
||||||
|
|
||||||
match_const = re.match(r"const\s+([A-Za-z0-9_]+)", stripped)
|
match_const = re.match(r"const\s+([A-Za-z0-9_]+)", stripped)
|
||||||
if match_const:
|
if match_const:
|
||||||
name = match_const.group(1)
|
name = match_const.group(1)
|
||||||
if not UPPER_SNAKE_CASE.match(name):
|
if not UPPER_SNAKE_CASE.match(name):
|
||||||
issues.append((path, idx, 'constant', name))
|
issues.append((path, idx, 'constant', name))
|
||||||
|
|
||||||
|
match_enum = re.match(r"enum\s+([A-Za-z0-9_]+)", stripped)
|
||||||
|
if match_enum:
|
||||||
|
name = match_enum.group(1)
|
||||||
|
if not PASCAL_CASE.match(name):
|
||||||
|
issues.append((path, idx, 'enum_name', name))
|
||||||
|
# Determine whether the enum body is inline or multi-line
|
||||||
|
brace = stripped.find('{')
|
||||||
|
if brace != -1:
|
||||||
|
rest = stripped[brace + 1:]
|
||||||
|
close = rest.find('}')
|
||||||
|
if close != -1:
|
||||||
|
# Inline enum — check members immediately
|
||||||
|
for part in rest[:close].split(','):
|
||||||
|
m = re.match(r"\s*([A-Za-z0-9_]+)", part)
|
||||||
|
if m:
|
||||||
|
_check_enum_member(path, idx, m.group(1))
|
||||||
|
else:
|
||||||
|
# Body continues on following lines
|
||||||
|
in_enum = True
|
||||||
|
|
||||||
match_signal = re.match(r"signal\s+([A-Za-z0-9_]+)", stripped)
|
match_signal = re.match(r"signal\s+([A-Za-z0-9_]+)", stripped)
|
||||||
if match_signal:
|
if match_signal:
|
||||||
name = match_signal.group(1)
|
name = match_signal.group(1)
|
||||||
if not SNAKE_CASE.match(name):
|
if not SNAKE_CASE.match(name):
|
||||||
issues.append((path, idx, 'signal', name))
|
issues.append((path, idx, 'signal', name))
|
||||||
|
|
||||||
match_for = re.match(r"for\s+([A-Za-z0-9_]+)(?:\s*:\s*[^\s]+)?\s+in\b", stripped)
|
match_for = re.match(r"for\s+([A-Za-z0-9_]+)(?:\s*:\s*[^\s]+)?\s+in\b", stripped)
|
||||||
if match_for:
|
if match_for:
|
||||||
name = match_for.group(1)
|
name = match_for.group(1)
|
||||||
if not SNAKE_CASE.match(name):
|
if not SNAKE_CASE.match(name):
|
||||||
issues.append((path, idx, 'variable', name))
|
issues.append((path, idx, 'variable', name))
|
||||||
|
|
||||||
# Content order
|
|
||||||
|
# ─── Content order check ──────────────────────────────────────────────────────
|
||||||
|
|
||||||
ANNOTATION_LINE_RE = re.compile(
|
ANNOTATION_LINE_RE = re.compile(
|
||||||
r"^(?:@(tool|icon|static_unload)(?:\([^\n]*\))?)(?:,\s*@(tool|icon|static_unload)(?:\([^\n]*\))?)*$"
|
r"^(?:@(tool|icon|static_unload)(?:\([^\n]*\))?)(?:,\s*@(tool|icon|static_unload)(?:\([^\n]*\))?)*$"
|
||||||
)
|
)
|
||||||
ALLOWED_ANNOTATION_RE = re.compile(r"@(tool|icon|static_unload)\b")
|
ALLOWED_ANNOTATION_RE = re.compile(r"@(tool|icon|static_unload)\b")
|
||||||
|
|
||||||
|
|
||||||
def check_content_order(path: str, lines: list[str]):
|
def check_content_order(path: str, lines: list[str]):
|
||||||
content = [
|
content = [
|
||||||
(line.rstrip('\n'), idx)
|
(line.rstrip('\n'), idx)
|
||||||
for idx, line in enumerate(lines, 1)
|
for idx, line in enumerate(lines, 1)
|
||||||
if not line.startswith(' ') # Line is not indented
|
if not line.startswith(' ') # Line is not indented (tab character)
|
||||||
and not line.lstrip().startswith('#')
|
and not line.lstrip().startswith('#')
|
||||||
and not line.lstrip().startswith('@warning_ignore(')
|
and not line.lstrip().startswith('@warning_ignore(')
|
||||||
]
|
]
|
||||||
idx = 0
|
idx = 0
|
||||||
n = len(content)
|
n = len(content)
|
||||||
|
|
||||||
# 1) annotations
|
# 1) Annotations (@tool / @icon / @static_unload must be first)
|
||||||
if idx < n and ANNOTATION_LINE_RE.fullmatch(content[idx][0].strip()):
|
if idx < n and ANNOTATION_LINE_RE.fullmatch(content[idx][0].strip()):
|
||||||
idx += 1
|
idx += 1
|
||||||
else:
|
else:
|
||||||
for j in range(idx, n):
|
for j in range(idx, n):
|
||||||
if ALLOWED_ANNOTATION_RE.search(content[j][0]):
|
if ALLOWED_ANNOTATION_RE.search(content[j][0]):
|
||||||
issues.append((path, content[j][1], 'annotation_order', content[j][0].strip()))
|
issues.append((path, content[j][1], 'annotation_order', {'found': content[j][0].strip()}))
|
||||||
break
|
break
|
||||||
|
|
||||||
# 2) class_name (optional)
|
# 2) class_name (optional)
|
||||||
@@ -176,24 +314,27 @@ def check_content_order(path: str, lines: list[str]):
|
|||||||
idx += 1
|
idx += 1
|
||||||
break
|
break
|
||||||
|
|
||||||
# 3) extends (required)
|
# 3) extends (recommended; missing is flagged but does not block ordering checks)
|
||||||
extends_pos = None
|
extends_pos = None
|
||||||
for j in range(idx, n):
|
for j in range(idx, n):
|
||||||
if content[j][0].strip().startswith('extends'):
|
if content[j][0].strip().startswith('extends'):
|
||||||
extends_pos = j
|
extends_pos = j
|
||||||
break
|
break
|
||||||
|
|
||||||
if extends_pos is None:
|
if extends_pos is None:
|
||||||
issues.append((path, 0, 'extends_missing', 'extends'))
|
issues.append((path, 0, 'extends_missing', 'extends'))
|
||||||
return
|
# Don't return — continue ordering checks from current position
|
||||||
if extends_pos != idx:
|
prev_token: str = content[idx - 1][0].strip() if idx > 0 else ''
|
||||||
issues.append((path, content[extends_pos][1], 'extends_position', 'extends'))
|
else:
|
||||||
idx = extends_pos + 1
|
if extends_pos != idx:
|
||||||
|
issues.append((path, content[extends_pos][1], 'extends_position', 'extends'))
|
||||||
|
idx = extends_pos + 1
|
||||||
|
prev_token = content[extends_pos][0].strip()
|
||||||
|
|
||||||
order = ['signal', 'enum', 'const', 'static var', '@export', 'var', '@onready var']
|
order = ['signal', 'enum', 'const', 'static var', '@export', 'var', '@onready var']
|
||||||
order_index = {name: i for i, name in enumerate(order)}
|
order_index = {name: i for i, name in enumerate(order)}
|
||||||
seen: set[str] = set()
|
seen: set[str] = set()
|
||||||
current_order = -1
|
current_order = -1
|
||||||
prev_token: str | None = content[extends_pos][0].strip()
|
|
||||||
j = idx
|
j = idx
|
||||||
while j < n:
|
while j < n:
|
||||||
line, line_no = content[j]
|
line, line_no = content[j]
|
||||||
@@ -208,27 +349,27 @@ def check_content_order(path: str, lines: list[str]):
|
|||||||
if stripped.startswith('signal'):
|
if stripped.startswith('signal'):
|
||||||
token = 'signal'
|
token = 'signal'
|
||||||
if not re.fullmatch(r"signal\s+\w+\([^)]*\)", stripped):
|
if not re.fullmatch(r"signal\s+\w+\([^)]*\)", stripped):
|
||||||
issues.append((path, line_no, 'signal_format', stripped))
|
issues.append((path, line_no, 'signal_format', {'found': stripped}))
|
||||||
if 'signal' in seen and prev_token == '':
|
if 'signal' in seen and prev_token == '':
|
||||||
issues.append((path, content[j - 1][1], 'signal_blank', 'signal'))
|
issues.append((path, content[j - 1][1], 'signal_blank_extra', 'signal'))
|
||||||
seen.add('signal')
|
seen.add('signal')
|
||||||
elif stripped.startswith('enum'):
|
elif stripped.startswith('enum'):
|
||||||
token = 'enum'
|
token = 'enum'
|
||||||
if not re.fullmatch(r"enum\s+\w+\s*{", stripped):
|
if not re.fullmatch(r"enum\s+\w+\s*{", stripped):
|
||||||
issues.append((path, line_no, 'enum_format', stripped))
|
issues.append((path, line_no, 'enum_format', {'found': stripped}))
|
||||||
if 'enum' not in seen:
|
if 'enum' not in seen:
|
||||||
if prev_token != '':
|
if prev_token != '':
|
||||||
issues.append((path, line_no, 'enum_blank', 'enum'))
|
issues.append((path, line_no, 'enum_blank_missing', 'enum'))
|
||||||
else:
|
else:
|
||||||
if prev_token != '}' and prev_token != ']':
|
if prev_token != '}' and prev_token != ']':
|
||||||
issues.append((path, line_no, 'enum_blank', 'enum'))
|
issues.append((path, line_no, 'enum_blank_extra', 'enum'))
|
||||||
k = j + 1
|
k = j + 1
|
||||||
while k < n and content[k][0].strip() != '}':
|
while k < n and content[k][0].strip() != '}':
|
||||||
member, m_line_no = content[k]
|
member, m_line_no = content[k]
|
||||||
if member.strip() == '':
|
if member.strip() == '':
|
||||||
issues.append((path, m_line_no, 'enum_member_blank', 'enum'))
|
issues.append((path, m_line_no, 'enum_member_blank', 'enum'))
|
||||||
if not member.startswith('\t') or member.startswith('\t\t'):
|
if not member.startswith('\t') or member.startswith('\t\t'):
|
||||||
issues.append((path, m_line_no, 'enum_member_indent', member.strip()))
|
issues.append((path, m_line_no, 'enum_member_indent', {'found': member.strip()}))
|
||||||
k += 1
|
k += 1
|
||||||
if k >= n:
|
if k >= n:
|
||||||
issues.append((path, line_no, 'enum_no_close', 'enum'))
|
issues.append((path, line_no, 'enum_no_close', 'enum'))
|
||||||
@@ -238,7 +379,8 @@ def check_content_order(path: str, lines: list[str]):
|
|||||||
seen.add('enum')
|
seen.add('enum')
|
||||||
curr_order = order_index['enum']
|
curr_order = order_index['enum']
|
||||||
if curr_order < current_order:
|
if curr_order < current_order:
|
||||||
issues.append((path, line_no, 'enum_position', 'enum'))
|
after_token = order[current_order]
|
||||||
|
issues.append((path, line_no, 'enum_position', {'after': after_token}))
|
||||||
else:
|
else:
|
||||||
current_order = max(current_order, curr_order)
|
current_order = max(current_order, curr_order)
|
||||||
j += 1
|
j += 1
|
||||||
@@ -247,63 +389,65 @@ def check_content_order(path: str, lines: list[str]):
|
|||||||
token = 'const'
|
token = 'const'
|
||||||
if 'const' not in seen:
|
if 'const' not in seen:
|
||||||
if prev_token != '':
|
if prev_token != '':
|
||||||
issues.append((path, line_no, 'const_blank', 'const'))
|
issues.append((path, line_no, 'const_blank_missing', 'const'))
|
||||||
else:
|
else:
|
||||||
if prev_token != 'const' and prev_token != '}' and prev_token != ']':
|
if prev_token != 'const' and prev_token != '}' and prev_token != ']':
|
||||||
issues.append((path, line_no, 'const_blank', 'const'))
|
issues.append((path, line_no, 'const_blank_extra', 'const'))
|
||||||
seen.add('const')
|
seen.add('const')
|
||||||
elif stripped.startswith('static var '):
|
elif stripped.startswith('static var '):
|
||||||
token = 'static var'
|
token = 'static var'
|
||||||
if 'static var' not in seen:
|
if 'static var' not in seen:
|
||||||
if prev_token != '':
|
if prev_token != '':
|
||||||
issues.append((path, line_no, 'static_blank', 'static var'))
|
issues.append((path, line_no, 'static_blank_missing', 'static var'))
|
||||||
else:
|
else:
|
||||||
if prev_token != 'static var' and prev_token != '}' and prev_token != ']':
|
if prev_token != 'static var' and prev_token != '}' and prev_token != ']':
|
||||||
issues.append((path, line_no, 'static_blank', 'static var'))
|
issues.append((path, line_no, 'static_blank_extra', 'static var'))
|
||||||
seen.add('static var')
|
seen.add('static var')
|
||||||
elif stripped.startswith('@export'):
|
elif stripped.startswith('@export'):
|
||||||
token = '@export'
|
token = '@export'
|
||||||
if '@export' not in seen:
|
if '@export' not in seen:
|
||||||
if prev_token != '':
|
if prev_token != '':
|
||||||
issues.append((path, line_no, 'export_blank', '@export'))
|
issues.append((path, line_no, 'export_blank_missing', '@export'))
|
||||||
else:
|
else:
|
||||||
if prev_token != '@export' and prev_token != '}' and prev_token != ']':
|
if prev_token != '@export' and prev_token != '}' and prev_token != ']':
|
||||||
issues.append((path, line_no, 'export_blank', '@export'))
|
issues.append((path, line_no, 'export_blank_extra', '@export'))
|
||||||
seen.add('@export')
|
seen.add('@export')
|
||||||
elif stripped.startswith('var '):
|
elif stripped.startswith('var '):
|
||||||
token = 'var'
|
token = 'var'
|
||||||
if 'var' not in seen:
|
if 'var' not in seen:
|
||||||
if prev_token != '':
|
if prev_token != '':
|
||||||
issues.append((path, line_no, 'var_blank', 'var'))
|
issues.append((path, line_no, 'var_blank_missing', 'var'))
|
||||||
else:
|
else:
|
||||||
if prev_token != 'var' and prev_token != '}' and prev_token != ']':
|
if prev_token != 'var' and prev_token != '}' and prev_token != ']':
|
||||||
issues.append((path, line_no, 'var_blank', 'var'))
|
issues.append((path, line_no, 'var_blank_extra', 'var'))
|
||||||
seen.add('var')
|
seen.add('var')
|
||||||
elif stripped.startswith('@onready var '):
|
elif stripped.startswith('@onready var '):
|
||||||
token = '@onready var'
|
token = '@onready var'
|
||||||
if '@onready var' not in seen:
|
if '@onready var' not in seen:
|
||||||
if prev_token != '':
|
if prev_token != '':
|
||||||
issues.append((path, line_no, 'onready_blank', '@onready var'))
|
issues.append((path, line_no, 'onready_blank_missing', '@onready var'))
|
||||||
else:
|
else:
|
||||||
if prev_token != '@onready var' and prev_token != '}' and prev_token != ']':
|
if prev_token != '@onready var' and prev_token != '}' and prev_token != ']':
|
||||||
issues.append((path, line_no, 'onready_blank', '@onready var'))
|
issues.append((path, line_no, 'onready_blank_extra', '@onready var'))
|
||||||
seen.add('@onready var')
|
seen.add('@onready var')
|
||||||
else:
|
else:
|
||||||
prev_token = stripped
|
prev_token = stripped
|
||||||
j += 1
|
j += 1
|
||||||
continue
|
continue
|
||||||
|
|
||||||
curr_order = order_index[token]
|
curr_order = order_index[token]
|
||||||
key_map = {
|
key_map = {
|
||||||
'signal': 'signal_position',
|
'signal': 'signal_position',
|
||||||
'enum': 'enum_position',
|
'enum': 'enum_position',
|
||||||
'const': 'const_position',
|
'const': 'const_position',
|
||||||
'static var': 'static_position',
|
'static var': 'static_position',
|
||||||
'@export': 'export_position',
|
'@export': 'export_position',
|
||||||
'var': 'var_position',
|
'var': 'var_position',
|
||||||
'@onready var': 'onready_position',
|
'@onready var': 'onready_position',
|
||||||
}
|
}
|
||||||
if curr_order < current_order:
|
if curr_order < current_order:
|
||||||
issues.append((path, line_no, key_map[token], token))
|
after_token = order[current_order]
|
||||||
|
issues.append((path, line_no, key_map[token], {'after': after_token}))
|
||||||
else:
|
else:
|
||||||
current_order = max(current_order, curr_order)
|
current_order = max(current_order, curr_order)
|
||||||
|
|
||||||
@@ -311,7 +455,8 @@ def check_content_order(path: str, lines: list[str]):
|
|||||||
j += 1
|
j += 1
|
||||||
|
|
||||||
|
|
||||||
# Spacing for functions
|
# ─── Function spacing check ───────────────────────────────────────────────────
|
||||||
|
|
||||||
def check_func_spacing(path: str):
|
def check_func_spacing(path: str):
|
||||||
with open(path, 'r', encoding='utf-8') as file:
|
with open(path, 'r', encoding='utf-8') as file:
|
||||||
lines = file.readlines()
|
lines = file.readlines()
|
||||||
@@ -348,14 +493,15 @@ def check_func_spacing(path: str):
|
|||||||
region_above = test_index >= 0 and REGION_RE.match(lines[test_index].lstrip())
|
region_above = test_index >= 0 and REGION_RE.match(lines[test_index].lstrip())
|
||||||
if region_above:
|
if region_above:
|
||||||
if blank_count > 1:
|
if blank_count > 1:
|
||||||
issues.append((path, idx + 1, 'func_blank', 'func'))
|
issues.append((path, idx + 1, 'func_blank', {'found': blank_count}))
|
||||||
continue
|
continue
|
||||||
elif blank_count != 2:
|
elif blank_count != 2:
|
||||||
if not (blank_count == 1 and test_index >= 0 and lines[test_index].lstrip().startswith('#region')):
|
if not (blank_count == 1 and test_index >= 0 and lines[test_index].lstrip().startswith('#region')):
|
||||||
issues.append((path, idx + 1, 'func_blank', 'func'))
|
issues.append((path, idx + 1, 'func_blank', {'found': blank_count}))
|
||||||
|
|
||||||
|
|
||||||
# Main function
|
# ─── Main ─────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
for root, dirs, files in os.walk('.', topdown=True):
|
for root, dirs, files in os.walk('.', topdown=True):
|
||||||
rel_root = os.path.relpath(root, '.')
|
rel_root = os.path.relpath(root, '.')
|
||||||
if any(rel_root == excluded or rel_root.startswith(f"{excluded}{os.sep}") for excluded in EXCLUDED_DIRS):
|
if any(rel_root == excluded or rel_root.startswith(f"{excluded}{os.sep}") for excluded in EXCLUDED_DIRS):
|
||||||
@@ -378,15 +524,95 @@ for root, dirs, files in os.walk('.', topdown=True):
|
|||||||
check_content_order(path, lines)
|
check_content_order(path, lines)
|
||||||
check_func_spacing(path)
|
check_func_spacing(path)
|
||||||
|
|
||||||
if issues:
|
|
||||||
print("### \u274c GDScript Naming Convention Check Failed\n")
|
# ─── Output ───────────────────────────────────────────────────────────────────
|
||||||
print(f"The project must follow Godot GDScript naming conventions.\nTotal issues: {len(issues)}\n")
|
|
||||||
for path, idx, kind, name in issues:
|
ORDERING_KINDS = frozenset({
|
||||||
if kind == 'error':
|
'annotation_order', 'class_position', 'extends_position', 'extends_missing',
|
||||||
message = name
|
'signal_position', 'enum_position', 'const_position', 'static_position',
|
||||||
else:
|
'export_position', 'var_position', 'onready_position',
|
||||||
message = f"'{name}' {MESSAGES[kind]}"
|
})
|
||||||
print(f"- `{path}:{idx}` {message}")
|
FORMATTING_KINDS = frozenset({
|
||||||
sys.exit(1)
|
'func_blank',
|
||||||
else:
|
'signal_format', 'signal_blank_extra',
|
||||||
print("\u2705 All GDScript files follow the naming conventions.")
|
'enum_format', 'enum_blank_missing', 'enum_blank_extra',
|
||||||
|
'enum_member_blank', 'enum_member_indent', 'enum_no_close',
|
||||||
|
'const_blank_missing', 'const_blank_extra',
|
||||||
|
'static_blank_missing', 'static_blank_extra',
|
||||||
|
'export_blank_missing', 'export_blank_extra',
|
||||||
|
'var_blank_missing', 'var_blank_extra',
|
||||||
|
'onready_blank_missing', 'onready_blank_extra',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
def categorize(kind: str) -> str:
|
||||||
|
if kind in NAMING_KINDS:
|
||||||
|
return 'naming'
|
||||||
|
if kind in ORDERING_KINDS:
|
||||||
|
return 'ordering'
|
||||||
|
if kind in FORMATTING_KINDS:
|
||||||
|
return 'formatting'
|
||||||
|
return 'other'
|
||||||
|
|
||||||
|
|
||||||
|
_KIND_LABEL: dict[str, str] = {
|
||||||
|
'class': 'class names',
|
||||||
|
'enum_name': 'enum names',
|
||||||
|
'enum_member': 'enum member names',
|
||||||
|
'function': 'function names',
|
||||||
|
'variable': 'variable names',
|
||||||
|
'constant': 'constant names',
|
||||||
|
'signal': 'signal names',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def format_message(kind: str, data) -> str:
|
||||||
|
if kind in NAMING_KINDS:
|
||||||
|
suggestion = SUGGESTION_FN[kind](data)
|
||||||
|
conv = CONVENTION_NAMES[kind]
|
||||||
|
label = _KIND_LABEL.get(kind, f"{kind}s")
|
||||||
|
return f"'{data}' should be '{suggestion}' ({label} must be {conv})"
|
||||||
|
if kind == 'error':
|
||||||
|
return str(data)
|
||||||
|
template = MESSAGES.get(kind, kind)
|
||||||
|
if isinstance(data, dict):
|
||||||
|
return template.format(**data)
|
||||||
|
return template
|
||||||
|
|
||||||
|
|
||||||
|
if not issues:
|
||||||
|
print("✅ All GDScript files follow the naming conventions.")
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
# Group issues by file, sort by line number within each file
|
||||||
|
by_file: dict = defaultdict(list)
|
||||||
|
counts: Counter = Counter()
|
||||||
|
for path, line_no, kind, data in issues:
|
||||||
|
by_file[path].append((line_no, kind, data))
|
||||||
|
counts[categorize(kind)] += 1
|
||||||
|
|
||||||
|
total = len(issues)
|
||||||
|
file_count = len(by_file)
|
||||||
|
|
||||||
|
summary_parts = []
|
||||||
|
for cat in ('naming', 'ordering', 'formatting', 'other'):
|
||||||
|
if counts[cat]:
|
||||||
|
summary_parts.append(f"{counts[cat]} {cat}")
|
||||||
|
summary = ', '.join(summary_parts)
|
||||||
|
|
||||||
|
print(f"### ❌ GDScript Naming Convention Check Failed\n")
|
||||||
|
print(f"**{total} issue{'s' if total != 1 else ''}** in {file_count} file{'s' if file_count != 1 else ''} ({summary})\n")
|
||||||
|
|
||||||
|
for fpath in sorted(by_file):
|
||||||
|
file_issues = sorted(by_file[fpath], key=lambda x: x[0])
|
||||||
|
count = len(file_issues)
|
||||||
|
print("<details>")
|
||||||
|
print(f"<summary><code>{fpath}</code> — {count} issue{'s' if count != 1 else ''}</summary>\n")
|
||||||
|
print("| Line | Issue |")
|
||||||
|
print("|------|-------|")
|
||||||
|
for line_no, kind, data in file_issues:
|
||||||
|
msg = format_message(kind, data)
|
||||||
|
print(f"| {line_no} | {msg} |")
|
||||||
|
print("\n</details>\n")
|
||||||
|
|
||||||
|
sys.exit(1)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ jobs:
|
|||||||
permissions:
|
permissions:
|
||||||
pull-requests: write
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- name: Run GDScript naming convention check
|
- name: Run GDScript naming convention check
|
||||||
id: naming
|
id: naming
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -53,11 +53,11 @@ Cada lección sigue una progresión lógica basada en datos lingüísticos extra
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Clona tu fork del repositorio
|
# Clona tu fork del repositorio
|
||||||
git clone https://github.com/TU_USUARIO/Kalulu.git
|
git clone https://github.com/TU_USUARIO/Kalulu-Frontend.git
|
||||||
# O bien
|
# O bien
|
||||||
git clone git@github.com:YOUR_USERNAME/Kalulu.git
|
git clone git@github.com:YOUR_USERNAME/Kalulu-Frontend.git
|
||||||
|
|
||||||
cd Kalulu
|
cd Kalulu-Frontend
|
||||||
```
|
```
|
||||||
|
|
||||||
🔁 _Reemplaza `TU_USUARIO` con tu nombre de usuario._
|
🔁 _Reemplaza `TU_USUARIO` con tu nombre de usuario._
|
||||||
@@ -113,13 +113,17 @@ Asegúrate de que tu código siga nuestras convenciones de codificación e inclu
|
|||||||
|
|
||||||
## ❓ FAQ
|
## ❓ FAQ
|
||||||
|
|
||||||
### 📱 O Kalulu está disponível para dispositivos móveis?
|
### 📱 ¿Está Kalulu disponible en móviles?
|
||||||
|
|
||||||
Sim! Kalulu está disponível para:
|
¡Sí! Kalulu está disponible para:
|
||||||
|
|
||||||
- [](https://play.google.com/store/apps/details?id=org.godotengine.kalulu)
|
- [](https://play.google.com/store/apps/details?id=org.godotengine.kalulu)
|
||||||
- [](https://apps.apple.com/fr/app/kalulu-education/id1639075967)
|
- [](https://apps.apple.com/fr/app/kalulu-education/id1639075967)
|
||||||
|
|
||||||
### 💻 Existe uma versão para computador?
|
### 💻 ¿Está Kalulu disponible en escritorio?
|
||||||
|
|
||||||
Uma versão experimental para Windows, Mac e Linux está em desenvolvimento. Fique ligado!
|
¡Sí! Las versiones para Windows, Mac y Linux están disponibles en la sección [Releases](https://github.com/Excello-Recherche-Education/Kalulu-Frontend/releases).
|
||||||
|
|
||||||
|
### 🌐 ¿Está Kalulu disponible directamente en la web?
|
||||||
|
|
||||||
|
¡Estamos trabajando en ello, mantente atento!
|
||||||
|
|||||||
@@ -53,11 +53,11 @@ Chaque leçon suit une séquence structurée basée sur des données linguistiqu
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Clonez votre fork du dépôt
|
# Clonez votre fork du dépôt
|
||||||
git clone https://github.com/VOTRE_UTILISATEUR/Kalulu.git
|
git clone https://github.com/VOTRE_UTILISATEUR/Kalulu-Frontend.git
|
||||||
# Ou
|
# Ou
|
||||||
git clone git@github.com:YOUR_USERNAME/Kalulu.git
|
git clone git@github.com:YOUR_USERNAME/Kalulu-Frontend.git
|
||||||
|
|
||||||
cd Kalulu
|
cd Kalulu-Frontend
|
||||||
```
|
```
|
||||||
|
|
||||||
🔁 _Remplacez `VOTRE_UTILISATEUR` par votre nom d'utilisateur GitHub._
|
🔁 _Remplacez `VOTRE_UTILISATEUR` par votre nom d'utilisateur GitHub._
|
||||||
@@ -120,6 +120,10 @@ Oui ! Kalulu est disponible pour :
|
|||||||
- [](https://play.google.com/store/apps/details?id=org.godotengine.kalulu)
|
- [](https://play.google.com/store/apps/details?id=org.godotengine.kalulu)
|
||||||
- [](https://apps.apple.com/fr/app/kalulu-education/id1639075967)
|
- [](https://apps.apple.com/fr/app/kalulu-education/id1639075967)
|
||||||
|
|
||||||
### 💻 Existe-t-il une version pour ordinateur ?
|
### 💻 Kalulu est-il disponible sur ordinateur ?
|
||||||
|
|
||||||
Une version pour Windows, Mac et Linux est en cours de développement expérimental. Restez à l’écoute !
|
Oui ! Des versions pour Windows, Mac et Linux sont disponibles dans la section [Releases](https://github.com/Excello-Recherche-Education/Kalulu-Frontend/releases).
|
||||||
|
|
||||||
|
### 🌐 Kalulu est-il disponible directement sur le web ?
|
||||||
|
|
||||||
|
Nous y travaillons, restez à l’écoute !
|
||||||
|
|||||||
@@ -51,18 +51,18 @@ Each lesson follows a structured sequence based on linguistic data drawn from ch
|
|||||||
|
|
||||||
We recommend forking the repository before cloning, so you can easily contribute or manage your own changes.
|
We recommend forking the repository before cloning, so you can easily contribute or manage your own changes.
|
||||||
|
|
||||||
1. Go to the [Kalulu GitHub Repository](https://github.com/Excello-Recherche-Education/Kalulu).
|
1. Go to the [Kalulu GitHub Repository](https://github.com/Excello-Recherche-Education/Kalulu-Frontend).
|
||||||
2. Click the **Fork** button at the top-right corner to create your own copy of the repo.
|
2. Click the **Fork** button at the top-right corner to create your own copy of the repo.
|
||||||
3. Once forked, open your terminal and run the following commands:
|
3. Once forked, open your terminal and run the following commands:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Clone your fork of the repository
|
# Clone your fork of the repository
|
||||||
git clone https://github.com/YOUR_USERNAME/Kalulu.git
|
git clone https://github.com/YOUR_USERNAME/Kalulu-Frontend.git
|
||||||
# Or
|
# Or
|
||||||
git clone git@github.com:YOUR_USERNAME/Kalulu.git
|
git clone git@github.com:YOUR_USERNAME/Kalulu-Frontend.git
|
||||||
|
|
||||||
# Navigate into the project directory
|
# Navigate into the project directory
|
||||||
cd Kalulu
|
cd Kalulu-Frontend
|
||||||
```
|
```
|
||||||
|
|
||||||
🔁 *Remember to replace `YOUR_USERNAME` with your actual GitHub username.*
|
🔁 *Remember to replace `YOUR_USERNAME` with your actual GitHub username.*
|
||||||
@@ -141,9 +141,13 @@ Yes! Kalulu is available on:
|
|||||||
- [](https://play.google.com/store/apps/details?id=org.godotengine.kalulu)
|
- [](https://play.google.com/store/apps/details?id=org.godotengine.kalulu)
|
||||||
- [](https://apps.apple.com/fr/app/kalulu-education/id1639075967)
|
- [](https://apps.apple.com/fr/app/kalulu-education/id1639075967)
|
||||||
|
|
||||||
### 💻 Is there a desktop version?
|
### 💻 Is Kalulu available on desktop?
|
||||||
|
|
||||||
An experimental version for Windows, Mac, and Linux is currently in development. Stay tuned!
|
Yes! Desktop versions for Windows, Mac, and Linux are available in the [Releases](https://github.com/Excello-Recherche-Education/Kalulu-Frontend/releases) section.
|
||||||
|
|
||||||
|
### 🌐 Is Kalulu available directly on the web?
|
||||||
|
|
||||||
|
We are working on it, stay tuned!
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
- [2. Instalar o Godot Engine](#2-instalar-o-godot-engine)
|
- [2. Instalar o Godot Engine](#2-instalar-o-godot-engine)
|
||||||
- [🧩 Addons inclusos](#-addons-inclusos)
|
- [🧩 Addons inclusos](#-addons-inclusos)
|
||||||
- [🤝 Quer ajudar?](#-quer-ajudar-)
|
- [🤝 Quer ajudar?](#-quer-ajudar-)
|
||||||
- [❓ Preguntas Frecuentes](#faq)
|
- [❓ Perguntas Frequentes](#faq)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -51,11 +51,11 @@ Cada lição segue uma sequência estruturada com base em dados da literatura in
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Clone o seu fork do repositório
|
# Clone o seu fork do repositório
|
||||||
git clone https://github.com/SEU_USUARIO/Kalulu.git
|
git clone https://github.com/SEU_USUARIO/Kalulu-Frontend.git
|
||||||
# Ou então
|
# Ou então
|
||||||
git clone git@github.com:YOUR_USERNAME/Kalulu.git
|
git clone git@github.com:YOUR_USERNAME/Kalulu-Frontend.git
|
||||||
|
|
||||||
cd Kalulu
|
cd Kalulu-Frontend
|
||||||
```
|
```
|
||||||
|
|
||||||
🔁 _Substitua `SEU_USUARIO` pelo seu nome de usuário._
|
🔁 _Substitua `SEU_USUARIO` pelo seu nome de usuário._
|
||||||
@@ -111,13 +111,17 @@ Certifique-se de que seu código siga nossas convenções de codificação e inc
|
|||||||
|
|
||||||
## ❓ FAQ
|
## ❓ FAQ
|
||||||
|
|
||||||
### 📱 ¿Está Kalulu disponible en móviles?
|
### 📱 O Kalulu está disponível para dispositivos móveis?
|
||||||
|
|
||||||
¡Sí! Kalulu está disponible para:
|
Sim! Kalulu está disponível para:
|
||||||
|
|
||||||
- [](https://play.google.com/store/apps/details?id=org.godotengine.kalulu)
|
- [](https://play.google.com/store/apps/details?id=org.godotengine.kalulu)
|
||||||
- [](https://apps.apple.com/fr/app/kalulu-education/id1639075967)
|
- [](https://apps.apple.com/fr/app/kalulu-education/id1639075967)
|
||||||
|
|
||||||
### 💻 ¿Existe una versión para ordenadores?
|
### 💻 O Kalulu está disponível no desktop?
|
||||||
|
|
||||||
Una versión experimental para Windows, Mac y Linux está en desarrollo. ¡Mantente atento!
|
Sim! Versões para Windows, Mac e Linux estão disponíveis na seção [Releases](https://github.com/Excello-Recherche-Education/Kalulu-Frontend/releases).
|
||||||
|
|
||||||
|
### 🌐 O Kalulu está disponível diretamente na web?
|
||||||
|
|
||||||
|
Estamos trabalhando nisso, fique ligado!
|
||||||
|
|||||||
@@ -6,12 +6,16 @@ func _get_name() -> String:
|
|||||||
|
|
||||||
var tool_configs: Dictionary[String, Dictionary] = {
|
var tool_configs: Dictionary[String, Dictionary] = {
|
||||||
"game": {
|
"game": {
|
||||||
|
"name": "Kalulu",
|
||||||
"main_scene": "res://sources/menus/splash_screen/splash_screen.tscn",
|
"main_scene": "res://sources/menus/splash_screen/splash_screen.tscn",
|
||||||
"output_name": "kalulu_app"
|
"icon": "res://assets/kalulu_icon.png",
|
||||||
|
"output_name": "Kalulu"
|
||||||
},
|
},
|
||||||
"prof_tool": {
|
"prof_tool": {
|
||||||
|
"name": "Prof_Tool",
|
||||||
"main_scene": "res://sources/language_tool/prof_tool_menu.tscn",
|
"main_scene": "res://sources/language_tool/prof_tool_menu.tscn",
|
||||||
"output_name": "prof_tool"
|
"icon": "res://assets/prof_tool_icon.png",
|
||||||
|
"output_name": "Prof_Tool"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -26,6 +30,8 @@ func _export_begin(features: PackedStringArray, is_debug: bool, path: String, fl
|
|||||||
push_error("Tool '%s' is not defined in the configuration." % selected_tool)
|
push_error("Tool '%s' is not defined in the configuration." % selected_tool)
|
||||||
return
|
return
|
||||||
|
|
||||||
var config: Dictionary[String, String] = tool_configs[selected_tool]
|
var config: Dictionary = tool_configs[selected_tool]
|
||||||
|
ProjectSettings.set_setting("application/config/name", config["name"])
|
||||||
ProjectSettings.set_setting("application/run/main_scene", config["main_scene"])
|
ProjectSettings.set_setting("application/run/main_scene", config["main_scene"])
|
||||||
|
ProjectSettings.set_setting("application/config/icon", config["icon"])
|
||||||
ProjectSettings.save()
|
ProjectSettings.save()
|
||||||
|
|||||||
@@ -3,40 +3,76 @@ extends EditorPlugin
|
|||||||
|
|
||||||
const EXPORTER_PATH: String = "res://addons/export_tool_manager/export_tool_exporter.gd"
|
const EXPORTER_PATH: String = "res://addons/export_tool_manager/export_tool_exporter.gd"
|
||||||
|
|
||||||
|
const TOOL_CONFIGS: Dictionary = {
|
||||||
|
"game": {
|
||||||
|
"name": "Kalulu",
|
||||||
|
"main_scene": "res://sources/menus/splash_screen/splash_screen.tscn",
|
||||||
|
"icon": "res://assets/kalulu_icon.png",
|
||||||
|
"export_folder": "Kalulu_Game",
|
||||||
|
"button_label": "Export All (Kalulu Game)",
|
||||||
|
"presets": {
|
||||||
|
"Android Kalulu AAB": "/Android/Kalulu.aab",
|
||||||
|
"Android Kalulu APK": "/Android/Kalulu.apk",
|
||||||
|
"Android Kalulu APK 32 bits": "/Android/Kalulu_32.apk",
|
||||||
|
"Windows Kalulu": "/Windows/Kalulu-Windows.zip",
|
||||||
|
"Linux Kalulu": "/Linux/Kalulu-Linux.zip",
|
||||||
|
# Apple in last because it's always the most complicated
|
||||||
|
#"iOS Kalulu": "/iOS/Kalulu.ipa",
|
||||||
|
#"macOS Kalulu": "/macOS/Kalulu-macOS.dmg",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"prof_tool": {
|
||||||
|
"name": "Prof_Tool",
|
||||||
|
"main_scene": "res://sources/language_tool/prof_tool_menu.tscn",
|
||||||
|
"icon": "res://assets/prof_tool_icon.png",
|
||||||
|
"export_folder": "Prof_Tool",
|
||||||
|
"button_label": "Export All (Prof Tool)",
|
||||||
|
"presets": {
|
||||||
|
"Windows ProfTool": "/Windows/Prof_Tool-Windows.zip",
|
||||||
|
"Linux ProfTool": "/Linux/Prof_Tool-Linux.zip",
|
||||||
|
# Apple in last because it's always the most complicated
|
||||||
|
#"macOS ProfTool": "/macOS/Prof_Tool-macOS.dmg",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var tool_selector: OptionButton
|
var tool_selector: OptionButton
|
||||||
var exporter_plugin: EditorExportPlugin
|
var exporter_plugin: EditorExportPlugin
|
||||||
var export_button: Button
|
var export_button: Button
|
||||||
|
var current_tool: String = "game"
|
||||||
|
|
||||||
func _enter_tree() -> void:
|
func _enter_tree() -> void:
|
||||||
# Tool Selector UI
|
# Tool Selector UI
|
||||||
tool_selector = OptionButton.new()
|
tool_selector = OptionButton.new()
|
||||||
tool_selector.name = "Tool Exporter"
|
tool_selector.name = "Tool Exporter"
|
||||||
tool_selector.add_item("Game")
|
tool_selector.add_item("Kalulu Game")
|
||||||
tool_selector.add_item("Prof Tool")
|
tool_selector.add_item("Prof Tool")
|
||||||
tool_selector.connect("item_selected", _on_tool_selected)
|
tool_selector.connect("item_selected", _on_tool_selected)
|
||||||
add_control_to_container(EditorPlugin.CONTAINER_TOOLBAR, tool_selector)
|
add_control_to_container(EditorPlugin.CONTAINER_TOOLBAR, tool_selector)
|
||||||
|
|
||||||
var settings: EditorSettings = get_editor_interface().get_editor_settings()
|
var settings: EditorSettings = get_editor_interface().get_editor_settings()
|
||||||
var current: Variant = settings.get_setting("export_tool_manager/current_tool")
|
var saved: Variant = settings.get_setting("export_tool_manager/current_tool")
|
||||||
var current_tool: String = "game"
|
|
||||||
|
|
||||||
if typeof(current) == TYPE_STRING and current.strip_edges() != "":
|
if typeof(saved) == TYPE_STRING and saved.strip_edges() != "":
|
||||||
current_tool = current.strip_edges()
|
current_tool = saved.strip_edges()
|
||||||
|
|
||||||
match current_tool:
|
match current_tool:
|
||||||
"prof_tool":
|
"prof_tool":
|
||||||
tool_selector.select(1)
|
tool_selector.select(1)
|
||||||
"game", _:
|
"game", _:
|
||||||
|
current_tool = "game"
|
||||||
tool_selector.select(0)
|
tool_selector.select(0)
|
||||||
|
|
||||||
|
_apply_tool_config(current_tool)
|
||||||
|
|
||||||
# Exporter plugin
|
# Exporter plugin
|
||||||
exporter_plugin = load(EXPORTER_PATH).new()
|
exporter_plugin = load(EXPORTER_PATH).new()
|
||||||
add_export_plugin(exporter_plugin)
|
add_export_plugin(exporter_plugin)
|
||||||
|
|
||||||
# Export All Button
|
# Export All Button
|
||||||
export_button = Button.new()
|
export_button = Button.new()
|
||||||
export_button.text = "Export All (Game)"
|
export_button.text = TOOL_CONFIGS[current_tool]["button_label"]
|
||||||
export_button.pressed.connect(_on_export_all_game_pressed)
|
export_button.pressed.connect(_on_export_all_pressed)
|
||||||
add_control_to_container(EditorPlugin.CONTAINER_TOOLBAR, export_button)
|
add_control_to_container(EditorPlugin.CONTAINER_TOOLBAR, export_button)
|
||||||
|
|
||||||
func _exit_tree() -> void:
|
func _exit_tree() -> void:
|
||||||
@@ -49,37 +85,59 @@ func _exit_tree() -> void:
|
|||||||
remove_export_plugin(exporter_plugin)
|
remove_export_plugin(exporter_plugin)
|
||||||
|
|
||||||
func _on_tool_selected(index: int) -> void:
|
func _on_tool_selected(index: int) -> void:
|
||||||
var tool: String = "game"
|
|
||||||
match index:
|
match index:
|
||||||
1:
|
1:
|
||||||
tool = "prof_tool"
|
current_tool = "prof_tool"
|
||||||
0, _:
|
0, _:
|
||||||
tool = "game"
|
current_tool = "game"
|
||||||
|
|
||||||
var settings: EditorSettings = get_editor_interface().get_editor_settings()
|
var settings: EditorSettings = get_editor_interface().get_editor_settings()
|
||||||
settings.set_setting("export_tool_manager/current_tool", tool)
|
settings.set_setting("export_tool_manager/current_tool", current_tool)
|
||||||
|
_apply_tool_config(current_tool)
|
||||||
|
|
||||||
func _on_export_all_game_pressed() -> void:
|
|
||||||
export_all_game_presets()
|
|
||||||
|
|
||||||
func export_all_game_presets() -> void:
|
func _apply_tool_config(tool: String) -> void:
|
||||||
|
if not TOOL_CONFIGS.has(tool):
|
||||||
|
push_error("ExportToolManager: Unknown tool '%s'" % tool)
|
||||||
|
return
|
||||||
|
|
||||||
|
var config: Dictionary = TOOL_CONFIGS[tool]
|
||||||
|
ProjectSettings.set_setting("application/config/name", config["name"])
|
||||||
|
ProjectSettings.set_setting("application/run/main_scene", config["main_scene"])
|
||||||
|
ProjectSettings.set_setting("application/config/icon", config["icon"])
|
||||||
|
ProjectSettings.save()
|
||||||
|
|
||||||
|
if export_button:
|
||||||
|
export_button.text = config["button_label"]
|
||||||
|
|
||||||
|
print("ExportToolManager: Switched to '%s' (scene: %s)" % [config["name"], config["main_scene"]])
|
||||||
|
|
||||||
|
func _on_export_all_pressed() -> void:
|
||||||
|
export_all_presets()
|
||||||
|
|
||||||
|
|
||||||
|
func export_all_presets() -> void:
|
||||||
|
var config: Dictionary = TOOL_CONFIGS[current_tool]
|
||||||
|
var base_folder: String = "../Export/Autobuild/%s/" % config["export_folder"]
|
||||||
|
var version_folder: String = base_folder + get_application_version_with_code()
|
||||||
|
|
||||||
|
# Check if the version folder already exists
|
||||||
|
if DirAccess.dir_exists_absolute(version_folder):
|
||||||
|
var dialog: AcceptDialog = AcceptDialog.new()
|
||||||
|
dialog.title = "Export aborted"
|
||||||
|
dialog.dialog_text = "The export folder already exists:\n%s\n\nDelete it manually before re-exporting." % version_folder
|
||||||
|
get_editor_interface().get_base_control().add_child(dialog)
|
||||||
|
dialog.popup_centered()
|
||||||
|
dialog.confirmed.connect(dialog.queue_free)
|
||||||
|
dialog.canceled.connect(dialog.queue_free)
|
||||||
|
return
|
||||||
|
|
||||||
var godot_path: String = OS.get_executable_path()
|
var godot_path: String = OS.get_executable_path()
|
||||||
var exportFolder: String = "../Export/autobuilds/"
|
var presets: Dictionary = config["presets"]
|
||||||
var presets: Dictionary[String, String]= {
|
|
||||||
"Android Kalulu AAB": "/Android/kalulu_app.aab",
|
|
||||||
"Android Kalulu APK": "/Android/kalulu_app.apk",
|
|
||||||
"Android Kalulu APK 32 bits": "/Android/kalulu_app_32.apk",
|
|
||||||
"Windows Kalulu": "/Windows/Kalulu-Windows.zip",
|
|
||||||
"Linux Kalulu": "/Linux/Kalulu-Linux.zip",
|
|
||||||
|
|
||||||
# Apple in last because it's always the most complicated
|
|
||||||
#"iOS Kalulu": "/iOS/KaluluApp.ipa",
|
|
||||||
#"macOS Kalulu": "/macOS/Kalulu-macOS.dmg"
|
|
||||||
}
|
|
||||||
|
|
||||||
for preset_name in presets.keys():
|
for preset_name in presets.keys():
|
||||||
await get_tree().create_timer(1).timeout
|
await get_tree().create_timer(1).timeout
|
||||||
var output_path: String = exportFolder + get_application_version_with_code() + presets[preset_name]
|
var output_path: String = version_folder + presets[preset_name]
|
||||||
print("Start exporting " + preset_name)
|
print("Start exporting " + preset_name)
|
||||||
DirAccess.make_dir_recursive_absolute(output_path.get_base_dir())
|
DirAccess.make_dir_recursive_absolute(output_path.get_base_dir())
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/editor_icon.png-6f130a2788dfaa185bebbdd85ed98
|
|||||||
compress/mode=0
|
compress/mode=0
|
||||||
compress/high_quality=false
|
compress/high_quality=false
|
||||||
compress/lossy_quality=0.7
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
compress/hdr_compression=1
|
compress/hdr_compression=1
|
||||||
compress/normal_map=0
|
compress/normal_map=0
|
||||||
compress/channel_pack=0
|
compress/channel_pack=0
|
||||||
@@ -25,6 +27,10 @@ mipmaps/generate=false
|
|||||||
mipmaps/limit=-1
|
mipmaps/limit=-1
|
||||||
roughness/mode=0
|
roughness/mode=0
|
||||||
roughness/src_normal=""
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
process/fix_alpha_border=true
|
process/fix_alpha_border=true
|
||||||
process/premult_alpha=false
|
process/premult_alpha=false
|
||||||
process/normal_map_invert_y=false
|
process/normal_map_invert_y=false
|
||||||
|
|||||||
@@ -3,19 +3,21 @@
|
|||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://cop8iscyxohrb"
|
uid="uid://cop8iscyxohrb"
|
||||||
path="res://.godot/imported/bush_curtain.png-2e1fb82bc0153666dd15620ed6cf9a14.ctex"
|
path.s3tc="res://.godot/imported/bush_curtain.png-2e1fb82bc0153666dd15620ed6cf9a14.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/bush_curtain.png-2e1fb82bc0153666dd15620ed6cf9a14.etc2.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://assets/bush_curtain.png"
|
source_file="res://assets/bush_curtain.png"
|
||||||
dest_files=["res://.godot/imported/bush_curtain.png-2e1fb82bc0153666dd15620ed6cf9a14.ctex"]
|
dest_files=["res://.godot/imported/bush_curtain.png-2e1fb82bc0153666dd15620ed6cf9a14.s3tc.ctex", "res://.godot/imported/bush_curtain.png-2e1fb82bc0153666dd15620ed6cf9a14.etc2.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
compress/mode=0
|
compress/mode=2
|
||||||
compress/high_quality=false
|
compress/high_quality=false
|
||||||
compress/lossy_quality=0.7
|
compress/lossy_quality=0.7
|
||||||
compress/uastc_level=0
|
compress/uastc_level=0
|
||||||
@@ -23,7 +25,7 @@ compress/rdo_quality_loss=0.0
|
|||||||
compress/hdr_compression=1
|
compress/hdr_compression=1
|
||||||
compress/normal_map=0
|
compress/normal_map=0
|
||||||
compress/channel_pack=0
|
compress/channel_pack=0
|
||||||
mipmaps/generate=false
|
mipmaps/generate=true
|
||||||
mipmaps/limit=-1
|
mipmaps/limit=-1
|
||||||
roughness/mode=0
|
roughness/mode=0
|
||||||
roughness/src_normal=""
|
roughness/src_normal=""
|
||||||
|
|||||||
|
After Width: | Height: | Size: 2.8 KiB |
@@ -2,16 +2,16 @@
|
|||||||
|
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://cqhbpt3lk6f15"
|
uid="uid://d1j23o6nq476v"
|
||||||
path="res://.godot/imported/bottom.png-3c7c71fa24e23ae34adb1d444da0b3db.ctex"
|
path="res://.godot/imported/ant_body.png-dad00fa87392efb7e152045fa1f6b084.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://assets/lesson_screen/bottom.png"
|
source_file="res://assets/gardens/animals/ant_body.png"
|
||||||
dest_files=["res://.godot/imported/bottom.png-3c7c71fa24e23ae34adb1d444da0b3db.ctex"]
|
dest_files=["res://.godot/imported/ant_body.png-dad00fa87392efb7e152045fa1f6b084.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 953 B |
@@ -2,16 +2,16 @@
|
|||||||
|
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://cffuqacgb1jra"
|
uid="uid://by3xfdin7jrsn"
|
||||||
path="res://.godot/imported/branches.png-59c95c0c624c68eb2181d2b0fe6a5080.ctex"
|
path="res://.godot/imported/ant_face.png-b00fa29a7fcfe1e19ec19735f3395466.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://assets/lesson_screen/branches.png"
|
source_file="res://assets/gardens/animals/ant_face.png"
|
||||||
dest_files=["res://.godot/imported/branches.png-59c95c0c624c68eb2181d2b0fe6a5080.ctex"]
|
dest_files=["res://.godot/imported/ant_face.png-b00fa29a7fcfe1e19ec19735f3395466.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 2.8 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://b6nrx0dn0h3f2"
|
||||||
|
path="res://.godot/imported/caterpillar_body.png-c691b990e51d372f5dfdafa881ea6750.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/animals/caterpillar_body.png"
|
||||||
|
dest_files=["res://.godot/imported/caterpillar_body.png-c691b990e51d372f5dfdafa881ea6750.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 806 B |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cnihbmks0piwi"
|
||||||
|
path="res://.godot/imported/caterpillar_face.png-d383b965d4555da185ab647f352d95f3.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/animals/caterpillar_face.png"
|
||||||
|
dest_files=["res://.godot/imported/caterpillar_face.png-d383b965d4555da185ab647f352d95f3.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 2.2 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://b2e61oot7ht35"
|
||||||
|
path="res://.godot/imported/crab_body.png-d5ff5fcdad64e46336ef16b4a3fb00c7.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/animals/crab_body.png"
|
||||||
|
dest_files=["res://.godot/imported/crab_body.png-d5ff5fcdad64e46336ef16b4a3fb00c7.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 1005 B |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://ruclqu4dc13u"
|
||||||
|
path="res://.godot/imported/crab_face.png-405026ec02e80559c79371d1bab55844.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/animals/crab_face.png"
|
||||||
|
dest_files=["res://.godot/imported/crab_face.png-405026ec02e80559c79371d1bab55844.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 2.7 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://oagcnmxs0xx1"
|
||||||
|
path="res://.godot/imported/frog_body.png-ac6c4a085cb17c6bc169773a464b64b6.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/animals/frog_body.png"
|
||||||
|
dest_files=["res://.godot/imported/frog_body.png-ac6c4a085cb17c6bc169773a464b64b6.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://b4243242f34g0"
|
||||||
|
path="res://.godot/imported/frog_face.png-edba38b44d42deef80a709ade2e5e8f6.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/animals/frog_face.png"
|
||||||
|
dest_files=["res://.godot/imported/frog_face.png-edba38b44d42deef80a709ade2e5e8f6.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 5.2 KiB |
@@ -2,16 +2,16 @@
|
|||||||
|
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://c0pixsxb7e5yd"
|
uid="uid://bb3we2it550v6"
|
||||||
path="res://.godot/imported/garden_03_open.png-142fe10dfa5b6344ac20de2d61c58e7f.ctex"
|
path="res://.godot/imported/jellyfish_body.png-a32700abbb41c080cba5614127a3edc3.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://assets/gardens/gardens/garden_03_open.png"
|
source_file="res://assets/gardens/animals/jellyfish_body.png"
|
||||||
dest_files=["res://.godot/imported/garden_03_open.png-142fe10dfa5b6344ac20de2d61c58e7f.ctex"]
|
dest_files=["res://.godot/imported/jellyfish_body.png-a32700abbb41c080cba5614127a3edc3.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -2,16 +2,16 @@
|
|||||||
|
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://b5kildofgmthb"
|
uid="uid://dppmdv8u3cwl1"
|
||||||
path="res://.godot/imported/garden_01_open.png-e7e93db35611b0ad9dabe123854f1ab1.ctex"
|
path="res://.godot/imported/jellyfish_face.png-5c0a129760def337aa729a02e1028153.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://assets/gardens/gardens/garden_01_open.png"
|
source_file="res://assets/gardens/animals/jellyfish_face.png"
|
||||||
dest_files=["res://.godot/imported/garden_01_open.png-e7e93db35611b0ad9dabe123854f1ab1.ctex"]
|
dest_files=["res://.godot/imported/jellyfish_face.png-5c0a129760def337aa729a02e1028153.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 3.7 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dr12efhuotfgt"
|
||||||
|
path="res://.godot/imported/monkey_body.png-b049cc78b0f6869945a1c7d6a1301ad4.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/animals/monkey_body.png"
|
||||||
|
dest_files=["res://.godot/imported/monkey_body.png-b049cc78b0f6869945a1c7d6a1301ad4.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dc52xvm4y6rir"
|
||||||
|
path="res://.godot/imported/monkey_face.png-985109f289329f15999880cce0b5a16e.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/animals/monkey_face.png"
|
||||||
|
dest_files=["res://.godot/imported/monkey_face.png-985109f289329f15999880cce0b5a16e.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 2.3 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://c2yalimkyunxi"
|
||||||
|
path="res://.godot/imported/parakeet_body.png-9465060ca470033db7910f6ce2322a6d.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/animals/parakeet_body.png"
|
||||||
|
dest_files=["res://.godot/imported/parakeet_body.png-9465060ca470033db7910f6ce2322a6d.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 1.9 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://l52tfb7fdrpt"
|
||||||
|
path="res://.godot/imported/parakeet_face.png-94d7bc7370d8ae647ca7d22a41893e3f.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/animals/parakeet_face.png"
|
||||||
|
dest_files=["res://.godot/imported/parakeet_face.png-94d7bc7370d8ae647ca7d22a41893e3f.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 2.7 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://noekve4gjudr"
|
||||||
|
path="res://.godot/imported/penguin_body.png-72481c56dc380b551e94e0f413ef0cf8.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/animals/penguin_body.png"
|
||||||
|
dest_files=["res://.godot/imported/penguin_body.png-72481c56dc380b551e94e0f413ef0cf8.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dbg7mxg3x7vd4"
|
||||||
|
path="res://.godot/imported/penguin_face.png-ea217ef7de954aee6edea62f83594216.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/animals/penguin_face.png"
|
||||||
|
dest_files=["res://.godot/imported/penguin_face.png-ea217ef7de954aee6edea62f83594216.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 5.4 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://b7rqldqdft30a"
|
||||||
|
path="res://.godot/imported/turtle_body.png-0f50da4036c6750167a288e6f006a813.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/animals/turtle_body.png"
|
||||||
|
dest_files=["res://.godot/imported/turtle_body.png-0f50da4036c6750167a288e6f006a813.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 917 B |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://nu4kpbywwpgn"
|
||||||
|
path="res://.godot/imported/turtle_face.png-e570d8d931a8a1c99178dba731ef0fdb.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/animals/turtle_face.png"
|
||||||
|
dest_files=["res://.godot/imported/turtle_face.png-e570d8d931a8a1c99178dba731ef0fdb.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cxjy5f7oyl8mq"
|
||||||
|
path="res://.godot/imported/lesson_circle.png-05f9dc6a36bb9c72360b598507504f72.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/buttons/lesson_circle.png"
|
||||||
|
dest_files=["res://.godot/imported/lesson_circle.png-05f9dc6a36bb9c72360b598507504f72.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 2.3 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://c1ml42sp1vqga"
|
||||||
|
path="res://.godot/imported/movie_icon.png-3b93e2f2cfeeb8eec0332bbcd7cda143.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/buttons/movie_icon.png"
|
||||||
|
dest_files=["res://.godot/imported/movie_icon.png-3b93e2f2cfeeb8eec0332bbcd7cda143.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 17 KiB |
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://d26hapg1hf8a6"
|
||||||
|
path.s3tc="res://.godot/imported/garden_01.png-8cec30484a43f71cd614fe156e78443f.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/garden_01.png-8cec30484a43f71cd614fe156e78443f.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/gardens/garden_01.png"
|
||||||
|
dest_files=["res://.godot/imported/garden_01.png-8cec30484a43f71cd614fe156e78443f.s3tc.ctex", "res://.godot/imported/garden_01.png-8cec30484a43f71cd614fe156e78443f.etc2.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
Before Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://4wt50lu3cwbl"
|
||||||
|
path.s3tc="res://.godot/imported/garden_02.png-952b73c44e8f297d7146afccf72fa6f8.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/garden_02.png-952b73c44e8f297d7146afccf72fa6f8.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/gardens/garden_02.png"
|
||||||
|
dest_files=["res://.godot/imported/garden_02.png-952b73c44e8f297d7146afccf72fa6f8.s3tc.ctex", "res://.godot/imported/garden_02.png-952b73c44e8f297d7146afccf72fa6f8.etc2.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
Before Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 16 KiB |
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://ch1ah3nkjy5cl"
|
||||||
|
path.s3tc="res://.godot/imported/garden_03.png-5f6b1132537a67d14c76986a1aaf0c9e.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/garden_03.png-5f6b1132537a67d14c76986a1aaf0c9e.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/gardens/garden_03.png"
|
||||||
|
dest_files=["res://.godot/imported/garden_03.png-5f6b1132537a67d14c76986a1aaf0c9e.s3tc.ctex", "res://.godot/imported/garden_03.png-5f6b1132537a67d14c76986a1aaf0c9e.etc2.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
Before Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://l32ekwfso26s"
|
||||||
|
path.s3tc="res://.godot/imported/garden_04.png-4af29a3ee810ade399f7fba358601b39.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/garden_04.png-4af29a3ee810ade399f7fba358601b39.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/gardens/garden_04.png"
|
||||||
|
dest_files=["res://.godot/imported/garden_04.png-4af29a3ee810ade399f7fba358601b39.s3tc.ctex", "res://.godot/imported/garden_04.png-4af29a3ee810ade399f7fba358601b39.etc2.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
Before Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 17 KiB |
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://d3bu30iutptwx"
|
||||||
|
path.s3tc="res://.godot/imported/garden_05.png-b2eede99e5cfc7d755b398e252db8066.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/garden_05.png-b2eede99e5cfc7d755b398e252db8066.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/gardens/garden_05.png"
|
||||||
|
dest_files=["res://.godot/imported/garden_05.png-b2eede99e5cfc7d755b398e252db8066.s3tc.ctex", "res://.godot/imported/garden_05.png-b2eede99e5cfc7d755b398e252db8066.etc2.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
Before Width: | Height: | Size: 40 KiB |
@@ -1,40 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://blg1nxeno6cwl"
|
|
||||||
path="res://.godot/imported/garden_05_open.png-ff5ee3f0e878fa03a8dea0ef133ca5ba.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://assets/gardens/gardens/garden_05_open.png"
|
|
||||||
dest_files=["res://.godot/imported/garden_05_open.png-ff5ee3f0e878fa03a8dea0ef133ca5ba.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=0
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/uastc_level=0
|
|
||||||
compress/rdo_quality_loss=0.0
|
|
||||||
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/channel_remap/red=0
|
|
||||||
process/channel_remap/green=1
|
|
||||||
process/channel_remap/blue=2
|
|
||||||
process/channel_remap/alpha=3
|
|
||||||
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
|
|
||||||
|
After Width: | Height: | Size: 16 KiB |
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bhamsdjj677b3"
|
||||||
|
path.s3tc="res://.godot/imported/garden_06.png-943860b612f9520e74a0732cde3cbfe6.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/garden_06.png-943860b612f9520e74a0732cde3cbfe6.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/gardens/garden_06.png"
|
||||||
|
dest_files=["res://.godot/imported/garden_06.png-943860b612f9520e74a0732cde3cbfe6.s3tc.ctex", "res://.godot/imported/garden_06.png-943860b612f9520e74a0732cde3cbfe6.etc2.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
Before Width: | Height: | Size: 44 KiB |
@@ -1,40 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://dimvsnhfd8y8q"
|
|
||||||
path="res://.godot/imported/garden_06_open.png-13105f591491c2be9fb6cc46e6c1a2d6.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://assets/gardens/gardens/garden_06_open.png"
|
|
||||||
dest_files=["res://.godot/imported/garden_06_open.png-13105f591491c2be9fb6cc46e6c1a2d6.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=0
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/uastc_level=0
|
|
||||||
compress/rdo_quality_loss=0.0
|
|
||||||
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/channel_remap/red=0
|
|
||||||
process/channel_remap/green=1
|
|
||||||
process/channel_remap/blue=2
|
|
||||||
process/channel_remap/alpha=3
|
|
||||||
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
|
|
||||||
|
After Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://clcff3fg5jd2k"
|
||||||
|
path.s3tc="res://.godot/imported/garden_07.png-552b63ddceeb7d6136f933619623d519.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/garden_07.png-552b63ddceeb7d6136f933619623d519.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/gardens/garden_07.png"
|
||||||
|
dest_files=["res://.godot/imported/garden_07.png-552b63ddceeb7d6136f933619623d519.s3tc.ctex", "res://.godot/imported/garden_07.png-552b63ddceeb7d6136f933619623d519.etc2.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
Before Width: | Height: | Size: 42 KiB |
@@ -1,40 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://bhr21dw3baqrm"
|
|
||||||
path="res://.godot/imported/garden_07_open.png-d87f883f506a9836a782efbcfd1542f6.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://assets/gardens/gardens/garden_07_open.png"
|
|
||||||
dest_files=["res://.godot/imported/garden_07_open.png-d87f883f506a9836a782efbcfd1542f6.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=0
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/uastc_level=0
|
|
||||||
compress/rdo_quality_loss=0.0
|
|
||||||
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/channel_remap/red=0
|
|
||||||
process/channel_remap/green=1
|
|
||||||
process/channel_remap/blue=2
|
|
||||||
process/channel_remap/alpha=3
|
|
||||||
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
|
|
||||||
|
After Width: | Height: | Size: 13 KiB |
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://kgeoctiggnxx"
|
||||||
|
path.s3tc="res://.godot/imported/garden_08.png-60a000c144495dd62452995bc8932932.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/garden_08.png-60a000c144495dd62452995bc8932932.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/gardens/garden_08.png"
|
||||||
|
dest_files=["res://.godot/imported/garden_08.png-60a000c144495dd62452995bc8932932.s3tc.ctex", "res://.godot/imported/garden_08.png-60a000c144495dd62452995bc8932932.etc2.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
Before Width: | Height: | Size: 37 KiB |
@@ -1,40 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://phoeyhvft3dc"
|
|
||||||
path="res://.godot/imported/garden_08_open.png-01bb33e901c94aea253f809b00da568d.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://assets/gardens/gardens/garden_08_open.png"
|
|
||||||
dest_files=["res://.godot/imported/garden_08_open.png-01bb33e901c94aea253f809b00da568d.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=0
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/uastc_level=0
|
|
||||||
compress/rdo_quality_loss=0.0
|
|
||||||
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/channel_remap/red=0
|
|
||||||
process/channel_remap/green=1
|
|
||||||
process/channel_remap/blue=2
|
|
||||||
process/channel_remap/alpha=3
|
|
||||||
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
|
|
||||||
|
After Width: | Height: | Size: 18 KiB |
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dqk14m4demy3a"
|
||||||
|
path.s3tc="res://.godot/imported/garden_09.png-4a49e6b67d1574a86d201faadd295c12.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/garden_09.png-4a49e6b67d1574a86d201faadd295c12.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/gardens/garden_09.png"
|
||||||
|
dest_files=["res://.godot/imported/garden_09.png-4a49e6b67d1574a86d201faadd295c12.s3tc.ctex", "res://.godot/imported/garden_09.png-4a49e6b67d1574a86d201faadd295c12.etc2.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
Before Width: | Height: | Size: 50 KiB |
@@ -1,40 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://b6x6ypfyin4l5"
|
|
||||||
path="res://.godot/imported/garden_09_open.png-4056b229410a3403994326084102e6f5.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://assets/gardens/gardens/garden_09_open.png"
|
|
||||||
dest_files=["res://.godot/imported/garden_09_open.png-4056b229410a3403994326084102e6f5.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=0
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/uastc_level=0
|
|
||||||
compress/rdo_quality_loss=0.0
|
|
||||||
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/channel_remap/red=0
|
|
||||||
process/channel_remap/green=1
|
|
||||||
process/channel_remap/blue=2
|
|
||||||
process/channel_remap/alpha=3
|
|
||||||
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
|
|
||||||
|
After Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cahtl4j3wxahn"
|
||||||
|
path.s3tc="res://.godot/imported/garden_10.png-39a7d010b681ef7c20becd3e54ebced2.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/garden_10.png-39a7d010b681ef7c20becd3e54ebced2.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/gardens/garden_10.png"
|
||||||
|
dest_files=["res://.godot/imported/garden_10.png-39a7d010b681ef7c20becd3e54ebced2.s3tc.ctex", "res://.godot/imported/garden_10.png-39a7d010b681ef7c20becd3e54ebced2.etc2.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
Before Width: | Height: | Size: 46 KiB |
@@ -1,40 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://bryk735xd5r8j"
|
|
||||||
path="res://.godot/imported/garden_10_open.png-6df2b29b42d9313fb097ea589603ef68.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://assets/gardens/gardens/garden_10_open.png"
|
|
||||||
dest_files=["res://.godot/imported/garden_10_open.png-6df2b29b42d9313fb097ea589603ef68.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=0
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/uastc_level=0
|
|
||||||
compress/rdo_quality_loss=0.0
|
|
||||||
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/channel_remap/red=0
|
|
||||||
process/channel_remap/green=1
|
|
||||||
process/channel_remap/blue=2
|
|
||||||
process/channel_remap/alpha=3
|
|
||||||
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
|
|
||||||
|
After Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dpl670l7onk5n"
|
||||||
|
path.s3tc="res://.godot/imported/garden_11.png-cfde776b2d9c071e225bed94f36560e1.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/garden_11.png-cfde776b2d9c071e225bed94f36560e1.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/gardens/garden_11.png"
|
||||||
|
dest_files=["res://.godot/imported/garden_11.png-cfde776b2d9c071e225bed94f36560e1.s3tc.ctex", "res://.godot/imported/garden_11.png-cfde776b2d9c071e225bed94f36560e1.etc2.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
Before Width: | Height: | Size: 43 KiB |
@@ -1,40 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://d25ddek1hl6ca"
|
|
||||||
path="res://.godot/imported/garden_11_open.png-aaa76c2521c39c7b0116060068bfb598.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://assets/gardens/gardens/garden_11_open.png"
|
|
||||||
dest_files=["res://.godot/imported/garden_11_open.png-aaa76c2521c39c7b0116060068bfb598.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=0
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/uastc_level=0
|
|
||||||
compress/rdo_quality_loss=0.0
|
|
||||||
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/channel_remap/red=0
|
|
||||||
process/channel_remap/green=1
|
|
||||||
process/channel_remap/blue=2
|
|
||||||
process/channel_remap/alpha=3
|
|
||||||
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
|
|
||||||
|
After Width: | Height: | Size: 12 KiB |
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://b6pmtjjp4rejb"
|
||||||
|
path.s3tc="res://.godot/imported/garden_12.png-13d7be39631648987956568e37e0e56f.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/garden_12.png-13d7be39631648987956568e37e0e56f.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/gardens/gardens/garden_12.png"
|
||||||
|
dest_files=["res://.godot/imported/garden_12.png-13d7be39631648987956568e37e0e56f.s3tc.ctex", "res://.godot/imported/garden_12.png-13d7be39631648987956568e37e0e56f.etc2.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
Before Width: | Height: | Size: 38 KiB |
@@ -1,40 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://cgqf4g3rv36sq"
|
|
||||||
path="res://.godot/imported/garden_12_open.png-b78bc8ccfc5520f4bb7618fbebf7f572.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://assets/gardens/gardens/garden_12_open.png"
|
|
||||||
dest_files=["res://.godot/imported/garden_12_open.png-b78bc8ccfc5520f4bb7618fbebf7f572.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=0
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/uastc_level=0
|
|
||||||
compress/rdo_quality_loss=0.0
|
|
||||||
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/channel_remap/red=0
|
|
||||||
process/channel_remap/green=1
|
|
||||||
process/channel_remap/blue=2
|
|
||||||
process/channel_remap/alpha=3
|
|
||||||
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
|
|
||||||
|
Before Width: | Height: | Size: 44 KiB |
@@ -1,40 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://bv2riha86d4ac"
|
|
||||||
path="res://.godot/imported/garden_13_open.png-2f4b311fd8fdd52939d886204f85f5f1.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://assets/gardens/gardens/garden_13_open.png"
|
|
||||||
dest_files=["res://.godot/imported/garden_13_open.png-2f4b311fd8fdd52939d886204f85f5f1.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=0
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/uastc_level=0
|
|
||||||
compress/rdo_quality_loss=0.0
|
|
||||||
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/channel_remap/red=0
|
|
||||||
process/channel_remap/green=1
|
|
||||||
process/channel_remap/blue=2
|
|
||||||
process/channel_remap/alpha=3
|
|
||||||
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
|
|
||||||
|
Before Width: | Height: | Size: 36 KiB |
@@ -1,40 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://cr76law5eivwm"
|
|
||||||
path="res://.godot/imported/garden_14_open.png-a684fe2a5f05b9b7fd22838d53791afb.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://assets/gardens/gardens/garden_14_open.png"
|
|
||||||
dest_files=["res://.godot/imported/garden_14_open.png-a684fe2a5f05b9b7fd22838d53791afb.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=0
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/uastc_level=0
|
|
||||||
compress/rdo_quality_loss=0.0
|
|
||||||
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/channel_remap/red=0
|
|
||||||
process/channel_remap/green=1
|
|
||||||
process/channel_remap/blue=2
|
|
||||||
process/channel_remap/alpha=3
|
|
||||||
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
|
|
||||||
|
Before Width: | Height: | Size: 41 KiB |
@@ -1,40 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://cj6ois0siu3p0"
|
|
||||||
path="res://.godot/imported/garden_15_open.png-afb8688cb9957b71d459db3640d2b0b8.ctex"
|
|
||||||
metadata={
|
|
||||||
"vram_texture": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://assets/gardens/gardens/garden_15_open.png"
|
|
||||||
dest_files=["res://.godot/imported/garden_15_open.png-afb8688cb9957b71d459db3640d2b0b8.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=0
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/uastc_level=0
|
|
||||||
compress/rdo_quality_loss=0.0
|
|
||||||
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/channel_remap/red=0
|
|
||||||
process/channel_remap/green=1
|
|
||||||
process/channel_remap/blue=2
|
|
||||||
process/channel_remap/alpha=3
|
|
||||||
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
|
|
||||||