UI Image Types, UI Input Infos,Shader/Material Creator, Inkscape Layer Splitter

This commit is contained in:
Josef 2025-02-12 17:48:15 +01:00
parent 4afa937816
commit 489199f37a
255 changed files with 9694 additions and 807 deletions

91
Icons/LocaleManager.svg Normal file
View File

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="16"
viewBox="0 0 16 16"
width="16"
version="1.1"
id="svg4"
sodipodi:docname="LocaleManager.svg"
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs8"><linearGradient
inkscape:collect="never"
id="linearGradient3074"><stop
style="stop-color:#e26708;stop-opacity:1;"
offset="0"
id="stop3070" /><stop
style="stop-color:#bb3c00;stop-opacity:1;"
offset="1"
id="stop3072" /></linearGradient><radialGradient
xlink:href="#linearGradient45008"
id="radialGradient3076"
cx="30.688875"
cy="30.069115"
fx="30.688875"
fy="30.069115"
r="14.05412"
gradientUnits="userSpaceOnUse" /><linearGradient
xlink:href="#linearGradient45008"
id="linearGradient45010"
x1="-31.87768"
y1="22.065159"
x2="-31.87768"
y2="48.78738"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(101.16951,-6.5921995)" /><linearGradient
id="linearGradient45008"><stop
style="stop-color:#e14500;stop-opacity:1;"
offset="0"
id="stop45004" /><stop
style="stop-color:#e17900;stop-opacity:1;"
offset="0.59811592"
id="stop45012" /><stop
style="stop-color:#e19c00;stop-opacity:1;"
offset="1"
id="stop45006" /></linearGradient><linearGradient
xlink:href="#linearGradient45008"
id="linearGradient46715"
x1="31.917692"
y1="47.524929"
x2="31.917692"
y2="22.632998"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(1.7923447e-6)" /></defs><sodipodi:namedview
id="namedview6"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#505050"
showgrid="false"
inkscape:zoom="32.000001"
inkscape:cx="4.7343748"
inkscape:cy="6.6718747"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g2210" /><g
id="g2210"
transform="matrix(0.54328517,0,0,0.54328517,-9.4489315,-11.300948)"><rect
style="fill:#852d2e;fill-opacity:1;stroke:none;stroke-width:1.91428;stroke-linecap:round;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect18059"
width="28.875259"
height="28.300053"
x="17.679815"
y="21.376339"
ry="3.1061034" /><path
id="path22238"
style="font-size:15.4401px;line-height:1;font-family:Jost;-inkscape-font-specification:Jost;fill:#fdf1f1;fill-opacity:1;stroke:none;stroke-width:2.89394;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:0.391011;paint-order:stroke fill markers"
d="m 35.800767,30.266741 -7.595488,17.174838 h 2.217254 l 2.075187,-4.906371 h 6.585802 l 2.085334,4.906371 h 2.217254 z m 0,4.510616 2.501389,5.890689 h -5.007849 z" /><path
id="path25310"
style="font-size:15.4401px;line-height:1;font-family:Jost;-inkscape-font-specification:Jost;fill:#fdf1f1;fill-opacity:1;stroke:none;stroke-width:2.89394;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:0.391011;paint-order:stroke fill markers"
d="m 37.111246,24.018043 -0.644373,0.182657 -16.611644,0.451569 0.187731,2.100558 14.876404,-0.547973 c -1.156046,1.581957 -2.832671,3.197615 -5.02307,4.840413 v -2.374543 c 0.425909,-0.365071 0.370018,-0.578461 -0.177584,-0.6393 h -1.922972 v 3.927128 c 0,3.528974 -1.788418,6.267475 -5.378236,8.214494 l 1.547511,1.73524 c 4.076573,-2.555463 6.052971,-6.147518 5.931281,-10.771692 l 1.552585,1.456184 c 2.555464,-2.068709 4.750322,-4.288977 6.575656,-6.66191 0.486758,0.06084 0.634101,-0.02554 0.451567,-0.268912 z" /></g></svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bsm7qny5mvlo3"
path="res://.godot/imported/LocaleManager.svg-99f36ef341f5e7ee54b895bbac31c4da.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/rokojori_action_library/Icons/LocaleManager.svg"
dest_files=["res://.godot/imported/LocaleManager.svg-99f36ef341f5e7ee54b895bbac31c4da.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

88
Icons/LocalizedString.svg Normal file
View File

@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="16"
viewBox="0 0 16 16"
width="16"
version="1.1"
id="svg4"
sodipodi:docname="LocalizedString.svg"
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs8"><linearGradient
inkscape:collect="never"
id="linearGradient3074"><stop
style="stop-color:#e26708;stop-opacity:1;"
offset="0"
id="stop3070" /><stop
style="stop-color:#bb3c00;stop-opacity:1;"
offset="1"
id="stop3072" /></linearGradient><radialGradient
xlink:href="#linearGradient45008"
id="radialGradient3076"
cx="30.688875"
cy="30.069115"
fx="30.688875"
fy="30.069115"
r="14.05412"
gradientUnits="userSpaceOnUse" /><linearGradient
xlink:href="#linearGradient45008"
id="linearGradient45010"
x1="-31.87768"
y1="22.065159"
x2="-31.87768"
y2="48.78738"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(101.16951,-6.5921995)" /><linearGradient
id="linearGradient45008"><stop
style="stop-color:#e14500;stop-opacity:1;"
offset="0"
id="stop45004" /><stop
style="stop-color:#e17900;stop-opacity:1;"
offset="0.59811592"
id="stop45012" /><stop
style="stop-color:#e19c00;stop-opacity:1;"
offset="1"
id="stop45006" /></linearGradient><linearGradient
xlink:href="#linearGradient45008"
id="linearGradient46715"
x1="31.917692"
y1="47.524929"
x2="31.917692"
y2="22.632998"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(1.7923447e-6)" /></defs><sodipodi:namedview
id="namedview6"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#505050"
showgrid="false"
inkscape:zoom="22.627418"
inkscape:cx="9.7669118"
inkscape:cy="9.4796497"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g5662" /><g
id="g2210"
transform="matrix(0.54328517,0,0,0.54328517,-9.4489315,-11.300948)"><g
id="g5662"
transform="matrix(1.0859597,0,0,1.0859597,-2.7801068,-3.6771574)"><g
id="g26109"
style="stroke:#000000;stroke-opacity:1"><path
id="path22238"
style="font-size:15.4401px;line-height:1;font-family:Jost;-inkscape-font-specification:Jost;fill:#fdf1f1;fill-opacity:1;stroke:#000000;stroke-width:2.66487;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
d="m 35.526985,31.257051 -6.994263,15.815355 h 2.041746 l 1.910924,-4.518005 h 6.0645 l 1.920268,4.518005 h 2.041746 z m 0,4.153576 2.30339,5.424408 h -4.61145 z" /><path
id="path25310"
style="font-size:15.4401px;line-height:1;font-family:Jost;-inkscape-font-specification:Jost;fill:#fdf1f1;fill-opacity:1;stroke:#000000;stroke-width:2.66487;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
d="m 36.733732,25.502972 -0.593367,0.168199 -15.296741,0.415825 0.172871,1.934287 13.698855,-0.504598 c -1.064539,1.456736 -2.60845,2.944506 -4.625466,4.457268 v -2.186585 c 0.392195,-0.336174 0.340729,-0.532673 -0.163528,-0.588696 h -1.770758 v 3.616274 c 0,3.249636 -1.646855,5.77137 -4.952519,7.564271 l 1.425017,1.597887 c 3.75389,-2.353184 5.573845,-5.660908 5.461788,-9.919053 l 1.429689,1.340919 c 2.353185,-1.90496 4.374308,-3.949481 6.055156,-6.134584 0.448229,0.05603 0.583909,-0.02352 0.415823,-0.247626 z" /></g></g></g></svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://lcmu0013ne2h"
path="res://.godot/imported/LocalizedString.svg-3a59d02d2bc7086c51a04f8a6bdbf103.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/rokojori_action_library/Icons/LocalizedString.svg"
dest_files=["res://.godot/imported/LocalizedString.svg-3a59d02d2bc7086c51a04f8a6bdbf103.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

91
Icons/UI.svg Normal file
View File

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="16"
viewBox="0 0 16 16"
width="16"
version="1.1"
id="svg4"
sodipodi:docname="UI.svg"
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs8"><linearGradient
inkscape:collect="never"
id="linearGradient3074"><stop
style="stop-color:#e26708;stop-opacity:1;"
offset="0"
id="stop3070" /><stop
style="stop-color:#bb3c00;stop-opacity:1;"
offset="1"
id="stop3072" /></linearGradient><radialGradient
xlink:href="#linearGradient45008"
id="radialGradient3076"
cx="30.688875"
cy="30.069115"
fx="30.688875"
fy="30.069115"
r="14.05412"
gradientUnits="userSpaceOnUse" /><linearGradient
xlink:href="#linearGradient45008"
id="linearGradient45010"
x1="-31.87768"
y1="22.065159"
x2="-31.87768"
y2="48.78738"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(101.16951,-6.5921995)" /><linearGradient
id="linearGradient45008"><stop
style="stop-color:#e14500;stop-opacity:1;"
offset="0"
id="stop45004" /><stop
style="stop-color:#e17900;stop-opacity:1;"
offset="0.59811592"
id="stop45012" /><stop
style="stop-color:#e19c00;stop-opacity:1;"
offset="1"
id="stop45006" /></linearGradient><linearGradient
xlink:href="#linearGradient45008"
id="linearGradient46715"
x1="31.917692"
y1="47.524929"
x2="31.917692"
y2="22.632998"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(1.7923447e-6)" /></defs><sodipodi:namedview
id="namedview6"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#505050"
showgrid="false"
inkscape:zoom="11.313709"
inkscape:cx="-3.9332813"
inkscape:cy="8.9714168"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g2210" /><g
id="g2210"
transform="matrix(0.54328517,0,0,0.54328517,-9.4489315,-11.300948)"><rect
style="fill:#7eff8b;fill-opacity:1;stroke:none;stroke-width:1.91428;stroke-linecap:round;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="rect18059"
width="28.875259"
height="28.300053"
x="17.679815"
y="21.376339"
ry="3.1061034" /><path
d="m 23.117844,28.045513 v 9.646092 q 0,1.354558 0.430996,2.360214 0.430996,0.985133 1.210892,1.662412 0.800421,0.656755 1.847124,0.964609 1.046704,0.328377 2.27812,0.328377 1.190369,0 2.237072,-0.328377 1.067227,-0.307854 1.847124,-0.964609 0.800421,-0.677279 1.231416,-1.662412 0.451519,-1.005656 0.451519,-2.360214 v -9.646092 h -3.468488 v 9.399809 q 0,0.73885 -0.266807,1.292987 -0.246283,0.533613 -0.759373,0.841467 -0.492566,0.307854 -1.25194,0.307854 -0.80042,0 -1.31351,-0.307854 -0.492566,-0.307854 -0.759373,-0.841467 -0.266807,-0.554137 -0.266807,-1.292987 v -9.399809 z"
id="path52091"
style="font-weight:bold;font-size:20.5236px;line-height:1;font-family:Jost;-inkscape-font-specification:'Jost Bold';stroke-width:1.42896;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.391011;paint-order:stroke fill markers" /><path
d="m 37.60751,28.045513 v 14.36652 h 3.509536 v -14.36652 z"
id="path52093"
style="font-weight:bold;font-size:20.5236px;line-height:1;font-family:Jost;-inkscape-font-specification:'Jost Bold';stroke-width:1.42896;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.391011;paint-order:stroke fill markers" /></g></svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

37
Icons/UI.svg.import Normal file
View File

@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ckkgs7jyu6mln"
path="res://.godot/imported/UI.svg-2c1dbd29acf8bed567f460a1a3f0addd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/rokojori_action_library/Icons/UI.svg"
dest_files=["res://.godot/imported/UI.svg-2c1dbd29acf8bed567f460a1a3f0addd.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

97
Icons/UIBorderImage.svg Normal file
View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="16"
viewBox="0 0 16 16"
width="16"
version="1.1"
id="svg4"
sodipodi:docname="UIBorderImage.svg"
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs8"><linearGradient
inkscape:collect="never"
id="linearGradient3074"><stop
style="stop-color:#e26708;stop-opacity:1;"
offset="0"
id="stop3070" /><stop
style="stop-color:#bb3c00;stop-opacity:1;"
offset="1"
id="stop3072" /></linearGradient><radialGradient
xlink:href="#linearGradient45008"
id="radialGradient3076"
cx="30.688875"
cy="30.069115"
fx="30.688875"
fy="30.069115"
r="14.05412"
gradientUnits="userSpaceOnUse" /><linearGradient
xlink:href="#linearGradient45008"
id="linearGradient45010"
x1="-31.87768"
y1="22.065159"
x2="-31.87768"
y2="48.78738"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(101.16951,-6.5921995)" /><linearGradient
id="linearGradient45008"><stop
style="stop-color:#e14500;stop-opacity:1;"
offset="0"
id="stop45004" /><stop
style="stop-color:#e17900;stop-opacity:1;"
offset="0.59811592"
id="stop45012" /><stop
style="stop-color:#e19c00;stop-opacity:1;"
offset="1"
id="stop45006" /></linearGradient><linearGradient
xlink:href="#linearGradient45008"
id="linearGradient46715"
x1="31.917692"
y1="47.524929"
x2="31.917692"
y2="22.632998"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(1.7923447e-6)" /></defs><sodipodi:namedview
id="namedview6"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#505050"
showgrid="false"
inkscape:zoom="32.000001"
inkscape:cx="4.9062498"
inkscape:cy="6.4843747"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g2210" /><g
id="g2210"
transform="matrix(0.54328517,0,0,0.54328517,-9.4489315,-11.300948)"><rect
style="fill:#0f4253;fill-opacity:1;stroke:#7eff8b;stroke-width:1.84065396;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect59067"
width="23.640898"
height="24.273623"
x="20.498316"
y="23.504595"
ry="3.3351934" /><path
style="fill:#0f534c;fill-opacity:1;stroke:#afc6b2;stroke-width:1.84065;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
d="M 27.256968,21.894023 V 49.27375"
id="path71007" /><path
style="fill:#0f534c;fill-opacity:1;stroke:#afc6b2;stroke-width:1.84065;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
d="M 36.977921,21.894023 V 49.27375"
id="path71387" /><path
style="fill:#0f534c;fill-opacity:1;stroke:#afc6b2;stroke-width:1.84065;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
d="M 45.807308,30.72341 H 18.427581"
id="path71393" /><path
style="fill:#0f534c;fill-opacity:1;stroke:#afc6b2;stroke-width:1.84065;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
d="M 45.807308,40.444363 H 18.427581"
id="path71395" /></g></svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dog4illbbf485"
path="res://.godot/imported/UIBorderImage.svg-f6615c79aa5e9b955ba62ad71b18f6b3.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/rokojori_action_library/Icons/UIBorderImage.svg"
dest_files=["res://.godot/imported/UIBorderImage.svg-f6615c79aa5e9b955ba62ad71b18f6b3.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

126
Icons/UIImage.svg Normal file
View File

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="16"
viewBox="0 0 16 16"
width="16"
version="1.1"
id="svg4"
sodipodi:docname="UIImage.svg"
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs8"><linearGradient
inkscape:collect="never"
id="linearGradient79042"><stop
style="stop-color:#23c185;stop-opacity:1;"
offset="0"
id="stop79038" /><stop
style="stop-color:#4fd881;stop-opacity:1;"
offset="1"
id="stop79040" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient78910"><stop
style="stop-color:#1a8f81;stop-opacity:1;"
offset="0"
id="stop78906" /><stop
style="stop-color:#0e4943;stop-opacity:1;"
offset="1"
id="stop78908" /></linearGradient><linearGradient
inkscape:collect="never"
id="linearGradient3074"><stop
style="stop-color:#e26708;stop-opacity:1;"
offset="0"
id="stop3070" /><stop
style="stop-color:#bb3c00;stop-opacity:1;"
offset="1"
id="stop3072" /></linearGradient><radialGradient
xlink:href="#linearGradient45008"
id="radialGradient3076"
cx="30.688875"
cy="30.069115"
fx="30.688875"
fy="30.069115"
r="14.05412"
gradientUnits="userSpaceOnUse" /><linearGradient
xlink:href="#linearGradient45008"
id="linearGradient45010"
x1="-31.87768"
y1="22.065159"
x2="-31.87768"
y2="48.78738"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(101.16951,-6.5921995)" /><linearGradient
id="linearGradient45008"><stop
style="stop-color:#e14500;stop-opacity:1;"
offset="0"
id="stop45004" /><stop
style="stop-color:#e17900;stop-opacity:1;"
offset="0.59811592"
id="stop45012" /><stop
style="stop-color:#e19c00;stop-opacity:1;"
offset="1"
id="stop45006" /></linearGradient><linearGradient
xlink:href="#linearGradient45008"
id="linearGradient46715"
x1="31.917692"
y1="47.524929"
x2="31.917692"
y2="22.632998"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(1.7923447e-6)" /><linearGradient
inkscape:collect="never"
xlink:href="#linearGradient78910"
id="linearGradient78912"
x1="32.750168"
y1="46.742851"
x2="32.405045"
y2="23.907238"
gradientUnits="userSpaceOnUse" /><linearGradient
inkscape:collect="never"
xlink:href="#linearGradient79042"
id="linearGradient79044"
x1="31.911888"
y1="30.104225"
x2="31.816128"
y2="45.519703"
gradientUnits="userSpaceOnUse" /></defs><sodipodi:namedview
id="namedview6"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#505050"
showgrid="false"
inkscape:zoom="32.000001"
inkscape:cx="1.2656249"
inkscape:cy="8.9843746"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g2210" /><g
id="g2210"
transform="matrix(0.54328517,0,0,0.54328517,-9.4489315,-11.300948)"><rect
style="fill:url(#linearGradient78912);fill-opacity:1;stroke:#7eff8b;stroke-width:1.84065396;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
id="rect58768"
width="23.640898"
height="24.273623"
x="20.498316"
y="23.504595" /><path
style="fill:url(#linearGradient79044);fill-opacity:1;stroke:none;stroke-width:1.84065;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
d="m 20.890098,40.446237 2.196347,1.138847 3.375867,-2.969136 3.335193,0.732116 2.898856,-2.875732 1.80446,-0.153198 1.874659,-4.07829 2.378777,3.929434 2.321957,1.297536 2.5629,-0.190691 1.00407,-0.57281 -0.162694,11.510485 -24.647892,-0.325386 z"
id="path58939"
sodipodi:nodetypes="cccccccccccccc" /><rect
style="fill:none;fill-opacity:1;stroke:#7eff8b;stroke-width:1.84065396;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
id="rect59067"
width="23.640898"
height="24.273623"
x="20.498316"
y="23.504595" /></g></svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

37
Icons/UIImage.svg.import Normal file
View File

@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://rmumn1ofnjcn"
path="res://.godot/imported/UIImage.svg-6f379e8066b7c9ce860269da60e5f378.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/rokojori_action_library/Icons/UIImage.svg"
dest_files=["res://.godot/imported/UIImage.svg-6f379e8066b7c9ce860269da60e5f378.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

306
Icons/UIInputIcon.svg Normal file
View File

@ -0,0 +1,306 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="16"
viewBox="0 0 16 16"
width="16"
version="1.1"
id="svg4"
sodipodi:docname="UIInputIcon.svg"
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs8">
<linearGradient
inkscape:collect="never"
id="linearGradient4306">
<stop
style="stop-color:#1d52db;stop-opacity:1;"
offset="0"
id="stop4302" />
<stop
style="stop-color:#1941a1;stop-opacity:1;"
offset="1"
id="stop4304" />
</linearGradient>
<linearGradient
inkscape:collect="never"
id="linearGradient4235">
<stop
style="stop-color:#cbe6ef;stop-opacity:1;"
offset="0"
id="stop4229" />
<stop
style="stop-color:#5a87eb;stop-opacity:1;"
offset="0.19370517"
id="stop4231" />
<stop
style="stop-color:#1b47d2;stop-opacity:1;"
offset="1"
id="stop4233" />
</linearGradient>
<linearGradient
inkscape:collect="never"
id="linearGradient4225">
<stop
style="stop-color:#507de7;stop-opacity:1;"
offset="0"
id="stop4221" />
<stop
style="stop-color:#507de7;stop-opacity:0;"
offset="1"
id="stop4223" />
</linearGradient>
<linearGradient
inkscape:collect="never"
id="linearGradient10929">
<stop
style="stop-color:#1d52db;stop-opacity:1;"
offset="0"
id="stop10925" />
<stop
style="stop-color:#152ebe;stop-opacity:1;"
offset="1"
id="stop10927" />
</linearGradient>
<linearGradient
inkscape:collect="never"
id="linearGradient10150">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop10146" />
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="1"
id="stop10148" />
</linearGradient>
<linearGradient
inkscape:collect="never"
id="linearGradient2791">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop2787" />
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0.14208783"
id="stop2795" />
<stop
style="stop-color:#d1d1d1;stop-opacity:1;"
offset="1"
id="stop2789" />
</linearGradient>
<linearGradient
inkscape:collect="never"
id="linearGradient2770">
<stop
style="stop-color:#cbe6ef;stop-opacity:1;"
offset="0"
id="stop2766" />
<stop
style="stop-color:#5a87eb;stop-opacity:1;"
offset="0.17897609"
id="stop2774" />
<stop
style="stop-color:#1b47d2;stop-opacity:1;"
offset="1"
id="stop2768" />
</linearGradient>
<linearGradient
inkscape:collect="never"
id="linearGradient2638">
<stop
style="stop-color:#5d7dc1;stop-opacity:1;"
offset="0"
id="stop2634" />
<stop
style="stop-color:#5769b2;stop-opacity:1;"
offset="1"
id="stop2636" />
</linearGradient>
<linearGradient
inkscape:collect="never"
xlink:href="#linearGradient2638"
id="linearGradient2640"
x1="5.5241203"
y1="10.765742"
x2="13.133284"
y2="9.9986429"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="never"
xlink:href="#linearGradient2770"
id="radialGradient2772"
cx="6.0584679"
cy="3.4481783"
fx="6.0584679"
fy="3.4481783"
r="6.1221313"
gradientTransform="matrix(5.0826908,0,0,3.6467239,-66.856408,-12.223992)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="never"
xlink:href="#linearGradient2791"
id="radialGradient2793"
cx="8.2773142"
cy="-0.40066716"
fx="8.2773142"
fy="-0.40066716"
r="3.5763378"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.3511087,0.88894441,-1.2043804,1.1301171,-44.627958,-4.5249969)" />
<linearGradient
inkscape:collect="never"
xlink:href="#linearGradient10150"
id="linearGradient10152"
x1="9.9135351"
y1="9.4398756"
x2="13.804861"
y2="14.243992"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0751754,0,0,1.2252487,-40.687824,-2.829307)" />
<linearGradient
inkscape:collect="never"
xlink:href="#linearGradient10929"
id="linearGradient10931"
x1="9.6400452"
y1="10.368964"
x2="13.999562"
y2="9.1402229"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="never"
xlink:href="#linearGradient10929"
id="linearGradient21854"
gradientUnits="userSpaceOnUse"
x1="9.6400452"
y1="10.368964"
x2="13.999562"
y2="9.1402229" />
<radialGradient
xlink:href="#linearGradient2770"
id="radialGradient4227"
cx="-9.8261538"
cy="18.616741"
fx="-9.8261538"
fy="18.616741"
r="5.1002684"
gradientTransform="matrix(5.431432,0,0,5.8931817,42.567142,-93.472425)"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="never"
xlink:href="#linearGradient4306"
id="linearGradient4308"
x1="-8.7532034"
y1="19.344957"
x2="-5.8460503"
y2="26.179316"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="namedview6"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#505050"
showgrid="false"
inkscape:zoom="16"
inkscape:cx="-2.3125"
inkscape:cy="6.03125"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g23847" />
<g
id="g560"
transform="translate(0.08802232,0.240022)">
<g
id="g2600"
transform="translate(-0.10534391,-0.05878716)">
<g
id="g10886"
transform="matrix(0.94595208,0,0,0.94595208,0.43331955,0.43182955)">
<g
id="g23847"
transform="matrix(0.87503353,0,0,0.87503353,36.077721,2.1854082)">
<g
id="g32301"
transform="matrix(1.1197583,0,0,1.1197583,3.8403849,-0.76965192)">
<path
style="fill:none;fill-opacity:1;stroke:#7eff8b;stroke-width:1.07756;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
d="m -38.937833,8.1543478 0.757598,-5.6509766 c 0,0 1.116113,-3.8636664 6.162985,-3.7310475 5.640619,0.148221 6.199636,3.9665048 6.199636,3.9665048 l 0.65429,5.3762764"
id="path10154"
sodipodi:nodetypes="ccscc" />
<ellipse
style="fill:#7eff8b;fill-opacity:1;stroke-width:16.9499;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill"
id="ellipse1592"
cx="-32.067799"
cy="8.848732"
rx="8.048171"
ry="5.7743936" />
<g
id="g1937"
style="fill:#27662e;fill-opacity:1"
transform="matrix(1.1524743,0,0,1.519301,-41.307553,-5.7056967)">
<path
id="ellipse1590"
style="fill:#27662e;fill-opacity:1;stroke-width:10.8761;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill"
d="m 8.0173214,5.9128109 a 5.9294205,3.2270737 0 0 0 -0.670585,0.022181 h -4.75739 L 2.0590368,9.0714601 h 0.035924 a 5.9294205,3.2270737 0 0 0 -0.00684,0.069502 5.9294205,3.2270737 0 0 0 5.9292031,3.2266729 5.9294205,3.2270737 0 0 0 5.9189381,-3.1290742 l 0.0633,0.00148 -0.578208,-3.3050473 H 8.6964598 A 5.9294205,3.2270737 0 0 0 8.0173214,5.9128109 Z" />
</g>
<ellipse
style="fill:#298d33;fill-opacity:1;stroke-width:13.2325;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill"
id="path878"
cx="-32.067799"
cy="3.5686307"
rx="6.2830691"
ry="4.5079699" />
<ellipse
style="fill:#499152;fill-opacity:1;stroke-width:13.015;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill"
id="ellipse2589"
cx="-32.050579"
cy="3.2546873"
rx="6.17976"
ry="4.4338484" />
<path
id="rect2581"
style="fill:#beffc5;fill-opacity:1;stroke-width:5.72241;stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill"
d="m -34.514441,0.43557433 -1.025185,0.81105657 2.45453,1.938897 -2.45453,1.938897 1.025185,0.8088101 2.45453,-1.9388973 2.45256,1.9388972 1.025184,-0.8088098 -2.45453,-1.9388969 2.45453,-1.9388973 -1.025184,-0.81105657 -2.45256,1.93889697 z" />
<path
style="fill:none;fill-opacity:1;stroke:#4f9f3d;stroke-width:0.107756;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
d="m -35.539626,1.246631 1.025185,-0.81105657 2.45453,1.93889697 2.45256,-1.93889707 1.025184,0.81105657"
id="path2912" />
<path
style="fill:#adbcd9;fill-opacity:1;stroke:#3d9f3f;stroke-width:0.107756;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
d="m -35.539626,5.124425 2.45453,-1.9388971"
id="path7742" />
<path
style="fill:#adbcd9;fill-opacity:1;stroke:#3d9f3f;stroke-width:0.107756;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
d="m -31.036697,3.1855282 2.45453,1.938897"
id="path7744" />
<path
style="fill:#adbcd9;fill-opacity:1;stroke:#defbe5;stroke-width:0.107756;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
d="m -35.539626,1.246631 2.45453,1.9388969"
id="path7746" />
<path
style="fill:#8daad4;fill-opacity:1;stroke:#defbe5;stroke-width:0.107756;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
d="m -28.582167,1.2466309 -2.45453,1.9388973"
id="path10079" />
<path
style="fill:none;fill-opacity:1;stroke:#defbe5;stroke-width:0.107756;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
d="m -28.582167,5.1244252 -1.025184,0.8088097 -2.45256,-1.9388972 -2.45453,1.9388974 -1.025185,-0.8088101"
id="path10081" />
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c8t6wo7phh6hv"
path="res://.godot/imported/UIInputIcon.svg-a74c1ff64f04f884d6c9c1865a8a9a48.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/rokojori_action_library/Icons/UIInputIcon.svg"
dest_files=["res://.godot/imported/UIInputIcon.svg-a74c1ff64f04f884d6c9c1865a8a9a48.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

81
Icons/UIRegion.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.5 KiB

37
Icons/UIRegion.svg.import Normal file
View File

@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://35m7k7knlg6j"
path="res://.godot/imported/UIRegion.svg-742ebe6956a1a25b816d45d4e44b7631.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/rokojori_action_library/Icons/UIRegion.svg"
dest_files=["res://.godot/imported/UIRegion.svg-742ebe6956a1a25b816d45d4e44b7631.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

87
Icons/UIText.svg Normal file
View File

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
height="16"
viewBox="0 0 16 16"
width="16"
version="1.1"
id="svg4"
sodipodi:docname="UIText.svg"
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs8"><linearGradient
inkscape:collect="never"
id="linearGradient3074"><stop
style="stop-color:#e26708;stop-opacity:1;"
offset="0"
id="stop3070" /><stop
style="stop-color:#bb3c00;stop-opacity:1;"
offset="1"
id="stop3072" /></linearGradient><radialGradient
xlink:href="#linearGradient45008"
id="radialGradient3076"
cx="30.688875"
cy="30.069115"
fx="30.688875"
fy="30.069115"
r="14.05412"
gradientUnits="userSpaceOnUse" /><linearGradient
xlink:href="#linearGradient45008"
id="linearGradient45010"
x1="-31.87768"
y1="22.065159"
x2="-31.87768"
y2="48.78738"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(101.16951,-6.5921995)" /><linearGradient
id="linearGradient45008"><stop
style="stop-color:#e14500;stop-opacity:1;"
offset="0"
id="stop45004" /><stop
style="stop-color:#e17900;stop-opacity:1;"
offset="0.59811592"
id="stop45012" /><stop
style="stop-color:#e19c00;stop-opacity:1;"
offset="1"
id="stop45006" /></linearGradient><linearGradient
xlink:href="#linearGradient45008"
id="linearGradient46715"
x1="31.917692"
y1="47.524929"
x2="31.917692"
y2="22.632998"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(1.7923447e-6)" /></defs><sodipodi:namedview
id="namedview6"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#505050"
showgrid="false"
inkscape:zoom="22.627418"
inkscape:cx="14.142135"
inkscape:cy="7.977048"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g2210" /><g
id="g2210"
transform="matrix(0.54328517,0,0,0.54328517,-9.4489315,-11.300948)"><g
aria-label="txt"
id="text52860"
style="font-weight:bold;font-size:23.1418px;line-height:1;font-family:Jost;-inkscape-font-specification:'Jost Bold';fill:#7eff8b;stroke-width:1.35958;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1.35958, 2.71916;paint-order:stroke fill markers"><path
d="m 18.718338,32.055097 v 2.892725 h 7.127674 v -2.892725 z m 1.874486,-3.702688 v 14.347916 h 3.378702 V 28.352409 Z"
id="path53225" /><path
d="m 34.153937,32.055097 -1.967053,2.800158 -1.943911,-2.800158 h -4.049815 l 4.142382,5.183763 -4.3738,5.461465 h 4.049815 l 2.175329,-3.077859 2.198471,3.077859 h 3.887822 l -4.304375,-5.461465 4.072957,-5.183763 z"
id="path53227" /><path
d="m 38.388878,32.055097 v 2.892725 h 7.127674 v -2.892725 z m 1.874485,-3.702688 v 14.347916 h 3.378703 V 28.352409 Z"
id="path53229" /></g></g></svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

37
Icons/UIText.svg.import Normal file
View File

@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d3vdg0k44d7gs"
path="res://.godot/imported/UIText.svg-3361615dbe2bc7106602a6f3edf78cb7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/rokojori_action_library/Icons/UIText.svg"
dest_files=["res://.godot/imported/UIText.svg-3361615dbe2bc7106602a6f3edf78cb7.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@ -25,7 +25,7 @@ namespace Rokojori
/** <summary for="field actions">Actions to execute</summary>*/
[Export]
public Action[] actions;
public Action[] actions = new Action[ 0 ];
/** <summary for="field triggerDirectChildren">Whether to execute Action child nodes</summary>*/
[Export]

View File

@ -193,7 +193,7 @@ namespace Rokojori
{
/** <summary for="field actions">Actions to execute</summary>*/
[Export]
public Action[] actions;
public Action[] actions = new Action[ 0 ];
[Export]
public bool triggerDirectChildren = true;

View File

@ -8,10 +8,10 @@ namespace Rokojori
public partial class SetNodeState : Action
{
[Export]
public Node[] enable;
public Node[] enable = new Node[ 0 ];
[Export]
public Node[] disable;
public Node[] disable = new Node[ 0 ];
protected override void _OnTrigger()

View File

@ -9,7 +9,7 @@ namespace Rokojori
{
/** <summary for="field actions">Actions to execute</summary>*/
[Export]
public Action[] actions;
public Action[] actions = new Action[ 0 ];
/** <summary for="field triggerDirectChildren">Whether to execute Action child nodes</summary>*/
[Export]

View File

@ -9,7 +9,7 @@ namespace Rokojori
{
/** <summary for="field actions">Actions to execute</summary>*/
[Export]
public Action[] actions;
public Action[] actions = new Action[ 0 ];
/** <summary for="field triggerDirectChildren">Whether to execute Action child nodes</summary>*/
[Export]

View File

@ -9,7 +9,7 @@ namespace Rokojori
{
/** <summary for="field actions">Actions to execute</summary>*/
[Export]
public Action[] actions;
public Action[] actions = new Action[ 0 ];
/** <summary for="field triggerDirectChildren">Whether to execute Action child nodes</summary>*/
[Export]

View File

@ -5,10 +5,12 @@ using Godot;
namespace Rokojori
{
[Tool]
[GlobalClass]
public partial class TimeLooper : Node
[GlobalClass, Icon("res://addons/rokojori_action_library/Icons/OnEvent.svg") ]
public partial class OnTick : Node
{
[Export]
public Action action;
bool _active = false;
@ -31,9 +33,6 @@ namespace Rokojori
[Export]
public TimeLine timeLine;
[Export]
public Action action;
int _eventID = -1;
void SetActive( bool active )

View File

@ -17,7 +17,7 @@ namespace Rokojori
public Mode mode = Mode.Wait_For_All_To_Finish;
[Export]
public Action[] actions;
public Action[] actions = new Action[ 0 ];
[Export]
public bool triggerDirectChildren = true;

View File

@ -14,24 +14,6 @@ namespace Rokojori
[GlobalClass, Icon("res://addons/rokojori_action_library/Icons/SequenceAction.svg")]
public partial class SequenceAction : Action
{
/*
int dispatchStart();
void dispatchCancelled( int id );
void dispatchEnd( int id );
int getLastSequenceActionID();
GDVIRTUAL1( cancelAction, int );
/* signal onSequenceDone * /
*/
int _dispatchCounter = 0;
public int GetLastSequenceActionID()

View File

@ -19,7 +19,7 @@ namespace Rokojori
public TimeLine timeLine;
[Export]
public Action[] actions;
public Action[] actions = new Action[ 0 ];
/** <summary for="field triggerDirectChildren">Whether to execute Action child nodes</summary>*/
[Export]

View File

@ -14,7 +14,7 @@ namespace Rokojori
public FlashEffect flashEffect;
[Export]
public Node3D[] targets;
public Node3D[] targets = new Node3D[ 0 ];
int animationID = -1;
int actionID = -1;

View File

@ -18,7 +18,7 @@ namespace Rokojori
public HighlightEffect highlighter;
[Export]
public Node3D[] targets;
public Node3D[] targets = new Node3D[ 0 ];
protected override void _OnTrigger()
{

View File

@ -15,7 +15,7 @@ namespace Rokojori
public class HighlightAnimation
{
public Node3D[] targets;
public Node3D[] targets = new Node3D[ 0 ];
public int tweenID = -1;
public List<Material> materials = new List<Material>();

View File

@ -14,7 +14,7 @@ namespace Rokojori
public ShakeEffect shakeEffect;
[Export]
public Node3D[] targets;
public Node3D[] targets = new Node3D[ 0 ];
List<TransformData> _targetValues;

View File

@ -11,7 +11,7 @@ namespace Rokojori
public partial class TransformAnimations:Resource
{
[Export]
public TransformCurve[] curves;
public TransformCurve[] curves = new TransformCurve[ 0 ];
[Export]
public TimeLine timeline;

53
Runtime/App/App.cs Normal file
View File

@ -0,0 +1,53 @@
using Godot;
using System.Collections.Generic;
namespace Rokojori
{
public enum AppPlatformOS
{
Windows,
MacOS,
iOS,
Android,
MetaHorizonOS,
Switch,
Switch2,
PS4,
PS5,
XBoxOne,
XBoxSeriesXS
}
public enum AppLauncher
{
Native,
Steam,
Epic,
Web
}
[Tool]
[GlobalClass,Icon("res://addons/rokojori_action_library/Icons/SensorManager.svg")]
public partial class App: Node
{
[Export]
public AppPlatformOS os;
[Export]
public AppLauncher launcher;
int _fps = 60;
[Export]
public int fps
{
get => _fps;
set { _fps = value; Engine.MaxFps = _fps; }
}
}
}

View File

@ -7,7 +7,7 @@ namespace Rokojori
{
public class DuoWaveTable
{
float[] _samples;
float[] _samples = new float[ 0 ];
float _lowPitch;
float _highPitch;
int _maxSamples;

View File

@ -7,7 +7,7 @@ namespace Rokojori
{
public class WaveTable:iPhaseGenerator
{
float[] _samples;
float[] _samples = new float[ 0 ];
public float[] samples => _samples;

View File

@ -82,7 +82,7 @@ namespace Rokojori
_nodes.ForEach( n => n.UpdateBuffserSize() );
}
float[] _zeroBuffer;
float[] _zeroBuffer = new float[ 0 ];
public float[] ClearBuffer( float[] buffer )
{

View File

@ -6,7 +6,7 @@ namespace Rokojori
{
public partial class BitView
{
byte[] _data;
byte[] _data = new byte[ 0 ];
int _internalViewOffset = 0;
public int bitOffset => _internalViewOffset;

View File

@ -7,7 +7,7 @@ namespace Rokojori
{
public class ByteView
{
byte[] _data;
byte[] _data = new byte[ 0 ];
int _start;
int _size;

View File

@ -54,7 +54,7 @@ namespace Rokojori
}
}
public bool hasFileExtension( string extension, bool forceDot = true )
public bool HasFileExtension( string extension, bool forceDot = true )
{
if ( fileExtension == null )
{
@ -118,6 +118,31 @@ namespace Rokojori
return rp;
}
public string absoluteParentPath
{
get
{
return RegexUtility.ParentPath( fullPath );
}
}
public FilePath ChangeFileName( string fileName )
{
var parentPath = absoluteParentPath;
if ( ! parentPath.EndsWith( "/" ) )
{
parentPath += "/";
}
return Absolute( parentPath + fileName + fileExtension );
}
public FilePath AddToFileName( string fileNameAddition )
{
return ChangeFileName( fileName + fileNameAddition );
}
public static FilePath Absolute( string path )
{
return FilePath.Create( path, FilePathType.Absolute );

View File

@ -17,10 +17,6 @@ namespace Rokojori
[Export]
public string testClass;
public override void _Ready()
{
ExportFiles();
}
public override void _Process( double delta )
{

View File

@ -6,6 +6,32 @@ namespace Rokojori
{
public class HierarchyName
{
public static string Of( Resource resource, string seperator = " ▸ " )
{
var path = resource.ResourcePath;
path = RegexUtility.Replace( path, "::.*$", "" );
path = RegexUtility.Replace( path, "^res:\\/\\/", "" );
var splitted = RegexUtility.SplitPaths( path );
var sb = new StringBuilder();
for ( int i = 0; i < splitted.Count; i++ )
{
if ( i != 0 )
{
sb.Append( seperator );
}
sb.Append( splitted[ i ] );
}
return sb.ToString();
}
public static string Of( Node node, string seperator = " ▸ " )
{
if ( node == null )

View File

@ -81,9 +81,29 @@ namespace Rokojori
return default(T);
}
public static void ForEachInRoot<T>( this Node node, Action<T> callback ) where T:class
{
if ( node == null )
{
return;
}
var tree = node.IsInsideTree() ? node.GetTree() : null;
if ( tree == null )
{
return;
}
var root = tree.Root;
ForEach<T>( root, callback );
}
public static void ForEachInScene<T>( Action<T> callback ) where T:class
{
var root = Root.Get().GetWindow();
var root = Root.Window();
RJLog.Log( "Iterating:", root );
ForEach<T>( root, callback );
}
@ -210,6 +230,17 @@ namespace Rokojori
RJLog.Error( node, messages );
}
public static void LogInfo( this Resource resource, params object[] messages )
{
RJLog.Log( resource, messages );
}
public static void LogError( this Resource resource, params object[] messages )
{
RJLog.Error( resource, messages );
}
public static Node DeepCopyTo( this Node node, Node parent )
{
return CopyNodeHierarchy( node, parent );
@ -463,6 +494,16 @@ namespace Rokojori
return list;
}
public static T FindInParents<T>( Node child )
{
return (T) (object) NodesWalker.Get().GetInParents( child, c => c is T );
}
public static T FindParentThatIs<T>( this Node child )
{
return FindInParents<T>( child );
}
public static int TypeIndex<T>( Node parent, T child ) where T:Node
{
var counter = 0;

View File

@ -35,9 +35,10 @@ namespace Rokojori
return tree.Root;
}
public static Root Get()
static Root Get()
{
var r = Window();
return _singleton;
}
}

View File

@ -0,0 +1,86 @@
using Godot;
using System;
using System.Collections.Generic;
namespace Rokojori
{
public class SceneFileHTMLScriptJS
{
public static string script =
@"
function main()
{
let elements = document.querySelectorAll( '.closeable' );
for ( let i = 0; i < elements.length; i++ )
{
let element = elements[ i ];
element.addEventListener( 'click',
( ev )=>
{
let target = element.getAttribute( 'data-close-target' );
let targetElement = element;
let parentRegex = /^\.\.\s/;
while ( parentRegex.test( target ) )
{
target = target.replace( parentRegex, '' );
targetElement = targetElement.parentElement;
}
let rootRegex = /^\.\.\.\s/;
if ( rootRegex.test( target ) )
{
target = target.replace( rootRegex, '' );
targetElement = document.documentElement;
}
let closeTarget = element.parentElement.querySelector( target );
console.log( ev, target, closeTarget);
closeTarget.style.display = closeTarget.style.display === 'none' ? 'block' : 'none';
element.setAttribute( 'data-close-state', closeTarget.style.display );
ev.preventDefault();
return false;
},
true
);
}
let references = document.querySelectorAll( 'gd-reference' );
for ( let i = 0; i < references.length; i++ )
{
let reference = references[ i ];
reference.addEventListener( 'click',
( ev )=>
{
let ref = reference.getAttribute( 'reference' );
let selector = `[id=##${ref}##]`;
console.log( 'querying', selector );
let referenced = document.querySelector( selector );
referenced.scrollIntoView( { 'behavior': 'smooth' });
}
);
}
}
window.addEventListener( 'load', () => { main(); });
".Replace( "##", "\"");
}
}

View File

@ -0,0 +1,243 @@
using Godot;
using System;
using System.Collections.Generic;
namespace Rokojori
{
public class SceneFileHTMLExporter
{
public static readonly XMLElementNodeName GD_ExternalResource = XMLElementNodeName.Create( "gd-external-resource" );
public static readonly XMLElementNodeName GD_SubResource = XMLElementNodeName.Create( "gd-sub-resource" );
public static readonly XMLElementNodeName GD_Node = XMLElementNodeName.Create( "gd-node" );
public static readonly XMLElementNodeName GD_Name = XMLElementNodeName.Create( "gd-name" );
public static readonly XMLElementNodeName GD_Type = XMLElementNodeName.Create( "gd-type" );
public static readonly XMLElementNodeName GD_Script = XMLElementNodeName.Create( "gd-script" );
public static readonly XMLElementNodeName GD_Members = XMLElementNodeName.Create( "gd-members" );
public static readonly XMLElementNodeName GD_Member = XMLElementNodeName.Create( "gd-member" );
public static readonly XMLElementNodeName GD_Children = XMLElementNodeName.Create( "gd-children" );
public static readonly XMLElementNodeName GD_Reference = XMLElementNodeName.Create( "gd-reference" );
SceneFileParser _parser;
XMLDocument _htmlDoc;
XMLElementNode body;
XMLElementNode head;
public static void Convert( string inputPath, string outputPath )
{
var text = FilesSync.LoadUTF8( inputPath );
var parser = new SceneFileParser();
parser.Parse( text );
Export( parser, outputPath );
}
public static void Export( SceneFileParser parser, string path )
{
new SceneFileHTMLExporter().ParseAndExport( parser, path );
}
public void ParseAndExport( SceneFileParser parser, string path )
{
_parser = parser;
CreateHTMLDocument();
AddExternalResources();
AddNodes();
var exportPath = path.EndsWith( ".html" ) ? path : ( path + ".html" );
FilesSync.SaveUTF8( exportPath, new XMLSerializer().SerializeHtml( _htmlDoc.documentElement ) );
}
void CreateHTMLDocument()
{
var doc = XMLDocument.HTML();
var html = doc.documentElement;
body = html.querySelector( HTMLElementName.body );
head = html.querySelector( HTMLElementName.head );
head.AddHTMLScript( SceneFileHTMLScriptJS.script );
head.AddHTMLStyle( SceneFileHTMLStyle.style );
_htmlDoc = doc;
}
void AddExternalResources()
{
var extResources = _parser.sceneFile.extResources;
RJLog.Log( "External Resources:", extResources.Count );
for ( int i = 0; i < extResources.Count; i++ )
{
var resource = extResources[ i ];
var attachmentElement = body;
var resourceElement = _htmlDoc.Create( GD_ExternalResource );
resourceElement.SetAttribute( "class", "resource" );
attachmentElement.AppendChild( resourceElement );
var nameElement = resourceElement.AddElement( GD_Name, resource.path.value );
resourceElement.AddElement( GD_Type, resource.id.value + " " + resource.uid.value + " " + resource.type.value );
resourceElement.SetAttribute( "id", resource.id.value );
attachmentElement.AddElement( HTMLElementName.br );
}
var subResources = _parser.sceneFile.subResources;
RJLog.Log( "Sub Resources:", subResources.Count );
for ( int i = 0; i < subResources.Count; i++ )
{
var resource = subResources[ i ];
var attachmentElement = body;
var resourceElement = _htmlDoc.Create( GD_SubResource );
resourceElement.SetAttribute( "class", "resource" );
attachmentElement.AppendChild( resourceElement );
var nameElement = resourceElement.AddElement( GD_Name, resource.id.value + " " + resource.type.value );
var scriptOrShaderMember = resource.GetMember( "script" );
if ( scriptOrShaderMember == null )
{
scriptOrShaderMember = resource.GetMember( "shader" );
}
if ( scriptOrShaderMember != null )
{
var scriptEntry = _parser.sceneFile.extResources.Find( e => e.id.value == scriptOrShaderMember.valueData.reference );
var scriptType = scriptEntry == null ? "Null" : scriptEntry.path.value;
resourceElement.AddElement( GD_Type, scriptType + "@" + scriptOrShaderMember.valueData.reference );
}
resourceElement.SetAttribute( "id", resource.id.value );
attachmentElement.AddElement( HTMLElementName.br );
}
}
void AddNodes()
{
var nodes = _parser.sceneFile.nodes;
RJLog.Log( "Nodes:", nodes.Count );
var elementMap = new Dictionary<string,XMLElementNode>();
for ( int i = 0; i < nodes.Count; i++ )
{
var node = nodes[ i ];
//RJLog.Log( i, node.name.value );
var attachmentElement = body;
var elementPath = node.elementPath;
var parent = node.parent.value;
if ( parent != null && elementMap.ContainsKey( parent ) )
{
attachmentElement = elementMap[ parent ].querySelector( GD_Children );
}
var nodeElement = _htmlDoc.Create( GD_Node );
nodeElement.SetAttribute( "class", "node" );
var nameElement = nodeElement.AddElement( GD_Name, node.name.value );
nameElement.SetAttribute( "class", "closeable" );
nameElement.SetAttribute( "data-close-target", ".. " + GD_Children.selector );
var scriptMember = node.GetMember( "script" );
if ( scriptMember != null )
{
var scriptEntry = _parser.sceneFile.extResources.Find( e => e.id.value == scriptMember.valueData.reference );
var scriptType = scriptEntry == null ? "Null" : scriptEntry.path.value;
nodeElement.AddElement( GD_Type, scriptType + "@" + scriptMember.valueData.reference + "(" + node.type.value + ")" );
}
else
{
nodeElement.AddElement( GD_Type, node.type.value );
}
string scriptValue = null ;
if ( scriptValue != null )
{
nodeElement.AddElement( GD_Script, scriptValue );
}
var membersElement = nodeElement.AddElement( GD_Members, "" );
var memberData = node.data;
memberData.ForEach(
m =>
{
if ( m.member != null )
{
var mem = m.member;
if ( mem.valuesData != null )
{
}
else if ( mem.valueData != null )
{
if ( SceneFileValueType.Variant == mem.valueData.type )
{
membersElement.AddElement( GD_Member, mem.name + ": " + mem.valueData );
}
else
{
var member = membersElement.AddElement( GD_Member, mem.name );
var reference = member.AddElement( GD_Reference, mem.valueData.reference );
reference.SetAttribute( "reference", mem.valueData.reference );
}
}
}
else
{
// membersElement.AddElement( GD_Member, "Type: " + m.type + " {" + m.line + "}");
}
}
);
nodeElement.AddElement( GD_Children );
elementMap[ elementPath ] = nodeElement;
// RJLog.Log( "'" + elementPath + "'", node.name.value );
attachmentElement.AppendChild( nodeElement );
}
}
}
}

View File

@ -0,0 +1,86 @@
using Godot;
using System;
using System.Collections.Generic;
namespace Rokojori
{
public class SceneFileHTMLStyle
{
public static string style =
@"
body
{
overflow-x: hidden;
margin: 2em 0em;
font-family: Helvetica, Arial, sans;
background: hsl(0,0%,10%);
color: hsl(0,0%,80%)
}
.closeable
{
cursor: pointer;
opacity:1;
transition: opacity 300ms ease;
}
.closeable[data-close-state='none']
{
opacity: 0.7;
}
.node
{
display: block;
position: relative;
left: 2em;
}
.resource
{
display: block;
position: relative;
left: 2em;
}
gd-name
{
border-radius: 0.5em;
padding: 1em 1em;
background-color: hsl(0,0%,20%);
margin: 0.5em 1em;
display: inline-block;
font-weight: bold;
}
gd-external-resource gd-name
{
background-color: hsl(0,50%,20%);
}
gd-sub-resource gd-name
{
background-color: hsl(120,50%,20%);
}
gd-type
{
display: inline-block;
opacity: 0.5;
}
gd-reference
{
cursor:pointer;
text-decoration:underline;
}
" ;
}
}

View File

@ -10,6 +10,6 @@ namespace Rokojori
public readonly SFHStringAttribute path = new SFHStringAttribute( "path" );
public readonly SFHStringAttribute uid = new SFHStringAttribute( "uid" );
public readonly SFHStringAttribute type = new SFHStringAttribute( "type" );
public readonly SFHStringAttribute id = new SFHStringAttribute( "id" );
}
}

View File

@ -7,12 +7,32 @@ namespace Rokojori
{
protected SceneFileEntry _headerEntry;
protected List<SceneFileHeaderAttributeValue> _attributes = new List<SceneFileHeaderAttributeValue>();
protected List<SceneFileEntry> _data = new List<SceneFileEntry>();
public List<SceneFileEntry> data => _data;
public SceneFileObject()
{
SetAttributes();
}
public SceneFileNamedValue GetMember( string name )
{
var entry = _data.Find( d => d.member != null && d.member.name == name );
return entry == null ? null : entry.member;
}
public void AddData( SceneFileEntry se )
{
if ( SceneFileLinesLexer.SeperatorMatcher.Matches( se.type ) )
{
return;
}
_data.Add( se );
}
public void CreateFromHeaderEntry( SceneFileEntry headerEntry )
{
ReadAttributes( headerEntry.header );

View File

@ -7,7 +7,7 @@ namespace Rokojori
{
public static readonly string headerType = "sub_resource";
public readonly SFHStringAttribute id = new SFHStringAttribute( "uid" );
public readonly SFHStringAttribute id = new SFHStringAttribute( "id" );
public readonly SFHStringAttribute type = new SFHStringAttribute( "type" );
}
}

View File

@ -4,11 +4,11 @@ using System.Text.RegularExpressions;
namespace Rokojori
{
public class GodotTextSceneLexer:Lexer
public class SceneFileLinesLexer:Lexer
{
public static List<LexerEvent> Lex( string source )
{
var lexer = new GodotTextSceneLexer();
var lexer = new SceneFileLinesLexer();
var events = lexer.LexToList( source );
if ( lexer.hasError )
@ -50,15 +50,15 @@ namespace Rokojori
"SubMemberEnd", "\\}\\]"
);
public GodotTextSceneLexer()
public SceneFileLinesLexer()
{
AddAllMatchers(
GodotTextSceneLexer.HeaderMatcher,
GodotTextSceneLexer.SeperatorMatcher,
GodotTextSceneLexer.SubMemberStartMatcher,
GodotTextSceneLexer.SubMemberEndMatcher,
GodotTextSceneLexer.SubMemberMatcher,
GodotTextSceneLexer.MemberMatcher,
SceneFileLinesLexer.HeaderMatcher,
SceneFileLinesLexer.SeperatorMatcher,
SceneFileLinesLexer.SubMemberStartMatcher,
SceneFileLinesLexer.SubMemberEndMatcher,
SceneFileLinesLexer.SubMemberMatcher,
SceneFileLinesLexer.MemberMatcher,
LexerMatcherLibrary.AnySymbolMatcher
);
}

View File

@ -0,0 +1,127 @@
using Godot;
using System.Collections.Generic;
namespace Rokojori
{
public class SceneFileMemberParser
{
public bool hasError = true;
public string errorMessage;
string line;
public void Parse( SceneFileEntry entry )
{
line = entry.line;
var lexer = new SceneFileLexer();
var tokens = lexer.LexToList( line );
if ( lexer.hasError || tokens.Count == 0)
{
errorMessage = "Lexing failed";
return;
}
tokens.RemoveAll( t => t.isDone );
lexer.GrabMatches( tokens, line );
if ( ! tokens[ 0 ].Is( LexerMatcherLibrary.CwordMatcher ) )
{
hasError = true;
errorMessage = RJLog.Stringify( "Expected name as first token, got:", tokens[ 0 ].type, ">>",tokens[ 0 ].match );
return;
}
var assignmentOpResult = LexerEvent.Find( tokens, 1,
t =>
{
if ( t.Is( LexerMatcherLibrary.OperatorMatcher, "=" ) )
{
return LexerEvent.FindResultType.Found;
}
if ( t.Is( LexerMatcherLibrary.WhiteSpaceMatcher ) )
{
return LexerEvent.FindResultType.KeepSearching;
}
return LexerEvent.FindResultType.Error;
}
);
if ( LexerEvent.FindResultType.Found != assignmentOpResult.type )
{
hasError = true;
errorMessage = RJLog.Stringify( "Expected assignment operator:", tokens ) ;
return;
}
var namedValue = new SceneFileNamedValue();
entry.member = namedValue;
namedValue.name = tokens[ 0 ].match;
var valueIndexResult = LexerEvent.Find( tokens, assignmentOpResult.index + 1,
( t )=>
{
if ( t.Is( LexerMatcherLibrary.WhiteSpaceMatcher ) )
{
return LexerEvent.FindResultType.KeepSearching;
}
return LexerEvent.FindResultType.Found;
}
);
if ( LexerEvent.FindResultType.Found != valueIndexResult.type )
{
hasError = true;
errorMessage = RJLog.Stringify( "Expected value after assignment at ", assignmentOpResult.index, "in", tokens ) ;
return;
}
namedValue.value = LexerEvent.GetMatchFromRange( tokens, valueIndexResult.index );
var isList = tokens[ valueIndexResult.index ].Is( LexerMatcherLibrary.BracketMatcher, "[" );
if ( ! isList )
{
namedValue.valueData = new SceneFileValue();
namedValue.valueData.ParseValue( tokens, valueIndexResult.index, tokens.Count - valueIndexResult.index );
return;
}
if ( isList ){ return; }
var separators = LexerEvent.GetSeparatorsInBrackets( tokens, valueIndexResult.index );
var lastIndex = valueIndexResult.index + 1;
namedValue.valuesData = new List<SceneFileValue>();
for ( int i = 0; i < separators.Count; i++ )
{
var v = new SceneFileValue();
v.ParseValue( tokens, lastIndex, separators[ i ] - lastIndex );
namedValue.valuesData.Add( v );
lastIndex = separators[ i ] + 1;
}
var lastV = new SceneFileValue();
lastV.ParseValue( tokens, lastIndex, ( tokens.Count - 1 ) - lastIndex );
}
}
}

View File

@ -13,7 +13,7 @@ namespace Rokojori
this.source = source;
var lines = RegexUtility.SplitLines( source );
var lexer = new GodotTextSceneLexer();
var lexer = new SceneFileLinesLexer();
var lineIndex = 1;

View File

@ -17,18 +17,30 @@ namespace Rokojori
public static SceneFileEntry Seperator()
{
return Create( GodotTextSceneLexer.SeperatorMatcher.type, "" );
return Create( SceneFileLinesLexer.SeperatorMatcher.type, "" );
}
// Parsed lines
public List<SceneFileEntry> entries = new List<SceneFileEntry>();
// Combined objects of parsed lines
public List<SceneFileObject> objects = new List<SceneFileObject>();
public GDSceneSFO gdScene;
public NodeSFO rootNode;
// Nodes of the scene
public List<NodeSFO> nodes = new List<NodeSFO>();
public Dictionary<string,NodeSFO> nodeMap = new Dictionary<string, NodeSFO>();
// NodePath -> Node
public Dictionary<string,NodeSFO> nodePathMap = new Dictionary<string, NodeSFO>();
// External Resources
public List<ExtResourceSFO> extResources = new List<ExtResourceSFO>();
public List<SubResourceSFO> subResourceSFOs = new List<SubResourceSFO>();
// Built-In Resources
public List<SubResourceSFO> subResources = new List<SubResourceSFO>();
public SceneFile GetSerializableJSONVersion()
{
@ -40,11 +52,14 @@ namespace Rokojori
public void CreateObjects()
{
SceneFileObject lastSFO = null;
entries.ForEach(
( e )=>
{
if ( ! e.hasHeader )
{
lastSFO.AddData( e );
return;
}
@ -55,6 +70,8 @@ namespace Rokojori
return;
}
lastSFO = sfo;
if ( sfo is GDSceneSFO )
{
gdScene = (GDSceneSFO) sfo;
@ -69,7 +86,7 @@ namespace Rokojori
rootNode = node;
}
nodeMap[ node.elementPath ] = node;
nodePathMap[ node.elementPath ] = node;
// RJLog.Log( "'" + node.elementPath + "'", node.name.value );
@ -80,7 +97,7 @@ namespace Rokojori
}
else if ( sfo is SubResourceSFO )
{
subResourceSFOs.Add( (SubResourceSFO) sfo );
subResources.Add( (SubResourceSFO) sfo );
}
objects.Add( sfo );
@ -90,7 +107,7 @@ namespace Rokojori
nodes.ForEach(
( n )=>
{
n.ResolveParent( nodeMap, rootNode );
n.ResolveParent( nodePathMap, rootNode );
}
);
}

View File

@ -22,7 +22,7 @@ namespace Rokojori
public void Parse()
{
if ( type == GodotTextSceneLexer.HeaderMatcher.type )
if ( type == SceneFileLinesLexer.HeaderMatcher.type )
{
var headerParser = new SceneFileHeaderParser();
headerParser.Parse( this );
@ -32,6 +32,16 @@ namespace Rokojori
hasError = true;
}
}
else if ( type == SceneFileLinesLexer.MemberMatcher.type )
{
var memberParser = new SceneFileMemberParser();
memberParser.Parse( this );
if ( memberParser.hasError )
{
hasError = true;
}
}
}
}

View File

@ -3,11 +3,16 @@ using System.Collections.Generic;
namespace Rokojori
{
public class SceneFileNamedValue
{
public string name;
public string value;
public SceneFileValue valueData;
public List<SceneFileValue> valuesData;
public static SceneFileNamedValue Create( string name, string value )
{
var nv = new SceneFileNamedValue();

View File

@ -13,7 +13,11 @@ namespace Rokojori
public string path = "";
[Export]
public bool load = false;
public bool load
{
get => false;
set { if ( value ) LoadScene(); }
}
[Export]
public bool exportJSON = false;
@ -21,20 +25,8 @@ namespace Rokojori
[Export]
public bool exportHTML = false;
public override void _Process( double delta )
{
LoadScene();
}
void LoadScene()
{
if ( ! load )
{
return;
}
load = false;
var text = FilesSync.LoadUTF8( path );
@ -49,171 +41,11 @@ namespace Rokojori
if ( exportHTML )
{
var nodes = parser.sceneFile.nodes;
RJLog.Log( "Nodes:", nodes.Count );
var doc = new XMLDocument();
var html = doc.documentElement;
var body = html.querySelector( HTMLElementName.body );
var head = html.querySelector( HTMLElementName.head );
head.AddHTMLScript(
@"
function main()
{
let elements = document.querySelectorAll( '.closeable' );
for ( let i = 0; i < elements.length; i++ )
{
let element = elements[ i ];
element.addEventListener( 'click',
( ev )=>
{
let target = element.getAttribute( 'data-close-target' );
let targetElement = element;
let parentRegex = /^\.\.\s/;
while ( parentRegex.test( target ) )
{
target = target.replace( parentRegex, '' );
targetElement = targetElement.parentElement;
var exporter = new SceneFileHTMLExporter();
exporter.ParseAndExport( parser, path );
}
let rootRegex = /^\.\.\.\s/;
if ( rootRegex.test( target ) )
{
target = target.replace( rootRegex, '' );
targetElement = document.documentElement;
}
let closeTarget = element.parentElement.querySelector( target );
console.log( ev, target, closeTarget);
closeTarget.style.display = closeTarget.style.display === 'none' ? 'block' : 'none';
element.setAttribute( 'data-close-state', closeTarget.style.display );
ev.preventDefault();
return false;
},
true
);
}
}
window.addEventListener( 'load', () => { main(); });
"
);
head.AddHTMLStyle(
@"
body
{
overflow-x: hidden;
margin: 2em 0em;
font-family: Helvetica, Arial, sans;
background: hsl(0,0%,10%);
color: hsl(0,0%,80%)
}
.closeable
{
cursor: pointer;
opacity:1;
transition: opacity 300ms ease;
}
.closeable[data-close-state='none']
{
opacity: 0.7;
}
.node
{
display: block;
position: relative;
left: 2em;
}
gd-name
{
border-radius: 0.5em;
padding: 1em 1em;
background-color: hsl(0,0%,20%);
margin: 0.5em 1em;
display: inline-block;
font-weight: bold;
}
gd-type
{
display: inline-block;
opacity: 0.5;
}
" );
var elementMap = new Dictionary<string,XMLElementNode>();
var GD_Node = XMLElementNodeName.Create( "gd-node" );
var GD_Name = XMLElementNodeName.Create( "gd-name" );
var GD_Type = XMLElementNodeName.Create( "gd-type" );
var GD_Children = XMLElementNodeName.Create( "gd-children" );
for ( int i = 0; i < nodes.Count; i++ )
{
var node = nodes[ i ];
//RJLog.Log( i, node.name.value );
var attachmentElement = body;
var elementPath = node.elementPath;
var parent = node.parent.value;
if ( parent != null && elementMap.ContainsKey( parent ) )
{
attachmentElement = elementMap[ parent ].querySelector( GD_Children );
}
var nodeElement = doc.Create( GD_Node );
nodeElement.SetAttribute( "class", "node" );
var nameElement = nodeElement.AddElement( GD_Name, node.name.value );
nameElement.SetAttribute( "class", "closeable" );
nameElement.SetAttribute( "data-close-target", ".. " + GD_Children.selector );
nodeElement.AddElement( GD_Type, node.type.value );
nodeElement.AddElement( GD_Children );
elementMap[ elementPath ] = nodeElement;
// RJLog.Log( "'" + elementPath + "'", node.name.value );
attachmentElement.AppendChild( nodeElement );
}
FilesSync.SaveUTF8( path + ".html", new XMLSerializer().SerializeHtml( doc.documentElement ) );
}
}
}
}

View File

@ -0,0 +1,91 @@
using Godot;
using System.Collections.Generic;
namespace Rokojori
{
public enum SceneFileValueType
{
Variant,
ExtResource,
SubResource,
NodePath
}
public class SceneFileValue
{
public SceneFileValueType type;
public Variant variant;
public string reference;
public static readonly List<SceneFileValueType> referenceTypes = new List<SceneFileValueType>
{
SceneFileValueType.ExtResource,
SceneFileValueType.SubResource,
SceneFileValueType.NodePath
};
public static readonly List<string> referenceStringTypes = Lists.Map(
referenceTypes, ( s, i ) => s + ""
);
public void ParseValue( List<LexerEvent> tokens, int start, int length )
{
var startToken = tokens[ start ];
var startTokenInfo = LexerEvent.GetMatchFromRange( tokens, start, length );
// RJLog.Log( "ParseValue", startToken.type, startToken.IsAny( LexerMatcherLibrary.CwordMatcher ), startTokenInfo );
if ( startToken.IsAny( LexerMatcherLibrary.CFunctionMatcher ) )
{
var referenceStringIndex = referenceStringTypes.IndexOf( startToken.match );
if ( referenceStringIndex != -1 )
{
type = referenceTypes[ referenceStringIndex ];
reference = JSONStringConverter.Read( tokens[ start + 2 ].match );
// RJLog.Log( "Reference type:", type, reference );
return;
}
// RJLog.Log( "Not a reference type:", startToken );
}
type = SceneFileValueType.Variant;
variant = VariantFromTokens( tokens, start, length );
//RJLog.Log( "Variant type:", variant );
}
public static Variant VariantFromTokens( List<LexerEvent> tokens, int start, int length )
{
var startToken = tokens[ start ];
if ( length == 1 )
{
if ( startToken.Is( LexerMatcherLibrary.NumberMatcher ) )
{
return Variant.From( RegexUtility.ParseDouble( startToken.match ) );
}
if ( startToken.Is( LexerMatcherLibrary.DoubleQuotedStringMatcher ) )
{
return Variant.From( JSONStringConverter.Read( startToken.match ) );
}
if ( startToken.IsAny( LexerMatcherLibrary.CwordMatcher, "true", "false" ) )
{
return Variant.From( startToken.match == "true" ) ;
}
}
return Variant.From( "" );
}
}
}

View File

@ -18,16 +18,28 @@ namespace Rokojori
var rootWindow = n == null ? Root.Window() : n.Owner;
// RJLog.Log( "ROOT", rootWindow );
if ( rootWindow == null )
{
if ( Engine.IsEditorHint() )
{
rootWindow = EditorInterface.Singleton.GetEditedSceneRoot();
}
else
{
return null;
}
}
_singleton = Nodes.GetAnyChild<N>( rootWindow );
// RJLog.Log( "_singleton", _singleton );
if ( _singleton == null )
{
if ( Engine.IsEditorHint() )
{
rootWindow = EditorInterface.Singleton.GetEditedSceneRoot();
_singleton = Nodes.GetAnyChild<N>( rootWindow );
}
}
return _singleton;
}

View File

@ -29,12 +29,12 @@ namespace Rokojori
public HighlightEffect highlightEffect;
[Export]
public Node3D[] highlightTargets;
public Node3D[] highlightTargets = new Node3D[ 0 ];
[ExportGroup("Read Only")]
[Export]
public Pointer[] pointers;
public Pointer[] pointers = new Pointer[ 0 ];
List<Pointer> _pointers = new List<Pointer>();

View File

@ -10,7 +10,7 @@ namespace Rokojori
public partial class LODArrangement:Resource
{
[Export]
public LODLevel[] levels;
public LODLevel[] levels = new LODLevel[ 0 ];
public LODLevel GetLevel( LODNode node )
{

View File

@ -10,7 +10,7 @@ namespace Rokojori
public partial class LODLevel:Resource
{
[Export]
public LODLevelVisibilityRule[] visibilityRules;
public LODLevelVisibilityRule[] visibilityRules = new LODLevelVisibilityRule[ 0 ];
[Export]
public Mesh mesh;

View File

@ -22,7 +22,7 @@ namespace Rokojori
[Export]
public bool arrayCulling = true;
[Export]
public float[] arrayTresholds;
public float[] arrayTresholds = new float[ 0 ];
[ExportGroup("Curve Mode")]
[Export]
@ -36,7 +36,7 @@ namespace Rokojori
[ExportGroup("LODs")]
[Export]
public Node3D[] lods;
public Node3D[] lods = new Node3D[ 0 ];
[Export]
public float updateDistance = 10;

View File

@ -7,31 +7,80 @@ namespace Rokojori
{
public enum LocaleCode
{
EN,
JA,
DE,
ES,
FR,
PT,
IT,
KO,
ZH,
RU,
PL,
TU,
AR,
NL,
SV,
HI,
TH,
ID,
VI,
EL,
CS,
FI,
UK,
RO,
HU
af, // Afrikaans (South Africa, Namibia)
am, // Amharic (Ethiopia)
ar, // Arabic (Saudi Arabia, Egypt, UAE, Iraq, Morocco, Algeria, Jordan, and many more)
az, // Azerbaijani (Azerbaijan)
be, // Belarusian (Belarus)
bg, // Bulgarian (Bulgaria)
bn, // Bengali (Bangladesh, India)
bs, // Bosnian (Bosnia and Herzegovina)
ca, // Catalan (Spain - Catalonia, Andorra)
cs, // Czech (Czech Republic)
cy, // Welsh (Wales - UK)
da, // Danish (Denmark, Greenland)
de, // German (Germany, Austria, Switzerland, Liechtenstein, Belgium)
el, // Greek (Greece, Cyprus)
en, // English (UK, US, Australia, Canada, India, South Africa, and many more)
es, // Spanish (Spain, Mexico, Argentina, Colombia, and many more)
et, // Estonian (Estonia)
eu, // Basque (Spain - Basque Country, France - Basque areas)
fa, // Persian (Iran, Afghanistan, Tajikistan)
fi, // Finnish (Finland)
fil, // Filipino (Philippines)
fr, // French (France, Canada, Belgium, Switzerland, many African countries)
ga, // Irish (Ireland)
gl, // Galician (Spain - Galicia)
gu, // Gujarati (India, some in Pakistan)
he, // Hebrew (Israel)
hi, // Hindi (India, Fiji)
hr, // Croatian (Croatia, Bosnia and Herzegovina)
hu, // Hungarian (Hungary, some parts of Romania and Slovakia)
hy, // Armenian (Armenia)
id, // Indonesian (Indonesia)
@is, // Icelandic (Iceland)
it, // Italian (Italy, Switzerland, San Marino, Vatican City)
ja, // Japanese (Japan)
ka, // Georgian (Georgia)
kk, // Kazakh (Kazakhstan)
km, // Khmer (Cambodia)
kn, // Kannada (India - Karnataka)
ko, // Korean (South Korea, North Korea)
ky, // Kyrgyz (Kyrgyzstan)
lo, // Lao (Laos)
lt, // Lithuanian (Lithuania)
lv, // Latvian (Latvia)
mk, // Macedonian (North Macedonia)
ml, // Malayalam (India - Kerala)
mn, // Mongolian (Mongolia)
mr, // Marathi (India - Maharashtra)
ms, // Malay (Malaysia, Brunei, Singapore, Indonesia)
mt, // Maltese (Malta)
my, // Burmese (Myanmar)
ne, // Nepali (Nepal, India - Sikkim and West Bengal)
nl, // Dutch (Netherlands, Belgium, Suriname, Caribbean Netherlands)
no, // Norwegian (Norway)
pa, // Punjabi (India, Pakistan)
pl, // Polish (Poland)
ps, // Pashto (Afghanistan, Pakistan)
pt, // Portuguese (Portugal, Brazil, Mozambique, Angola, and others)
ro, // Romanian (Romania, Moldova)
ru, // Russian (Russia, Belarus, Kazakhstan, Kyrgyzstan, and others)
si, // Sinhala (Sri Lanka)
sk, // Slovak (Slovakia)
sl, // Slovenian (Slovenia)
sq, // Albanian (Albania, Kosovo, North Macedonia)
sr, // Serbian (Serbia, Bosnia and Herzegovina, Montenegro)
sv, // Swedish (Sweden, Finland - Åland)
sw, // Swahili (Tanzania, Kenya, Uganda, DRC, and others)
ta, // Tamil (India - Tamil Nadu, Sri Lanka, Singapore, Malaysia)
te, // Telugu (India - Andhra Pradesh, Telangana)
th, // Thai (Thailand)
tr, // Turkish (Turkey, Cyprus)
uk, // Ukrainian (Ukraine)
ur, // Urdu (Pakistan, India)
uz, // Uzbek (Uzbekistan)
vi, // Vietnamese (Vietnam)
zh, // Chinese (China, Taiwan, Singapore, Malaysia)
}
}

View File

@ -0,0 +1,42 @@
using Godot;
using System.Collections;
using System.Collections.Generic;
using Godot.Collections;
namespace Rokojori
{
[Tool]
[GlobalClass]
public partial class LocaleLabel3D:Label3D, iLocalizable
{
LocalizedString _locale;
[Export]
public LocalizedString locale
{
get
{
return _locale;
}
set
{
_locale = value;
UpdateLocalization();
}
}
[Export]
public bool refreshText
{
get => false;
set { if ( value ) UpdateLocalization(); }
}
public void UpdateLocalization()
{
Text = locale.currentValue;
}
}
}

View File

@ -6,10 +6,54 @@ using Godot.Collections;
namespace Rokojori
{
[Tool]
[GlobalClass]
[GlobalClass,Icon("res://addons/rokojori_action_library/Icons/LocaleManager.svg")]
public partial class LocaleManager:Node
{
LocaleCode _languageLocale = LocaleCode.en;
static LocaleCode _editorLanguageLocale = LocaleCode.en;
[Export]
public LocaleCode languageLocale;
public LocaleCode languageLocale
{
get => _languageLocale;
set { _languageLocale = value; _editorLanguageLocale = value; UpdateLocalization(); }
}
public override void _Ready()
{
RJLog.Log( "_Ready >>", _languageLocale );
UpdateLocalization();
}
public void UpdateLocalization()
{
RJLog.Log( "Updating Language >>>", _languageLocale );
this.ForEachInRoot<iLocalizable>( i => { i.UpdateLocalization(); } );
}
public static LocaleCode currentLanguage
{
get
{
if ( Engine.IsEditorHint() )
{
return _editorLanguageLocale;
}
var lm = Unique<LocaleManager>.Get();
var lc = LocaleCode.en;
if ( lm != null )
{
lc = lm.languageLocale;
}
RJLog.Log( "currentLanguage", lc );
return lc;
}
}
}
}

View File

@ -6,7 +6,7 @@ using Godot.Collections;
namespace Rokojori
{
[Tool]
[GlobalClass]
[GlobalClass,Icon("res://addons/rokojori_action_library/Icons/LocalizedString.svg")]
public partial class LocaleText:LocalizedString
{
[Export(PropertyHint.MultilineText)]
@ -14,20 +14,28 @@ namespace Rokojori
[ExportGroup("Translations")]
[Export]
public LocaleTextEntry[] entries;
public LocaleTextEntry[] entries = new LocaleTextEntry[ 0 ];
[ExportGroup("Context")]
[Export(PropertyHint.MultilineText)]
public string context;
public static LocaleText Create( string en )
{
var lt = new LocaleText();
lt.en = en;
return lt;
}
public override string GetLocalizedString( LocaleCode localeCode )
{
if ( localeCode == LocaleCode.EN )
if ( localeCode == LocaleCode.en || entries == null )
{
return en;
}
var entry = Arrays.Find( entries, e => e.code == localeCode );
if ( entry != null )

View File

@ -6,8 +6,8 @@ using Godot.Collections;
namespace Rokojori
{
[Tool]
[GlobalClass]
public partial class LocaleTextEntry:LocalizedString
[GlobalClass,Icon("res://addons/rokojori_action_library/Icons/LocalizedString.svg")]
public partial class LocaleTextEntry:Resource
{
[Export]
public LocaleCode code;

View File

@ -6,7 +6,7 @@ using Godot.Collections;
namespace Rokojori
{
[Tool]
[GlobalClass]
[GlobalClass,Icon("res://addons/rokojori_action_library/Icons/LocalizedString.svg")]
public partial class LocalizedString:Resource
{
public virtual string GetLocalizedString( LocaleCode localeCode )
@ -14,5 +14,20 @@ namespace Rokojori
return "";
}
public string currentValue
{
get
{
return GetLocalizedString( LocaleManager.currentLanguage );
}
}
public static string Get( LocalizedString ls, string alternative = "")
{
return ls == null ? alternative : ls.currentValue;
}
}
}

View File

@ -0,0 +1,12 @@
using Godot;
using System.Collections;
using System.Collections.Generic;
using Godot.Collections;
namespace Rokojori
{
public interface iLocalizable
{
public void UpdateLocalization();
}
}

View File

@ -10,6 +10,33 @@ namespace Rokojori
public class RJLog
{
public static string GetInfo( object obj, params object[] values )
{
if ( obj == null )
{
return "<null>";
}
var sb = new StringBuilder();
sb.Append( obj.GetType().Name );
sb.Append( "{ " );
for ( int i = 0; i < values.Length; i++ )
{
if ( i != 0 )
{
sb.Append( ", " );
}
Stringify( values[ i ], sb );
}
sb.Append( " }" );
return sb.ToString();
}
public static string Stringify( object obj )
{
var sb = new StringBuilder();
@ -41,11 +68,38 @@ namespace Rokojori
return;
}
if ( obj.GetType().IsArray )
{
var array = (Array)obj;
output.Append( "" );
var first = true;
foreach ( var it in array )
{
if ( first )
{
first = false;
}
else
{
output.Append( ", " );
}
Stringify( it, output );
}
output.Append( "" );
return;
}
if ( obj is IList && obj.GetType().IsGenericType )
{
var list = (IList)obj;
output.Append( "[" );
output.Append( "" );
var first = true;
@ -64,7 +118,7 @@ namespace Rokojori
Stringify( it, output );
}
output.Append( "]" );
output.Append( "" );
return;
}
@ -72,17 +126,22 @@ namespace Rokojori
output.Append( obj.ToString() );
}
public static string Stringify( params object[] objects )
{
return GetLogString( objects );
}
static void LogMessage( string message, int frameIndex = 3 )
{
var trace = GetTrace( frameIndex );
GD.PrintRich("\n[b]" + message + "[/b]" );
GD.PrintRich("\n[b]" + message );
GD.PrintRich( trace );
}
static void LogMessageWithFullTrace( string message )
{
var trace = GetFullTrace();
GD.PrintRich("\n[b]" + message + "[/b]" );
GD.PrintRich("\n[b]" + message );
GD.PrintRich( trace );
}
@ -131,7 +190,7 @@ namespace Rokojori
var trace = className + "." + frame.GetMethod().Name + "() ln."+ frame.GetFileLineNumber();
return "[color=gray] " + trace + "[/color]" ;
return "[color=#888888] " + trace + "[/color]" ;
}
public static void LogWithFullTrace( params object[] objects)
@ -146,7 +205,12 @@ namespace Rokojori
public static void Log( Node node, params object[] objects)
{
LogMessage( "[color=#55aaff][ " + HierarchyName.Of( node ) + " ][/color] " + GetLogString( objects ), 4 );
LogMessage( "[color=#55aaff]" + HierarchyName.Of( node ) + "[/color]\n" + GetLogString( objects ), 4 );
}
public static void Log( Resource resource, params object[] objects)
{
LogMessage( "[color=#55ffaa]" + HierarchyName.Of( resource ) + "[/color]\n" + GetLogString( objects ), 4 );
}
public static void Error( params object[] objects)
@ -156,9 +220,15 @@ namespace Rokojori
public static void Error( Node node, params object[] objects)
{
LogErrorMessage( "[ " + HierarchyName.Of( node ) + " ] " + GetLogString( objects ), 4 );
LogErrorMessage( "" + HierarchyName.Of( node ) + "\n" + GetLogString( objects ), 4 );
}
public static void Error( Resource resource, params object[] objects)
{
LogErrorMessage( "" + HierarchyName.Of( resource ) + "\n" + GetLogString( objects ), 4 );
}
public static string GetLogString( object[] objects )
{

View File

@ -6,7 +6,7 @@ namespace Rokojori
{
class FloatSineTable
{
public float[] sineValues;
public float[] sineValues = new float[ 0 ];
public FloatSineTable( int numBits )
{
@ -22,7 +22,7 @@ namespace Rokojori
class BitReverseTable
{
public int[] reversedBits;
public int[] reversedBits = new int[ 0 ];
public BitReverseTable( int numBits )
{

View File

@ -6,7 +6,7 @@ namespace Rokojori
{
public abstract class NetClassDefinition
{
protected NetMember[] _members;
protected NetMember[] _members = new NetMember[ 0 ];
public void SetMembers( params NetMember[] members )
{

View File

@ -8,7 +8,7 @@ namespace Rokojori
public partial class AddNetworkNodes:Action
{
[Export]
public Node[] nodes;
public Node[] nodes = new Node[ 0 ];
protected override void _OnTrigger()
{

View File

@ -187,7 +187,7 @@ namespace Rokojori
[ExportGroup("LOD Levels")]
[Export]
public GrassPatchLODLevel[] lodLevels;
public GrassPatchLODLevel[] lodLevels = new GrassPatchLODLevel[ 0 ];
[Export]
public int currentLODLevel = -1;

View File

@ -39,11 +39,11 @@ namespace Rokojori
public Node sourceViewportsContainer = null;
[Export]
public SubViewport[] sourceViewports;
public SubViewport[] sourceViewports = new SubViewport[ 0 ];
[ExportGroup("Source/Textures")]
[Export]
public Texture2D[] sourceTextures;
public Texture2D[] sourceTextures = new Texture2D[ 0 ];
[ExportGroup("Output")]
[Export]
@ -60,10 +60,10 @@ namespace Rokojori
[ExportGroup("Output/Custom")]
[Export]
public Vector2[] customPositions;
public Vector2[] customPositions = new Vector2[ 0 ];
[Export]
public Vector2[] customSizes;
public Vector2[] customSizes = new Vector2[ 0 ];
[ExportGroup("Viewport")]
[Export]

View File

@ -32,9 +32,9 @@ namespace Rokojori
var output = ".png";
if (
fp.hasFileExtension( ".jpg" ) ||
fp.hasFileExtension( ".exr" ) ||
fp.hasFileExtension( ".webp" )
fp.HasFileExtension( ".jpg" ) ||
fp.HasFileExtension( ".exr" ) ||
fp.HasFileExtension( ".webp" )
)
{
output = fp.fileExtension;

View File

@ -9,7 +9,7 @@ namespace Rokojori
{
int width;
int height;
float[] data;
float[] data = new float[ 0 ];
public static HeightMapData Create( int w, int h, float[] data = null)
{

View File

@ -33,13 +33,13 @@ namespace Rokojori
[ExportGroup("Layout")]
[Export]
public Vector3[] positions;
public Vector3[] positions = new Vector3[ 0 ];
[Export]
public Vector4[] rotations;
public Vector4[] rotations = new Vector4[ 0 ];
[Export]
public Vector3[] scales;
public Vector3[] scales = new Vector3[ 0 ];
[ExportGroup("Outputs")]
[Export]

View File

@ -12,7 +12,7 @@ namespace Rokojori
public partial class MeshCombiner:Node3D
{
[Export]
public Node3D[] sourceNodes;
public Node3D[] sourceNodes = new Node3D[ 0 ];
[ExportGroup( "Mesh")]
[Export]
@ -51,7 +51,7 @@ namespace Rokojori
[Export]
public MeshInstance3D outputMesh;
[Export]
public Material[] outputMaterials;
public Material[] outputMaterials = new Material[ 0 ];
[Export]
public bool combine = false;

View File

@ -17,8 +17,8 @@ namespace Rokojori
public class SplinesDeformModifier
{
public SplineCurve[] sourceSplines;
public SplineCurve[] targetSplines;
public SplineCurve[] sourceSplines = new SplineCurve[ 0 ];
public SplineCurve[] targetSplines = new SplineCurve[ 0 ];
public SplinesDeformerSettings settings;

View File

@ -54,7 +54,7 @@ namespace Rokojori
public bool createNavMesh = false;
[Export]
public Node3D[] countries;
public Node3D[] countries = new Node3D[ 0 ];
[Export]
public float navMeshRadius = 100;

View File

@ -36,7 +36,7 @@ namespace Rokojori
[ExportGroup( "Input")]
[Export]
public Spline[] sourceSplines;
public Spline[] sourceSplines = new Spline[ 0 ];
[Export]
public MeshInstance3D sourceMesh;
@ -46,7 +46,7 @@ namespace Rokojori
[ExportGroup( "Output")]
[Export]
public Spline[] deformerSplines;
public Spline[] deformerSplines = new Spline[ 0 ];
[Export]
public MeshInstance3D outputMesh;
@ -72,7 +72,7 @@ namespace Rokojori
DeformerMappingData[] deformerMappings;
DeformerMappingData[] deformerMappings = new DeformerMappingData[ 0 ];
MeshGeometry meshGeometry;
DeformerMappingData CreateSourceMapping( Spline s, Vector3 worldPosition, Vector3 worldNormal )

View File

@ -68,7 +68,7 @@ namespace Rokojori
public bool scaleRadiusByPathTransforms = true;
[Export]
public TubeShape[] shapes;
public TubeShape[] shapes = new TubeShape[ 0 ];
[Export]
public bool update;

View File

@ -21,7 +21,7 @@ namespace Rokojori
[Export]
public bool removeDiscarded = false;
[Export]
public Node3D[] streamSources;
public Node3D[] streamSources = new Node3D[ 0 ];
[Export]
public float streamCullDistance = 100;
@ -34,7 +34,7 @@ namespace Rokojori
[ExportGroup("Clean Up")]
[Export]
public Node3D[] containersToClearNodes;
public Node3D[] containersToClearNodes = new Node3D[ 0 ];
[Export]
public bool clearContainers = false;
[Export]

View File

@ -1,6 +1,6 @@
using Godot;
using System.Collections.Generic;
namespace Rokojori
{
@ -9,8 +9,14 @@ namespace Rokojori
public partial class CombineSensor : Sensor
{
[Export]
public Sensor[] sensors;
public Sensor[] sensors = new Sensor[ 0 ];
[ExportGroup("UI")]
[Export]
public bool showOnlyVisibleIcons = false;
[Export]
public int numVisible = 0;
protected override void UpdateValue()
{
@ -23,5 +29,33 @@ namespace Rokojori
SetFloatValue( value );
}
public override string ToString()
{
return RJLog.GetInfo( this, sensors );
}
[Export]
public InputIcon[] inputIcons = new InputIcon[ 0 ];
[Export]
public bool useInputIconsFromSensors = true;
public override List<InputIcon> GetInputIcons()
{
var list = Lists.From( inputIcons );
if ( useInputIconsFromSensors )
{
var visible = showOnlyVisibleIcons ? numVisible : sensors.Length;
for ( int i = 0; i < visible; i++ )
{
list.AddRange( sensors[ i ].GetInputIcons() );
}
}
return list;
}
}
}

View File

@ -0,0 +1,358 @@
[gd_resource type="Resource" script_class="InputIconsLibrary" load_steps=74 format=3 uid="uid://dq52vhnqr5m6"]
[ext_resource type="Script" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Definitions/DefaultInputIconDefinition.cs" id="1_64knt"]
[ext_resource type="Script" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/InputIconsLibrary.cs" id="1_urlfx"]
[ext_resource type="Script" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Types/MouseInputIcon.cs" id="1_vsgl5"]
[ext_resource type="SystemFont" uid="uid://bakiyyiix68n1" path="res://Research/Fonts/Jost-Font.tres" id="1_xrnc5"]
[ext_resource type="Script" path="res://addons/rokojori_action_library/Runtime/UI/Styling/UINumber.cs" id="2_4sutq"]
[ext_resource type="Script" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Definitions/CombinedInputIconsTexture.cs" id="2_g15ft"]
[ext_resource type="Texture2D" uid="uid://eqplg4ydtkpf" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/Mouse-Left Button.svg" id="2_q818g"]
[ext_resource type="Texture2D" uid="uid://chcls1g13v7it" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/Mouse-Wheel Up & Down.svg" id="3_pm2rw"]
[ext_resource type="Texture2D" uid="uid://dcb0bhq84rs77" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/Mouse-Middle Button.svg" id="3_u1h0x"]
[ext_resource type="Texture2D" uid="uid://d3q5n6ocgar6w" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/Mouse-Right Button.svg" id="4_5b8av"]
[ext_resource type="Script" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Definitions/CombinedIconsDefinition.cs" id="4_6ycsi"]
[ext_resource type="Script" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Types/GamePadButtonIcon.cs" id="4_y5jfh"]
[ext_resource type="Script" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Definitions/MouseInputIconDefinition.cs" id="5_a3fep"]
[ext_resource type="Texture2D" uid="uid://eki8sp0x0gmf" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/GamePad-DPad-Background.svg" id="5_amgur"]
[ext_resource type="Script" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Definitions/DirectionalInputIconDefinition.cs" id="5_sn8hr"]
[ext_resource type="Texture2D" uid="uid://ct3k2tds4d26" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/GamePad-DPad-Left + Right.svg" id="5_ycc70"]
[ext_resource type="Texture2D" uid="uid://clg28ph2pawvq" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/GamePad-DPad-Up.svg" id="6_0hfff"]
[ext_resource type="Texture2D" uid="uid://bip5s0jfo5ddm" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/GamePad-DPad-Up + Down.svg" id="6_6nxcf"]
[ext_resource type="Texture2D" uid="uid://b48h8j7flhwyb" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/Mouse-Wheel Down.svg" id="6_qyc6e"]
[ext_resource type="Texture2D" uid="uid://de5ewtb72pmdu" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/Mouse-Wheel Up.svg" id="7_n1ega"]
[ext_resource type="Script" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Types/GamePadAxisIcon.cs" id="7_y0txw"]
[ext_resource type="Texture2D" uid="uid://6fkkrsbdjdf" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/GamePad-Axis-Left + Right.svg" id="9_eeamd"]
[ext_resource type="Texture2D" uid="uid://bih02uuga3j2u" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/GamePad-Axis-Up + Down.svg" id="10_3i85w"]
[ext_resource type="Texture2D" uid="uid://bmtwa1p6j1tu8" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/Keyboard-EnterKey.svg" id="10_q44jo"]
[ext_resource type="Texture2D" uid="uid://b73u16wm1h5gr" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/Keyboard.svg" id="12_mf3bj"]
[ext_resource type="Texture2D" uid="uid://dg52t67wh6h54" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/Keyboard-Indicator.svg" id="13_ijjqw"]
[ext_resource type="Texture2D" uid="uid://dxwnbh3a3fy8w" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/GamePad-Left-Shoulder-Button.svg" id="13_omll7"]
[ext_resource type="Texture2D" uid="uid://1pfyxi7wifn8" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/Keyboard-SpaceKey.svg" id="14_6vom6"]
[ext_resource type="Texture2D" uid="uid://bgi8cbw57gka0" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/GamePad-MainButton.svg" id="14_n68qo"]
[ext_resource type="Texture2D" uid="uid://cb8ldiej8234h" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/GamePad-Axis-Background.svg" id="18_amimm"]
[ext_resource type="Texture2D" uid="uid://ddfvjmi7sva6f" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/GamePad-Axis-Pressed.svg" id="19_7x4g0"]
[ext_resource type="Script" path="res://addons/rokojori_action_library/Runtime/Localization/LocaleText.cs" id="20_55eoq"]
[ext_resource type="Texture2D" uid="uid://bajhvs0qnuj5q" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/GamePad-Axis-Up.svg" id="20_r1y6a"]
[ext_resource type="Texture2D" uid="uid://b2123dcu46oy0" path="res://addons/rokojori_action_library/Runtime/Sensors/InputIcons/Graphics/GamePad-Right-Shoulder-Button.svg" id="21_hcyk3"]
[sub_resource type="Resource" id="Resource_m53ti"]
script = ExtResource("1_vsgl5")
button = 4
[sub_resource type="Resource" id="Resource_a3cu1"]
script = ExtResource("1_vsgl5")
button = 5
[sub_resource type="Resource" id="Resource_xpfqu"]
script = ExtResource("2_g15ft")
icons = [SubResource("Resource_m53ti"), SubResource("Resource_a3cu1")]
texture = ExtResource("3_pm2rw")
widthScale = 1.0
orderMode = 2
isUpperCase = false
fontSizeScale = 0.0
[sub_resource type="Resource" id="Resource_xbpgk"]
script = ExtResource("4_y5jfh")
button = 13
[sub_resource type="Resource" id="Resource_laa4d"]
script = ExtResource("4_y5jfh")
button = 14
[sub_resource type="Resource" id="Resource_28c0y"]
script = ExtResource("2_g15ft")
icons = [SubResource("Resource_xbpgk"), SubResource("Resource_laa4d")]
texture = ExtResource("5_ycc70")
widthScale = 1.0
orderMode = 2
isUpperCase = false
fontSizeScale = 0.0
[sub_resource type="Resource" id="Resource_4mvgb"]
script = ExtResource("4_y5jfh")
button = 11
[sub_resource type="Resource" id="Resource_l8cwl"]
script = ExtResource("4_y5jfh")
button = 12
[sub_resource type="Resource" id="Resource_oje1t"]
script = ExtResource("2_g15ft")
icons = [SubResource("Resource_4mvgb"), SubResource("Resource_l8cwl")]
texture = ExtResource("6_6nxcf")
widthScale = 1.0
orderMode = 2
isUpperCase = false
fontSizeScale = 0.0
[sub_resource type="Resource" id="Resource_8bcch"]
script = ExtResource("7_y0txw")
axis = 0
type = 0
[sub_resource type="Resource" id="Resource_rlnb1"]
script = ExtResource("7_y0txw")
axis = 0
type = 1
[sub_resource type="Resource" id="Resource_fmatu"]
script = ExtResource("20_55eoq")
en = "L"
entries = []
context = ""
[sub_resource type="Resource" id="Resource_tqg5p"]
script = ExtResource("2_g15ft")
icons = [SubResource("Resource_8bcch"), SubResource("Resource_rlnb1")]
texture = ExtResource("9_eeamd")
widthScale = 1.0
orderMode = 2
label = SubResource("Resource_fmatu")
isUpperCase = false
fontSizeScale = 0.8
[sub_resource type="Resource" id="Resource_vi3u1"]
script = ExtResource("7_y0txw")
axis = 1
type = 1
[sub_resource type="Resource" id="Resource_vjbhe"]
script = ExtResource("7_y0txw")
axis = 1
type = 0
[sub_resource type="Resource" id="Resource_q8dch"]
script = ExtResource("20_55eoq")
en = "L"
entries = []
context = ""
[sub_resource type="Resource" id="Resource_3oyc0"]
script = ExtResource("2_g15ft")
icons = [SubResource("Resource_vi3u1"), SubResource("Resource_vjbhe")]
texture = ExtResource("10_3i85w")
widthScale = 1.0
orderMode = 2
label = SubResource("Resource_q8dch")
isUpperCase = true
fontSizeScale = 0.8
[sub_resource type="Resource" id="Resource_wd2xx"]
script = ExtResource("7_y0txw")
axis = 2
type = 0
[sub_resource type="Resource" id="Resource_h3a17"]
script = ExtResource("7_y0txw")
axis = 2
type = 1
[sub_resource type="Resource" id="Resource_07ljj"]
script = ExtResource("20_55eoq")
en = "R"
entries = []
context = ""
[sub_resource type="Resource" id="Resource_c6gt5"]
script = ExtResource("2_g15ft")
icons = [SubResource("Resource_wd2xx"), SubResource("Resource_h3a17")]
texture = ExtResource("9_eeamd")
widthScale = 1.0
orderMode = 2
label = SubResource("Resource_07ljj")
isUpperCase = false
fontSizeScale = 0.8
[sub_resource type="Resource" id="Resource_qmgk3"]
script = ExtResource("7_y0txw")
axis = 3
type = 1
[sub_resource type="Resource" id="Resource_4ro5i"]
script = ExtResource("20_55eoq")
en = "R"
entries = []
context = ""
[sub_resource type="Resource" id="Resource_812y6"]
script = ExtResource("2_g15ft")
icons = [SubResource("Resource_qmgk3"), SubResource("Resource_vjbhe")]
texture = ExtResource("10_3i85w")
widthScale = 1.0
orderMode = 2
label = SubResource("Resource_4ro5i")
isUpperCase = true
fontSizeScale = 0.8
[sub_resource type="Resource" id="Resource_udrbd"]
script = ExtResource("4_6ycsi")
combined = [SubResource("Resource_xpfqu"), SubResource("Resource_28c0y"), SubResource("Resource_oje1t"), SubResource("Resource_tqg5p"), SubResource("Resource_3oyc0"), SubResource("Resource_c6gt5"), SubResource("Resource_812y6")]
[sub_resource type="Resource" id="Resource_s3w6q"]
script = ExtResource("5_sn8hr")
backgroundTexture = ExtResource("5_amgur")
directionUpTexture = ExtResource("6_0hfff")
directionalOffset = 0.0
fontSizeScale = 1.0
isUpperCase = true
[sub_resource type="Resource" id="Resource_40bf3"]
script = ExtResource("2_4sutq")
value = 0.7
unit = "em"
isAnimated = false
animationDuration = 0.0
animationOffset = 0.0
[sub_resource type="Resource" id="Resource_xrtll"]
script = ExtResource("1_64knt")
backgroundTexture = ExtResource("10_q44jo")
widthScale = 1.0
fontSizeScale = 1.0
fontSizeCharacterMultiply = 0.9
fontIsUpperCase = true
hasLabel = false
borderLeft = 0.0
borderRight = 0.0
borderTop = 0.0
borderBottom = 0.0
[sub_resource type="Resource" id="Resource_nkgsq"]
script = ExtResource("1_64knt")
backgroundTexture = ExtResource("12_mf3bj")
widthScale = 1.0
fontSizeScale = 1.0
fontSizeCharacterMultiply = 0.9
fontIsUpperCase = true
hasLabel = true
borderLeft = 40.0
borderRight = 40.0
borderTop = 40.0
borderBottom = 40.0
[sub_resource type="Resource" id="Resource_wrdp7"]
script = ExtResource("1_64knt")
backgroundTexture = ExtResource("12_mf3bj")
widthScale = 2.0
fontSizeScale = 0.7
fontSizeCharacterMultiply = 1.0
fontIsUpperCase = true
hasLabel = true
borderLeft = 40.0
borderRight = 40.0
borderTop = 40.0
borderBottom = 40.0
leftIndicatorTexture = ExtResource("13_ijjqw")
rightIndicatorTexture = ExtResource("13_ijjqw")
[sub_resource type="Resource" id="Resource_mf61p"]
script = ExtResource("1_64knt")
backgroundTexture = ExtResource("14_6vom6")
widthScale = 2.0
fontSizeScale = 1.0
fontSizeCharacterMultiply = 0.9
fontIsUpperCase = true
hasLabel = false
borderLeft = 0.0
borderRight = 0.0
borderTop = 0.0
borderBottom = 0.0
[sub_resource type="Resource" id="Resource_qt31g"]
script = ExtResource("20_55eoq")
en = "L"
entries = []
context = ""
[sub_resource type="Resource" id="Resource_4s1kq"]
script = ExtResource("5_sn8hr")
backgroundTexture = ExtResource("18_amimm")
directionUpTexture = ExtResource("20_r1y6a")
directionalOffset = 0.0
label = SubResource("Resource_qt31g")
fontSizeScale = 0.8
isUpperCase = true
buttonPressTexture = ExtResource("19_7x4g0")
[sub_resource type="Resource" id="Resource_dr7bt"]
script = ExtResource("1_64knt")
backgroundTexture = ExtResource("13_omll7")
widthScale = 1.0
fontSizeScale = 1.0
fontSizeCharacterMultiply = 0.9
fontIsUpperCase = true
hasLabel = true
borderLeft = 0.0
borderRight = 0.0
borderTop = 0.0
borderBottom = 0.0
[sub_resource type="Resource" id="Resource_2rh0g"]
script = ExtResource("1_64knt")
backgroundTexture = ExtResource("14_n68qo")
widthScale = 1.0
fontSizeScale = 1.0
fontSizeCharacterMultiply = 0.9
fontIsUpperCase = true
hasLabel = true
borderLeft = 0.0
borderRight = 0.0
borderTop = 0.0
borderBottom = 0.0
[sub_resource type="Resource" id="Resource_34cgw"]
script = ExtResource("5_a3fep")
leftButtonTexture = ExtResource("2_q818g")
middleButtonTexture = ExtResource("3_u1h0x")
rightButtonTexture = ExtResource("4_5b8av")
wheelUpTexture = ExtResource("7_n1ega")
wheelDownTexture = ExtResource("6_qyc6e")
[sub_resource type="Resource" id="Resource_5ywoi"]
script = ExtResource("20_55eoq")
en = "R"
entries = []
context = ""
[sub_resource type="Resource" id="Resource_jl0ql"]
script = ExtResource("5_sn8hr")
backgroundTexture = ExtResource("18_amimm")
directionUpTexture = ExtResource("20_r1y6a")
directionalOffset = 0.0
label = SubResource("Resource_5ywoi")
fontSizeScale = 0.8
isUpperCase = true
buttonPressTexture = ExtResource("19_7x4g0")
[sub_resource type="Resource" id="Resource_b5rf1"]
script = ExtResource("1_64knt")
backgroundTexture = ExtResource("21_hcyk3")
widthScale = 1.0
fontSizeScale = 1.0
fontSizeCharacterMultiply = 0.9
fontIsUpperCase = true
hasLabel = true
borderLeft = 0.0
borderRight = 0.0
borderTop = 0.0
borderBottom = 0.0
[resource]
script = ExtResource("1_urlfx")
font = ExtResource("1_xrnc5")
fontSize = SubResource("Resource_40bf3")
iconHeightInEm = 1.5
mouseInputIcon = SubResource("Resource_34cgw")
keyboardKeys = SubResource("Resource_nkgsq")
keyboardModifiers = SubResource("Resource_wrdp7")
keyboardSpaceKey = SubResource("Resource_mf61p")
keyboardEnterKey = SubResource("Resource_xrtll")
mainButtons = SubResource("Resource_2rh0g")
leftShouldersButtons = SubResource("Resource_dr7bt")
rightShouldersButtons = SubResource("Resource_b5rf1")
digitalPad = SubResource("Resource_s3w6q")
leftJoystick = SubResource("Resource_4s1kq")
rightJoystick = SubResource("Resource_jl0ql")
combinedInputs = SubResource("Resource_udrbd")
locales = []

View File

@ -5,7 +5,7 @@
[resource]
script = ExtResource("1_t42o5")
axis = 0
type = 0
type = 1
continous = true
_value = 0.0
_wasActive = false

View File

@ -5,7 +5,7 @@
[resource]
script = ExtResource("1_y2djh")
axis = 0
type = 1
type = 0
continous = true
_value = 0.0
_wasActive = false

View File

@ -5,7 +5,7 @@
[resource]
script = ExtResource("1_yy4wi")
axis = 0
type = 0
type = 1
continous = true
_value = 0.0
_wasActive = false

View File

@ -5,7 +5,7 @@
[resource]
script = ExtResource("1_wej7c")
axis = 1
type = 1
type = 0
continous = true
_value = 0.0
_wasActive = false

View File

@ -5,7 +5,7 @@
[resource]
script = ExtResource("1_22ykp")
axis = 2
type = 0
type = 1
continous = true
_value = 0.0
_wasActive = false

View File

@ -5,7 +5,7 @@
[resource]
script = ExtResource("1_pxirv")
axis = 2
type = 1
type = 0
continous = true
_value = 0.0
_wasActive = false

View File

@ -5,7 +5,7 @@
[resource]
script = ExtResource("1_nrdau")
axis = 3
type = 0
type = 1
continous = true
_value = 0.0
_wasActive = false

View File

@ -5,7 +5,7 @@
[resource]
script = ExtResource("1_xf3mc")
axis = 3
type = 1
type = 0
continous = true
_value = 0.0
_wasActive = false

View File

@ -4,8 +4,8 @@
[resource]
script = ExtResource("1_ow83o")
axis = 5
type = 1
axis = 4
type = 0
continous = true
_value = 0.0
_wasActive = false

View File

@ -4,8 +4,8 @@
[resource]
script = ExtResource("1_63g6c")
axis = 3
type = 1
axis = 5
type = 0
continous = true
_value = 0.0
_wasActive = false

View File

@ -7,12 +7,12 @@
[ext_resource type="Resource" uid="uid://chwstub7bnlpp" path="res://addons/rokojori_action_library/Runtime/Sensors/Default-Sensors/Keyboard & Mouse/Mouse/Mouse-Wheel Down.tres" id="5_diio6"]
[ext_resource type="Resource" uid="uid://b52horrdbgyaa" path="res://addons/rokojori_action_library/Runtime/Sensors/Default-Sensors/Keyboard & Mouse/Mouse/Mouse-Wheel Up.tres" id="6_3kcki"]
[ext_resource type="Resource" uid="uid://mbnb46tah4i7" path="res://addons/rokojori_action_library/Runtime/Sensors/Default-Sensors/Keyboard & Mouse/Movement/Move Forward.tres" id="7_1jado"]
[ext_resource type="Resource" uid="uid://ds1rrltuj0mse" path="res://addons/rokojori_action_library/Runtime/Sensors/Default-Sensors/Keyboard & Mouse/Movement/Fly Up.tres" id="7_if4l6"]
[ext_resource type="Resource" uid="uid://c5ueac4xt7oyb" path="res://addons/rokojori_action_library/Runtime/Sensors/Default-Sensors/Keyboard & Mouse/Movement/Move Back.tres" id="8_0us2c"]
[ext_resource type="Resource" uid="uid://dwigqkllvj8dq" path="res://addons/rokojori_action_library/Runtime/Sensors/Default-Sensors/Keyboard & Mouse/Movement/Fly Down.tres" id="8_r5hwi"]
[ext_resource type="Resource" uid="uid://ds1rrltuj0mse" path="res://addons/rokojori_action_library/Runtime/Sensors/Default-Sensors/Keyboard & Mouse/Movement/Move Down.tres" id="8_r5hwi"]
[ext_resource type="Resource" uid="uid://bfxeh1y1vgkiu" path="res://addons/rokojori_action_library/Runtime/Sensors/Default-Sensors/Keyboard & Mouse/Movement/Strafe Left.tres" id="9_xdx7j"]
[ext_resource type="Resource" uid="uid://bm2d6nhevcjel" path="res://addons/rokojori_action_library/Runtime/Sensors/Default-Sensors/Keyboard & Mouse/Movement/Strafe Right.tres" id="10_cwkpy"]
[ext_resource type="Resource" uid="uid://ds1rrltuj0mse" path="res://addons/rokojori_action_library/Runtime/Sensors/Default-Sensors/Keyboard & Mouse/Movement/Move Down.tres" id="11_33hna"]
[resource]
script = ExtResource("1_168ay")
sensors = [ExtResource("2_fxahp"), ExtResource("3_6x0mm"), ExtResource("4_4gj3k"), ExtResource("5_diio6"), ExtResource("6_3kcki"), ExtResource("7_1jado"), ExtResource("8_0us2c"), ExtResource("9_xdx7j"), ExtResource("10_cwkpy"), ExtResource("7_if4l6"), ExtResource("8_r5hwi")]
sensors = [ExtResource("2_fxahp"), ExtResource("3_6x0mm"), ExtResource("4_4gj3k"), ExtResource("5_diio6"), ExtResource("6_3kcki"), ExtResource("7_1jado"), ExtResource("8_0us2c"), ExtResource("9_xdx7j"), ExtResource("10_cwkpy"), ExtResource("11_33hna"), ExtResource("8_r5hwi")]

View File

@ -6,6 +6,7 @@
[sub_resource type="Resource" id="Resource_bf8g7"]
script = ExtResource("2_p2364")
key = 83
keyLocation = 0
ctrlHold = 2
altHold = 2
shiftHold = 2
@ -19,6 +20,7 @@ _activeTreshold = 0.5
[sub_resource type="Resource" id="Resource_bi0fk"]
script = ExtResource("2_p2364")
key = 4194322
keyLocation = 0
ctrlHold = 2
altHold = 2
shiftHold = 2
@ -31,7 +33,11 @@ _activeTreshold = 0.5
[resource]
script = ExtResource("1_xxflt")
sensors = Array[Object]([SubResource("Resource_bf8g7"), SubResource("Resource_bi0fk")])
sensors = [SubResource("Resource_bf8g7"), SubResource("Resource_bi0fk")]
showOnlyVisibleIcons = true
numVisible = 1
inputIcons = []
useInputIconsFromSensors = true
continous = false
_value = 0.0
_wasActive = false

View File

@ -1,10 +1,11 @@
[gd_resource type="Resource" script_class="KeySensor" load_steps=2 format=3 uid="uid://ds1rrltuj0mse"]
[ext_resource type="Script" path="res://addons/rokojori_action_library/Runtime/Sensors/KeySensor.cs" id="1_2vgvk"]
[ext_resource type="Script" path="res://addons/rokojori_action_library/Runtime/Sensors/KeySensor.cs" id="1_r0t8l"]
[resource]
script = ExtResource("1_2vgvk")
script = ExtResource("1_r0t8l")
key = 69
keyLocation = 0
ctrlHold = 2
altHold = 2
shiftHold = 2

View File

@ -6,6 +6,7 @@
[sub_resource type="Resource" id="Resource_uixae"]
script = ExtResource("2_rjp34")
key = 87
keyLocation = 0
ctrlHold = 2
altHold = 2
shiftHold = 2
@ -19,6 +20,7 @@ _activeTreshold = 0.5
[sub_resource type="Resource" id="Resource_grqa0"]
script = ExtResource("2_rjp34")
key = 4194320
keyLocation = 0
ctrlHold = 2
altHold = 2
shiftHold = 2
@ -31,7 +33,11 @@ _activeTreshold = 0.5
[resource]
script = ExtResource("1_vohv8")
sensors = Array[Object]([SubResource("Resource_uixae"), SubResource("Resource_grqa0")])
sensors = [SubResource("Resource_uixae"), SubResource("Resource_grqa0")]
showOnlyVisibleIcons = true
numVisible = 1
inputIcons = []
useInputIconsFromSensors = true
continous = false
_value = 0.0
_wasActive = false

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