v0.2 update
|
|
@ -0,0 +1,210 @@
|
|||
<?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="Collidable.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="linearGradient19861"><stop
|
||||
style="stop-color:#a7ceef;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop19857" /><stop
|
||||
style="stop-color:#609acd;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop19859" /></linearGradient><linearGradient
|
||||
inkscape:collect="never"
|
||||
id="linearGradient19830"><stop
|
||||
style="stop-color:#1969cc;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop19826" /><stop
|
||||
style="stop-color:#237be5;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop19828" /></linearGradient><linearGradient
|
||||
inkscape:collect="never"
|
||||
id="linearGradient95490"><stop
|
||||
style="stop-color:#66a3e2;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop95486" /><stop
|
||||
style="stop-color:#66a3e2;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop95488" /></linearGradient><linearGradient
|
||||
inkscape:collect="never"
|
||||
id="linearGradient91391"><stop
|
||||
style="stop-color:#90c3ed;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop91387" /><stop
|
||||
style="stop-color:#1969cc;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop91389" /></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:#ffffff;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,-6.1662076,-17.350757)"
|
||||
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,16.062243,-9.6517622)" /><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,20.002377,-7.9560723)" /><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" /><linearGradient
|
||||
inkscape:collect="never"
|
||||
xlink:href="#linearGradient91391"
|
||||
id="linearGradient91393"
|
||||
x1="8.9645748"
|
||||
y1="8.594615"
|
||||
x2="11.664056"
|
||||
y2="18.916397"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
xlink:href="#linearGradient91391"
|
||||
id="linearGradient95492"
|
||||
x1="23.753363"
|
||||
y1="53.728447"
|
||||
x2="4.2730064"
|
||||
y2="5.2054238"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
inkscape:collect="never"
|
||||
xlink:href="#linearGradient19830"
|
||||
id="linearGradient19832"
|
||||
x1="5.7427268"
|
||||
y1="-0.24260253"
|
||||
x2="9.9340897"
|
||||
y2="16.282267"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1102298,0,0,1.1102298,-0.9806513,-1.3439792)" /><linearGradient
|
||||
inkscape:collect="never"
|
||||
xlink:href="#linearGradient19861"
|
||||
id="linearGradient19863"
|
||||
x1="9.7719393"
|
||||
y1="0.063413613"
|
||||
x2="14.320319"
|
||||
y2="16.945301"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.1102298,0,0,1.1102298,-0.9806513,-1.3439792)" /></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="10.363534"
|
||||
inkscape:cx="4.9693473"
|
||||
inkscape:cy="9.8422025"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g84165" /><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="g84165"
|
||||
transform="translate(0,-0.15300804)"><path
|
||||
id="path16907"
|
||||
style="color:#000000;fill:url(#linearGradient19863);fill-opacity:1;stroke:url(#linearGradient19832);stroke-width:1.64313;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
d="m 8.1730505,1.3905012 c -0.1232363,-0.00123 -0.2454498,0.022464 -0.3592888,0.06968 l -5.8436272,1.243978 c -0.3522014,0.144687 -0.577778,0.4925955 -0.566152,0.8731805 l 0.2286381,7.2946493 c 0.010129,0.314385 0.1812183,0.601467 0.4529216,0.759951 l 5.5831295,3.248841 c 0.3026238,0.175479 0.6788703,0.162797 0.9689909,-0.03266 l 5.1628714,-3.462237 c 0.252739,-0.169412 0.404583,-0.453506 0.405014,-0.757773 l 0.0043,-7.105206 C 14.209636,3.160464 13.995223,2.8324176 13.66335,2.6867392 L 8.5301618,1.4688914 C 8.4176206,1.4189721 8.2961528,1.3923084 8.1730505,1.3905012 Z M 8.120637,2.7254708 11.341059,3.5001203 8.1144118,4.4182759 4.7697509,3.5542065 Z M 3.2766388,5.0188499 7.0191256,6.3758553 6.9653369,12.359228 3.4421295,10.308014 Z m 9.1041592,0.041373 -0.0023,5.0801241 -3.1856931,2.136134 0.053789,-5.9267558 z"
|
||||
sodipodi:nodetypes="ccccccccccccccccccccccccccccc" /></g></g></g></g></svg>
|
||||
|
After Width: | Height: | Size: 8.3 KiB |
|
|
@ -0,0 +1,43 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dg7on2hj1wbey"
|
||||
path="res://.godot/imported/Collidable.svg-8482075c469ae7f520a2601ba58d7e98.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/rokojori_action_library/Icons/Collidable.svg"
|
||||
dest_files=["res://.godot/imported/Collidable.svg-8482075c469ae7f520a2601ba58d7e98.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
|
|
@ -0,0 +1,213 @@
|
|||
<?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="Collider.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="linearGradient95490"><stop
|
||||
style="stop-color:#66a3e2;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop95486" /><stop
|
||||
style="stop-color:#66a3e2;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop95488" /></linearGradient><linearGradient
|
||||
inkscape:collect="never"
|
||||
id="linearGradient91391"><stop
|
||||
style="stop-color:#90c3ed;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop91387" /><stop
|
||||
style="stop-color:#1969cc;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop91389" /></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:#ffffff;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,-6.1662076,-17.350757)"
|
||||
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,16.062243,-9.6517622)" /><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,20.002377,-7.9560723)" /><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" /><linearGradient
|
||||
inkscape:collect="never"
|
||||
xlink:href="#linearGradient91391"
|
||||
id="linearGradient91393"
|
||||
x1="8.9645748"
|
||||
y1="8.594615"
|
||||
x2="11.664056"
|
||||
y2="18.916397"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.96377216,0,0,0.96377216,0.26239556,0.1404646)" /><linearGradient
|
||||
xlink:href="#linearGradient91391"
|
||||
id="linearGradient95492"
|
||||
x1="23.753363"
|
||||
y1="53.728447"
|
||||
x2="4.2730064"
|
||||
y2="5.2054238"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.96377216,0,0,0.96377216,0.26239556,0.1404646)" /><linearGradient
|
||||
xlink:href="#linearGradient19861"
|
||||
id="linearGradient19863"
|
||||
x1="9.7719393"
|
||||
y1="0.063413613"
|
||||
x2="14.320319"
|
||||
y2="16.945301"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0137275,0,0,1.0137275,-0.0416865,-0.2688203)" /><linearGradient
|
||||
id="linearGradient19861"><stop
|
||||
style="stop-color:#a7ceef;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop19857" /><stop
|
||||
style="stop-color:#609acd;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop19859" /></linearGradient><linearGradient
|
||||
xlink:href="#linearGradient19830"
|
||||
id="linearGradient19832"
|
||||
x1="5.7427268"
|
||||
y1="-0.24260253"
|
||||
x2="9.9340897"
|
||||
y2="16.282267"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.0137275,0,0,1.0137275,-0.14987951,-0.48520634)" /><linearGradient
|
||||
id="linearGradient19830"><stop
|
||||
style="stop-color:#1969cc;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop19826" /><stop
|
||||
style="stop-color:#237be5;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop19828" /></linearGradient></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="5.1817672"
|
||||
inkscape:cx="-5.6930384"
|
||||
inkscape:cy="11.772046"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g84165" /><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="g84165"
|
||||
transform="translate(0,-0.15300804)"><circle
|
||||
style="opacity:1;fill:#1b6acd;stroke:none;stroke-width:1.01304;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.569672;paint-order:stroke markers fill;fill-opacity:1"
|
||||
id="path6905"
|
||||
cx="8.0173216"
|
||||
cy="7.9620037"
|
||||
r="8.2843113" /><path
|
||||
id="path16907"
|
||||
style="color:#000000;fill:url(#linearGradient19863);fill-opacity:1;stroke:none;stroke-width:1.50031;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
d="M 8.3163653,2.2279763 C 8.2038411,2.2268532 8.092251,2.2484877 7.988307,2.2915996 L 2.6526132,3.4274498 C 2.3310259,3.5595606 2.1250563,3.8772281 2.1356717,4.2247322 l 0.2087655,6.6605918 c 0.00925,0.287058 0.1654663,0.549187 0.4135526,0.693895 l 5.0978386,2.966449 c 0.2763187,0.160226 0.6198619,0.148646 0.8847653,-0.02982 l 4.7141083,-2.906284 c 0.230771,-0.154687 0.369416,-0.414087 0.36981,-0.691907 l 0.0804,-6.870134 C 13.904749,3.7165857 13.708973,3.4170529 13.405946,3.2840372 L 8.6424368,2.2995527 C 8.539678,2.2539727 8.4287681,2.2296264 8.3163653,2.2279763 Z M 8.2685109,3.4469089 11.285514,4.0267185 8.262827,4.9925741 5.2088873,4.20361 Z M 3.8455582,5.5409456 7.2627443,6.7799983 7.2136298,12.24329 3.9966627,10.37037 Z m 8.3893198,-0.089733 -0.0786,5.0210744 -2.9087891,1.695446 0.049114,-5.4115965 z"
|
||||
sodipodi:nodetypes="ccccccccccccccccccccccccccccc" /></g></g></g></g></svg>
|
||||
|
After Width: | Height: | Size: 8.6 KiB |
|
|
@ -0,0 +1,43 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://xsgi8ucjgdbg"
|
||||
path="res://.godot/imported/Collider.svg-8f5313483cb1b4b6e56ac5d4f044ae74.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/rokojori_action_library/Icons/Collider.svg"
|
||||
dest_files=["res://.godot/imported/Collider.svg-8f5313483cb1b4b6e56ac5d4f044ae74.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
<?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="GDScriptAction.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="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs8" />
|
||||
<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="19.59375"
|
||||
inkscape:cy="5.125"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4" />
|
||||
<path
|
||||
id="path1741"
|
||||
style="fill:#f7b200;fill-opacity:1;stroke:none;stroke-width:0.534077;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
inkscape:transform-center-y="-0.68247574"
|
||||
d="M 8,0.93468771 5.4928705,4.6302281 1.2031246,5.8742369 3.9413341,9.4012453 3.7988638,13.864735 8,12.349685 12.201136,13.864735 12.058666,9.4012453 14.796875,5.8742369 10.507129,4.6302281 Z M 8.2137054,4.9290682 c 0.4239975,0 0.8065835,0.041512 1.1484495,0.1233584 0.3425058,0.082089 0.578204,0.1926273 0.7054021,0.3318515 0.0059,0.048284 0.0087,0.1383351 0.0087,0.2710411 0,0.1337522 -0.04491,0.3238646 -0.1355203,0.5698811 C 9.8496947,6.4699292 9.746622,6.6531166 9.6314549,6.7742321 9.5164587,6.8956754 9.4326074,6.9549262 9.3812632,6.9549262 c -0.051585,0 -0.1059396,-0.021325 -0.1633195,-0.06776 C 9.1600756,6.8420127 9.0472101,6.7943823 8.8774049,6.742958 8.7076783,6.6910512 8.5433606,6.6647728 8.3857087,6.6647728 c -0.3752295,0 -0.6794175,0.1210509 -0.9121573,0.3631255 -0.2332233,0.242345 -0.3509634,0.6182626 -0.3509634,1.1276002 0,0.5082627 0.1199882,0.8932548 0.3596506,1.1571366 0.2391293,0.2635632 0.5149343,0.3961372 0.8270226,0.3961372 0.3116901,0 0.467372,-0.07864 0.467372,-0.236292 l 0.00695,-0.4256738 H 8.2206552 V 8.0912131 c 0,0 0.5585403,-0.1013832 1.0476778,-0.093822 0.4891082,0.00837 0.926057,0.083238 0.926057,0.2484543 L 10.1579,11.090039 c -0.1213,0.08466 -0.3647304,0.166925 -0.7314637,0.248454 -0.366364,0.08185 -0.7855063,0.123358 -1.2579083,0.123358 -0.8784476,0 -1.5869534,-0.283786 -2.1266296,-0.853084 C 5.5031827,10.039406 5.2339882,9.2025489 5.2339882,8.0999002 5.2339882,7.16076 5.4972359,6.3976773 6.024524,5.8099511 6.5514072,5.2224886 7.2806803,4.9290677 8.2137019,4.9290682 Z" />
|
||||
<path
|
||||
style="fill:none;stroke:#f7b200;stroke-width:0.979;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;paint-order:stroke fill markers"
|
||||
d="M 0.64081552,2.8726213 V 0.66291261 H 2.7400388"
|
||||
id="path46127" />
|
||||
<path
|
||||
style="fill:none;stroke:#f7b200;stroke-width:0.979;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;paint-order:stroke fill markers"
|
||||
d="M 15.379573,2.7842329 V 0.57452426 H 13.28035"
|
||||
id="path46129" />
|
||||
<g
|
||||
id="g46137"
|
||||
transform="matrix(1,0,0,-1,0,16.042485)">
|
||||
<path
|
||||
style="fill:none;stroke:#f7b200;stroke-width:0.979;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;paint-order:stroke fill markers"
|
||||
d="M 0.64081552,2.8726213 V 0.66291261 H 2.7400388"
|
||||
id="path46131" />
|
||||
<path
|
||||
style="fill:none;stroke:#f7b200;stroke-width:0.979;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;paint-order:stroke fill markers"
|
||||
d="M 15.379573,2.7842329 V 0.57452426 H 13.28035"
|
||||
id="path46133" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
|
|
@ -0,0 +1,43 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dw1dtygiamsdq"
|
||||
path="res://.godot/imported/GDScriptAction.svg-5229bd85d169d26c8b21208a93a35aae.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/rokojori_action_library/Icons/GDScriptAction.svg"
|
||||
dest_files=["res://.godot/imported/GDScriptAction.svg-5229bd85d169d26c8b21208a93a35aae.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
<?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="GDScriptSequenceAction.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="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs8" />
|
||||
<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.627417"
|
||||
inkscape:cx="6.1650873"
|
||||
inkscape:cy="6.3197669"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4" />
|
||||
<path
|
||||
id="path1741"
|
||||
style="fill:none;fill-opacity:1;stroke:#f7b200;stroke-width:0.94549;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
inkscape:transform-center-y="-0.64527415"
|
||||
d="M 8,1.1041732 5.6288873,4.5980559 1.5736197,5.7743789 4.1626384,9.107602 4.0278321,13.329069 8,11.89606 11.972168,13.329069 11.837362,9.107602 14.42638,5.7743789 10.371112,4.5980559 Z" />
|
||||
<path
|
||||
style="fill:none;stroke:#f7b200;stroke-width:0.979;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;paint-order:stroke fill markers"
|
||||
d="M 0.64081552,2.8726213 V 0.66291261 H 2.7400388"
|
||||
id="path46127" />
|
||||
<path
|
||||
style="fill:none;stroke:#f7b200;stroke-width:0.979;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;paint-order:stroke fill markers"
|
||||
d="M 15.379573,2.7842329 V 0.57452426 H 13.28035"
|
||||
id="path46129" />
|
||||
<g
|
||||
id="g46137"
|
||||
transform="matrix(1,0,0,-1,0,16.042485)">
|
||||
<path
|
||||
style="fill:none;stroke:#f7b200;stroke-width:0.979;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;paint-order:stroke fill markers"
|
||||
d="M 0.64081552,2.8726213 V 0.66291261 H 2.7400388"
|
||||
id="path46131" />
|
||||
<path
|
||||
style="fill:none;stroke:#f7b200;stroke-width:0.979;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;paint-order:stroke fill markers"
|
||||
d="M 15.379573,2.7842329 V 0.57452426 H 13.28035"
|
||||
id="path46133" />
|
||||
</g>
|
||||
<path
|
||||
id="path348"
|
||||
style="fill:#f7b200;fill-opacity:1;stroke:none;stroke-width:0.467468;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
inkscape:transform-center-y="-0.59735854"
|
||||
d="M 8.1561373,4.9694219 C 7.3394817,4.9694215 6.7026274,5.226228 6.241458,5.7404222 5.7799323,6.2548473 5.5490959,6.9219865 5.5490959,7.7439974 c 0,0.9651266 0.2345108,1.6984029 0.7060383,2.1967526 0.4723678,0.498294 1.0927957,0.745357 1.8616836,0.745358 0.4134832,-1e-6 0.7802701,-0.03606 1.1009402,-0.107701 0.3209957,-0.07136 0.5349041,-0.14301 0.6410758,-0.217111 l 0.032482,-2.4890835 c 0,-0.1446107 -0.3839214,-0.2097848 -0.8120289,-0.217111 -0.428131,-0.00662 -0.9163108,0.082058 -0.9163108,0.082058 v 0.8359627 h 0.4923461 l -0.00513,0.3726786 c 0,0.1379897 -0.1374735,0.2068538 -0.4102884,0.2068538 -0.273165,0 -0.5138282,-0.1163441 -0.7231335,-0.3470357 C 7.3069982,8.5746482 7.2022165,8.2384462 7.2022165,7.7935739 c 0,-0.4458132 0.1018705,-0.7759916 0.3060064,-0.9881113 0.2037131,-0.2118832 0.4699214,-0.3179735 0.7983534,-0.3179735 0.1379882,0 0.2822435,0.022948 0.4308025,0.068381 0.1486272,0.045011 0.2485161,0.086983 0.2991687,0.1265056 0.050224,0.040644 0.096744,0.059833 0.1418911,0.059833 0.044941,0 0.1181666,-0.05269 0.2188205,-0.1589867 C 9.4980627,6.4772127 9.5893896,6.3170497 9.6690753,6.1028434 9.7483846,5.88751 9.7870335,5.7224394 9.7870335,5.6053687 c 0,-0.116155 -0.00166,-0.1953633 -0.00683,-0.2376254 C 9.6688626,5.2458835 9.4611328,5.1489735 9.1613435,5.0771226 8.8621143,5.0054841 8.5272533,4.9694219 8.1561373,4.9694219 Z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.1 KiB |
|
|
@ -0,0 +1,43 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ktq8w2ep7qtj"
|
||||
path="res://.godot/imported/GDScriptSequenceAction.svg-871462890bc760a2e2f4ebebacc73b30.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/rokojori_action_library/Icons/GDScriptSequenceAction.svg"
|
||||
dest_files=["res://.godot/imported/GDScriptSequenceAction.svg-871462890bc760a2e2f4ebebacc73b30.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
<?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="RJ_Action.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="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs8" />
|
||||
<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="45.254834"
|
||||
inkscape:cx="10.131514"
|
||||
inkscape:cy="8.905126"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4" />
|
||||
<path
|
||||
id="path1741"
|
||||
style="opacity:1;fill:#f7b200;fill-opacity:1;stroke:none;stroke-width:0.600376;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
inkscape:transform-center-y="-0.7671971"
|
||||
d="M 8,0.13580032 5.1816407,4.2900974 0.35937464,5.6885349 3.4374998,9.6533786 3.2773435,14.670957 8,12.967832 12.722656,14.670957 12.5625,9.6533786 15.640625,5.6885349 10.818359,4.2900974 Z M 8.2402344,4.6260349 c 0.4766316,0 0.9067111,0.046665 1.2910156,0.1386719 0.3850238,0.092278 0.649981,0.2165397 0.792969,0.3730468 0.0066,0.054278 0.0098,0.1555077 0.0098,0.3046876 0,0.1503559 -0.05047,0.3640685 -0.152343,0.640625 -0.102325,0.275109 -0.218193,0.4810368 -0.3476566,0.6171875 -0.1292717,0.1365189 -0.2235321,0.2031249 -0.28125,0.2031249 -0.057989,0 -0.1190909,-0.023972 -0.1835938,-0.076172 C 9.3040888,6.7764484 9.1772126,6.7229054 8.9863282,6.6650974 8.7955319,6.6067464 8.6108163,6.5772068 8.4335937,6.5772068 c -0.4218096,0 -0.7637589,0.1360779 -1.0253905,0.4082031 C 7.146028,7.2578391 7.0136719,7.6804224 7.0136719,8.252988 c 0,0.5713575 0.1348832,1.0041417 0.4042968,1.3007813 0.2688143,0.2962807 0.5788573,0.4453125 0.9296875,0.4453125 0.3503827,0 0.5253907,-0.088402 0.5253907,-0.265625 l 0.00781,-0.4785157 h -0.63281 V 8.1807224 c 0,0 0.6278763,-0.1139687 1.1777344,-0.1054687 0.549825,0.00941 1.0410157,0.093572 1.0410157,0.2792968 l -0.04102,3.1972655 c -0.136358,0.09517 -0.410007,0.187647 -0.8222653,0.279297 -0.4118438,0.09201 -0.8830176,0.138672 -1.4140626,0.138672 -0.9874962,0 -1.7839544,-0.319015 -2.3906253,-0.958984 C 5.193237,10.37076 4.8906252,9.4300173 4.8906252,8.190488 4.8906252,7.1347648 5.186552,6.2769546 5.7792965,5.6162693 6.3715863,4.9558804 7.1913899,4.6260349 8.2402344,4.6260349 Z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
|
|
@ -0,0 +1,43 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bc02q72sijom4"
|
||||
path="res://.godot/imported/RJ_Action.svg-e2ec937a63457fcfbd6e5b3d52f60bb6.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/rokojori_action_library/Icons/RJ_Action.svg"
|
||||
dest_files=["res://.godot/imported/RJ_Action.svg-e2ec937a63457fcfbd6e5b3d52f60bb6.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
<?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="RJ_SequenceAction.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="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs8" />
|
||||
<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="12.03125"
|
||||
inkscape:cy="3.5"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4" />
|
||||
<path
|
||||
id="path1741-9"
|
||||
style="fill:none;fill-opacity:1;stroke:#f7b200;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
inkscape:transform-center-y="-0.68247574"
|
||||
d="M 8,0.93554688 5.4921875,4.6308594 1.203125,5.875 3.9414062,9.4003906 3.7988281,13.865234 8,12.349609 12.201172,13.865234 12.058594,9.4003906 14.796875,5.875 10.507812,4.6308594 Z" />
|
||||
<path
|
||||
id="path348"
|
||||
style="fill:#f7b200;fill-opacity:1;stroke:none;stroke-width:0.467468;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
inkscape:transform-center-y="-0.59735854"
|
||||
d="M 8.1561373,5.2345869 C 7.3394817,5.2345865 6.7026274,5.491393 6.241458,6.0055872 5.7799323,6.5200123 5.5490959,7.1871515 5.5490959,8.0091624 c 0,0.9651266 0.2345108,1.6984029 0.7060383,2.1967526 0.4723678,0.498294 1.0927957,0.745357 1.8616836,0.745358 0.4134832,-1e-6 0.7802701,-0.03606 1.1009402,-0.107701 0.3209957,-0.07136 0.5349041,-0.14301 0.6410758,-0.217111 l 0.032482,-2.4890835 c 0,-0.1446107 -0.3839214,-0.2097848 -0.8120289,-0.217111 -0.428131,-0.00662 -0.9163108,0.082058 -0.9163108,0.082058 v 0.8359627 h 0.4923461 l -0.00513,0.3726786 c 0,0.1379897 -0.1374735,0.2068538 -0.4102884,0.2068538 -0.273165,0 -0.5138282,-0.1163441 -0.7231335,-0.3470357 C 7.3069982,8.8398132 7.2022165,8.5036112 7.2022165,8.0587389 c 0,-0.4458132 0.1018705,-0.7759916 0.3060064,-0.9881113 0.2037131,-0.2118832 0.4699214,-0.3179735 0.7983534,-0.3179735 0.1379882,0 0.2822435,0.022948 0.4308025,0.068381 0.1486272,0.045011 0.2485161,0.086983 0.2991687,0.1265056 0.050224,0.040644 0.096744,0.059833 0.1418911,0.059833 0.044941,0 0.1181666,-0.05269 0.2188205,-0.1589867 C 9.4980627,6.7423777 9.5893896,6.5822147 9.6690753,6.3680084 9.7483846,6.152675 9.7870335,5.9876044 9.7870335,5.8705337 c 0,-0.116155 -0.00166,-0.1953633 -0.00683,-0.2376254 C 9.6688626,5.5110485 9.4611328,5.4141385 9.1613435,5.3422876 8.8621143,5.2706491 8.5272533,5.2345869 8.1561373,5.2345869 Z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
|
|
@ -0,0 +1,43 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://didqgj0wwsx4l"
|
||||
path="res://.godot/imported/RJ_SequenceAction.svg-1ef2c9c94a8c9f5c9dcc7af742ad00d8.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/rokojori_action_library/Icons/RJ_SequenceAction.svg"
|
||||
dest_files=["res://.godot/imported/RJ_SequenceAction.svg-1ef2c9c94a8c9f5c9dcc7af742ad00d8.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
|
|
@ -150,9 +150,9 @@
|
|||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#505050"
|
||||
showgrid="false"
|
||||
inkscape:zoom="22.627417"
|
||||
inkscape:cx="1.4584077"
|
||||
inkscape:cy="13.34664"
|
||||
inkscape:zoom="2"
|
||||
inkscape:cx="-101.25"
|
||||
inkscape:cy="-9.5"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB |
|
|
@ -0,0 +1,198 @@
|
|||
<?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="RenderingManager.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="linearGradient7321"><stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop7317" /><stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop7319" /></linearGradient><linearGradient
|
||||
inkscape:collect="never"
|
||||
id="linearGradient2490"><stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2480" /><stop
|
||||
style="stop-color:#f0ece9;stop-opacity:0.15384616;"
|
||||
offset="0.16326228"
|
||||
id="stop2482" /><stop
|
||||
style="stop-color:#9f9492;stop-opacity:0;"
|
||||
offset="0.34845719"
|
||||
id="stop2484" /><stop
|
||||
style="stop-color:#322834;stop-opacity:0.66666675;"
|
||||
offset="0.75751561"
|
||||
id="stop2486" /><stop
|
||||
style="stop-color:#020203;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop2488" /></linearGradient><linearGradient
|
||||
inkscape:collect="never"
|
||||
id="linearGradient1031"><stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop1027" /><stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop1029" /></linearGradient><linearGradient
|
||||
inkscape:collect="never"
|
||||
id="linearGradient33765"><stop
|
||||
style="stop-color:#bfe4e4;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop33761" /><stop
|
||||
style="stop-color:#d0dde1;stop-opacity:1;"
|
||||
offset="0.19335938"
|
||||
id="stop2420" /><stop
|
||||
style="stop-color:#3e8ef3;stop-opacity:1;"
|
||||
offset="0.41559249"
|
||||
id="stop16949" /><stop
|
||||
style="stop-color:#26254e;stop-opacity:1;"
|
||||
offset="0.80959076"
|
||||
id="stop16951" /><stop
|
||||
style="stop-color:#482f55;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop33763" /></linearGradient><linearGradient
|
||||
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)" /><radialGradient
|
||||
inkscape:collect="never"
|
||||
xlink:href="#linearGradient33765"
|
||||
id="radialGradient33767"
|
||||
cx="28.252495"
|
||||
cy="28.914215"
|
||||
fx="28.252495"
|
||||
fy="28.914215"
|
||||
r="14.43763"
|
||||
gradientTransform="matrix(2.0592515,0,0,2.0182304,-29.633594,-30.690448)"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
inkscape:collect="never"
|
||||
xlink:href="#linearGradient1031"
|
||||
id="linearGradient1033"
|
||||
x1="2.5040113"
|
||||
y1="4.3790028"
|
||||
x2="9.6209886"
|
||||
y2="4.3790028"
|
||||
gradientUnits="userSpaceOnUse" /><radialGradient
|
||||
inkscape:collect="never"
|
||||
xlink:href="#linearGradient2490"
|
||||
id="radialGradient2424"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.0705199,0,0,2.0292743,-29.931333,-31.016489)"
|
||||
cx="27.740032"
|
||||
cy="29.716822"
|
||||
fx="27.740032"
|
||||
fy="29.716822"
|
||||
r="14.43763" /><linearGradient
|
||||
inkscape:collect="never"
|
||||
xlink:href="#linearGradient7321"
|
||||
id="linearGradient7323"
|
||||
x1="1.9025939"
|
||||
y1="4.2053886"
|
||||
x2="10.222406"
|
||||
y2="4.2053886"
|
||||
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="5.6568543"
|
||||
inkscape:cx="-22.715805"
|
||||
inkscape:cy="-9.8994949"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g33736" /><g
|
||||
id="g2210"
|
||||
transform="matrix(0.54328517,0,0,0.54328517,-9.4489315,-11.300948)"><g
|
||||
id="g33736"><rect
|
||||
style="fill:url(#radialGradient33767);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="4.4076433" /><rect
|
||||
style="display:inline;opacity:0.56871;fill:#618c85;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="rect5113"
|
||||
width="28.875259"
|
||||
height="28.300053"
|
||||
x="17.679815"
|
||||
y="21.347578"
|
||||
ry="4.4076433" /><path
|
||||
id="path2626"
|
||||
style="opacity:1;fill:#ffffff;stroke-width:4.26607;stroke-linecap:round;paint-order:markers stroke fill"
|
||||
inkscape:transform-center-x="-0.080997432"
|
||||
inkscape:transform-center-y="1.2381837"
|
||||
d="m 23.964403,24.682689 -0.897572,3.09672 6.933428,0.223474 -6.732076,0.515973 0.01041,0.04165 0.982458,2.048234 7.811737,0.07073 -7.018642,1.461205 3.283937,3.157812 0.632203,12.006936 5.303176,-4.543863 2.32028,-5.061601 -5.205466,0.814123 5.503068,-1.856547 2.097834,-3.53146 -4.222442,0.28206 6.02966,-2.764195 0.483778,-6.395539 z"
|
||||
sodipodi:nodetypes="ccccccccccccccccccc" /><g
|
||||
id="g2642"
|
||||
transform="matrix(1.0851915,0,0,1.0851915,25.209605,-13.00707)" /><path
|
||||
id="path1984"
|
||||
style="opacity:0.150106;fill:#ffffff;stroke-width:4.84538;stroke-linecap:round;paint-order:markers stroke fill"
|
||||
inkscape:transform-center-x="-0.10448909"
|
||||
inkscape:transform-center-y="1.2381837"
|
||||
d="m 21.626779,24.682689 -1.157893,3.09672 8.944313,0.223474 -8.684563,0.515973 0.01343,0.04165 1.267398,2.048234 10.077355,0.07073 -9.054241,1.461205 4.236369,3.157812 0.815559,12.006936 6.841243,-4.543863 2.993224,-5.061601 -6.715193,0.814123 7.099108,-1.856547 2.706263,-3.53146 -5.447066,0.28206 7.778427,-2.764195 0.624087,-6.395539 z"
|
||||
sodipodi:nodetypes="ccccccccccccccccccc" /><path
|
||||
id="path1986"
|
||||
style="opacity:0.150106;fill:#ffffff;stroke-width:4.55667;stroke-linecap:round;paint-order:markers stroke fill"
|
||||
inkscape:transform-center-x="-0.092409416"
|
||||
inkscape:transform-center-y="1.2381837"
|
||||
d="m 22.828924,24.682689 -1.02402,3.09672 7.910196,0.223474 -7.680478,0.515973 0.01188,0.04165 1.120865,2.048234 8.91224,0.07073 -8.007415,1.461205 3.746572,3.157812 0.721266,12.006936 6.050278,-4.543863 2.647156,-5.061601 -5.938802,0.814123 6.27833,-1.856547 2.393372,-3.53146 -4.817292,0.28206 6.879108,-2.764195 0.551932,-6.395539 z"
|
||||
sodipodi:nodetypes="ccccccccccccccccccc" /></g></g></svg>
|
||||
|
After Width: | Height: | Size: 8.4 KiB |
|
|
@ -0,0 +1,43 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cxmpmvdminoh8"
|
||||
path="res://.godot/imported/WindManager.svg-af882a5a9dd0c369531b565ccd6be2fe.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/rokojori_action_library/Icons/WindManager.svg"
|
||||
dest_files=["res://.godot/imported/WindManager.svg-af882a5a9dd0c369531b565ccd6be2fe.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
|
|
@ -31,6 +31,12 @@ namespace Rokojori
|
|||
static readonly string RokojoriSettingsPath = "res://.rokojori/settings";
|
||||
static readonly string RokojoriCachePath = "res://.rokojori/cache";
|
||||
|
||||
// static RokojoriPlugin _instance;
|
||||
// public static RokojoriPlugin Get()
|
||||
// {
|
||||
// return _instance;
|
||||
// }
|
||||
|
||||
public override void _EnablePlugin()
|
||||
{
|
||||
this.LogInfo();
|
||||
|
|
@ -99,6 +105,8 @@ namespace Rokojori
|
|||
|
||||
public override void _EnterTree()
|
||||
{
|
||||
// _instance = this;
|
||||
|
||||
EnsureHiddenProjectPath( RokojoriProjectInternalPath );
|
||||
EnsureHiddenProjectPath( RokojoriSettingsPath );
|
||||
EnsureHiddenProjectPath( RokojoriCachePath );
|
||||
|
|
|
|||
|
|
@ -26,6 +26,23 @@ namespace Rokojori
|
|||
NetworkNodeSlot _dataSlot = new NetworkNodeSlot();
|
||||
NetworkNodeSlot _seedAndDataSlot = new NetworkNodeSlot();
|
||||
|
||||
public static bool IsAction( Node n )
|
||||
{
|
||||
if ( n == null )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return n is Action || GDScriptAction.IsRJAction( n );
|
||||
}
|
||||
|
||||
public void LogInfoFor( Node n, string message )
|
||||
{
|
||||
var className = GDScriptNames.ExtractClassName( n );
|
||||
RJLog.GDLog( $"{className}._onTrigger()", n, message );
|
||||
}
|
||||
|
||||
|
||||
protected override List<NetworkNodeMember> CreateNetworkNodeMembers()
|
||||
{
|
||||
return new List<NetworkNodeMember>()
|
||||
|
|
@ -83,7 +100,7 @@ namespace Rokojori
|
|||
BitView _sendingNetworkData;
|
||||
BitView _receivedNetworkData;
|
||||
|
||||
protected bool isNetworkedTrigger => _isNetworkedTrigger;
|
||||
public bool isNetworkedTrigger => _isNetworkedTrigger;
|
||||
|
||||
static readonly int maxNetworkSeed = Mathf.RoundToInt( Mathf.Pow( 2, 30 ) );
|
||||
|
||||
|
|
@ -137,7 +154,7 @@ namespace Rokojori
|
|||
action.Trigger();
|
||||
}
|
||||
|
||||
public static void TriggerAll( Action[] actions, Node target, bool triggerDirectChildren )
|
||||
public static void TriggerAll( Action[] actions, Node target, bool triggerDirectChildren, Action caller = null )
|
||||
{
|
||||
if ( actions != null )
|
||||
{
|
||||
|
|
@ -152,7 +169,7 @@ namespace Rokojori
|
|||
return;
|
||||
}
|
||||
|
||||
Nodes.ForEachDirectChild<Action>( target, a => Action.Trigger( a ) );
|
||||
Nodes.ForEachDirectChild<Action>( target, ( a ) => Trigger( a ) );
|
||||
}
|
||||
|
||||
public static void TriggerAll( Action action, Node target, bool triggerDirectChildren )
|
||||
|
|
@ -168,7 +185,7 @@ namespace Rokojori
|
|||
return;
|
||||
}
|
||||
|
||||
Nodes.ForEachDirectChild<Action>( target, a => Action.Trigger( a ) );
|
||||
Nodes.ForEachDirectChild<Action>( target, ( a ) => Trigger( a ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ namespace Rokojori
|
|||
[ExportGroup("Condition")]
|
||||
[Export]
|
||||
public Condition condition;
|
||||
|
||||
[Export]
|
||||
public SceneCondition sceneCondition;
|
||||
|
||||
|
|
@ -24,7 +25,7 @@ namespace Rokojori
|
|||
|
||||
protected override void _OnTrigger()
|
||||
{
|
||||
var conditionActive = Condition.Evaluate( condition ) && SceneCondition.Evaluate( sceneCondition );
|
||||
var conditionActive = Condition.Evaluate( condition ) || SceneCondition.Evaluate( sceneCondition );
|
||||
|
||||
// this.LogInfo( "Condition is", conditionActive );
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,19 @@ namespace Rokojori
|
|||
public Duration coolDownDuration;
|
||||
|
||||
bool _isCoolingDown = false;
|
||||
int _coolDownID = -1;
|
||||
|
||||
public void ResetCoolDown()
|
||||
{
|
||||
if ( _coolDownID == -1 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_isCoolingDown = false;
|
||||
_coolDownID = -1;
|
||||
}
|
||||
|
||||
protected override void _OnTrigger()
|
||||
{
|
||||
if ( _isCoolingDown )
|
||||
|
|
@ -28,10 +41,21 @@ namespace Rokojori
|
|||
|
||||
if ( coolDownDuration != null )
|
||||
{
|
||||
TimeLineManager.ScheduleEventIn(
|
||||
var te = TimeLineManager.ScheduleEventIn(
|
||||
coolDownDuration.timeLine, coolDownDuration.GetDurationInSeconds(),
|
||||
ev => _isCoolingDown = false
|
||||
ev =>
|
||||
{
|
||||
if ( _coolDownID != ev.id )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_isCoolingDown = false;
|
||||
}
|
||||
);
|
||||
|
||||
_coolDownID = te.id;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
|
||||
using Godot;
|
||||
using System.Collections.Generic;
|
||||
|
||||
|
||||
namespace Rokojori
|
||||
{
|
||||
[Tool]
|
||||
[GlobalClass, Icon("res://addons/rokojori_action_library/Icons/ConditionalAction.svg")]
|
||||
public partial class ResetCoolDown : Action
|
||||
{
|
||||
[Export]
|
||||
public CoolDown coolDown;
|
||||
|
||||
protected override void _OnTrigger()
|
||||
{
|
||||
coolDown.ResetCoolDown();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://d6m0k7ql0mnr
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
|
||||
using Godot;
|
||||
using System.Collections.Generic;
|
||||
|
||||
|
||||
namespace Rokojori
|
||||
{
|
||||
[Tool]
|
||||
[GlobalClass, Icon("res://addons/rokojori_action_library/Icons/GDScriptAction.svg")]
|
||||
public partial class GDScriptAction : Action
|
||||
{
|
||||
public static string onTriggerFunctionName = "_onTrigger";
|
||||
public static string rjAction_className = "RJ_Action";
|
||||
|
||||
public static bool IsRJAction( Node n )
|
||||
{
|
||||
var extractedClass = GDScriptNames.ExtractClassName( n );
|
||||
|
||||
if ( extractedClass == null )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return GDScriptNames.IsOrExtendsFrom( n, rjAction_className );
|
||||
}
|
||||
|
||||
public static void TriggerRJAction( Node n, Action caller )
|
||||
{
|
||||
n.Call( onTriggerFunctionName, caller );
|
||||
}
|
||||
|
||||
protected override void _OnTrigger()
|
||||
{
|
||||
var firstChild = GetChild( 0 );
|
||||
|
||||
if ( firstChild == null || ! IsRJAction( firstChild ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
TriggerRJAction( firstChild, this );
|
||||
}
|
||||
|
||||
public async void WrapRJAction( Node rjAction )
|
||||
{
|
||||
await this.RequestNextFrame();
|
||||
|
||||
if ( rjAction == null || rjAction.GetParent() == null )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
this.LogInfo( "Wrapping:", rjAction );
|
||||
|
||||
this.Wrap( rjAction );
|
||||
|
||||
this.Name = rjAction.Name + " Wrapper" ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://c2m6vuo3nucna
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
|
||||
using Godot;
|
||||
using System.Collections.Generic;
|
||||
|
||||
|
||||
namespace Rokojori
|
||||
{
|
||||
[Tool]
|
||||
[GlobalClass, Icon("res://addons/rokojori_action_library/Icons/GDScriptSequenceAction.svg")]
|
||||
public partial class GDScriptSequenceAction : SequenceAction
|
||||
{
|
||||
public static string rjSequenceAction_className = "RJ_SequenceAction";
|
||||
|
||||
public static bool IsRJSequenceAction( Node n )
|
||||
{
|
||||
var extractedClass = GDScriptNames.ExtractClassName( n );
|
||||
|
||||
if ( extractedClass == null )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return GDScriptNames.IsOrExtendsFrom( n, rjSequenceAction_className );
|
||||
}
|
||||
|
||||
public static void TriggerRJ_SequenceAction( Node n, Action caller )
|
||||
{
|
||||
n.Call( GDScriptAction.onTriggerFunctionName, caller );
|
||||
}
|
||||
|
||||
protected override void _OnTrigger()
|
||||
{
|
||||
var firstChild = GetChild( 0 );
|
||||
|
||||
if ( firstChild == null || ! IsRJSequenceAction( firstChild ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
TriggerRJ_SequenceAction( firstChild, this );
|
||||
}
|
||||
|
||||
public async void WrapRJSequenceAction( Node rjSequenceAction )
|
||||
{
|
||||
await this.RequestNextFrame();
|
||||
|
||||
if ( rjSequenceAction == null || rjSequenceAction.GetParent() == null )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
this.LogInfo( "Wrapping:", rjSequenceAction );
|
||||
|
||||
this.Wrap( rjSequenceAction );
|
||||
|
||||
this.Name = rjSequenceAction.Name + " Wrapper" ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://cb26oih56el4s
|
||||
|
|
@ -13,8 +13,12 @@ namespace Rokojori
|
|||
[Export]
|
||||
public Node[] disable = new Node[ 0 ];
|
||||
|
||||
|
||||
protected override void _OnTrigger()
|
||||
{
|
||||
CallDeferred( "SetStates" );
|
||||
}
|
||||
|
||||
void SetStates()
|
||||
{
|
||||
Arrays.ForEach( enable, n => NodeState.Enable( n ) );
|
||||
Arrays.ForEach( disable, n => NodeState.Disable( n ) );
|
||||
|
|
|
|||
|
|
@ -15,6 +15,11 @@ namespace Rokojori
|
|||
|
||||
protected override void _OnTrigger()
|
||||
{
|
||||
CallDeferred( "SetNodeState" );
|
||||
}
|
||||
|
||||
void SetNodeState()
|
||||
{
|
||||
NodeState.Configure( target, configuration );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ namespace Rokojori
|
|||
// this.LogInfo( "Moving:", direction );
|
||||
|
||||
target.LookAt( goal.GlobalPosition );
|
||||
var nextRotation = target.GetGlobalQuaternion();
|
||||
var nextRotation = target.GlobalQuaternion();
|
||||
var rotation = Smoothing.Apply( rotationSmoothing, nextRotation, (float) delta );
|
||||
target.SetGlobalQuaternion( rotation );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ namespace Rokojori
|
|||
public AudioStreamPlayer3D player;
|
||||
|
||||
[Export]
|
||||
public SelectorFlag overdrivePreventionFlag;
|
||||
public AudioFlag overdrivePreventionFlag;
|
||||
|
||||
|
||||
[Export]
|
||||
|
|
@ -103,7 +103,7 @@ namespace Rokojori
|
|||
|
||||
player.Play( offset );
|
||||
|
||||
this.LogInfo( "Play sound", offset, HierarchyName.Of( player ) );
|
||||
// this.LogInfo( "Play sound", offset, HierarchyName.Of( player ) );
|
||||
|
||||
if ( overdrivePreventionFlag != null )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -0,0 +1,72 @@
|
|||
|
||||
using Godot;
|
||||
|
||||
|
||||
namespace Rokojori
|
||||
{
|
||||
[GlobalClass, Tool ]
|
||||
public partial class SetTransform : Action
|
||||
{
|
||||
[Export]
|
||||
public Node3D target;
|
||||
|
||||
public enum IgnoreGlobalLocal
|
||||
{
|
||||
Ignore, Global, Local
|
||||
}
|
||||
|
||||
[ExportGroup( "Position" ) ]
|
||||
[Export]
|
||||
public IgnoreGlobalLocal positionMode = IgnoreGlobalLocal.Ignore;
|
||||
|
||||
[Export]
|
||||
public Vector3 position = Vector3.Zero;
|
||||
|
||||
[ExportGroup( "Rotation" ) ]
|
||||
[Export]
|
||||
public IgnoreGlobalLocal rotationMode = IgnoreGlobalLocal.Ignore;
|
||||
|
||||
[Export]
|
||||
public Vector3 rotation = Vector3.Zero;
|
||||
|
||||
public enum IgnoreLocal
|
||||
{
|
||||
Ignore, Local
|
||||
}
|
||||
|
||||
|
||||
[ExportGroup( "Scale" ) ]
|
||||
[Export]
|
||||
public IgnoreLocal scaleMode = IgnoreLocal.Ignore;
|
||||
|
||||
[Export]
|
||||
public Vector3 scale = Vector3.One;
|
||||
|
||||
|
||||
|
||||
|
||||
protected override void _OnTrigger()
|
||||
{
|
||||
if ( target == null )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( positionMode != IgnoreGlobalLocal.Ignore )
|
||||
{
|
||||
target.SetLocalOrGlobalPosition( position, positionMode == IgnoreGlobalLocal.Global );
|
||||
}
|
||||
|
||||
if ( rotationMode != IgnoreGlobalLocal.Ignore )
|
||||
{
|
||||
target.SetLocalOrGlobalRotation( rotation, rotationMode == IgnoreGlobalLocal.Global );
|
||||
}
|
||||
|
||||
if ( scaleMode != IgnoreLocal.Ignore )
|
||||
{
|
||||
target.Scale = scale;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://cnp3xr8gawyi6
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
using Godot;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Rokojori
|
||||
{
|
||||
|
|
@ -13,17 +13,31 @@ namespace Rokojori
|
|||
[Export]
|
||||
public bool queue = true;
|
||||
|
||||
|
||||
protected override void _OnTrigger()
|
||||
{
|
||||
if ( target == null )
|
||||
if ( target == null || Engine.IsEditorHint() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// this.LogInfo( "Remove", HierarchyName.Of( target ) );
|
||||
|
||||
target.SelfDestroy( queue );
|
||||
if ( ! IsInstanceValid( this ) || ! IsInstanceValid( target ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
CallDeferred( "SelfDestroy" );
|
||||
|
||||
}
|
||||
|
||||
void SelfDestroy()
|
||||
{
|
||||
if ( ! IsInstanceValid( target ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
target.SelfDestroy( queue );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -20,9 +20,16 @@ namespace Rokojori
|
|||
public TimeLine timeLine;
|
||||
|
||||
|
||||
bool stopSignal = false;
|
||||
|
||||
|
||||
public void Stop()
|
||||
{
|
||||
stopSignal = true;
|
||||
}
|
||||
|
||||
protected override void _OnTrigger()
|
||||
{
|
||||
|
||||
var id = DispatchStart();
|
||||
|
||||
if ( ! ( action is SequenceAction ) )
|
||||
|
|
@ -62,6 +69,8 @@ namespace Rokojori
|
|||
var finished = ( maxNumRepeats > 0 && executed >= maxNumRepeats ) ||
|
||||
( tl != null && tl.position >= endTime );
|
||||
|
||||
finished = stopSignal || finished;
|
||||
|
||||
if ( finished )
|
||||
{
|
||||
DispatchEnd( id );
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
|
||||
using Godot;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Rokojori
|
||||
{
|
||||
[Tool][GlobalClass, Icon("res://addons/rokojori_action_library/Icons/Parallel.svg") ]
|
||||
public partial class StopRepeatSequence : Action
|
||||
{
|
||||
[Export]
|
||||
public RepeatSequence repeatSequence;
|
||||
|
||||
protected override void _OnTrigger()
|
||||
{
|
||||
repeatSequence.Stop();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://cvw0nxi8migso
|
||||
|
|
@ -73,7 +73,8 @@ namespace Rokojori
|
|||
{
|
||||
DispatchEnd( sequenceID );
|
||||
}
|
||||
}
|
||||
},
|
||||
this
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||
using System.Text.RegularExpressions;
|
||||
using System.Text;
|
||||
using Godot;
|
||||
using System.Linq;
|
||||
|
||||
namespace Rokojori
|
||||
{
|
||||
|
|
@ -64,6 +65,15 @@ namespace Rokojori
|
|||
|
||||
OmniLight3D light = null;
|
||||
|
||||
// [Export]
|
||||
// public Node3D debugProcessIndicator;
|
||||
|
||||
// [Export]
|
||||
// public Vector3 debugProcessIndicatorFull = new Vector3( 5, 0, 0 );
|
||||
|
||||
// [Export]
|
||||
// public StandardMaterial3D debugMaterial;
|
||||
|
||||
public override string[] _GetConfigurationWarnings()
|
||||
{
|
||||
var warnigns = new List<string>();
|
||||
|
|
@ -186,6 +196,10 @@ namespace Rokojori
|
|||
|
||||
_materials = new List<Material>();
|
||||
|
||||
if ( Engine.IsEditorHint() )
|
||||
{
|
||||
_allTargets = null;
|
||||
}
|
||||
|
||||
Arrays.ForEach( allTargets,
|
||||
t =>
|
||||
|
|
@ -203,22 +217,31 @@ namespace Rokojori
|
|||
var end = start + duration;
|
||||
|
||||
|
||||
|
||||
animationID = TimeLineManager.ScheduleSpanIn( timeline, 0, duration,
|
||||
( TimeLineSpan span, TimeLineSpanUpdateType type )=>
|
||||
{
|
||||
{
|
||||
|
||||
// debugProcessIndicator.Position = debugProcessIndicatorFull * span.phase;
|
||||
|
||||
if ( animationID != span.id )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var phase = span.phase;
|
||||
var value = flashCurve.Sample( phase );
|
||||
// debugProcessIndicator.Position = debugProcessIndicatorFull * span.phase;
|
||||
|
||||
var phase = span.phase;
|
||||
|
||||
|
||||
var value = flashCurve.Sample( phase );
|
||||
|
||||
|
||||
var phaseColor = color;
|
||||
phaseColor.A = value * initialAlpha;
|
||||
|
||||
// debugMaterial.AlbedoColor = phaseColor;
|
||||
|
||||
if ( light != null )
|
||||
{
|
||||
light.LightEnergy = value * flashEffect.lightFlashCurveScale;
|
||||
|
|
@ -270,8 +293,10 @@ namespace Rokojori
|
|||
CancelAction( actionID );
|
||||
DispatchEnd( actionID );
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
},
|
||||
this
|
||||
).id;
|
||||
|
||||
|
||||
|
|
@ -298,7 +323,7 @@ namespace Rokojori
|
|||
|
||||
void RemoveMaterials()
|
||||
{
|
||||
if ( _materials.Count != allTargets.Length )
|
||||
if ( _materials == null || allTargets == null || _materials.Count != allTargets.Length )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,9 +8,7 @@
|
|||
[sub_resource type="Resource" id="Resource_54hj8"]
|
||||
script = ExtResource("1_ejko8")
|
||||
color = Color(0.151445, 0.275065, 1, 1)
|
||||
colorMultiply = 1.0
|
||||
rgbMultiply = 3.0
|
||||
alphaMultiply = 1.0
|
||||
|
||||
[sub_resource type="Curve" id="Curve_tp3r5"]
|
||||
_data = [Vector2(0, 0), 0.0, -0.249925, 0, 0, Vector2(0.0955632, 0.982574), -2.27942, -2.27942, 0, 0, Vector2(0.238908, 0.442359), -1.89107, -1.89107, 0, 0, Vector2(0.982935, 0.00670242), -0.229111, 0.0, 0, 0]
|
||||
|
|
@ -18,13 +16,7 @@ point_count = 4
|
|||
|
||||
[sub_resource type="Resource" id="Resource_pwp07"]
|
||||
script = ExtResource("2_3i2og")
|
||||
duration = 1.0
|
||||
durationRandomRange = 0.0
|
||||
delay = 0.0
|
||||
delayRandomRange = 0.0
|
||||
curve = SubResource("Curve_tp3r5")
|
||||
scaleY = 1.0
|
||||
scaleRandomRange = 0.0
|
||||
|
||||
[resource]
|
||||
script = ExtResource("3_65ipm")
|
||||
|
|
|
|||
|
|
@ -8,9 +8,7 @@
|
|||
[sub_resource type="Resource" id="Resource_54hj8"]
|
||||
script = ExtResource("1_yrhv1")
|
||||
color = Color(0, 1, 0.306108, 1)
|
||||
colorMultiply = 1.0
|
||||
rgbMultiply = 2.0
|
||||
alphaMultiply = 1.0
|
||||
|
||||
[sub_resource type="Curve" id="Curve_tp3r5"]
|
||||
_data = [Vector2(0, 0), 0.0, 0.441476, 0, 0, Vector2(0.0957096, 0.959975), -1.01521, -1.01521, 0, 0, Vector2(0.9967, 0.0283505), -0.240285, 0.0, 0, 0]
|
||||
|
|
@ -19,12 +17,7 @@ point_count = 3
|
|||
[sub_resource type="Resource" id="Resource_pwp07"]
|
||||
script = ExtResource("2_cdv3p")
|
||||
duration = 0.6
|
||||
durationRandomRange = 0.0
|
||||
delay = 0.0
|
||||
delayRandomRange = 0.0
|
||||
curve = SubResource("Curve_tp3r5")
|
||||
scaleY = 1.0
|
||||
scaleRandomRange = 0.0
|
||||
|
||||
[resource]
|
||||
script = ExtResource("3_87ql1")
|
||||
|
|
@ -33,6 +26,5 @@ timeline = ExtResource("4_2na64")
|
|||
color = SubResource("Resource_54hj8")
|
||||
lightMode = 1
|
||||
lightRange = 5.0
|
||||
lightFlashCurveScale = 2.0
|
||||
lightHasShadows = true
|
||||
materialMode = 2
|
||||
|
|
|
|||
|
|
@ -7,10 +7,8 @@
|
|||
|
||||
[sub_resource type="Resource" id="Resource_54hj8"]
|
||||
script = ExtResource("1_nmdum")
|
||||
color = Color(0.859799, 0.542989, 0.696896, 1)
|
||||
colorMultiply = 4.0
|
||||
rgbMultiply = 1.0
|
||||
alphaMultiply = 1.0
|
||||
color = Color(0.86, 0.12426996, 0.1118, 0.5254902)
|
||||
colorMultiply = 3.0
|
||||
|
||||
[sub_resource type="Curve" id="Curve_tp3r5"]
|
||||
_data = [Vector2(0, 1), 0.0, -1.0, 0, 1, Vector2(1, 0), -1.0, 0.0, 1, 0]
|
||||
|
|
@ -18,21 +16,11 @@ point_count = 2
|
|||
|
||||
[sub_resource type="Resource" id="Resource_pwp07"]
|
||||
script = ExtResource("2_0sgd7")
|
||||
duration = 0.5
|
||||
durationRandomRange = 0.0
|
||||
delay = 0.0
|
||||
delayRandomRange = 0.0
|
||||
duration = 0.3
|
||||
curve = SubResource("Curve_tp3r5")
|
||||
scaleY = 1.0
|
||||
scaleRandomRange = 0.0
|
||||
|
||||
[resource]
|
||||
script = ExtResource("3_7qcuh")
|
||||
flashCurve = SubResource("Resource_pwp07")
|
||||
timeline = ExtResource("4_rkq1j")
|
||||
color = SubResource("Resource_54hj8")
|
||||
lightMode = 0
|
||||
lightRange = 2.0
|
||||
lightFlashCurveScale = 2.0
|
||||
lightHasShadows = false
|
||||
materialMode = 0
|
||||
|
|
|
|||
|
|
@ -8,9 +8,7 @@
|
|||
[sub_resource type="Resource" id="Resource_ny3sx"]
|
||||
script = ExtResource("1_pp4qy")
|
||||
color = Color(1, 1, 1, 1)
|
||||
colorMultiply = 1.0
|
||||
rgbMultiply = 2.0
|
||||
alphaMultiply = 1.0
|
||||
|
||||
[sub_resource type="Curve" id="Curve_nqaq6"]
|
||||
_data = [Vector2(0, 1), 0.0, 0.0775112, 0, 0, Vector2(0.0779661, 0), 0.0, 0.0, 0, 0, Vector2(0.227119, 0), 0.113556, 0.113556, 0, 0, Vector2(0.244068, 0.913564), 0.0, 0.0, 0, 0, Vector2(0.308475, 0), 0.0, 0.0, 0, 0, Vector2(0.505085, 0), 0.0, 0.0, 0, 0, Vector2(0.518644, 0.697473), 0.0, 0.0, 0, 0, Vector2(0.60339, 0), 0.0, 0.0, 0, 0, Vector2(0.742794, 0), 0.0, 0.0, 0, 0, Vector2(0.749153, 0.438165), 0.0, 0.0, 0, 0, Vector2(0.80678, 0), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0442571, 0.0, 0, 0]
|
||||
|
|
@ -19,20 +17,10 @@ point_count = 12
|
|||
[sub_resource type="Resource" id="Resource_pwp07"]
|
||||
script = ExtResource("2_f6f0o")
|
||||
duration = 0.7
|
||||
durationRandomRange = 0.0
|
||||
delay = 0.0
|
||||
delayRandomRange = 0.0
|
||||
curve = SubResource("Curve_nqaq6")
|
||||
scaleY = 1.0
|
||||
scaleRandomRange = 0.0
|
||||
|
||||
[resource]
|
||||
script = ExtResource("3_dq1j1")
|
||||
flashCurve = SubResource("Resource_pwp07")
|
||||
timeline = ExtResource("4_d6hj6")
|
||||
color = SubResource("Resource_ny3sx")
|
||||
lightMode = 0
|
||||
lightRange = 2.0
|
||||
lightFlashCurveScale = 2.0
|
||||
lightHasShadows = false
|
||||
materialMode = 0
|
||||
|
|
|
|||
|
|
@ -7,9 +7,6 @@
|
|||
[sub_resource type="Resource" id="Resource_27v41"]
|
||||
script = ExtResource("1_sk831")
|
||||
color = Color(1, 1, 1, 1)
|
||||
colorMultiply = 1.0
|
||||
rgbMultiply = 1.0
|
||||
alphaMultiply = 1.0
|
||||
|
||||
[sub_resource type="Curve" id="Curve_idts4"]
|
||||
_data = [Vector2(0, 0), 0.0, 1.0, 0, 1, Vector2(1, 1), 1.0, 0.0, 1, 0]
|
||||
|
|
@ -29,7 +26,4 @@ outCurve = SubResource("Curve_q8jgr")
|
|||
color = SubResource("Resource_27v41")
|
||||
opacityModulationStrength = 0.75
|
||||
opacityModulationDuration = 1.0
|
||||
opacityModulationTransition = 1.0
|
||||
outlineMaterialMode = 0
|
||||
overlayOpacity = 0.1
|
||||
overlayMaterialMode = 0
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ namespace Rokojori
|
|||
}
|
||||
|
||||
var tl = TimeLineManager.Ensure( timeline );
|
||||
var rotation = target.GetGlobalQuaternion() * Quaternion.FromEuler( eulerRotation * (float)tl.delta );
|
||||
var rotation = target.GlobalQuaternion() * Quaternion.FromEuler( eulerRotation * (float)tl.delta );
|
||||
target.SetGlobalQuaternion( rotation );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
[ext_resource type="Script" uid="uid://bec6skfqkb2ci" path="res://addons/rokojori_action_library/Runtime/Animation/Shake/ShakeEffect.cs" id="1_68es8"]
|
||||
[ext_resource type="Script" uid="uid://c5tm02yj1bhhx" path="res://addons/rokojori_action_library/Runtime/Animation/AnimationCurve.cs" id="2_wfmv2"]
|
||||
[ext_resource type="Resource" uid="uid://h6oi6vkj4c2m" path="res://addons/rokojori_action_library/Runtime/Time/TimeLines/RealTime.tres" id="3_h08aw"]
|
||||
[ext_resource type="Resource" uid="uid://ch5nsa6yafs5l" path="res://addons/rokojori_action_library/Runtime/Time/TimeLines/GameTime.tres" id="3_udbmo"]
|
||||
|
||||
[sub_resource type="Curve" id="Curve_j2uji"]
|
||||
_data = [Vector2(0, 1), 0.0, 0.0355988, 0, 0, Vector2(1, 0), -0.101636, 0.0, 0, 0]
|
||||
|
|
@ -11,12 +11,7 @@ point_count = 2
|
|||
[sub_resource type="Resource" id="Resource_jwnpm"]
|
||||
script = ExtResource("2_wfmv2")
|
||||
duration = 0.4
|
||||
durationRandomRange = 0.0
|
||||
delay = 0.0
|
||||
delayRandomRange = 0.0
|
||||
curve = SubResource("Curve_j2uji")
|
||||
scaleY = 1.0
|
||||
scaleRandomRange = 0.0
|
||||
|
||||
[sub_resource type="Curve" id="Curve_b6b7u"]
|
||||
_data = [Vector2(0, 0.368339), 0.0, 3.25035, 0, 0, Vector2(0.264591, 0.73511), 0.0, 0.0, 0, 0, Vector2(1, 0.266458), -0.637268, 0.0, 1, 0]
|
||||
|
|
@ -25,24 +20,17 @@ point_count = 3
|
|||
[sub_resource type="Resource" id="Resource_1s2e6"]
|
||||
script = ExtResource("2_wfmv2")
|
||||
duration = 0.5
|
||||
durationRandomRange = 0.0
|
||||
delay = 0.0
|
||||
delayRandomRange = 0.0
|
||||
curve = SubResource("Curve_b6b7u")
|
||||
scaleY = 30.0
|
||||
scaleRandomRange = 0.0
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_68es8")
|
||||
shakeAmountCurve = SubResource("Resource_jwnpm")
|
||||
shakeChangeFPSCurve = SubResource("Resource_1s2e6")
|
||||
timeline = ExtResource("3_h08aw")
|
||||
smooth = true
|
||||
timeline = ExtResource("3_udbmo")
|
||||
smoothingStrength = 0.325
|
||||
positionShake = Vector3(0.075, 0, 0.075)
|
||||
globalPosition = false
|
||||
repeatAndFlipFirstPosition = true
|
||||
rotationShake = Vector3(1, 1, 20)
|
||||
globalRotation = false
|
||||
scaleShake = Vector3(0.25, 0.25, 0.05)
|
||||
scaleShakeIsRelative = true
|
||||
|
|
|
|||
|
|
@ -179,7 +179,8 @@ namespace Rokojori
|
|||
}
|
||||
|
||||
lastKeyFrame = keyFrame;
|
||||
}
|
||||
},
|
||||
this
|
||||
).id;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,7 +101,8 @@ namespace Rokojori
|
|||
DispatchEnd( actionID );
|
||||
_running = false;
|
||||
}
|
||||
}
|
||||
},
|
||||
this
|
||||
);
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ namespace Rokojori
|
|||
public Vector2 scaleCenter = new Vector2( 0.5f, 0.5f );
|
||||
|
||||
|
||||
public static readonly Texture2DPropertyName _wipeTextureProperty = Texture2DPropertyName.Create( "wipeTexture" );
|
||||
public static readonly Sampler2DPropertyName _wipeTextureProperty = Sampler2DPropertyName.Create( "wipeTexture" );
|
||||
public static readonly Vector2PropertyName _outputViewSizeProperty = Vector2PropertyName.Create( "outputViewSize" );
|
||||
public static readonly Vector2PropertyName _wipeTextureSizeProperty = Vector2PropertyName.Create( "wipeTextureSize" );
|
||||
public static readonly Vector2PropertyName _uvRotationCenterProperty = Vector2PropertyName.Create( "uvRotationCenter" );
|
||||
|
|
|
|||
|
|
@ -0,0 +1,12 @@
|
|||
using Godot;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Rokojori
|
||||
{
|
||||
[GlobalClass,Tool, Icon("res://addons/rokojori_action_library/Icons/SelecorFlag.svg") ]
|
||||
public partial class AudioFlag:SelectorFlag
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://cwsdhnenhdly4
|
||||
|
|
@ -8,11 +8,11 @@ namespace Rokojori
|
|||
public partial class AudioManager:Node
|
||||
{
|
||||
[Export]
|
||||
public AudioManagerData data;
|
||||
public AudioManagerData data = new AudioManagerData();
|
||||
|
||||
Dictionary<SelectorFlag,float> _lastPlayTime = new Dictionary<SelectorFlag, float>();
|
||||
Dictionary<AudioFlag,float> _lastPlayTime = new Dictionary<AudioFlag, float>();
|
||||
|
||||
public float GetLastPlayed( SelectorFlag selectorFlag )
|
||||
public float GetLastPlayed( AudioFlag selectorFlag )
|
||||
{
|
||||
if ( ! _lastPlayTime.ContainsKey( selectorFlag ) )
|
||||
{
|
||||
|
|
@ -22,12 +22,12 @@ namespace Rokojori
|
|||
return _lastPlayTime[ selectorFlag ];
|
||||
}
|
||||
|
||||
public void RecordSoundPlaying( SelectorFlag selectorFlag )
|
||||
public void RecordSoundPlaying( AudioFlag selectorFlag )
|
||||
{
|
||||
_lastPlayTime[ selectorFlag ] = TimeLine.osTime;
|
||||
}
|
||||
|
||||
public bool CanPlay( SelectorFlag selectorFlag, float blockDuration )
|
||||
public bool CanPlay( AudioFlag selectorFlag, float blockDuration )
|
||||
{
|
||||
if ( ! _lastPlayTime.ContainsKey( selectorFlag ) )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -102,6 +102,12 @@ namespace Rokojori
|
|||
if ( Sensors.IsDown( debugCameraToggle ) )
|
||||
{
|
||||
debugCameraActive = ! debugCameraActive;
|
||||
|
||||
if ( debugCameraActive )
|
||||
{
|
||||
Input.MouseMode = Input.MouseModeEnum.Visible;
|
||||
}
|
||||
|
||||
this.LogInfo( debugCameraActive );
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -49,9 +49,9 @@ namespace Rokojori
|
|||
|
||||
void Rotate( float delta )
|
||||
{
|
||||
var currentRotation = Math3D.GetGlobalQuaternion( this );
|
||||
var currentRotation = this.GlobalQuaternion();
|
||||
LookAt( target.GlobalPosition, Vector3.Up, true );
|
||||
var nextRotation = Math3D.GetGlobalQuaternion( this );
|
||||
var nextRotation = this.GlobalQuaternion();
|
||||
|
||||
var smoothedRotation = smoother.SmoothWithCoefficient( currentRotation, nextRotation, rotationSmoothingCoefficient, delta );
|
||||
|
||||
|
|
|
|||
|
|
@ -278,7 +278,7 @@ namespace Rokojori
|
|||
smoothDistance = smoother.SmoothWithCoefficient( smoothDistance, distance, zoomSmoothingCoefficient, delta );
|
||||
GlobalRotation = new Vector3( Mathf.DegToRad( pitch ), Mathf.DegToRad( yaw ), 0 );
|
||||
|
||||
var forward = Math3D.GetGlobalForward( this ) * smoothDistance;
|
||||
var forward = this.GlobalForward() * smoothDistance;
|
||||
|
||||
// this.LogInfo( forward, smoothDistance );
|
||||
GlobalPosition = target + forward;
|
||||
|
|
|
|||
|
|
@ -16,225 +16,62 @@ namespace Rokojori
|
|||
public Node3D target;
|
||||
|
||||
[Export]
|
||||
public Smoothing targetFollowSmoothing = new FrameSmoothing();
|
||||
|
||||
[ExportGroup("Yaw")]
|
||||
|
||||
[Export]
|
||||
public float yawSpeed;
|
||||
public float yaw;
|
||||
|
||||
[Export]
|
||||
public Sensor yawPositiveAxis;
|
||||
public float pitch;
|
||||
|
||||
[Export]
|
||||
public Sensor yawNegativeAxis;
|
||||
|
||||
[Export]
|
||||
public bool roundYaw = false;
|
||||
|
||||
[Export]
|
||||
public int roundedYawResolution = 64;
|
||||
|
||||
[Export]
|
||||
public float yaw = 0;
|
||||
|
||||
[Export]
|
||||
public Smoothing yawSmoothing = new FrameSmoothing();
|
||||
|
||||
[Export]
|
||||
public bool yawGoesBehindPlayer = false;
|
||||
|
||||
[Export]
|
||||
public Smoothing yawToBehingSmoothing = new FrameSmoothing();
|
||||
|
||||
[Export]
|
||||
public float yawBehindDelayDuration = 5;
|
||||
|
||||
[Export]
|
||||
public float yawGoesBehindActivation = 0.1f;
|
||||
|
||||
[Export]
|
||||
public float behindYaw = 0;
|
||||
|
||||
[Export]
|
||||
public float currentYaw = 0;
|
||||
|
||||
[Export]
|
||||
public float bcDelta = 0;
|
||||
|
||||
|
||||
[ExportGroup("Pitch")]
|
||||
|
||||
[Export]
|
||||
public float pitchSpeed;
|
||||
|
||||
[Export]
|
||||
public Sensor pitchPositiveAxis;
|
||||
|
||||
[Export]
|
||||
public Sensor pitchNegativeAxis;
|
||||
|
||||
[Export]
|
||||
public bool pitchIsRelative = false;
|
||||
|
||||
[Export]
|
||||
public float pitch = 0;
|
||||
|
||||
[Export]
|
||||
public float minPitch = -10;
|
||||
|
||||
[Export]
|
||||
public float maxPitch = 80;
|
||||
|
||||
public float normalizedPitch => MathX.NormalizeClamped( pitch, minPitch, maxPitch );
|
||||
|
||||
[Export]
|
||||
public Smoothing pitchSmoothing = new FrameSmoothing();
|
||||
|
||||
[Export]
|
||||
public bool pitchGoesBackToCenter = true;
|
||||
|
||||
[Export]
|
||||
public Smoothing toCenterPitchSmoothing = new FrameSmoothing();
|
||||
|
||||
[Export]
|
||||
public float centerPitchDelayDuration = 5;
|
||||
|
||||
[Export]
|
||||
public float centerPitch = 30;
|
||||
|
||||
[Export]
|
||||
public float centerPitchActivation = 0.1f;
|
||||
|
||||
[ExportGroup("Distance")]
|
||||
[Export]
|
||||
public Curve distanceForPitch = MathX.Curve( 1, 1 );
|
||||
|
||||
[Export]
|
||||
public float distanceScale = 1;
|
||||
|
||||
[ExportGroup("Camera Offset")]
|
||||
[Export]
|
||||
public Vector3 offset;
|
||||
|
||||
|
||||
float smoothedYaw = 0;
|
||||
float smoothedPitch = 0;
|
||||
float smoothedDistance = 0;
|
||||
|
||||
float _centerPitchActivation = 0;
|
||||
float _yawBehindActivation = 0;
|
||||
public ThirdPersonCameraSettings settings;
|
||||
|
||||
public override void _Process( double delta )
|
||||
{
|
||||
if ( Engine.IsEditorHint() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( target == null )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
behindYaw = Math3D.GlobalYawDegrees( target.GlobalForward() * -1 );
|
||||
behindYaw = MathX.NormalizeAngle( behindYaw );
|
||||
|
||||
currentYaw = MathX.NormalizeAngle( yaw );
|
||||
var data = settings.GetActiveDeviceData();
|
||||
|
||||
bcDelta = MathX.NormalizeAngle( MathX.AngleDelta( behindYaw, currentYaw ) );
|
||||
|
||||
var targetPosition = Smoothing.Apply( targetFollowSmoothing, target.GlobalPosition, (float) delta );
|
||||
var targetPosition = Smoothing.Apply( settings.targetFollowSmoothing, target.GlobalPosition, (float) delta );
|
||||
|
||||
|
||||
var yawAxis = Sensors.PolarAxis( yawNegativeAxis, yawPositiveAxis );
|
||||
var pitchAxis = Sensors.PolarAxis( pitchNegativeAxis, pitchPositiveAxis );
|
||||
var yawAxis = Sensors.PolarPowerAxis( data.yawNegativeAxis, data.yawPositiveAxis, 1f, data.yawDeadZone, data.yawPower );
|
||||
var pitchAxis = Sensors.PolarPowerAxis( data.pitchNegativeAxis, data.pitchPositiveAxis, 1f, data.pitchDeadZone, data.pitchPower );
|
||||
|
||||
// this.LogInfo( "YAW:", yawAxis, "PITCH:", pitchAxis );
|
||||
yaw += yawAxis * settings.yawSpeed * data.yawSpeed * (float)delta;
|
||||
|
||||
yaw += yawAxis * yawSpeed * (float)delta;
|
||||
|
||||
if ( yawGoesBehindPlayer )
|
||||
if ( data.pitchIsRelative )
|
||||
{
|
||||
if ( Mathf.Abs( yawAxis ) < yawGoesBehindActivation )
|
||||
{
|
||||
_yawBehindActivation += (float)delta;
|
||||
|
||||
if ( yawGoesBehindPlayer && _yawBehindActivation > yawBehindDelayDuration )
|
||||
{
|
||||
yaw = Smoothing.ApplyDegreesWith( yawToBehingSmoothing, yaw, behindYaw, (float) delta );
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
_yawBehindActivation = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// yaw = MathX.Repeat( yaw, 360f );
|
||||
|
||||
if ( pitchIsRelative )
|
||||
{
|
||||
pitch += pitchAxis * pitchSpeed * (float)delta;
|
||||
pitch = Mathf.Clamp( pitch, minPitch, maxPitch );
|
||||
|
||||
if ( Mathf.Abs( pitchAxis ) < centerPitchActivation )
|
||||
{
|
||||
_centerPitchActivation += (float)delta;
|
||||
|
||||
if ( _centerPitchActivation > centerPitchDelayDuration )
|
||||
{
|
||||
pitch = Smoothing.ApplyWith( toCenterPitchSmoothing, pitch, centerPitch, (float) delta );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_centerPitchActivation = 0;
|
||||
}
|
||||
pitch += pitchAxis * settings.relativePitchSpeed * data.relativePitchSpeed * (float)delta;
|
||||
pitch = Mathf.Clamp( pitch, settings.minPitch, settings.maxPitch );
|
||||
}
|
||||
else
|
||||
{
|
||||
pitch = Mathf.Remap( pitchAxis, -1, 1, minPitch, maxPitch );
|
||||
pitch = Mathf.Remap( pitchAxis, -1, 1, settings.minPitch, settings.maxPitch );
|
||||
}
|
||||
|
||||
|
||||
|
||||
// if ( Mathf.Abs( yaw - smoothedYaw ) > 180 )
|
||||
// {
|
||||
// if ( yaw > smoothedYaw )
|
||||
// {
|
||||
// smoothedYaw += 360;
|
||||
// }
|
||||
// else if ( yaw < smoothedYaw )
|
||||
// {
|
||||
// smoothedYaw -= 360;
|
||||
// }
|
||||
// }
|
||||
|
||||
var appliedYaw = yaw;
|
||||
|
||||
// if ( roundYaw )
|
||||
// {
|
||||
// appliedYaw = MathX.SnapRounded( yaw, 360f/roundedYawResolution );
|
||||
// }
|
||||
var smoothedYaw = Smoothing.ApplyDegrees( settings.yawSmoothing, appliedYaw, (float) delta );
|
||||
|
||||
smoothedYaw = Smoothing.ApplyDegrees( yawSmoothing, appliedYaw, (float) delta );
|
||||
var smoothedPitch = Smoothing.Apply( settings.pitchSmoothing, pitch, (float) delta );
|
||||
|
||||
|
||||
smoothedPitch = Smoothing.Apply( pitchSmoothing, pitch, (float) delta );
|
||||
|
||||
// if ( pitchGoesBackToCenter )
|
||||
// {
|
||||
// pitch = toCenterPitchSmoothing.Smooth( centerPitch, (float) delta );
|
||||
// }
|
||||
|
||||
|
||||
// RJLog.Log( "Pitch", smoothedPitch );
|
||||
|
||||
// smoothedYaw = yaw;
|
||||
// smoothedPitch = pitch;
|
||||
var distance = distanceForPitch.Sample( MathX.NormalizeClamped( pitch, minPitch, maxPitch ) ) * distanceScale;
|
||||
var distance = settings.distanceForPitch.Sample( MathX.NormalizeClamped( pitch, settings.minPitch, settings.maxPitch ) ) * settings.distanceScale;
|
||||
|
||||
GlobalPosition = targetPosition + Math3D.YawPitchRotation( smoothedYaw, smoothedPitch ) * Vector3.Forward * distance;
|
||||
|
||||
LookAt( targetPosition, Vector3.Up, true );
|
||||
|
||||
GlobalPosition += this.GetOrientationBasedGlobalOffset( offset );
|
||||
GlobalPosition += this.GetOrientationBasedGlobalOffset( settings.offset );
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,56 @@
|
|||
|
||||
using Godot;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Rokojori
|
||||
{
|
||||
[Tool]
|
||||
[GlobalClass,Icon("res://addons/rokojori_action_library/Icons/SensorGroup.svg")]
|
||||
public partial class ThirdPersonCameraData: Resource
|
||||
{
|
||||
[Export]
|
||||
public SensorDeviceSelector deviceSelector;
|
||||
|
||||
[ExportGroup("Yaw")]
|
||||
|
||||
[Export]
|
||||
public float yawSpeed = 1.0f;
|
||||
|
||||
[Export]
|
||||
public Sensor yawPositiveAxis;
|
||||
|
||||
[Export]
|
||||
public Sensor yawNegativeAxis;
|
||||
|
||||
[Export]
|
||||
public float yawDeadZone = 0.1f;
|
||||
|
||||
|
||||
[Export]
|
||||
public float yawPower = 1.5f;
|
||||
|
||||
|
||||
|
||||
[ExportGroup("Pitch")]
|
||||
|
||||
[Export]
|
||||
public float relativePitchSpeed = 1.0f;
|
||||
|
||||
[Export]
|
||||
public Sensor pitchPositiveAxis;
|
||||
|
||||
[Export]
|
||||
public Sensor pitchNegativeAxis;
|
||||
|
||||
[Export]
|
||||
public float pitchDeadZone = 0.1f;
|
||||
|
||||
[Export]
|
||||
public float pitchPower = 1.5f;
|
||||
|
||||
[Export]
|
||||
public bool pitchIsRelative = true;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://8b4s4nw4heif
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
|
||||
using Godot;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Rokojori
|
||||
{
|
||||
[Tool]
|
||||
[GlobalClass,Icon("res://addons/rokojori_action_library/Icons/SensorGroup.svg")]
|
||||
public partial class ThirdPersonCameraSettings: Resource
|
||||
{
|
||||
[Export]
|
||||
public Smoothing targetFollowSmoothing = new FrameSmoothing();
|
||||
|
||||
[Export]
|
||||
public Vector3 offset = Vector3.Zero;
|
||||
|
||||
[Export]
|
||||
public Smoothing yawSmoothing = new FrameSmoothing();
|
||||
|
||||
[Export]
|
||||
public Smoothing pitchSmoothing = new FrameSmoothing();
|
||||
|
||||
[Export]
|
||||
public ThirdPersonCameraData[] deviceData = [];
|
||||
|
||||
[ExportGroup("Yaw")]
|
||||
[Export]
|
||||
public float yawSpeed = 1;
|
||||
|
||||
[ExportGroup("Pitch")]
|
||||
[Export]
|
||||
public float relativePitchSpeed = 1;
|
||||
|
||||
[Export]
|
||||
public float minPitch = -10;
|
||||
|
||||
[Export]
|
||||
public float maxPitch = 80;
|
||||
|
||||
|
||||
[ExportGroup("Distance")]
|
||||
[Export]
|
||||
public Curve distanceForPitch = MathX.Curve( 1, 1 );
|
||||
|
||||
[Export]
|
||||
public float distanceScale = 1;
|
||||
|
||||
|
||||
public float GetNormalizedPitch( float pitch )
|
||||
{
|
||||
return MathX.Normalize( pitch, minPitch, maxPitch );
|
||||
}
|
||||
|
||||
public ThirdPersonCameraData GetActiveDeviceData()
|
||||
{
|
||||
var sm = Unique<SensorManager>.Get();
|
||||
|
||||
var lastActive = sm.lastActiveDevice;
|
||||
|
||||
var lastActiveData = deviceData.FindNonNull( d => d.deviceSelector.Selects( lastActive ) );
|
||||
|
||||
return lastActiveData != null ? lastActiveData : deviceData[ 0 ];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://cguitqskambdb
|
||||
|
|
@ -24,7 +24,7 @@ namespace Rokojori
|
|||
{
|
||||
if ( pitchMultiply != null && thirdPersonCamera != null )
|
||||
{
|
||||
var normalizedPitch = thirdPersonCamera.normalizedPitch;
|
||||
var normalizedPitch = thirdPersonCamera.settings.GetNormalizedPitch( thirdPersonCamera.pitch );
|
||||
var sampledPitchMultiply = pitchMultiply.Sample( normalizedPitch );
|
||||
movingForward *= sampledPitchMultiply;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ namespace Rokojori
|
|||
_smoothDistance = Smoothing.Apply( zoomSmoothing, distance, delta );
|
||||
GlobalRotation = new Vector3( Mathf.DegToRad( pitch ), Mathf.DegToRad( yaw ), 0 );
|
||||
|
||||
var forward = Math3D.GetGlobalForward( this ) * _smoothDistance;
|
||||
var forward = this.GlobalForward() * _smoothDistance;
|
||||
target -= moveDirection * delta;
|
||||
GlobalPosition = target + forward;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ namespace Rokojori
|
|||
|
||||
#endif
|
||||
|
||||
d = camera.GlobalDistanceTo( n3 );
|
||||
d = camera.DistanceTo( n3 );
|
||||
}
|
||||
|
||||
fd.SetCenterDistance( d );
|
||||
|
|
|
|||
|
|
@ -5,6 +5,16 @@ namespace Rokojori
|
|||
{
|
||||
public static class ColorX
|
||||
{
|
||||
public static float r( this Vector4 rgba )
|
||||
{
|
||||
return rgba.X;
|
||||
}
|
||||
|
||||
public static Vector3 rgb( this Vector4 rgba )
|
||||
{
|
||||
return new Vector3( rgba.X, rgba.Y, rgba.Z );
|
||||
}
|
||||
|
||||
public static float GetChannel( this Color color, ColorChannelType colorChannelType )
|
||||
{
|
||||
if ( ColorChannelType.Red == colorChannelType )
|
||||
|
|
@ -243,54 +253,7 @@ namespace Rokojori
|
|||
{
|
||||
return new Color( vec.X, vec.Y, b, alpha);
|
||||
}
|
||||
|
||||
public enum EdgeMode
|
||||
{
|
||||
Clamp,
|
||||
Repeat,
|
||||
TransparentBlack,
|
||||
}
|
||||
|
||||
|
||||
public static Color GetPixel( this Image image, int x, int y, EdgeMode mode )
|
||||
{
|
||||
if ( x < 0 || y < 0 || x >= image.GetSize().X || y >= image.GetSize().Y )
|
||||
{
|
||||
if ( mode == EdgeMode.TransparentBlack )
|
||||
{
|
||||
return new Color( 0, 0, 0, 0 );
|
||||
}
|
||||
|
||||
if ( mode == EdgeMode.Repeat )
|
||||
{
|
||||
x = MathX.Repeat( x, image.GetSize().X );
|
||||
y = MathX.Repeat( y, image.GetSize().Y );
|
||||
}
|
||||
|
||||
if ( mode == EdgeMode.Clamp )
|
||||
{
|
||||
x = Mathf.Clamp( x, 0, image.GetSize().X );
|
||||
y = Mathf.Clamp( y, 0, image.GetSize().Y );
|
||||
}
|
||||
}
|
||||
|
||||
return image.GetPixel( x, y );
|
||||
}
|
||||
|
||||
|
||||
public static Color Sample( this Image image, Vector2 uv, EdgeMode mode )
|
||||
{
|
||||
var pixelUV = uv * image.GetSize();
|
||||
var lowUV = pixelUV.FloorToInt().Max( 0 );
|
||||
var highUV = ( lowUV + Vector2I.One ).Min( image.GetSize() - Vector2I.One );
|
||||
|
||||
var mix = pixelUV - lowUV;
|
||||
|
||||
var xTop = Lerp( image.GetPixel( lowUV.X, lowUV.Y, mode ), image.GetPixel( highUV.X, lowUV.Y, mode ), mix.X );
|
||||
var xLow = Lerp( image.GetPixel( highUV.X, lowUV.Y, mode ), image.GetPixel( highUV.X, highUV.Y, mode ), mix.X );
|
||||
|
||||
return Lerp( xTop, xLow, mix.Y );
|
||||
}
|
||||
|
||||
|
||||
public static Color Blend( Color bottom, Color top )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
@tool
|
||||
@icon("res://addons/rokojori_action_library/Icons/RJ_Action.svg")
|
||||
@abstract class_name RJ_Action extends Node
|
||||
|
||||
@export_tool_button( "Create Wrapper" )
|
||||
var createWrapperAction = _createWrapper;
|
||||
|
||||
func _createWrapper() -> void:
|
||||
|
||||
var wrapperClass = load( "res://addons/rokojori_action_library/Runtime/Actions/GDScriptAction.cs" );
|
||||
var wrapper = wrapperClass.new();
|
||||
wrapper.WrapRJAction( self );
|
||||
|
||||
##---
|
||||
|
||||
func _onTrigger( node:GDScriptAction ) -> void:
|
||||
|
||||
pass
|
||||
##---
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://bho0sb0lvooih
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
@tool
|
||||
@icon("res://addons/rokojori_action_library/Icons/RJ_SequenceAction.svg")
|
||||
@abstract class_name RJ_SequenceAction extends Node
|
||||
|
||||
@export_tool_button( "Create Wrapper" )
|
||||
var createWrapperAction = _createWrapper
|
||||
|
||||
|
||||
func _createWrapper() -> void:
|
||||
|
||||
var wrapperClass = load( "res://addons/rokojori_action_library/Runtime/Actions/GDScriptSequenceAction.cs" )
|
||||
var wrapper = wrapperClass.new();
|
||||
wrapper.WrapRJSequenceAction( self );
|
||||
|
||||
## ---
|
||||
|
||||
|
||||
func _onTrigger( node:GDScriptSequenceAction ) -> void:
|
||||
|
||||
pass
|
||||
|
||||
## ---
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://biyqj5eggsnqh
|
||||
|
|
@ -7,6 +7,72 @@ namespace Rokojori
|
|||
{
|
||||
public static class GDScriptNames
|
||||
{
|
||||
public static bool IsOrExtendsFrom( Node node, string className )
|
||||
{
|
||||
if ( node == null )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( node.IsClass( className ) )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
var script = (Script) node.GetScript();
|
||||
|
||||
while ( script != null )
|
||||
{
|
||||
if ( ExtractClassName( script ) == className )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
script = script.GetBaseScript();
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
public static string ExtractClassName( Script script )
|
||||
{
|
||||
if ( script != null )
|
||||
{
|
||||
var className = script.GetClass();
|
||||
|
||||
if ( className != "GDScript" )
|
||||
{
|
||||
if ( className == "CSharpScript" )
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return className;
|
||||
}
|
||||
|
||||
|
||||
|
||||
var scriptPath = script.ResourcePath;
|
||||
|
||||
className = System.IO.Path.GetFileNameWithoutExtension( scriptPath );
|
||||
return className;
|
||||
}
|
||||
|
||||
return "GDScript";
|
||||
}
|
||||
|
||||
public static string ExtractClassName( Node node )
|
||||
{
|
||||
if ( node == null )
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var script = (Script) node.GetScript();
|
||||
|
||||
return ExtractClassName( script );
|
||||
}
|
||||
public static string ToCS( string gdScriptName )
|
||||
{
|
||||
return gdScriptName.ToPascalCase();
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ namespace Rokojori
|
|||
|
||||
}
|
||||
|
||||
var sourceRotation = source.GetGlobalQuaternion();
|
||||
var sourceRotation = source.GlobalQuaternion();
|
||||
|
||||
if ( rotation != sourceRotation )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
using Godot;
|
||||
using System.Text;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Rokojori
|
||||
{
|
||||
public static class BasisExtensions
|
||||
{
|
||||
public static bool IsValid( this Basis self )
|
||||
{
|
||||
return self.Row0.IsValid() && self.Row1.IsValid() && self.Row2.IsValid();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://m7jq7d5if1rb
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
using Godot;
|
||||
namespace Rokojori
|
||||
{
|
||||
public static class ImageExtensions
|
||||
{
|
||||
|
||||
public enum EdgeMode
|
||||
{
|
||||
Clamp,
|
||||
Repeat,
|
||||
TransparentBlack,
|
||||
}
|
||||
|
||||
|
||||
public static Color GetPixel( this Image image, int x, int y, EdgeMode mode )
|
||||
{
|
||||
if ( x < 0 || y < 0 || x >= image.GetSize().X || y >= image.GetSize().Y )
|
||||
{
|
||||
if ( mode == EdgeMode.TransparentBlack )
|
||||
{
|
||||
return new Color( 0, 0, 0, 0 );
|
||||
}
|
||||
|
||||
if ( mode == EdgeMode.Repeat )
|
||||
{
|
||||
x = MathX.Repeat( x, image.GetSize().X );
|
||||
y = MathX.Repeat( y, image.GetSize().Y );
|
||||
}
|
||||
|
||||
if ( mode == EdgeMode.Clamp )
|
||||
{
|
||||
x = Mathf.Clamp( x, 0, image.GetSize().X );
|
||||
y = Mathf.Clamp( y, 0, image.GetSize().Y );
|
||||
}
|
||||
}
|
||||
|
||||
return image.GetPixel( x, y );
|
||||
}
|
||||
|
||||
|
||||
public static Color SampleNearest( this Image image, Vector2 uv, EdgeMode mode = EdgeMode.Clamp )
|
||||
{
|
||||
var pixelUV = uv * image.GetSize();
|
||||
var roundedPixelUV = pixelUV.RoundToInt();
|
||||
return image.GetPixel( roundedPixelUV.X, roundedPixelUV.Y, mode );
|
||||
}
|
||||
|
||||
public static Color SampleLinear( this Image image, Vector2 uv, EdgeMode mode = EdgeMode.Clamp )
|
||||
{
|
||||
var pixelUV = uv * image.GetSize();
|
||||
var lowUV = pixelUV.FloorToInt().Max( 0 );
|
||||
var highUV = ( lowUV + Vector2I.One ).Min( image.GetSize() - Vector2I.One );
|
||||
|
||||
var mix = pixelUV - lowUV;
|
||||
|
||||
var xTop = ColorX.Lerp( image.GetPixel( lowUV.X, lowUV.Y, mode ), image.GetPixel( highUV.X, lowUV.Y, mode ), mix.X );
|
||||
var xLow = ColorX.Lerp( image.GetPixel( highUV.X, lowUV.Y, mode ), image.GetPixel( highUV.X, highUV.Y, mode ), mix.X );
|
||||
|
||||
return ColorX.Lerp( xTop, xLow, mix.Y );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://m8jyxhsvq1kp
|
||||
|
|
@ -0,0 +1,310 @@
|
|||
using Godot;
|
||||
using System.Text;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Rokojori
|
||||
{
|
||||
public static class Node3DExtensions
|
||||
{
|
||||
public static Vector3 ToLocalFromLocal( this Node3D self, Node3D from, Vector3 fromLocalPosition )
|
||||
{
|
||||
var world = from.ToGlobal( fromLocalPosition );
|
||||
return self.ToLocal( world );
|
||||
}
|
||||
|
||||
public static Vector3 ToLocalFromLocalDirection( this Node3D self, Node3D from, Vector3 fromLocalDirection )
|
||||
{
|
||||
var world = from.ToGlobalDirection( fromLocalDirection );
|
||||
return self.ToLocalDirection( world );
|
||||
}
|
||||
|
||||
public static Vector3 ToLocalDirection( this Node3D self, Vector3 globalDirection )
|
||||
{
|
||||
return self.GlobalTransform.Basis.Inverse() * globalDirection;
|
||||
}
|
||||
|
||||
public static Vector3 ToGlobalDirection( this Node3D self, Vector3 localDirection )
|
||||
{
|
||||
return self.GlobalTransform.Basis * localDirection;
|
||||
}
|
||||
|
||||
public static void LookTowards( this Node3D self, Vector3 direction )
|
||||
{
|
||||
self.LookAt( direction + self.GlobalPosition );
|
||||
}
|
||||
|
||||
public static float DistanceTo( this Node3D self, Node3D other )
|
||||
{
|
||||
return self.DirectionTowards( other ).Length();
|
||||
}
|
||||
|
||||
public static Vector3 DirectionTowards( this Node3D self, Node3D other )
|
||||
{
|
||||
return ( other.GlobalPosition - self.GlobalPosition );
|
||||
}
|
||||
|
||||
public static Vector3 DirectionTowards( this Node3D self, Vector3 other )
|
||||
{
|
||||
return ( other - self.GlobalPosition );
|
||||
}
|
||||
|
||||
public static bool IsInRange( this Node3D a, Node3D other, float distance )
|
||||
{
|
||||
return a.DistanceTo( other ) <= distance;
|
||||
}
|
||||
|
||||
public static Vector3 GetLocalOrGlobalPosition( this Node3D node, bool global )
|
||||
{
|
||||
return global ? node.GlobalPosition : node.Position;
|
||||
}
|
||||
|
||||
public static void SetLocalOrGlobalPosition( this Node3D node, Vector3 position, bool global )
|
||||
{
|
||||
if ( global )
|
||||
{
|
||||
node.GlobalPosition = position;
|
||||
}
|
||||
else
|
||||
{
|
||||
node.Position = position;
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetLocalOrGlobalRotation( this Node3D node, Vector3 rotation, bool global )
|
||||
{
|
||||
if ( global )
|
||||
{
|
||||
node.GlobalRotation = rotation;
|
||||
}
|
||||
else
|
||||
{
|
||||
node.Rotation = rotation;
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetGlobalPose( this Node3D node, Vector3 position, Quaternion rotation )
|
||||
{
|
||||
node.SetGlobalQuaternion( rotation );
|
||||
node.GlobalPosition = position;
|
||||
}
|
||||
|
||||
public static void SetGlobalPose( this Node3D node, Pose pose )
|
||||
{
|
||||
node.SetGlobalPose( pose.position, pose.rotation );
|
||||
}
|
||||
|
||||
public static Pose GetGlobalPose( this Node3D node )
|
||||
{
|
||||
return Pose.From( node );
|
||||
}
|
||||
|
||||
public static void CopyGlobalPoseFrom( this Node3D node, Node3D other )
|
||||
{
|
||||
node.SetGlobalPose( other.GetGlobalPose() );
|
||||
}
|
||||
|
||||
public static void SetGlobalQuaternion( this Node3D node, Quaternion quaternion )
|
||||
{
|
||||
var localScale = node.Scale;
|
||||
node.GlobalBasis = new Basis( quaternion );
|
||||
node.Scale = localScale;
|
||||
}
|
||||
|
||||
public static void SetLocalQuaternion( this Node3D node, Quaternion quaternion )
|
||||
{
|
||||
var localScale = node.Scale;
|
||||
node.Basis = new Basis( quaternion );
|
||||
node.Scale = localScale;
|
||||
}
|
||||
|
||||
public static void LookTowards( this Node3D node, Vector3 forwardDirection, Vector3 upDirection, Quaternion rotation )
|
||||
{
|
||||
node.LookTowards( forwardDirection, upDirection );
|
||||
node.SetGlobalQuaternion( node.GlobalQuaternion() * rotation );
|
||||
}
|
||||
|
||||
public static void LookTowards( this Node3D node, Vector3 forward, Vector3 up, Vector3? up2 = null )
|
||||
{
|
||||
if ( forward == up )
|
||||
{
|
||||
up = up2 == null ? Vector3.Back : (Vector3)up2;
|
||||
}
|
||||
|
||||
node.LookAt( forward + node.GlobalPosition, up );
|
||||
}
|
||||
|
||||
|
||||
public static Vector3 GetGlobalOffset( this Node3D node, Vector3 direction )
|
||||
{
|
||||
return direction.X * node.GlobalRight() +
|
||||
direction.Y * node.GlobalUp() +
|
||||
direction.Z * node.GlobalForward() ;
|
||||
}
|
||||
|
||||
public static Vector3 GlobalForward( this Node3D node )
|
||||
{
|
||||
return -node.GlobalBasis.Z;
|
||||
}
|
||||
|
||||
public static Vector3 GetPosition( this Node3D node, bool global = false )
|
||||
{
|
||||
return global ? node.GlobalPosition : node.Position;
|
||||
}
|
||||
|
||||
public static Vector3 GlobalUp( this Node3D node )
|
||||
{
|
||||
return node.GlobalBasis.Y;
|
||||
}
|
||||
|
||||
|
||||
public static Vector3 GlobalRight( this Node3D node )
|
||||
{
|
||||
return node.GlobalBasis.X;
|
||||
}
|
||||
|
||||
public static void SetGlobalX( this Node3D node, float x )
|
||||
{
|
||||
var gp = node.GlobalPosition;
|
||||
|
||||
gp.X = x;
|
||||
|
||||
node.GlobalPosition = gp;
|
||||
}
|
||||
|
||||
public static void SetGlobalY( this Node3D node, float y )
|
||||
{
|
||||
var gp = node.GlobalPosition;
|
||||
|
||||
gp.Y = y;
|
||||
|
||||
node.GlobalPosition = gp;
|
||||
}
|
||||
|
||||
public static void SetGlobalZ( this Node3D node, float z )
|
||||
{
|
||||
var gp = node.GlobalPosition;
|
||||
|
||||
gp.Z = z;
|
||||
|
||||
node.GlobalPosition = gp;
|
||||
}
|
||||
|
||||
public static void SetLocalX( this Node3D node, float x )
|
||||
{
|
||||
var gp = node.Position;
|
||||
|
||||
gp.X = x;
|
||||
|
||||
node.Position = gp;
|
||||
}
|
||||
|
||||
public static void SetLocalY( this Node3D node, float y )
|
||||
{
|
||||
var gp = node.Position;
|
||||
|
||||
gp.Y = y;
|
||||
|
||||
node.Position = gp;
|
||||
}
|
||||
|
||||
public static void SetLocalZ( this Node3D node, float z )
|
||||
{
|
||||
var gp = node.Position;
|
||||
|
||||
gp.Z = z;
|
||||
|
||||
node.Position = gp;
|
||||
}
|
||||
|
||||
public static Vector3 GetOrientationBasedGlobalOffset( this Node3D node, Vector3 offset )
|
||||
{
|
||||
return offset.X * node.GlobalRight() + offset.Y * node.GlobalUp() + offset.Z * node.GlobalForward();
|
||||
}
|
||||
|
||||
|
||||
public static Box3 GetWorldBox( this Node3D node, bool onlyVisible = true )
|
||||
{
|
||||
var aabb = GetWorldBounds( node, onlyVisible );
|
||||
|
||||
return aabb == null ? null : ( (Aabb)aabb).ToBox3();
|
||||
}
|
||||
|
||||
public static Aabb? GetWorldBounds( this Node3D node, bool onlyVisible = true )
|
||||
{
|
||||
return node.GetWorldBoundsFrom( onlyVisible );
|
||||
}
|
||||
|
||||
public static Aabb? GetWorldBoundsFrom( this Node3D node, bool onlyVisible = true )
|
||||
{
|
||||
Aabb? worldBounds = null;
|
||||
|
||||
Nodes.ForEach<VisualInstance3D>( node,
|
||||
( vi )=>
|
||||
{
|
||||
if ( onlyVisible && ! vi.IsVisibleInTree() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var nBounds = vi.GetAabb();
|
||||
|
||||
nBounds.Size *= Math3D.GetGlobalUniScale( vi );
|
||||
nBounds.Position += vi.GlobalPosition;
|
||||
nBounds.End += vi.GlobalPosition;
|
||||
|
||||
worldBounds = worldBounds == null ? nBounds : ( ((Aabb)worldBounds).Merge( nBounds ) );
|
||||
}
|
||||
);
|
||||
|
||||
return worldBounds;
|
||||
}
|
||||
|
||||
|
||||
public static Quaternion GlobalQuaternion( this Node3D self )
|
||||
{
|
||||
return self.GlobalBasis.GetRotationQuaternion();
|
||||
}
|
||||
|
||||
public static Quaternion GlobalYawQuaterntion( this Node3D self )
|
||||
{
|
||||
return Math3D.RotateY( self.GlobalYawRadians() + Mathf.Pi );
|
||||
}
|
||||
|
||||
public static float GlobalYawDegrees( this Node3D node3D )
|
||||
{
|
||||
return Math3D.GlobalYawDegrees( node3D.GlobalForward() );
|
||||
}
|
||||
|
||||
public static float GlobalYawRadians( this Node3D node3D )
|
||||
{
|
||||
return Math3D.GlobalYaw( node3D.GlobalForward() );
|
||||
}
|
||||
|
||||
public static Vector2 GlobalXZ( this Node3D n )
|
||||
{
|
||||
var v = n.GlobalPosition;
|
||||
return new Vector2( v.X, v.Z );
|
||||
}
|
||||
|
||||
public static void SetGlobalXZ( this Node3D n, Vector2 xz )
|
||||
{
|
||||
var p = n.GlobalPosition;
|
||||
p.X = xz.X;
|
||||
p.Z = xz.Y;
|
||||
|
||||
n.GlobalPosition = p;
|
||||
}
|
||||
|
||||
public static void SetGlobalYaw( this Node3D n, float yawRadians )
|
||||
{
|
||||
n.SetGlobalQuaternion( Math3D.RotateY( yawRadians ) );
|
||||
}
|
||||
|
||||
public static void SetGlobalYawDegrees( this Node3D n, float yawDegrees )
|
||||
{
|
||||
n.SetGlobalQuaternion( Math3D.RotateY( yawDegrees * MathX.DegreesToRadians ) );
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://bf32gapbxoe4x
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
using Godot;
|
||||
using System.Text;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Rokojori
|
||||
{
|
||||
public static class QuaternionExtensions
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://dkcrw7m7aw6ty
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
using Godot;
|
||||
using System.Text;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Rokojori
|
||||
{
|
||||
public static class Transform3DExtensions
|
||||
{
|
||||
public static bool IsValid( this Transform3D self )
|
||||
{
|
||||
return self.Origin.IsValid() && self.Basis.IsValid();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://cdfiwablm4a6q
|
||||
|
|
@ -39,6 +39,14 @@ namespace Rokojori
|
|||
var filesystem = EditorInterface.Singleton.GetResourceFilesystem();
|
||||
filesystem.ReimportFiles( [ path ] );
|
||||
|
||||
filesystem.UpdateFile( path );
|
||||
|
||||
if ( path.ToLower().EndsWith( "gdshader" ) )
|
||||
{
|
||||
var shader = ResourceLoader.Load<Shader>( path, null, ResourceLoader.CacheMode.Ignore );
|
||||
EditorInterface.Singleton.EditResource( shader );
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ namespace Rokojori
|
|||
public static void Configure( Node n, bool processEnabled, bool inputEnabled, bool physicsEnabled, bool signalsEnabled,
|
||||
Node.ProcessModeEnum processMode, bool visible )
|
||||
{
|
||||
if ( n == null )
|
||||
if ( n == null || ! Node.IsInstanceValid( n ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -367,6 +367,22 @@ namespace Rokojori
|
|||
return CreateChildIn<T>( parent, name );
|
||||
}
|
||||
|
||||
|
||||
public static T CreateChild<T>( this Node parent, PackedScene scene, string name = null ) where T:Node,new()
|
||||
{
|
||||
var instance = scene.Instantiate<T>();
|
||||
|
||||
parent.AddChild( instance );
|
||||
instance.Owner = parent.Owner;
|
||||
|
||||
if ( name != null )
|
||||
{
|
||||
instance.Name = name;
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
public static T GetOrCreateChild<T>( this Node parent, string name = null ) where T:Node,new()
|
||||
{
|
||||
var child = Nodes.GetDirectChild<T>( parent );
|
||||
|
|
@ -387,7 +403,7 @@ namespace Rokojori
|
|||
|
||||
if ( rotation != null )
|
||||
{
|
||||
Math3D.SetLocalQuaternion( c, (Quaternion)rotation );
|
||||
c.SetLocalQuaternion( (Quaternion)rotation );
|
||||
}
|
||||
|
||||
return c;
|
||||
|
|
@ -421,7 +437,7 @@ namespace Rokojori
|
|||
|
||||
if ( rotation != null )
|
||||
{
|
||||
Math3D.SetGlobalQuaternion( c, (Quaternion)rotation );
|
||||
c.SetGlobalQuaternion( (Quaternion)rotation );
|
||||
}
|
||||
|
||||
return c;
|
||||
|
|
@ -435,7 +451,7 @@ namespace Rokojori
|
|||
|
||||
if ( rotation != null )
|
||||
{
|
||||
Math3D.SetGlobalQuaternion( c, (Quaternion)rotation );
|
||||
c.SetGlobalQuaternion( (Quaternion)rotation );
|
||||
}
|
||||
|
||||
return c;
|
||||
|
|
@ -449,7 +465,7 @@ namespace Rokojori
|
|||
|
||||
if ( rotation != null )
|
||||
{
|
||||
Math3D.SetGlobalQuaternion( c, (Quaternion)rotation );
|
||||
c.SetGlobalQuaternion( (Quaternion)rotation );
|
||||
}
|
||||
|
||||
return c;
|
||||
|
|
@ -677,6 +693,35 @@ namespace Rokojori
|
|||
}
|
||||
}
|
||||
|
||||
public static void CallInProcess( this Node node, System.Action action )
|
||||
{
|
||||
var tm = TimeLineManager.Get();
|
||||
|
||||
if ( ! tm.inProcess )
|
||||
{
|
||||
TimeLineManager.ScheduleCallback(
|
||||
tm.realtimeTimeline,
|
||||
( cb ) =>
|
||||
{
|
||||
try
|
||||
{
|
||||
action();
|
||||
}
|
||||
catch ( System.Exception e )
|
||||
{
|
||||
node.LogError( e );
|
||||
}
|
||||
|
||||
cb.done = true;
|
||||
}
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
action();
|
||||
}
|
||||
}
|
||||
|
||||
public static void SelfDestroy( this Node node, bool queue = true )
|
||||
{
|
||||
var parent = node.GetParent();
|
||||
|
|
@ -773,6 +818,41 @@ namespace Rokojori
|
|||
return list;
|
||||
}
|
||||
|
||||
public static void AddChildAt( this Node parent, Node child, int index, bool setOwnership = true )
|
||||
{
|
||||
parent.AddChild( child );
|
||||
parent.MoveChild( child, index );
|
||||
|
||||
if ( ! setOwnership )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
child.Owner = parent.Owner;
|
||||
}
|
||||
|
||||
public static void AddSiblingBefore( this Node referenceSibling, Node siblingToInsert, bool includeInternal = false )
|
||||
{
|
||||
var parent = referenceSibling.GetParent();
|
||||
var index = referenceSibling.GetIndex( includeInternal );
|
||||
AddChildAt( parent, siblingToInsert, index );
|
||||
}
|
||||
|
||||
public static void AddSiblingAfter( this Node referenceSibling, Node siblingToInsert, bool includeInternal = false )
|
||||
{
|
||||
var parent = referenceSibling.GetParent();
|
||||
var index = referenceSibling.GetIndex( includeInternal );
|
||||
|
||||
AddChildAt( parent, siblingToInsert, index );
|
||||
}
|
||||
|
||||
public static void Wrap( this Node reference, Node other )
|
||||
{
|
||||
other.AddSiblingBefore( reference );
|
||||
other.RemoveFromParent();
|
||||
reference.AddChild( other );
|
||||
other.Owner = reference.Owner;
|
||||
}
|
||||
|
||||
public static int NumDirectChildrenOf<T>( this Node parent ) where T:Node
|
||||
{
|
||||
|
|
@ -867,6 +947,28 @@ namespace Rokojori
|
|||
}
|
||||
}
|
||||
|
||||
public static void ForEachDirectChild( this Node parent, Predicate<Node> selector, Action<Node> action )
|
||||
{
|
||||
if ( parent == null || action == null )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var numChildren = parent.GetChildCount();
|
||||
|
||||
for ( int i = 0; i < numChildren; i++ )
|
||||
{
|
||||
var node = parent.GetChild( i );
|
||||
|
||||
if ( ! selector( node ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
action( node );
|
||||
}
|
||||
}
|
||||
|
||||
public static List<U> MapDirectChildren<T,U>( Node parent, System.Func<T,U> mapper ) where T:Node
|
||||
{
|
||||
var list = new List<U>();
|
||||
|
|
|
|||
|
|
@ -56,25 +56,38 @@ namespace Rokojori
|
|||
ProcessActions( (float) delta );
|
||||
}
|
||||
|
||||
// positionSmoother.CopyPosition( graphics, body, rotationSmoothingDuration, delta );
|
||||
// rotationSmoother.CopyRotation( graphics, body, positionSmoothingDuration, delta );
|
||||
|
||||
graphics.GlobalPosition = Smoothing.Apply( positionSmoothing, body.GlobalPosition, this.delta );
|
||||
graphics.SetGlobalQuaternion( Smoothing.Apply( rotationSmoothing, body.GetGlobalQuaternion(), this.delta ) );
|
||||
graphics.SetGlobalQuaternion( Smoothing.Apply( rotationSmoothing, body.GlobalQuaternion(), this.delta ) );
|
||||
|
||||
|
||||
if ( body.IsOnFloor() )
|
||||
{
|
||||
lastGroundedHeight = graphics.GlobalPosition.Y;
|
||||
}
|
||||
|
||||
var grounedPosition = graphics.GlobalPosition;
|
||||
grounedPosition.Y = lastGroundedHeight;
|
||||
groundedTransform.GlobalPosition = grounedPosition;
|
||||
groundedTransform.SetGlobalQuaternion( graphics.GetGlobalQuaternion() );
|
||||
|
||||
AssignGroundedTransform();
|
||||
|
||||
|
||||
|
||||
// Pose.CopyTo( body, graphics );
|
||||
}
|
||||
|
||||
void AssignGroundedTransform()
|
||||
{
|
||||
if ( groundedTransform == null )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
var groundedPosition = graphics.GlobalPosition;
|
||||
groundedPosition.Y = lastGroundedHeight;
|
||||
|
||||
groundedTransform.GlobalPosition = groundedPosition;
|
||||
groundedTransform.SetGlobalQuaternion( graphics.GlobalQuaternion() );
|
||||
}
|
||||
|
||||
public override void _PhysicsProcess( double delta )
|
||||
{
|
||||
if ( CharacterUpdateMode.Physics_Process == characterUpdateMode )
|
||||
|
|
@ -100,6 +113,8 @@ namespace Rokojori
|
|||
return;
|
||||
}
|
||||
|
||||
c.SetCharacterController( this );
|
||||
|
||||
Action.Trigger( c );
|
||||
}
|
||||
);
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@ namespace Rokojori
|
|||
[Export]
|
||||
public bool enabled = true;
|
||||
|
||||
[Export]
|
||||
public CharacterController controller;
|
||||
CharacterController _controller;
|
||||
public CharacterController controller => _controller;
|
||||
|
||||
[Export]
|
||||
public Condition condition;
|
||||
|
|
@ -21,29 +21,41 @@ namespace Rokojori
|
|||
[Export]
|
||||
public SceneCondition sceneCondition;
|
||||
|
||||
public void SetCharacterController( CharacterController cc )
|
||||
{
|
||||
_controller = cc;
|
||||
}
|
||||
|
||||
|
||||
public CharacterBody3D body => controller.body;
|
||||
|
||||
public void AddVelocity( Vector3 velocity )
|
||||
public void AddVelocity( Vector3 velocity, float delta = -1 )
|
||||
{
|
||||
body.Velocity += velocity * controller.delta;
|
||||
delta = delta < 0 ? controller.delta : delta;
|
||||
|
||||
body.Velocity += velocity * delta;
|
||||
}
|
||||
|
||||
public void SetVelocity( Vector3 velocity )
|
||||
public void SetScaledVelocity( float scale )
|
||||
{
|
||||
body.Velocity *= scale;
|
||||
}
|
||||
|
||||
public void SetVelocity( Vector3 velocity, float delta = -1 )
|
||||
{
|
||||
body.Velocity = velocity * controller.delta;
|
||||
delta = delta < 0 ? controller.delta : delta;
|
||||
body.Velocity = velocity * delta;
|
||||
}
|
||||
|
||||
public void Velocity( Vector3 velocity, bool replace )
|
||||
public void Velocity( Vector3 velocity, bool replace, float delta = -1 )
|
||||
{
|
||||
if ( replace )
|
||||
{
|
||||
SetVelocity( velocity );
|
||||
SetVelocity( velocity, delta );
|
||||
}
|
||||
else
|
||||
{
|
||||
AddVelocity( velocity );
|
||||
AddVelocity( velocity, delta );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,10 @@ namespace Rokojori
|
|||
[ExportGroup("Movement")]
|
||||
|
||||
[Export]
|
||||
public float moveSpeed;
|
||||
public float moveSpeed = 10f;
|
||||
|
||||
[Export]
|
||||
public float minSpeed = 0f;
|
||||
|
||||
[Export]
|
||||
public CharacterMovementType controllerMovementType;
|
||||
|
|
@ -43,6 +46,9 @@ namespace Rokojori
|
|||
[Export]
|
||||
public CharacterMovementType currentMovementType;
|
||||
|
||||
[Export]
|
||||
public CharacterMovementType[] deviceMovementTypes = [];
|
||||
|
||||
[Export]
|
||||
public Smoothing onFloorMovementSmoothing = new FrameSmoothing();
|
||||
|
||||
|
|
@ -80,8 +86,15 @@ namespace Rokojori
|
|||
|
||||
protected CharacterMovementData characterMovementData = new CharacterMovementData();
|
||||
|
||||
|
||||
[Export]
|
||||
public bool lookAlwaysForward = false;
|
||||
[Export]
|
||||
public Smoothing lookAlwaysForwardSmoothing;
|
||||
|
||||
|
||||
Vector3 _smoothedMovement;
|
||||
public Vector3 smoothedMovement => _smoothedMovement;
|
||||
|
||||
protected override void _OnTrigger()
|
||||
{
|
||||
var onFloor = body.IsOnFloor();
|
||||
|
|
@ -89,8 +102,19 @@ namespace Rokojori
|
|||
|
||||
characterMovementData.Reset( this );
|
||||
|
||||
var sm = Unique<SensorManager>.Get();
|
||||
if ( sm == null )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var activeDevice = sm.lastActiveDevice;
|
||||
|
||||
currentMovementType = deviceMovementTypes.FindNonNull( d => d.deviceSelector.Selects( activeDevice ) );
|
||||
|
||||
if ( currentMovementType == null )
|
||||
{
|
||||
// this.LogInfo( "No device found:", activeDevice == null ? "null" : activeDevice.GetType().Name );
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -109,6 +133,9 @@ namespace Rokojori
|
|||
if ( adjustRotation )
|
||||
{
|
||||
var nextRotation = Math3D.LookRotation( characterMovementData.forwardDirection );
|
||||
|
||||
|
||||
|
||||
var speed = MathX.Clamp01( characterMovementData.movement.Length() / moveSpeed );
|
||||
|
||||
if ( speed > 0 )
|
||||
|
|
@ -127,21 +154,29 @@ namespace Rokojori
|
|||
rotation = rotationSmoothing.Smooth( nextRotation, controller.delta );
|
||||
body.SetGlobalQuaternion( rotation );
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
var smoothedMovement = Vector3.Zero;
|
||||
if ( lookAlwaysForward )
|
||||
{
|
||||
var nextRotation = directionSource.GlobalYawQuaterntion();
|
||||
body.SetGlobalQuaternion( Smoothing.Apply( lookAlwaysForwardSmoothing, nextRotation, controller.delta ) );
|
||||
}
|
||||
|
||||
// var smoothedMovement = Vector3.Zero;
|
||||
|
||||
if ( onFloor )
|
||||
{
|
||||
smoothedMovement = onFloorMovementSmoothing.Smooth( characterMovementData.movement, controller.delta );
|
||||
_smoothedMovement = onFloorMovementSmoothing.Smooth( characterMovementData.movement, controller.delta );
|
||||
}
|
||||
else
|
||||
{
|
||||
smoothedMovement = inAirMovementSmoothing.Smooth( characterMovementData.movement, controller.delta );
|
||||
_smoothedMovement = inAirMovementSmoothing.Smooth( characterMovementData.movement, controller.delta );
|
||||
}
|
||||
|
||||
var wasMoving = _moving;
|
||||
_moving = smoothedMovement.Length() > movingSpeedTreshold;
|
||||
_moving = _smoothedMovement.Length() > movingSpeedTreshold;
|
||||
|
||||
if ( wasMoving != _moving )
|
||||
{
|
||||
|
|
@ -155,7 +190,7 @@ namespace Rokojori
|
|||
}
|
||||
}
|
||||
|
||||
Velocity( smoothedMovement, onFloor );
|
||||
Velocity( _smoothedMovement, onFloor );
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,8 +7,11 @@ namespace Rokojori
|
|||
{
|
||||
[Tool]
|
||||
[GlobalClass]
|
||||
public partial class CharacterMovementType:Resource
|
||||
public abstract partial class CharacterMovementType:Resource
|
||||
{
|
||||
[Export]
|
||||
public DefaultSensorDeviceSelector deviceSelector;
|
||||
|
||||
public virtual void ProcessMovement( CharacterMovementData characterMovementData )
|
||||
{
|
||||
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ namespace Rokojori
|
|||
|
||||
var movement = forwardDirection * Sensors.PolarAxis( backwards, forward ) * characterMovement.moveSpeed;
|
||||
|
||||
movement += rightDirection * Sensors.PolarAxis( strafeLeft, strafeRight ) * characterMovement.moveSpeed * strafeSpeedMultiply ;
|
||||
movement += rightDirection * Sensors.PolarAxis( strafeLeft, strafeRight ) * characterMovement.moveSpeed * strafeSpeedMultiply;
|
||||
|
||||
characterMovementData.movement = movement;
|
||||
characterMovementData.isMovingForward = forward.isActive;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
using Godot;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Godot.Collections;
|
||||
|
||||
namespace Rokojori
|
||||
{
|
||||
[Tool]
|
||||
[GlobalClass, Icon("res://addons/rokojori_action_library/Icons/CCMoveAndSlide.svg")]
|
||||
public partial class ProcessVelocity:CharacterControllerAction
|
||||
{
|
||||
[Export]
|
||||
public float velocityScale = 0.1f;
|
||||
|
||||
protected override void _OnTrigger()
|
||||
{
|
||||
SetScaledVelocity( velocityScale );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://ch6tcwvvw2dl1
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
using Godot;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Godot.Collections;
|
||||
|
||||
namespace Rokojori
|
||||
{
|
||||
public enum CollisionPhase
|
||||
{
|
||||
Entered,
|
||||
Inside,
|
||||
Exit
|
||||
}
|
||||
|
||||
[Tool]
|
||||
[GlobalClass,Icon("res://addons/rokojori_action_library/Icons/Collidable.svg")]
|
||||
public partial class Collidable:Node3D
|
||||
{
|
||||
[Export]
|
||||
public CollisionFlag[] collisionTypes;
|
||||
|
||||
[Export]
|
||||
public Action onEntered;
|
||||
|
||||
[Export]
|
||||
public Node3D onEnteredColliderPose;
|
||||
|
||||
[Export]
|
||||
public Action onInside;
|
||||
|
||||
[Export]
|
||||
public Node3D onInsideColliderPose;
|
||||
|
||||
[Export]
|
||||
public Action onExit;
|
||||
|
||||
[Export]
|
||||
public Node3D onExitColliderPose;
|
||||
|
||||
public bool IsCollidingWith( Collider collider )
|
||||
{
|
||||
if ( ( collisionTypes == null || collisionTypes.Length == 0 ) && collider.collisionType == null )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if ( collisionTypes == null )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return collisionTypes.IndexOf( collider.collisionType ) != -1;
|
||||
}
|
||||
|
||||
public void Collide( Collider collider, CollisionPhase phase )
|
||||
{
|
||||
_Collide( collider, phase );
|
||||
|
||||
if ( phase == CollisionPhase.Entered )
|
||||
{
|
||||
if ( onEnteredColliderPose != null )
|
||||
{
|
||||
onEnteredColliderPose.CopyGlobalPoseFrom( collider.area );
|
||||
}
|
||||
|
||||
Action.Trigger( collider.onEntered );
|
||||
Action.Trigger( onEntered );
|
||||
}
|
||||
else if ( phase == CollisionPhase.Inside )
|
||||
{
|
||||
if ( onInsideColliderPose != null )
|
||||
{
|
||||
onInsideColliderPose.CopyGlobalPoseFrom( collider.area );
|
||||
}
|
||||
|
||||
Action.Trigger( collider.onInside );
|
||||
Action.Trigger( onInside );
|
||||
}
|
||||
else if ( phase == CollisionPhase.Exit )
|
||||
{
|
||||
if ( onExitColliderPose != null )
|
||||
{
|
||||
onExitColliderPose.CopyGlobalPoseFrom( collider.area );
|
||||
}
|
||||
|
||||
Action.Trigger( collider.onExit );
|
||||
Action.Trigger( onExit );
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void _Collide( Collider collider, CollisionPhase phase )
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://dbgwebayabwd5
|
||||
|
|
@ -0,0 +1,121 @@
|
|||
using Godot;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Rokojori
|
||||
{
|
||||
[Tool]
|
||||
[GlobalClass,Icon("res://addons/rokojori_action_library/Icons/Collider.svg")]
|
||||
public partial class Collider:Node, iNodeState
|
||||
{
|
||||
[Export]
|
||||
public Area3D area;
|
||||
|
||||
[Export]
|
||||
public CollisionFlag collisionType;
|
||||
|
||||
[Export]
|
||||
public Action onEntered;
|
||||
|
||||
[Export]
|
||||
public Action onInside;
|
||||
|
||||
[Export]
|
||||
public Action onExit;
|
||||
|
||||
Dictionary<Collidable,System.Action> _inside = new Dictionary<Collidable,System.Action>();
|
||||
|
||||
public void OnNodeStateChanged()
|
||||
{
|
||||
if ( ! IsProcessing() || ! IsPhysicsProcessing() || Node.ProcessModeEnum.Disabled == this.ProcessMode )
|
||||
{
|
||||
// this.LogInfo( "Clearing nodes" );
|
||||
_inside.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
if ( area == null )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
area.AreaEntered += TriggerOnEnter;
|
||||
area.BodyEntered += TriggerOnEnter;
|
||||
|
||||
area.AreaExited += TriggerOnExited;
|
||||
area.BodyExited += TriggerOnExited;
|
||||
}
|
||||
|
||||
|
||||
void TriggerOnEnter( Node n )
|
||||
{
|
||||
if ( ! Math3D.IsValid( area.GlobalPosition ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var collidable = n.Get<Collidable>();
|
||||
|
||||
if ( collidable == null || ! collidable.IsCollidingWith( this ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
collidable.Collide( this, CollisionPhase.Entered );
|
||||
|
||||
if ( onInside == null )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var tm = Unique<TimeLineManager>.Get();
|
||||
|
||||
if ( tm == null )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var callback = ()=>
|
||||
{
|
||||
collidable.Collide( this, CollisionPhase.Inside );
|
||||
};
|
||||
|
||||
_inside[ collidable ] = callback;
|
||||
tm.AddProcessCallback( callback );
|
||||
|
||||
}
|
||||
|
||||
void TriggerOnExited( Node n )
|
||||
{
|
||||
var collidable = n.Get<Collidable>();
|
||||
|
||||
if ( collidable == null || ! collidable.IsCollidingWith( this ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
collidable.Collide( this, CollisionPhase.Exit );
|
||||
|
||||
if ( ! _inside.ContainsKey( collidable ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var tm = Unique<TimeLineManager>.Get();
|
||||
|
||||
var callback = _inside[ collidable ];
|
||||
_inside.Remove( collidable );
|
||||
|
||||
if ( tm == null )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
tm.RemoveProcessCallback( callback );
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://xnupkyu3042b
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
using Godot;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Godot.Collections;
|
||||
using System.Drawing;
|
||||
|
||||
namespace Rokojori
|
||||
{
|
||||
[Tool]
|
||||
[GlobalClass,Icon("res://addons/rokojori_action_library/Icons/SelectorFlag.svg")]
|
||||
public partial class CollisionFlag:SelectorFlag
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
uid://crk6vntm10let
|
||||
|
|
@ -86,18 +86,18 @@ namespace Rokojori
|
|||
|
||||
grabbable.SetGrabber( this );
|
||||
|
||||
_callback = TimeLineManager.ScheduleCallback( timeLine,
|
||||
( cb )=>
|
||||
_callback = TimeLineManager.ScheduleCallback(timeLine,
|
||||
(System.Action<TimeLineCallback>)(( cb )=>
|
||||
{
|
||||
if ( cb != _callback )
|
||||
if ( cb != _callback)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
positionSmoothing.SetCurrent( grabbable.grabTarget.GlobalPosition );
|
||||
rotationSmoothing.SetCurrent( grabbable.grabTarget.GetGlobalQuaternion() );
|
||||
positionSmoothing.SetCurrent(grabbable.grabTarget.GlobalPosition );
|
||||
rotationSmoothing.SetCurrent(Node3DExtensions.GlobalQuaternion(grabbable.grabTarget));
|
||||
UpdateGrabbable();
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
Action.Trigger( onGrab );
|
||||
|
|
@ -121,7 +121,7 @@ namespace Rokojori
|
|||
{
|
||||
// this.LogInfo( "Grabbing", HierarchyName.Of( grabbable ) );
|
||||
grabbable.grabTarget.GlobalPosition = Smoothing.Apply( positionSmoothing, grabOffset.GlobalPosition, timeLine.delta );
|
||||
grabbable.grabTarget.SetGlobalQuaternion( Smoothing.Apply( rotationSmoothing, grabOffset.GetGlobalQuaternion(), timeLine.delta ) );
|
||||
grabbable.grabTarget.SetGlobalQuaternion( Smoothing.Apply( rotationSmoothing, grabOffset.GlobalQuaternion(), timeLine.delta ) );
|
||||
grabbable.rigidBody3D.LinearVelocity = Vector3.Zero;
|
||||
grabbable.rigidBody3D.AngularVelocity = Vector3.Zero;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ namespace Rokojori
|
|||
var excludes = new Array<Rid>();
|
||||
|
||||
var from = GlobalPosition;
|
||||
var to = from + Math3D.GetGlobalForward( this ) * rayLength;
|
||||
var to = from + this.GlobalForward() * rayLength;
|
||||
|
||||
this.to = to;
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ using Godot;
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Godot.Collections;
|
||||
using System.Drawing;
|
||||
|
||||
namespace Rokojori
|
||||
{
|
||||
|
|
@ -19,6 +20,10 @@ namespace Rokojori
|
|||
[Export]
|
||||
public Pointable pointable;
|
||||
|
||||
|
||||
public readonly EventSlot<Pointable> onPointerChange = new EventSlot<Pointable>();
|
||||
|
||||
|
||||
[Export]
|
||||
public bool printPointables = false;
|
||||
|
||||
|
|
@ -56,6 +61,8 @@ namespace Rokojori
|
|||
Highlight( HighlightActionType.Start, pointable );
|
||||
}
|
||||
|
||||
onPointerChange.DispatchEvent( currentPointable );
|
||||
|
||||
if ( printPointables )
|
||||
{
|
||||
this.LogInfo( pointable );
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ namespace Rokojori.PointClouds
|
|||
}
|
||||
|
||||
sampler.materials = Materials.GetAll<Material>( mesh );
|
||||
sampler.albedoTexture = sampler.materials.Map( m => Texture2DPropertyName.albedoTexture );
|
||||
sampler.albedoTexture = sampler.materials.Map( m => Sampler2DPropertyName.albedoTexture );
|
||||
sampler.albedo = sampler.materials.Map( m => ColorPropertyName.albedo ); ;
|
||||
|
||||
var cloud = await sampler.SampleFromMesh( sampleMode, (ArrayMesh) mesh.Mesh, this );
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ using System.Threading.Tasks;
|
|||
|
||||
namespace Rokojori.PointClouds
|
||||
{
|
||||
public class PointCloudOcTree:OcTree<Point>
|
||||
public class PointCloudOcTree:OcTree<Point,Null>
|
||||
{
|
||||
List<Vector3> compressedNormals = new List<Vector3>()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ namespace Rokojori.PointClouds
|
|||
}
|
||||
|
||||
public List<Material> materials;
|
||||
public List<Texture2DPropertyName> albedoTexture;
|
||||
public List<Sampler2DPropertyName> albedoTexture;
|
||||
public List<ColorPropertyName> albedo;
|
||||
public float densityResolution = 0.2f;
|
||||
|
||||
|
|
@ -286,7 +286,7 @@ namespace Rokojori.PointClouds
|
|||
|
||||
if ( image != null )
|
||||
{
|
||||
color = image.Sample( uv, ColorX.EdgeMode.Repeat );
|
||||
color = image.SampleLinear( uv, ImageExtensions.EdgeMode.Repeat );
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -360,7 +360,7 @@ namespace Rokojori.PointClouds
|
|||
|
||||
if ( image != null )
|
||||
{
|
||||
color = image.Sample( uv, ColorX.EdgeMode.Repeat );
|
||||
color = image.SampleLinear( uv, ImageExtensions.EdgeMode.Repeat );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||