generated from krampus/template-godot4
	Compare commits
	
		
			No commits in common. "bfe2ca46d4aa17b714b22f7b3c7136e3d61c87f3" and "75d08d0dc2eaef1e0f9ba41e83a705e673264adb" have entirely different histories.
		
	
	
		
			bfe2ca46d4
			...
			75d08d0dc2
		
	
		
| @ -13,14 +13,6 @@ Asset credits | |||||||
| 
 | 
 | ||||||
| * Fonts | * Fonts | ||||||
| 
 | 
 | ||||||
| ** PromptFont |  | ||||||
| 
 |  | ||||||
| *** Retrieved from https://shinmera.github.io/promptfont/ |  | ||||||
| 
 |  | ||||||
| *** Author: Yukari "Shinmera" Hafner (https://shinmera.com) |  | ||||||
| 
 |  | ||||||
| *** License: SIL OFL 1.1 |  | ||||||
| 
 |  | ||||||
| ** Dokdo | ** Dokdo | ||||||
| 
 | 
 | ||||||
| *** Retrieved from https://fonts.google.com/specimen/Dokdo | *** Retrieved from https://fonts.google.com/specimen/Dokdo | ||||||
|  | |||||||
| @ -1,91 +0,0 @@ | |||||||
| This Font Software is licensed under the SIL Open Font License, |  | ||||||
| Version 1.1. This license is copied below, and is also available |  | ||||||
| with a FAQ at <http://scripts.sil.org/OFL> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ----------------------------------------------------------- |  | ||||||
| SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 |  | ||||||
| ----------------------------------------------------------- |  | ||||||
| 
 |  | ||||||
| PREAMBLE |  | ||||||
| The goals of the Open Font License (OFL) are to stimulate worldwide |  | ||||||
| development of collaborative font projects, to support the font creation |  | ||||||
| efforts of academic and linguistic communities, and to provide a free and |  | ||||||
| open framework in which fonts may be shared and improved in partnership |  | ||||||
| with others. |  | ||||||
| 
 |  | ||||||
| The OFL allows the licensed fonts to be used, studied, modified and |  | ||||||
| redistributed freely as long as they are not sold by themselves. The |  | ||||||
| fonts, including any derivative works, can be bundled, embedded, |  | ||||||
| redistributed and/or sold with any software provided that any reserved |  | ||||||
| names are not used by derivative works. The fonts and derivatives, |  | ||||||
| however, cannot be released under any other type of license. The |  | ||||||
| requirement for fonts to remain under this license does not apply |  | ||||||
| to any document created using the fonts or their derivatives. |  | ||||||
| 
 |  | ||||||
| DEFINITIONS |  | ||||||
| "Font Software" refers to the set of files released by the Copyright |  | ||||||
| Holder(s) under this license and clearly marked as such. This may |  | ||||||
| include source files, build scripts and documentation. |  | ||||||
| 
 |  | ||||||
| "Reserved Font Name" refers to any names specified as such after the |  | ||||||
| copyright statement(s). |  | ||||||
| 
 |  | ||||||
| "Original Version" refers to the collection of Font Software components as |  | ||||||
| distributed by the Copyright Holder(s). |  | ||||||
| 
 |  | ||||||
| "Modified Version" refers to any derivative made by adding to, deleting, |  | ||||||
| or substituting -- in part or in whole -- any of the components of the |  | ||||||
| Original Version, by changing formats or by porting the Font Software to a |  | ||||||
| new environment. |  | ||||||
| 
 |  | ||||||
| "Author" refers to any designer, engineer, programmer, technical |  | ||||||
| writer or other person who contributed to the Font Software. |  | ||||||
| 
 |  | ||||||
| PERMISSION & CONDITIONS |  | ||||||
| Permission is hereby granted, free of charge, to any person obtaining |  | ||||||
| a copy of the Font Software, to use, study, copy, merge, embed, modify, |  | ||||||
| redistribute, and sell modified and unmodified copies of the Font |  | ||||||
| Software, subject to the following conditions: |  | ||||||
| 
 |  | ||||||
| 1) Neither the Font Software nor any of its individual components, |  | ||||||
| in Original or Modified Versions, may be sold by itself. |  | ||||||
| 
 |  | ||||||
| 2) Original or Modified Versions of the Font Software may be bundled, |  | ||||||
| redistributed and/or sold with any software, provided that each copy |  | ||||||
| contains the above copyright notice and this license. These can be |  | ||||||
| included either as stand-alone text files, human-readable headers or |  | ||||||
| in the appropriate machine-readable metadata fields within text or |  | ||||||
| binary files as long as those fields can be easily viewed by the user. |  | ||||||
| 
 |  | ||||||
| 3) No Modified Version of the Font Software may use the Reserved Font |  | ||||||
| Name(s) unless explicit written permission is granted by the corresponding |  | ||||||
| Copyright Holder. This restriction only applies to the primary font name as |  | ||||||
| presented to the users. |  | ||||||
| 
 |  | ||||||
| 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font |  | ||||||
| Software shall not be used to promote, endorse or advertise any |  | ||||||
| Modified Version, except to acknowledge the contribution(s) of the |  | ||||||
| Copyright Holder(s) and the Author(s) or with their explicit written |  | ||||||
| permission. |  | ||||||
| 
 |  | ||||||
| 5) The Font Software, modified or unmodified, in part or in whole, |  | ||||||
| must be distributed entirely under this license, and must not be |  | ||||||
| distributed under any other license. The requirement for fonts to |  | ||||||
| remain under this license does not apply to any document created |  | ||||||
| using the Font Software. |  | ||||||
| 
 |  | ||||||
| TERMINATION |  | ||||||
| This license becomes null and void if any of the above conditions are |  | ||||||
| not met. |  | ||||||
| 
 |  | ||||||
| DISCLAIMER |  | ||||||
| THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |  | ||||||
| EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF |  | ||||||
| MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT |  | ||||||
| OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE |  | ||||||
| COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |  | ||||||
| INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL |  | ||||||
| DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |  | ||||||
| FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM |  | ||||||
| OTHER DEALINGS IN THE FONT SOFTWARE. |  | ||||||
| @ -1,959 +0,0 @@ | |||||||
| # PromptFont by Yukari "Shinmera" Hafner, accessible at https://shinmera.com/promptfont |  | ||||||
| class_name PromptFont |  | ||||||
| extends Resource |  | ||||||
| const ASCII_BANG: StringName = &"!" |  | ||||||
| const ASCII_BANG_INT: int = 33 |  | ||||||
| const ASCII_DOUBLEQUOTE: StringName = &'"' |  | ||||||
| const ASCII_DOUBLEQUOTE_INT: int = 34 |  | ||||||
| const ASCII_HASH: StringName = &"#" |  | ||||||
| const ASCII_HASH_INT: int = 35 |  | ||||||
| const ASCII_DOLLAR: StringName = &"$" |  | ||||||
| const ASCII_DOLLAR_INT: int = 36 |  | ||||||
| const ASCII_PERCENT: StringName = &"%" |  | ||||||
| const ASCII_PERCENT_INT: int = 37 |  | ||||||
| const ASCII_AMPERSAND: StringName = &"&" |  | ||||||
| const ASCII_AMPERSAND_INT: int = 38 |  | ||||||
| const ASCII_QUOTE: StringName = &"'" |  | ||||||
| const ASCII_QUOTE_INT: int = 39 |  | ||||||
| const ASCII_OPEN_PAREN: StringName = &"(" |  | ||||||
| const ASCII_OPEN_PAREN_INT: int = 40 |  | ||||||
| const ASCII_CLOSE_PAREN: StringName = &")" |  | ||||||
| const ASCII_CLOSE_PAREN_INT: int = 41 |  | ||||||
| const ASCII_STAR: StringName = &"*" |  | ||||||
| const ASCII_STAR_INT: int = 42 |  | ||||||
| const ASCII_PLUS: StringName = &"+" |  | ||||||
| const ASCII_PLUS_INT: int = 43 |  | ||||||
| const ASCII_COMMA: StringName = &"," |  | ||||||
| const ASCII_COMMA_INT: int = 44 |  | ||||||
| const ASCII_DASH: StringName = &"-" |  | ||||||
| const ASCII_DASH_INT: int = 45 |  | ||||||
| const ASCII_PERIOD: StringName = &"." |  | ||||||
| const ASCII_PERIOD_INT: int = 46 |  | ||||||
| const ASCII_SLASH: StringName = &"/" |  | ||||||
| const ASCII_SLASH_INT: int = 47 |  | ||||||
| const ASCII_0: StringName = &"0" |  | ||||||
| const ASCII_0_INT: int = 48 |  | ||||||
| const ASCII_1: StringName = &"1" |  | ||||||
| const ASCII_1_INT: int = 49 |  | ||||||
| const ASCII_2: StringName = &"2" |  | ||||||
| const ASCII_2_INT: int = 50 |  | ||||||
| const ASCII_3: StringName = &"3" |  | ||||||
| const ASCII_3_INT: int = 51 |  | ||||||
| const ASCII_4: StringName = &"4" |  | ||||||
| const ASCII_4_INT: int = 52 |  | ||||||
| const ASCII_5: StringName = &"5" |  | ||||||
| const ASCII_5_INT: int = 53 |  | ||||||
| const ASCII_6: StringName = &"6" |  | ||||||
| const ASCII_6_INT: int = 54 |  | ||||||
| const ASCII_7: StringName = &"7" |  | ||||||
| const ASCII_7_INT: int = 55 |  | ||||||
| const ASCII_8: StringName = &"8" |  | ||||||
| const ASCII_8_INT: int = 56 |  | ||||||
| const ASCII_9: StringName = &"9" |  | ||||||
| const ASCII_9_INT: int = 57 |  | ||||||
| const ASCII_COLON: StringName = &":" |  | ||||||
| const ASCII_COLON_INT: int = 58 |  | ||||||
| const ASCII_SEMICOLON: StringName = &";" |  | ||||||
| const ASCII_SEMICOLON_INT: int = 59 |  | ||||||
| const ASCII_OPEN_CARET: StringName = &"<" |  | ||||||
| const ASCII_OPEN_CARET_INT: int = 60 |  | ||||||
| const ASCII_EQUALS: StringName = &"=" |  | ||||||
| const ASCII_EQUALS_INT: int = 61 |  | ||||||
| const ASCII_CLOSE_CARET: StringName = &">" |  | ||||||
| const ASCII_CLOSE_CARET_INT: int = 62 |  | ||||||
| const ASCII_QUESTION: StringName = &"?" |  | ||||||
| const ASCII_QUESTION_INT: int = 63 |  | ||||||
| const ASCII_AT: StringName = &"@" |  | ||||||
| const ASCII_AT_INT: int = 64 |  | ||||||
| const ASCII_UPPER_A: StringName = &"A" |  | ||||||
| const ASCII_UPPER_A_INT: int = 65 |  | ||||||
| const ASCII_UPPER_B: StringName = &"B" |  | ||||||
| const ASCII_UPPER_B_INT: int = 66 |  | ||||||
| const ASCII_UPPER_C: StringName = &"C" |  | ||||||
| const ASCII_UPPER_C_INT: int = 67 |  | ||||||
| const ASCII_UPPER_D: StringName = &"D" |  | ||||||
| const ASCII_UPPER_D_INT: int = 68 |  | ||||||
| const ASCII_UPPER_E: StringName = &"E" |  | ||||||
| const ASCII_UPPER_E_INT: int = 69 |  | ||||||
| const ASCII_UPPER_F: StringName = &"F" |  | ||||||
| const ASCII_UPPER_F_INT: int = 70 |  | ||||||
| const ASCII_UPPER_G: StringName = &"G" |  | ||||||
| const ASCII_UPPER_G_INT: int = 71 |  | ||||||
| const ASCII_UPPER_H: StringName = &"H" |  | ||||||
| const ASCII_UPPER_H_INT: int = 72 |  | ||||||
| const ASCII_UPPER_I: StringName = &"I" |  | ||||||
| const ASCII_UPPER_I_INT: int = 73 |  | ||||||
| const ASCII_UPPER_J: StringName = &"J" |  | ||||||
| const ASCII_UPPER_J_INT: int = 74 |  | ||||||
| const ASCII_UPPER_K: StringName = &"K" |  | ||||||
| const ASCII_UPPER_K_INT: int = 75 |  | ||||||
| const ASCII_UPPER_L: StringName = &"L" |  | ||||||
| const ASCII_UPPER_L_INT: int = 76 |  | ||||||
| const ASCII_UPPER_M: StringName = &"M" |  | ||||||
| const ASCII_UPPER_M_INT: int = 77 |  | ||||||
| const ASCII_UPPER_N: StringName = &"N" |  | ||||||
| const ASCII_UPPER_N_INT: int = 78 |  | ||||||
| const ASCII_UPPER_O: StringName = &"O" |  | ||||||
| const ASCII_UPPER_O_INT: int = 79 |  | ||||||
| const ASCII_UPPER_P: StringName = &"P" |  | ||||||
| const ASCII_UPPER_P_INT: int = 80 |  | ||||||
| const ASCII_UPPER_Q: StringName = &"Q" |  | ||||||
| const ASCII_UPPER_Q_INT: int = 81 |  | ||||||
| const ASCII_UPPER_R: StringName = &"R" |  | ||||||
| const ASCII_UPPER_R_INT: int = 82 |  | ||||||
| const ASCII_UPPER_S: StringName = &"S" |  | ||||||
| const ASCII_UPPER_S_INT: int = 83 |  | ||||||
| const ASCII_UPPER_T: StringName = &"T" |  | ||||||
| const ASCII_UPPER_T_INT: int = 84 |  | ||||||
| const ASCII_UPPER_U: StringName = &"U" |  | ||||||
| const ASCII_UPPER_U_INT: int = 85 |  | ||||||
| const ASCII_UPPER_V: StringName = &"V" |  | ||||||
| const ASCII_UPPER_V_INT: int = 86 |  | ||||||
| const ASCII_UPPER_W: StringName = &"W" |  | ||||||
| const ASCII_UPPER_W_INT: int = 87 |  | ||||||
| const ASCII_UPPER_X: StringName = &"X" |  | ||||||
| const ASCII_UPPER_X_INT: int = 88 |  | ||||||
| const ASCII_UPPER_Y: StringName = &"Y" |  | ||||||
| const ASCII_UPPER_Y_INT: int = 89 |  | ||||||
| const ASCII_UPPER_Z: StringName = &"Z" |  | ||||||
| const ASCII_UPPER_Z_INT: int = 90 |  | ||||||
| const ASCII_OPEN_BRACKET: StringName = &"[" |  | ||||||
| const ASCII_OPEN_BRACKET_INT: int = 91 |  | ||||||
| const ASCII_BACKSLASH: StringName = &"\\" |  | ||||||
| const ASCII_BACKSLASH_INT: int = 92 |  | ||||||
| const ASCII_CLOSE_BRACKET: StringName = &"]" |  | ||||||
| const ASCII_CLOSE_BRACKET_INT: int = 93 |  | ||||||
| const ASCII_CARET: StringName = &"^" |  | ||||||
| const ASCII_CARET_INT: int = 94 |  | ||||||
| const ASCII_UNDERSCORE: StringName = &"_" |  | ||||||
| const ASCII_UNDERSCORE_INT: int = 95 |  | ||||||
| const ASCII_BACKTICK: StringName = &"`" |  | ||||||
| const ASCII_BACKTICK_INT: int = 96 |  | ||||||
| const ASCII_LOWER_A: StringName = &"a" |  | ||||||
| const ASCII_LOWER_A_INT: int = 97 |  | ||||||
| const ASCII_LOWER_B: StringName = &"b" |  | ||||||
| const ASCII_LOWER_B_INT: int = 98 |  | ||||||
| const ASCII_LOWER_C: StringName = &"c" |  | ||||||
| const ASCII_LOWER_C_INT: int = 99 |  | ||||||
| const ASCII_LOWER_D: StringName = &"d" |  | ||||||
| const ASCII_LOWER_D_INT: int = 100 |  | ||||||
| const ASCII_LOWER_E: StringName = &"e" |  | ||||||
| const ASCII_LOWER_E_INT: int = 101 |  | ||||||
| const ASCII_LOWER_F: StringName = &"f" |  | ||||||
| const ASCII_LOWER_F_INT: int = 102 |  | ||||||
| const ASCII_LOWER_G: StringName = &"g" |  | ||||||
| const ASCII_LOWER_G_INT: int = 103 |  | ||||||
| const ASCII_LOWER_H: StringName = &"h" |  | ||||||
| const ASCII_LOWER_H_INT: int = 104 |  | ||||||
| const ASCII_LOWER_I: StringName = &"i" |  | ||||||
| const ASCII_LOWER_I_INT: int = 105 |  | ||||||
| const ASCII_LOWER_J: StringName = &"j" |  | ||||||
| const ASCII_LOWER_J_INT: int = 106 |  | ||||||
| const ASCII_LOWER_K: StringName = &"k" |  | ||||||
| const ASCII_LOWER_K_INT: int = 107 |  | ||||||
| const ASCII_LOWER_L: StringName = &"l" |  | ||||||
| const ASCII_LOWER_L_INT: int = 108 |  | ||||||
| const ASCII_LOWER_M: StringName = &"m" |  | ||||||
| const ASCII_LOWER_M_INT: int = 109 |  | ||||||
| const ASCII_LOWER_N: StringName = &"n" |  | ||||||
| const ASCII_LOWER_N_INT: int = 110 |  | ||||||
| const ASCII_LOWER_O: StringName = &"o" |  | ||||||
| const ASCII_LOWER_O_INT: int = 111 |  | ||||||
| const ASCII_LOWER_P: StringName = &"p" |  | ||||||
| const ASCII_LOWER_P_INT: int = 112 |  | ||||||
| const ASCII_LOWER_Q: StringName = &"q" |  | ||||||
| const ASCII_LOWER_Q_INT: int = 113 |  | ||||||
| const ASCII_LOWER_R: StringName = &"r" |  | ||||||
| const ASCII_LOWER_R_INT: int = 114 |  | ||||||
| const ASCII_LOWER_S: StringName = &"s" |  | ||||||
| const ASCII_LOWER_S_INT: int = 115 |  | ||||||
| const ASCII_LOWER_T: StringName = &"t" |  | ||||||
| const ASCII_LOWER_T_INT: int = 116 |  | ||||||
| const ASCII_LOWER_U: StringName = &"u" |  | ||||||
| const ASCII_LOWER_U_INT: int = 117 |  | ||||||
| const ASCII_LOWER_V: StringName = &"v" |  | ||||||
| const ASCII_LOWER_V_INT: int = 118 |  | ||||||
| const ASCII_LOWER_W: StringName = &"w" |  | ||||||
| const ASCII_LOWER_W_INT: int = 119 |  | ||||||
| const ASCII_LOWER_X: StringName = &"x" |  | ||||||
| const ASCII_LOWER_X_INT: int = 120 |  | ||||||
| const ASCII_LOWER_Y: StringName = &"y" |  | ||||||
| const ASCII_LOWER_Y_INT: int = 121 |  | ||||||
| const ASCII_LOWER_Z: StringName = &"z" |  | ||||||
| const ASCII_LOWER_Z_INT: int = 122 |  | ||||||
| const ASCII_OPEN_BRACE: StringName = &"{" |  | ||||||
| const ASCII_OPEN_BRACE_INT: int = 123 |  | ||||||
| const ASCII_BAR: StringName = &"|" |  | ||||||
| const ASCII_BAR_INT: int = 124 |  | ||||||
| const ASCII_CLOSE_BRACE: StringName = &"}" |  | ||||||
| const ASCII_CLOSE_BRACE_INT: int = 125 |  | ||||||
| const ASCII_TILDE: StringName = &"~" |  | ||||||
| const ASCII_TILDE_INT: int = 126 |  | ||||||
| const ICON_EXCHANGE: StringName = &"↔" |  | ||||||
| const ICON_EXCHANGE_INT: int = 8596 |  | ||||||
| const ICON_REVERSE: StringName = &"↕" |  | ||||||
| const ICON_REVERSE_INT: int = 8597 |  | ||||||
| const XBOX_LEFT_TRIGGER: StringName = &"↖" |  | ||||||
| const XBOX_LEFT_TRIGGER_INT: int = 8598 |  | ||||||
| const XBOX_RIGHT_TRIGGER: StringName = &"↗" |  | ||||||
| const XBOX_RIGHT_TRIGGER_INT: int = 8599 |  | ||||||
| const XBOX_LEFT_SHOULDER: StringName = &"↘" |  | ||||||
| const XBOX_LEFT_SHOULDER_INT: int = 8600 |  | ||||||
| const XBOX_RIGHT_SHOULDER: StringName = &"↙" |  | ||||||
| const XBOX_RIGHT_SHOULDER_INT: int = 8601 |  | ||||||
| const NINTENDO_LEFT_TRIGGER: StringName = &"↚" |  | ||||||
| const NINTENDO_LEFT_TRIGGER_INT: int = 8602 |  | ||||||
| const NINTENDO_RIGHT_TRIGGER: StringName = &"↛" |  | ||||||
| const NINTENDO_RIGHT_TRIGGER_INT: int = 8603 |  | ||||||
| const NINTENDO_LEFT_SHOULDER: StringName = &"↜" |  | ||||||
| const NINTENDO_LEFT_SHOULDER_INT: int = 8604 |  | ||||||
| const NINTENDO_RIGHT_SHOULDER: StringName = &"↝" |  | ||||||
| const NINTENDO_RIGHT_SHOULDER_INT: int = 8605 |  | ||||||
| const DPAD_LEFT: StringName = &"↞" |  | ||||||
| const DPAD_LEFT_INT: int = 8606 |  | ||||||
| const DPAD_UP: StringName = &"↟" |  | ||||||
| const DPAD_UP_INT: int = 8607 |  | ||||||
| const DPAD_RIGHT: StringName = &"↠" |  | ||||||
| const DPAD_RIGHT_INT: int = 8608 |  | ||||||
| const DPAD_DOWN: StringName = &"↡" |  | ||||||
| const DPAD_DOWN_INT: int = 8609 |  | ||||||
| const DPAD_LEFT_RIGHT: StringName = &"↢" |  | ||||||
| const DPAD_LEFT_RIGHT_INT: int = 8610 |  | ||||||
| const DPAD_UP_DOWN: StringName = &"↣" |  | ||||||
| const DPAD_UP_DOWN_INT: int = 8611 |  | ||||||
| const GAMEPAD_X: StringName = &"↤" |  | ||||||
| const GAMEPAD_X_INT: int = 8612 |  | ||||||
| const GAMEPAD_Y: StringName = &"↥" |  | ||||||
| const GAMEPAD_Y_INT: int = 8613 |  | ||||||
| const GAMEPAD_B: StringName = &"↦" |  | ||||||
| const GAMEPAD_B_INT: int = 8614 |  | ||||||
| const GAMEPAD_A: StringName = &"↧" |  | ||||||
| const GAMEPAD_A_INT: int = 8615 |  | ||||||
| const ANALOG_L_CLOCKWISE: StringName = &"↩" |  | ||||||
| const ANALOG_L_CLOCKWISE_INT: int = 8617 |  | ||||||
| const ANALOG_L_COUNTER: StringName = &"↪" |  | ||||||
| const ANALOG_L_COUNTER_INT: int = 8618 |  | ||||||
| const ANALOG_R_CLOCKWISE: StringName = &"↫" |  | ||||||
| const ANALOG_R_CLOCKWISE_INT: int = 8619 |  | ||||||
| const ANALOG_R_COUNTER: StringName = &"↬" |  | ||||||
| const ANALOG_R_COUNTER_INT: int = 8620 |  | ||||||
| const ANALOG_LR_BLOCKWISE: StringName = &"↭" |  | ||||||
| const ANALOG_LR_BLOCKWISE_INT: int = 8621 |  | ||||||
| const ANALOG_LR_COUNTER: StringName = &"↮" |  | ||||||
| const ANALOG_LR_COUNTER_INT: int = 8622 |  | ||||||
| const SONY_LEFT_SHOULDER: StringName = &"↰" |  | ||||||
| const SONY_LEFT_SHOULDER_INT: int = 8624 |  | ||||||
| const SONY_RIGHT_SHOULDER: StringName = &"↱" |  | ||||||
| const SONY_RIGHT_SHOULDER_INT: int = 8625 |  | ||||||
| const SONY_LEFT_TRIGGER: StringName = &"↲" |  | ||||||
| const SONY_LEFT_TRIGGER_INT: int = 8626 |  | ||||||
| const SONY_RIGHT_TRIGGER: StringName = &"↳" |  | ||||||
| const SONY_RIGHT_TRIGGER_INT: int = 8627 |  | ||||||
| const DPAD_LEFT_DOWN: StringName = &"↴" |  | ||||||
| const DPAD_LEFT_DOWN_INT: int = 8628 |  | ||||||
| const GAMEPAD_UP_RIGHT: StringName = &"↵" |  | ||||||
| const GAMEPAD_UP_RIGHT_INT: int = 8629 |  | ||||||
| const ANALOG_CLOCKWISE: StringName = &"↶" |  | ||||||
| const ANALOG_CLOCKWISE_INT: int = 8630 |  | ||||||
| const ANALOG_COUNTER: StringName = &"↷" |  | ||||||
| const ANALOG_COUNTER_INT: int = 8631 |  | ||||||
| const ANALOG_CLICK: StringName = &"↹" |  | ||||||
| const ANALOG_CLICK_INT: int = 8633 |  | ||||||
| const ANALOG_L_CLICK: StringName = &"↺" |  | ||||||
| const ANALOG_L_CLICK_INT: int = 8634 |  | ||||||
| const ANALOG_R_CLICK: StringName = &"↻" |  | ||||||
| const ANALOG_R_CLICK_INT: int = 8635 |  | ||||||
| const ANALOG_L_LEFT: StringName = &"↼" |  | ||||||
| const ANALOG_L_LEFT_INT: int = 8636 |  | ||||||
| const ANALOG_R_LEFT: StringName = &"↽" |  | ||||||
| const ANALOG_R_LEFT_INT: int = 8637 |  | ||||||
| const ANALOG_L_UP: StringName = &"↾" |  | ||||||
| const ANALOG_L_UP_INT: int = 8638 |  | ||||||
| const ANALOG_R_UP: StringName = &"↿" |  | ||||||
| const ANALOG_R_UP_INT: int = 8639 |  | ||||||
| const ANALOG_L_RIGHT: StringName = &"⇀" |  | ||||||
| const ANALOG_L_RIGHT_INT: int = 8640 |  | ||||||
| const ANALOG_R_RIGHT: StringName = &"⇁" |  | ||||||
| const ANALOG_R_RIGHT_INT: int = 8641 |  | ||||||
| const ANALOG_L_DOWN: StringName = &"⇂" |  | ||||||
| const ANALOG_L_DOWN_INT: int = 8642 |  | ||||||
| const ANALOG_R_DOWN: StringName = &"⇃" |  | ||||||
| const ANALOG_R_DOWN_INT: int = 8643 |  | ||||||
| const ANALOG_L_LEFT_RIGHT: StringName = &"⇄" |  | ||||||
| const ANALOG_L_LEFT_RIGHT_INT: int = 8644 |  | ||||||
| const ANALOG_L_UP_DOWN: StringName = &"⇅" |  | ||||||
| const ANALOG_L_UP_DOWN_INT: int = 8645 |  | ||||||
| const ANALOG_R_LEFT_RIGHT: StringName = &"⇆" |  | ||||||
| const ANALOG_R_LEFT_RIGHT_INT: int = 8646 |  | ||||||
| const ANALOG_LEFT: StringName = &"⇇" |  | ||||||
| const ANALOG_LEFT_INT: int = 8647 |  | ||||||
| const ANALOG_UP: StringName = &"⇈" |  | ||||||
| const ANALOG_UP_INT: int = 8648 |  | ||||||
| const ANALOG_RIGHT: StringName = &"⇉" |  | ||||||
| const ANALOG_RIGHT_INT: int = 8649 |  | ||||||
| const ANALOG_DOWN: StringName = &"⇊" |  | ||||||
| const ANALOG_DOWN_INT: int = 8650 |  | ||||||
| const ANALOG_L: StringName = &"⇋" |  | ||||||
| const ANALOG_L_INT: int = 8651 |  | ||||||
| const ANALOG_R: StringName = &"⇌" |  | ||||||
| const ANALOG_R_INT: int = 8652 |  | ||||||
| const DPAD: StringName = &"⇎" |  | ||||||
| const DPAD_INT: int = 8654 |  | ||||||
| const XBOX_X: StringName = &"⇐" |  | ||||||
| const XBOX_X_INT: int = 8656 |  | ||||||
| const XBOX_Y: StringName = &"⇑" |  | ||||||
| const XBOX_Y_INT: int = 8657 |  | ||||||
| const XBOX_B: StringName = &"⇒" |  | ||||||
| const XBOX_B_INT: int = 8658 |  | ||||||
| const XBOX_A: StringName = &"⇓" |  | ||||||
| const XBOX_A_INT: int = 8659 |  | ||||||
| const ANALOG_LEFT_RIGHT: StringName = &"⇔" |  | ||||||
| const ANALOG_LEFT_RIGHT_INT: int = 8660 |  | ||||||
| const ANALOG_UP_DOWN: StringName = &"⇕" |  | ||||||
| const ANALOG_UP_DOWN_INT: int = 8661 |  | ||||||
| const ANALOG_UP_LEFT: StringName = &"⇖" |  | ||||||
| const ANALOG_UP_LEFT_INT: int = 8662 |  | ||||||
| const ANALOG_UP_RIGHT: StringName = &"⇗" |  | ||||||
| const ANALOG_UP_RIGHT_INT: int = 8663 |  | ||||||
| const ANALOG_DOWN_RIGHT: StringName = &"⇘" |  | ||||||
| const ANALOG_DOWN_RIGHT_INT: int = 8664 |  | ||||||
| const ANALOG_DOWN_LEFT: StringName = &"⇙" |  | ||||||
| const ANALOG_DOWN_LEFT_INT: int = 8665 |  | ||||||
| const ANALOG_L_TOUCH: StringName = &"⇚" |  | ||||||
| const ANALOG_L_TOUCH_INT: int = 8666 |  | ||||||
| const ANALOG_R_TOUCH: StringName = &"⇛" |  | ||||||
| const ANALOG_R_TOUCH_INT: int = 8667 |  | ||||||
| const XBOX_LEFT_TRIGGER_PULL: StringName = &"⇜" |  | ||||||
| const XBOX_LEFT_TRIGGER_PULL_INT: int = 8668 |  | ||||||
| const XBOX_RIGHT_TRIGGER_PULL: StringName = &"⇝" |  | ||||||
| const XBOX_RIGHT_TRIGGER_PULL_INT: int = 8669 |  | ||||||
| const DPAD_RIGHT_DOWN: StringName = &"⇞" |  | ||||||
| const DPAD_RIGHT_DOWN_INT: int = 8670 |  | ||||||
| const DUPAD_LEFT_UP: StringName = &"⇟" |  | ||||||
| const DUPAD_LEFT_UP_INT: int = 8671 |  | ||||||
| const SONY_X: StringName = &"⇠" |  | ||||||
| const SONY_X_INT: int = 8672 |  | ||||||
| const SONY_Y: StringName = &"⇡" |  | ||||||
| const SONY_Y_INT: int = 8673 |  | ||||||
| const SONY_B: StringName = &"⇢" |  | ||||||
| const SONY_B_INT: int = 8674 |  | ||||||
| const SONY_A: StringName = &"⇣" |  | ||||||
| const SONY_A_INT: int = 8675 |  | ||||||
| const STEAM_MENU: StringName = &"⇤" |  | ||||||
| const STEAM_MENU_INT: int = 8676 |  | ||||||
| const STEAM_OPTIONS: StringName = &"⇥" |  | ||||||
| const STEAM_OPTIONS_INT: int = 8677 |  | ||||||
| const SONY_SHARE: StringName = &"⇦" |  | ||||||
| const SONY_SHARE_INT: int = 8678 |  | ||||||
| const SONY_TOUCHPAD: StringName = &"⇧" |  | ||||||
| const SONY_TOUCHPAD_INT: int = 8679 |  | ||||||
| const SONY_OPTIONS: StringName = &"⇨" |  | ||||||
| const SONY_OPTIONS_INT: int = 8680 |  | ||||||
| const NINTENDO_BUTTON_Z: StringName = &"⇩" |  | ||||||
| const NINTENDO_BUTTON_Z_INT: int = 8681 |  | ||||||
| const NINTENDO_TRIGGER_Z: StringName = &"⇪" |  | ||||||
| const NINTENDO_TRIGGER_Z_INT: int = 8682 |  | ||||||
| const NINTENDO_C: StringName = &"⇫" |  | ||||||
| const NINTENDO_C_INT: int = 8683 |  | ||||||
| const NINTENDO_Z: StringName = &"⇬" |  | ||||||
| const NINTENDO_Z_INT: int = 8684 |  | ||||||
| const NINTENDO_1: StringName = &"⇭" |  | ||||||
| const NINTENDO_1_INT: int = 8685 |  | ||||||
| const NINTENDO_2: StringName = &"⇮" |  | ||||||
| const NINTENDO_2_INT: int = 8686 |  | ||||||
| const ANALOG_L_ANY: StringName = &"⇱" |  | ||||||
| const ANALOG_L_ANY_INT: int = 8689 |  | ||||||
| const ANALOG_R_ANY: StringName = &"⇲" |  | ||||||
| const ANALOG_R_ANY_INT: int = 8690 |  | ||||||
| const ANALOG_ANY: StringName = &"⇳" |  | ||||||
| const ANALOG_ANY_INT: int = 8691 |  | ||||||
| const ANALOG_R_UP_DOWN: StringName = &"⇵" |  | ||||||
| const ANALOG_R_UP_DOWN_INT: int = 8693 |  | ||||||
| const GAMEPAD_SELECT: StringName = &"⇷" |  | ||||||
| const GAMEPAD_SELECT_INT: int = 8695 |  | ||||||
| const GAMEPAD_START: StringName = &"⇸" |  | ||||||
| const GAMEPAD_START_INT: int = 8696 |  | ||||||
| const GAMEPAD_HOME: StringName = &"⇹" |  | ||||||
| const GAMEPAD_HOME_INT: int = 8697 |  | ||||||
| const XBOX_VIEW: StringName = &"⇺" |  | ||||||
| const XBOX_VIEW_INT: int = 8698 |  | ||||||
| const XBOX_MENU: StringName = &"⇻" |  | ||||||
| const XBOX_MENU_INT: int = 8699 |  | ||||||
| const NINTENDO_MINUS: StringName = &"⇽" |  | ||||||
| const NINTENDO_MINUS_INT: int = 8701 |  | ||||||
| const NINTENDO_PLUS: StringName = &"⇾" |  | ||||||
| const NINTENDO_PLUS_INT: int = 8702 |  | ||||||
| const NINTENDO_DPAD_LEFT: StringName = &"⇿" |  | ||||||
| const NINTENDO_DPAD_LEFT_INT: int = 8703 |  | ||||||
| const NINTENDO_DPAD_UP: StringName = &"∀" |  | ||||||
| const NINTENDO_DPAD_UP_INT: int = 8704 |  | ||||||
| const NINTENDO_DPAD_RIGHT: StringName = &"∁" |  | ||||||
| const NINTENDO_DPAD_RIGHT_INT: int = 8705 |  | ||||||
| const NINTENDO_DPAD_DOWN: StringName = &"∂" |  | ||||||
| const NINTENDO_DPAD_DOWN_INT: int = 8706 |  | ||||||
| const NINTENDO_JOYCON_SL: StringName = &"∃" |  | ||||||
| const NINTENDO_JOYCON_SL_INT: int = 8707 |  | ||||||
| const NINTENDO_JOYCON_SR: StringName = &"∄" |  | ||||||
| const NINTENDO_JOYCON_SR_INT: int = 8708 |  | ||||||
| const LEGION_SETTINGS: StringName = &"∅" |  | ||||||
| const LEGION_SETTINGS_INT: int = 8709 |  | ||||||
| const SONY_DUALSENSE_SHARE: StringName = &"∆" |  | ||||||
| const SONY_DUALSENSE_SHARE_INT: int = 8710 |  | ||||||
| const SONY_DUALSENSE_TOUCHPAD: StringName = &"∇" |  | ||||||
| const SONY_DUALSENSE_TOUCHPAD_INT: int = 8711 |  | ||||||
| const SONY_DUALSENSE_OPTIONS: StringName = &"∈" |  | ||||||
| const SONY_DUALSENSE_OPTIONS_INT: int = 8712 |  | ||||||
| const AYANEO_LC: StringName = &"∉" |  | ||||||
| const AYANEO_LC_INT: int = 8713 |  | ||||||
| const AYANEO_RC: StringName = &"∊" |  | ||||||
| const AYANEO_RC_INT: int = 8714 |  | ||||||
| const AYANEO_WAVE: StringName = &"∋" |  | ||||||
| const AYANEO_WAVE_INT: int = 8715 |  | ||||||
| const AYN_HOME: StringName = &"∌" |  | ||||||
| const AYN_HOME_INT: int = 8716 |  | ||||||
| const AYN_LCC: StringName = &"∍" |  | ||||||
| const AYN_LCC_INT: int = 8717 |  | ||||||
| const GPD_C1: StringName = &"∎" |  | ||||||
| const GPD_C1_INT: int = 8718 |  | ||||||
| const GPD_C2: StringName = &"∏" |  | ||||||
| const GPD_C2_INT: int = 8719 |  | ||||||
| const ONEXPLAYER_KEYBOARD: StringName = &"∐" |  | ||||||
| const ONEXPLAYER_KEYBOARD_INT: int = 8720 |  | ||||||
| const ONEXPLAYER_TURBO: StringName = &"∑" |  | ||||||
| const ONEXPLAYER_TURBO_INT: int = 8721 |  | ||||||
| const GAMEPAD_M1: StringName = &"−" |  | ||||||
| const GAMEPAD_M1_INT: int = 8722 |  | ||||||
| const GAMEPAD_M2: StringName = &"∓" |  | ||||||
| const GAMEPAD_M2_INT: int = 8723 |  | ||||||
| const GAMEPAD_M3: StringName = &"∔" |  | ||||||
| const GAMEPAD_M3_INT: int = 8724 |  | ||||||
| const GAMEPAD_Y1: StringName = &"∕" |  | ||||||
| const GAMEPAD_Y1_INT: int = 8725 |  | ||||||
| const GAMEPAD_Y2: StringName = &"∖" |  | ||||||
| const GAMEPAD_Y2_INT: int = 8726 |  | ||||||
| const GAMEPAD_Y3: StringName = &"∗" |  | ||||||
| const GAMEPAD_Y3_INT: int = 8727 |  | ||||||
| const ONEXPLAYER_FUNCTION: StringName = &"∘" |  | ||||||
| const ONEXPLAYER_FUNCTION_INT: int = 8728 |  | ||||||
| const ONEXPLAYER_HOME: StringName = &"∙" |  | ||||||
| const ONEXPLAYER_HOME_INT: int = 8729 |  | ||||||
| const GPD_MENU: StringName = &"√" |  | ||||||
| const GPD_MENU_INT: int = 8730 |  | ||||||
| const ORANGEPI_CONTROLLER: StringName = &"∛" |  | ||||||
| const ORANGEPI_CONTROLLER_INT: int = 8731 |  | ||||||
| const ORANGEPI_HOME: StringName = &"∜" |  | ||||||
| const ORANGEPI_HOME_INT: int = 8732 |  | ||||||
| const ZOTAC_ZONE_LOGO: StringName = &"∝" |  | ||||||
| const ZOTAC_ZONE_LOGO_INT: int = 8733 |  | ||||||
| const ZOTAC_ZONE_MENU: StringName = &"∞" |  | ||||||
| const ZOTAC_ZONE_MENU_INT: int = 8734 |  | ||||||
| const GAMEPAD_X_B: StringName = &"∥" |  | ||||||
| const GAMEPAD_X_B_INT: int = 8741 |  | ||||||
| const GAMEPAD_A_Y: StringName = &"∦" |  | ||||||
| const GAMEPAD_A_Y_INT: int = 8742 |  | ||||||
| const GAMEPAD_X_Y: StringName = &"∧" |  | ||||||
| const GAMEPAD_X_Y_INT: int = 8743 |  | ||||||
| const GAMEPAD_B_Y: StringName = &"∨" |  | ||||||
| const GAMEPAD_B_Y_INT: int = 8744 |  | ||||||
| const GAMEPAD_A_B: StringName = &"∩" |  | ||||||
| const GAMEPAD_A_B_INT: int = 8745 |  | ||||||
| const GAMEPAD_X_A: StringName = &"∪" |  | ||||||
| const GAMEPAD_X_A_INT: int = 8746 |  | ||||||
| const BUTTON_PRESS: StringName = &"∫" |  | ||||||
| const BUTTON_PRESS_INT: int = 8747 |  | ||||||
| const BUTTON_DOUBLE_PRESS: StringName = &"∬" |  | ||||||
| const BUTTON_DOUBLE_PRESS_INT: int = 8748 |  | ||||||
| const BUTTON_HOLD_PRESS: StringName = &"∭" |  | ||||||
| const BUTTON_HOLD_PRESS_INT: int = 8749 |  | ||||||
| const BUTTON_HOLD_RELEASE: StringName = &"∮" |  | ||||||
| const BUTTON_HOLD_RELEASE_INT: int = 8750 |  | ||||||
| const BUTTON_HOLD: StringName = &"∯" |  | ||||||
| const BUTTON_HOLD_INT: int = 8751 |  | ||||||
| const TRACKPAD_L_ANY: StringName = &"≤" |  | ||||||
| const TRACKPAD_L_ANY_INT: int = 8804 |  | ||||||
| const TRACKPAD_R_ANY: StringName = &"≥" |  | ||||||
| const TRACKPAD_R_ANY_INT: int = 8805 |  | ||||||
| const TRACKPAD_L_CLICK: StringName = &"≦" |  | ||||||
| const TRACKPAD_L_CLICK_INT: int = 8806 |  | ||||||
| const TRACKPAD_R_CLICK: StringName = &"≧" |  | ||||||
| const TRACKPAD_R_CLICK_INT: int = 8807 |  | ||||||
| const TRACKPAD_L_TOUCH: StringName = &"≨" |  | ||||||
| const TRACKPAD_L_TOUCH_INT: int = 8808 |  | ||||||
| const TRACKPAD_R_TOUCH: StringName = &"≩" |  | ||||||
| const TRACKPAD_R_TOUCH_INT: int = 8809 |  | ||||||
| const TRACKPAD_L_LEFT_RIGHT: StringName = &"≪" |  | ||||||
| const TRACKPAD_L_LEFT_RIGHT_INT: int = 8810 |  | ||||||
| const TRACKPAD_L_UP_DOWN: StringName = &"≫" |  | ||||||
| const TRACKPAD_L_UP_DOWN_INT: int = 8811 |  | ||||||
| const TRACKPAD_R_LEFT_RIGHT: StringName = &"≬" |  | ||||||
| const TRACKPAD_R_LEFT_RIGHT_INT: int = 8812 |  | ||||||
| const TRACKPAD_R_UP_DOWN: StringName = &"≭" |  | ||||||
| const TRACKPAD_R_UP_DOWN_INT: int = 8813 |  | ||||||
| const TRACKPAD_L_LEFT: StringName = &"≮" |  | ||||||
| const TRACKPAD_L_LEFT_INT: int = 8814 |  | ||||||
| const TRACKPAD_R_LEFT: StringName = &"≯" |  | ||||||
| const TRACKPAD_R_LEFT_INT: int = 8815 |  | ||||||
| const TRACKPAD_L_UP: StringName = &"≰" |  | ||||||
| const TRACKPAD_L_UP_INT: int = 8816 |  | ||||||
| const TRACKPAD_R_UP: StringName = &"≱" |  | ||||||
| const TRACKPAD_R_UP_INT: int = 8817 |  | ||||||
| const TRACKPAD_L_RIGHT: StringName = &"≲" |  | ||||||
| const TRACKPAD_L_RIGHT_INT: int = 8818 |  | ||||||
| const TRACKPAD_R_RIGHT: StringName = &"≳" |  | ||||||
| const TRACKPAD_R_RIGHT_INT: int = 8819 |  | ||||||
| const TRACKPAD_L_DOWN: StringName = &"≴" |  | ||||||
| const TRACKPAD_L_DOWN_INT: int = 8820 |  | ||||||
| const TRACKPAD_R_DOWN: StringName = &"≵" |  | ||||||
| const TRACKPAD_R_DOWN_INT: int = 8821 |  | ||||||
| const GAMEPAD_L4: StringName = &"≶" |  | ||||||
| const GAMEPAD_L4_INT: int = 8822 |  | ||||||
| const GAMEPAD_R4: StringName = &"≷" |  | ||||||
| const GAMEPAD_R4_INT: int = 8823 |  | ||||||
| const GAMEPAD_L5: StringName = &"≸" |  | ||||||
| const GAMEPAD_L5_INT: int = 8824 |  | ||||||
| const GAMEPAD_R5: StringName = &"≹" |  | ||||||
| const GAMEPAD_R5_INT: int = 8825 |  | ||||||
| const XBOX_DPAD_LEFT: StringName = &"≺" |  | ||||||
| const XBOX_DPAD_LEFT_INT: int = 8826 |  | ||||||
| const XBOX_DPAD_UP: StringName = &"≻" |  | ||||||
| const XBOX_DPAD_UP_INT: int = 8827 |  | ||||||
| const XBOX_DPAD_RIGHT: StringName = &"≼" |  | ||||||
| const XBOX_DPAD_RIGHT_INT: int = 8828 |  | ||||||
| const XBOX_DPAD_DOWN: StringName = &"≽" |  | ||||||
| const XBOX_DPAD_DOWN_INT: int = 8829 |  | ||||||
| const XBOX_DEPAD_LEFT_RIGHT: StringName = &"≾" |  | ||||||
| const XBOX_DEPAD_LEFT_RIGHT_INT: int = 8830 |  | ||||||
| const XBOX_DPAD_UP_DOWN: StringName = &"≿" |  | ||||||
| const XBOX_DPAD_UP_DOWN_INT: int = 8831 |  | ||||||
| const XBOX_DPAD_LEFT_UP: StringName = &"⊀" |  | ||||||
| const XBOX_DPAD_LEFT_UP_INT: int = 8832 |  | ||||||
| const XBOX_DPAD_RIGHT_UP: StringName = &"⊁" |  | ||||||
| const XBOX_DPAD_RIGHT_UP_INT: int = 8833 |  | ||||||
| const XBOX_DPAD_LEFT_DOWN: StringName = &"⊂" |  | ||||||
| const XBOX_DPAD_LEFT_DOWN_INT: int = 8834 |  | ||||||
| const XBOX_DPAD_RIGHT_DOWN: StringName = &"⊃" |  | ||||||
| const XBOX_DPAD_RIGHT_DOWN_INT: int = 8835 |  | ||||||
| const XBOX_DPAD: StringName = &"⊄" |  | ||||||
| const XBOX_DPAD_INT: int = 8836 |  | ||||||
| const ICON_PIN: StringName = &"⌖" |  | ||||||
| const ICON_PIN_INT: int = 8982 |  | ||||||
| const ANDROID_TABS: StringName = &"⏍" |  | ||||||
| const ANDROID_TABS_INT: int = 9165 |  | ||||||
| const ANDROID_BACK: StringName = &"⏎" |  | ||||||
| const ANDROID_BACK_INT: int = 9166 |  | ||||||
| const ANDROID_HOME: StringName = &"⏏" |  | ||||||
| const ANDROID_HOME_INT: int = 9167 |  | ||||||
| const ANDROID_HORIZONTAL_DOTS: StringName = &"⏐" |  | ||||||
| const ANDROID_HORIZONTAL_DOTS_INT: int = 9168 |  | ||||||
| const ANDROID_VERTICAL_DOTS: StringName = &"⏑" |  | ||||||
| const ANDROID_VERTICAL_DOTS_INT: int = 9169 |  | ||||||
| const ANDROID_HAMBURGER_MENU: StringName = &"⏒" |  | ||||||
| const ANDROID_HAMBURGER_MENU_INT: int = 9170 |  | ||||||
| const KEYBOARD_LEFT: StringName = &"⏴" |  | ||||||
| const KEYBOARD_LEFT_INT: int = 9204 |  | ||||||
| const KEYBOARD_UP: StringName = &"⏵" |  | ||||||
| const KEYBOARD_UP_INT: int = 9205 |  | ||||||
| const KEYBOARD_RIGHT: StringName = &"⏶" |  | ||||||
| const KEYBOARD_RIGHT_INT: int = 9206 |  | ||||||
| const KEYBOARD_DOWN: StringName = &"⏷" |  | ||||||
| const KEYBOARD_DOWN_INT: int = 9207 |  | ||||||
| const KEYBOARD_WASD: StringName = &"␣" |  | ||||||
| const KEYBOARD_WASD_INT: int = 9251 |  | ||||||
| const KEYBOARD_ARROWS: StringName = &"" |  | ||||||
| const KEYBOARD_ARROWS_INT: int = 9252 |  | ||||||
| const KEYBOARD_IJKL: StringName = &"␥" |  | ||||||
| const KEYBOARD_IJKL_INT: int = 9253 |  | ||||||
| const KEYBOARD_FN: StringName = &"␦" |  | ||||||
| const KEYBOARD_FN_INT: int = 9254 |  | ||||||
| const KEYBOARD_CONTROL: StringName = &"" |  | ||||||
| const KEYBOARD_CONTROL_INT: int = 9255 |  | ||||||
| const KEYBOARD_ALT: StringName = &"" |  | ||||||
| const KEYBOARD_ALT_INT: int = 9256 |  | ||||||
| const KEYBOARD_SHIFT: StringName = &"" |  | ||||||
| const KEYBOARD_SHIFT_INT: int = 9257 |  | ||||||
| const KEYBOARD_SUPER: StringName = &"" |  | ||||||
| const KEYBOARD_SUPER_INT: int = 9258 |  | ||||||
| const KEYBOARD_TAB: StringName = &"" |  | ||||||
| const KEYBOARD_TAB_INT: int = 9259 |  | ||||||
| const KEYBOARD_CAPS: StringName = &"" |  | ||||||
| const KEYBOARD_CAPS_INT: int = 9260 |  | ||||||
| const KEYBOARD_BACKSPACE: StringName = &"" |  | ||||||
| const KEYBOARD_BACKSPACE_INT: int = 9261 |  | ||||||
| const KEYBOARD_ENTER: StringName = &"" |  | ||||||
| const KEYBOARD_ENTER_INT: int = 9262 |  | ||||||
| const KEYBOARD_ESCAPE: StringName = &"" |  | ||||||
| const KEYBOARD_ESCAPE_INT: int = 9263 |  | ||||||
| const KEYBOARD_PRINT_SCREEN: StringName = &"" |  | ||||||
| const KEYBOARD_PRINT_SCREEN_INT: int = 9264 |  | ||||||
| const KEYBOARD_SCROLL_LOCK: StringName = &"" |  | ||||||
| const KEYBOARD_SCROLL_LOCK_INT: int = 9265 |  | ||||||
| const KEYBOARD_PAUSE: StringName = &"" |  | ||||||
| const KEYBOARD_PAUSE_INT: int = 9266 |  | ||||||
| const KEYBOARD_NUM_LOCK: StringName = &"" |  | ||||||
| const KEYBOARD_NUM_LOCK_INT: int = 9267 |  | ||||||
| const KEYBOARD_INSERT: StringName = &"" |  | ||||||
| const KEYBOARD_INSERT_INT: int = 9268 |  | ||||||
| const KEYBOARD_HOME: StringName = &"" |  | ||||||
| const KEYBOARD_HOME_INT: int = 9269 |  | ||||||
| const KEYBOARD_PAGE_UP: StringName = &"" |  | ||||||
| const KEYBOARD_PAGE_UP_INT: int = 9270 |  | ||||||
| const KEYBOARD_DELETE: StringName = &"" |  | ||||||
| const KEYBOARD_DELETE_INT: int = 9271 |  | ||||||
| const KEYBOARD_END: StringName = &"" |  | ||||||
| const KEYBOARD_END_INT: int = 9272 |  | ||||||
| const KEYBOARD_PAGE_DOWN: StringName = &"" |  | ||||||
| const KEYBOARD_PAGE_DOWN_INT: int = 9273 |  | ||||||
| const KEYBOARD_SPACE: StringName = &"" |  | ||||||
| const KEYBOARD_SPACE_INT: int = 9274 |  | ||||||
| const DEVICE_GAMEPAD: StringName = &"" |  | ||||||
| const DEVICE_GAMEPAD_INT: int = 9276 |  | ||||||
| const DEVICE_KEYBOARD: StringName = &"" |  | ||||||
| const DEVICE_KEYBOARD_INT: int = 9277 |  | ||||||
| const DEVICE_MOUSE: StringName = &"" |  | ||||||
| const DEVICE_MOUSE_INT: int = 9278 |  | ||||||
| const DEVICE_MOUSE_KEYBOARD: StringName = &"" |  | ||||||
| const DEVICE_MOUSE_KEYBOARD_INT: int = 9279 |  | ||||||
| const DEVICE_DS4: StringName = &"⑀" |  | ||||||
| const DEVICE_DS4_INT: int = 9280 |  | ||||||
| const DEVICE_DUALSENSE: StringName = &"⑁" |  | ||||||
| const DEVICE_DUALSENSE_INT: int = 9281 |  | ||||||
| const DEVICE_X360: StringName = &"⑂" |  | ||||||
| const DEVICE_X360_INT: int = 9282 |  | ||||||
| const KEYBOARD_ALT_GR: StringName = &"⑊" |  | ||||||
| const KEYBOARD_ALT_GR_INT: int = 9290 |  | ||||||
| const KEYBOARD_ALT_L: StringName = &"" |  | ||||||
| const KEYBOARD_ALT_L_INT: int = 9291 |  | ||||||
| const KEYBOARD_ALT_R: StringName = &"" |  | ||||||
| const KEYBOARD_ALT_R_INT: int = 9292 |  | ||||||
| const KEYBOARD_CONTROL_L: StringName = &"" |  | ||||||
| const KEYBOARD_CONTROL_L_INT: int = 9293 |  | ||||||
| const KEYBOARD_CONTROL_R: StringName = &"" |  | ||||||
| const KEYBOARD_CONTROL_R_INT: int = 9294 |  | ||||||
| const KEYBOARD_SHIFT_L: StringName = &"" |  | ||||||
| const KEYBOARD_SHIFT_L_INT: int = 9295 |  | ||||||
| const KEYBOARD_SHIFT_R: StringName = &"" |  | ||||||
| const KEYBOARD_SHIFT_R_INT: int = 9296 |  | ||||||
| const KEYBOARD_F1: StringName = &"①" |  | ||||||
| const KEYBOARD_F1_INT: int = 9312 |  | ||||||
| const KEYBOARD_F2: StringName = &"②" |  | ||||||
| const KEYBOARD_F2_INT: int = 9313 |  | ||||||
| const KEYBOARD_F3: StringName = &"③" |  | ||||||
| const KEYBOARD_F3_INT: int = 9314 |  | ||||||
| const KEYBOARD_F4: StringName = &"④" |  | ||||||
| const KEYBOARD_F4_INT: int = 9315 |  | ||||||
| const KEYBOARD_F5: StringName = &"⑤" |  | ||||||
| const KEYBOARD_F5_INT: int = 9316 |  | ||||||
| const KEYBOARD_F6: StringName = &"⑥" |  | ||||||
| const KEYBOARD_F6_INT: int = 9317 |  | ||||||
| const KEYBOARD_F7: StringName = &"⑦" |  | ||||||
| const KEYBOARD_F7_INT: int = 9318 |  | ||||||
| const KEYBOARD_F8: StringName = &"⑧" |  | ||||||
| const KEYBOARD_F8_INT: int = 9319 |  | ||||||
| const KEYBOARD_F9: StringName = &"⑨" |  | ||||||
| const KEYBOARD_F9_INT: int = 9320 |  | ||||||
| const KEYBOARD_F10: StringName = &"⑩" |  | ||||||
| const KEYBOARD_F10_INT: int = 9321 |  | ||||||
| const KEYBOARD_F11: StringName = &"⑪" |  | ||||||
| const KEYBOARD_F11_INT: int = 9322 |  | ||||||
| const KEYBOARD_F12: StringName = &"⑫" |  | ||||||
| const KEYBOARD_F12_INT: int = 9323 |  | ||||||
| const KEYBOARD_KEY: StringName = &"⒏" |  | ||||||
| const KEYBOARD_KEY_INT: int = 9359 |  | ||||||
| const ICON_1: StringName = &"⓵" |  | ||||||
| const ICON_1_INT: int = 9461 |  | ||||||
| const ICON_2: StringName = &"⓶" |  | ||||||
| const ICON_2_INT: int = 9462 |  | ||||||
| const ICON_3: StringName = &"⓷" |  | ||||||
| const ICON_3_INT: int = 9463 |  | ||||||
| const ICON_4: StringName = &"⓸" |  | ||||||
| const ICON_4_INT: int = 9464 |  | ||||||
| const ICON_5: StringName = &"⓹" |  | ||||||
| const ICON_5_INT: int = 9465 |  | ||||||
| const ICON_6: StringName = &"⓺" |  | ||||||
| const ICON_6_INT: int = 9466 |  | ||||||
| const ICON_7: StringName = &"⓻" |  | ||||||
| const ICON_7_INT: int = 9467 |  | ||||||
| const ICON_8: StringName = &"⓼" |  | ||||||
| const ICON_8_INT: int = 9468 |  | ||||||
| const ICON_9: StringName = &"⓽" |  | ||||||
| const ICON_9_INT: int = 9469 |  | ||||||
| const ICON_0: StringName = &"⓿" |  | ||||||
| const ICON_0_INT: int = 9471 |  | ||||||
| const ICON_STAR: StringName = &"★" |  | ||||||
| const ICON_STAR_INT: int = 9733 |  | ||||||
| const ICON_EMPTY_STAR: StringName = &"☆" |  | ||||||
| const ICON_EMPTY_STAR_INT: int = 9734 |  | ||||||
| const ICON_SKULL: StringName = &"☠" |  | ||||||
| const ICON_SKULL_INT: int = 9760 |  | ||||||
| const ICON_FROWN: StringName = &"☹" |  | ||||||
| const ICON_FROWN_INT: int = 9785 |  | ||||||
| const ICON_SMILE: StringName = &"☺" |  | ||||||
| const ICON_SMILE_INT: int = 9786 |  | ||||||
| const ICON_FULL_SPADE: StringName = &"♠" |  | ||||||
| const ICON_FULL_SPADE_INT: int = 9824 |  | ||||||
| const ICON_EMPTY_HEART: StringName = &"♡" |  | ||||||
| const ICON_EMPTY_HEART_INT: int = 9825 |  | ||||||
| const ICON_EMPTY_DIAMOND: StringName = &"♢" |  | ||||||
| const ICON_EMPTY_DIAMOND_INT: int = 9826 |  | ||||||
| const ICON_FULL_CLUB: StringName = &"♣" |  | ||||||
| const ICON_FULL_CLUB_INT: int = 9827 |  | ||||||
| const ICON_EMPTY_SPADE: StringName = &"♤" |  | ||||||
| const ICON_EMPTY_SPADE_INT: int = 9828 |  | ||||||
| const ICON_FULL_HEART: StringName = &"♥" |  | ||||||
| const ICON_FULL_HEART_INT: int = 9829 |  | ||||||
| const ICON_FULL_DIAMOND: StringName = &"♦" |  | ||||||
| const ICON_FULL_DIAMOND_INT: int = 9830 |  | ||||||
| const ICON_EMPTY_CLUB: StringName = &"♧" |  | ||||||
| const ICON_EMPTY_CLUB_INT: int = 9831 |  | ||||||
| const ICON_D4: StringName = &"♳" |  | ||||||
| const ICON_D4_INT: int = 9843 |  | ||||||
| const ICON_D6: StringName = &"♴" |  | ||||||
| const ICON_D6_INT: int = 9844 |  | ||||||
| const ICON_D8: StringName = &"♵" |  | ||||||
| const ICON_D8_INT: int = 9845 |  | ||||||
| const ICON_D10: StringName = &"♶" |  | ||||||
| const ICON_D10_INT: int = 9846 |  | ||||||
| const ICON_D12: StringName = &"♷" |  | ||||||
| const ICON_D12_INT: int = 9847 |  | ||||||
| const ICON_D20: StringName = &"♸" |  | ||||||
| const ICON_D20_INT: int = 9848 |  | ||||||
| const ICON_D6_1: StringName = &"⚀" |  | ||||||
| const ICON_D6_1_INT: int = 9856 |  | ||||||
| const ICON_D6_2: StringName = &"⚁" |  | ||||||
| const ICON_D6_2_INT: int = 9857 |  | ||||||
| const ICON_D6_3: StringName = &"⚂" |  | ||||||
| const ICON_D6_3_INT: int = 9858 |  | ||||||
| const ICON_D6_4: StringName = &"⚃" |  | ||||||
| const ICON_D6_4_INT: int = 9859 |  | ||||||
| const ICON_D6_5: StringName = &"⚄" |  | ||||||
| const ICON_D6_5_INT: int = 9860 |  | ||||||
| const ICON_D6_6: StringName = &"⚅" |  | ||||||
| const ICON_D6_6_INT: int = 9861 |  | ||||||
| const ICON_FLAG: StringName = &"⚑" |  | ||||||
| const ICON_FLAG_INT: int = 9873 |  | ||||||
| const ICON_GEARS: StringName = &"⚙" |  | ||||||
| const ICON_GEARS_INT: int = 9881 |  | ||||||
| const ICON_CROSS: StringName = &"✗" |  | ||||||
| const ICON_CROSS_INT: int = 10007 |  | ||||||
| const ICON_QUESTION: StringName = &"❓" |  | ||||||
| const ICON_QUESTION_INT: int = 10067 |  | ||||||
| const ICON_BANG: StringName = &"❗" |  | ||||||
| const ICON_BANG_INT: int = 10071 |  | ||||||
| const MOUSE_1: StringName = &"➊" |  | ||||||
| const MOUSE_1_INT: int = 10122 |  | ||||||
| const MOUSE_2: StringName = &"➋" |  | ||||||
| const MOUSE_2_INT: int = 10123 |  | ||||||
| const MOUSE_3: StringName = &"➌" |  | ||||||
| const MOUSE_3_INT: int = 10124 |  | ||||||
| const MOUSE_4: StringName = &"➍" |  | ||||||
| const MOUSE_4_INT: int = 10125 |  | ||||||
| const MOUSE_5: StringName = &"➎" |  | ||||||
| const MOUSE_5_INT: int = 10126 |  | ||||||
| const MOUSE_6: StringName = &"➏" |  | ||||||
| const MOUSE_6_INT: int = 10127 |  | ||||||
| const MOUSE_7: StringName = &"➐" |  | ||||||
| const MOUSE_7_INT: int = 10128 |  | ||||||
| const MOUSE_8: StringName = &"➑" |  | ||||||
| const MOUSE_8_INT: int = 10129 |  | ||||||
| const MOUSE_SCROLL_UP: StringName = &"⟰" |  | ||||||
| const MOUSE_SCROLL_UP_INT: int = 10224 |  | ||||||
| const MOUSE_SCROLL_DOWN: StringName = &"⟱" |  | ||||||
| const MOUSE_SCROLL_DOWN_INT: int = 10225 |  | ||||||
| const MOUSE_LEFT: StringName = &"⟵" |  | ||||||
| const MOUSE_LEFT_INT: int = 10229 |  | ||||||
| const MOUSE_RIGHT: StringName = &"⟶" |  | ||||||
| const MOUSE_RIGHT_INT: int = 10230 |  | ||||||
| const MOUSE_MIDDLE: StringName = &"⟷" |  | ||||||
| const MOUSE_MIDDLE_INT: int = 10231 |  | ||||||
| const MOUSE_LEFT_RIGHT: StringName = &"⟺" |  | ||||||
| const MOUSE_LEFT_RIGHT_INT: int = 10234 |  | ||||||
| const MOUSE_UP_DOWN: StringName = &"⟻" |  | ||||||
| const MOUSE_UP_DOWN_INT: int = 10235 |  | ||||||
| const MOUSE_ANY: StringName = &"⟼" |  | ||||||
| const MOUSE_ANY_INT: int = 10236 |  | ||||||
| const ICON_BOX: StringName = &"⬛" |  | ||||||
| const ICON_BOX_INT: int = 11035 |  | ||||||
| const ICON_PLAYSTATION: StringName = &"" |  | ||||||
| const ICON_PLAYSTATION_INT: int = 57344 |  | ||||||
| const ICON_XBOX: StringName = &"" |  | ||||||
| const ICON_XBOX_INT: int = 57345 |  | ||||||
| const ICON_NINTENDO_SWITCH: StringName = &"" |  | ||||||
| const ICON_NINTENDO_SWITCH_INT: int = 57346 |  | ||||||
| const ICON_AYANEO: StringName = &"" |  | ||||||
| const ICON_AYANEO_INT: int = 57347 |  | ||||||
| const ICON_LENOVO_LEGION: StringName = &"" |  | ||||||
| const ICON_LENOVO_LEGION_INT: int = 57348 |  | ||||||
| const ROG_ALLY_ARMOURY: StringName = &"" |  | ||||||
| const ROG_ALLY_ARMOURY_INT: int = 57349 |  | ||||||
| const ROG_ALLY_COMMAND: StringName = &"" |  | ||||||
| const ROG_ALLY_COMMAND_INT: int = 57350 |  | ||||||
| const ICON_MAC: StringName = &"" |  | ||||||
| const ICON_MAC_INT: int = 57351 |  | ||||||
| const ICON_WINDOWS: StringName = &"" |  | ||||||
| const ICON_WINDOWS_INT: int = 57352 |  | ||||||
| const ICON_LINUX: StringName = &"" |  | ||||||
| const ICON_LINUX_INT: int = 57353 |  | ||||||
| const ICON_BSD: StringName = &"" |  | ||||||
| const ICON_BSD_INT: int = 57354 |  | ||||||
| const ICON_STEAM: StringName = &"" |  | ||||||
| const ICON_STEAM_INT: int = 57355 |  | ||||||
| const ICON_ITCH_IO: StringName = &"" |  | ||||||
| const ICON_ITCH_IO_INT: int = 57356 |  | ||||||
| const ICON_HUMBLE: StringName = &"" |  | ||||||
| const ICON_HUMBLE_INT: int = 57357 |  | ||||||
| const ICON_EPIC_GAME_STORE: StringName = &"" |  | ||||||
| const ICON_EPIC_GAME_STORE_INT: int = 57358 |  | ||||||
| const ICON_GOOD_OLD_GAMES: StringName = &"" |  | ||||||
| const ICON_GOOD_OLD_GAMES_INT: int = 57359 |  | ||||||
| const MSI_CLAW_CENTER: StringName = &"" |  | ||||||
| const MSI_CLAW_CENTER_INT: int = 57360 |  | ||||||
| const MSI_CLAW_QUICK: StringName = &"" |  | ||||||
| const MSI_CLAW_QUICK_INT: int = 57361 |  | ||||||
| const KEYBOARD_0: StringName = &"0" |  | ||||||
| const KEYBOARD_0_INT: int = 65296 |  | ||||||
| const KEYBOARD_1: StringName = &"1" |  | ||||||
| const KEYBOARD_1_INT: int = 65297 |  | ||||||
| const KEYBOARD_2: StringName = &"2" |  | ||||||
| const KEYBOARD_2_INT: int = 65298 |  | ||||||
| const KEYBOARD_3: StringName = &"3" |  | ||||||
| const KEYBOARD_3_INT: int = 65299 |  | ||||||
| const KEYBOARD_4: StringName = &"4" |  | ||||||
| const KEYBOARD_4_INT: int = 65300 |  | ||||||
| const KEYBOARD_5: StringName = &"5" |  | ||||||
| const KEYBOARD_5_INT: int = 65301 |  | ||||||
| const KEYBOARD_6: StringName = &"6" |  | ||||||
| const KEYBOARD_6_INT: int = 65302 |  | ||||||
| const KEYBOARD_7: StringName = &"7" |  | ||||||
| const KEYBOARD_7_INT: int = 65303 |  | ||||||
| const KEYBOARD_8: StringName = &"8" |  | ||||||
| const KEYBOARD_8_INT: int = 65304 |  | ||||||
| const KEYBOARD_9: StringName = &"9" |  | ||||||
| const KEYBOARD_9_INT: int = 65305 |  | ||||||
| const KEYBOARD_A: StringName = &"A" |  | ||||||
| const KEYBOARD_A_INT: int = 65313 |  | ||||||
| const KEYBOARD_B: StringName = &"B" |  | ||||||
| const KEYBOARD_B_INT: int = 65314 |  | ||||||
| const KEYBOARD_C: StringName = &"C" |  | ||||||
| const KEYBOARD_C_INT: int = 65315 |  | ||||||
| const KEYBOARD_D: StringName = &"D" |  | ||||||
| const KEYBOARD_D_INT: int = 65316 |  | ||||||
| const KEYBOARD_E: StringName = &"E" |  | ||||||
| const KEYBOARD_E_INT: int = 65317 |  | ||||||
| const KEYBOARD_F: StringName = &"F" |  | ||||||
| const KEYBOARD_F_INT: int = 65318 |  | ||||||
| const KEYBOARD_G: StringName = &"G" |  | ||||||
| const KEYBOARD_G_INT: int = 65319 |  | ||||||
| const KEYBOARD_H: StringName = &"H" |  | ||||||
| const KEYBOARD_H_INT: int = 65320 |  | ||||||
| const KEYBOARD_I: StringName = &"I" |  | ||||||
| const KEYBOARD_I_INT: int = 65321 |  | ||||||
| const KEYBOARD_J: StringName = &"J" |  | ||||||
| const KEYBOARD_J_INT: int = 65322 |  | ||||||
| const KEYBOARD_K: StringName = &"K" |  | ||||||
| const KEYBOARD_K_INT: int = 65323 |  | ||||||
| const KEYBOARD_L: StringName = &"L" |  | ||||||
| const KEYBOARD_L_INT: int = 65324 |  | ||||||
| const KEYBOARD_M: StringName = &"M" |  | ||||||
| const KEYBOARD_M_INT: int = 65325 |  | ||||||
| const KEYBOARD_N: StringName = &"N" |  | ||||||
| const KEYBOARD_N_INT: int = 65326 |  | ||||||
| const KEYBOARD_O: StringName = &"O" |  | ||||||
| const KEYBOARD_O_INT: int = 65327 |  | ||||||
| const KEYBOARD_P: StringName = &"P" |  | ||||||
| const KEYBOARD_P_INT: int = 65328 |  | ||||||
| const KEYBOARD_Q: StringName = &"Q" |  | ||||||
| const KEYBOARD_Q_INT: int = 65329 |  | ||||||
| const KEYBOARD_R: StringName = &"R" |  | ||||||
| const KEYBOARD_R_INT: int = 65330 |  | ||||||
| const KEYBOARD_S: StringName = &"S" |  | ||||||
| const KEYBOARD_S_INT: int = 65331 |  | ||||||
| const KEYBOARD_T: StringName = &"T" |  | ||||||
| const KEYBOARD_T_INT: int = 65332 |  | ||||||
| const KEYBOARD_U: StringName = &"U" |  | ||||||
| const KEYBOARD_U_INT: int = 65333 |  | ||||||
| const KEYBOARD_V: StringName = &"V" |  | ||||||
| const KEYBOARD_V_INT: int = 65334 |  | ||||||
| const KEYBOARD_W: StringName = &"W" |  | ||||||
| const KEYBOARD_W_INT: int = 65335 |  | ||||||
| const KEYBOARD_X: StringName = &"X" |  | ||||||
| const KEYBOARD_X_INT: int = 65336 |  | ||||||
| const KEYBOARD_Y: StringName = &"Y" |  | ||||||
| const KEYBOARD_Y_INT: int = 65337 |  | ||||||
| const KEYBOARD_Z: StringName = &"Z" |  | ||||||
| const KEYBOARD_Z_INT: int = 65338 |  | ||||||
| const ICON_HEADPHONES: StringName = &"🎧" |  | ||||||
| const ICON_HEADPHONES_INT: int = 127911 |  | ||||||
| const ICON_MUSIC: StringName = &"🎶" |  | ||||||
| const ICON_MUSIC_INT: int = 127926 |  | ||||||
| const ICON_FISH: StringName = &"🐟" |  | ||||||
| const ICON_FISH_INT: int = 128031 |  | ||||||
| const DEVICE_DANCE_PAD: StringName = &"💃" |  | ||||||
| const DEVICE_DANCE_PAD_INT: int = 128131 |  | ||||||
| const ICON_LAPTOP: StringName = &"💻" |  | ||||||
| const ICON_LAPTOP_INT: int = 128187 |  | ||||||
| const ICON_DISKETTE: StringName = &"💾" |  | ||||||
| const ICON_DISKETTE_INT: int = 128190 |  | ||||||
| const ICON_WRITE: StringName = &"📝" |  | ||||||
| const ICON_WRITE_INT: int = 128221 |  | ||||||
| const DEVICE_PHONE: StringName = &"📱" |  | ||||||
| const DEVICE_PHONE_INT: int = 128241 |  | ||||||
| const ICON_CAMERA: StringName = &"📷" |  | ||||||
| const ICON_CAMERA_INT: int = 128247 |  | ||||||
| const ICON_SPEAKER: StringName = &"🔈" |  | ||||||
| const ICON_SPEAKER_INT: int = 128264 |  | ||||||
| const DEVICE_LIGHT_GUN: StringName = &"🔫" |  | ||||||
| const DEVICE_LIGHT_GUN_INT: int = 128299 |  | ||||||
| const ICON_NOISE: StringName = &"🕬" |  | ||||||
| const ICON_NOISE_INT: int = 128364 |  | ||||||
| const DEVICE_STEERING_WHEEL: StringName = &"🕸" |  | ||||||
| const DEVICE_STEERING_WHEEL_INT: int = 128376 |  | ||||||
| const DEVICE_JOY_STICK: StringName = &"🕹" |  | ||||||
| const DEVICE_JOY_STICK_INT: int = 128377 |  | ||||||
| const DEVICE_VR_HEADSET: StringName = &"🕻" |  | ||||||
| const DEVICE_VR_HEADSET_INT: int = 128379 |  | ||||||
| const DEVICE_VR_CONTROLLER: StringName = &"🕼" |  | ||||||
| const DEVICE_VR_CONTROLLER_INT: int = 128380 |  | ||||||
| const DEVICE_FLIGHT_STICK: StringName = &"🕽" |  | ||||||
| const DEVICE_FLIGHT_STICK_INT: int = 128381 |  | ||||||
| const ICON_PROCESSOR: StringName = &"🖥" |  | ||||||
| const ICON_PROCESSOR_INT: int = 128421 |  | ||||||
| const ICON_INTERNET: StringName = &"🖧" |  | ||||||
| const ICON_INTERNET_INT: int = 128423 |  | ||||||
| const ICON_GRAPHICS_CARD: StringName = &"🖨" |  | ||||||
| const ICON_GRAPHICS_CARD_INT: int = 128424 |  | ||||||
| const ICON_MEMORY: StringName = &"🖪" |  | ||||||
| const ICON_MEMORY_INT: int = 128426 |  | ||||||
| const ICON_USB_STICK: StringName = &"🖫" |  | ||||||
| const ICON_USB_STICK_INT: int = 128427 |  | ||||||
| const ICON_DATABASE: StringName = &"🖬" |  | ||||||
| const ICON_DATABASE_INT: int = 128428 |  | ||||||
| const ICON_HARD_DISK: StringName = &"🖴" |  | ||||||
| const ICON_HARD_DISK_INT: int = 128436 |  | ||||||
| const ICON_SCREEN: StringName = &"🖵" |  | ||||||
| const ICON_SCREEN_INT: int = 128437 |  | ||||||
| const ICON_TEXT_ENTRY: StringName = &"🖹" |  | ||||||
| const ICON_TEXT_ENTRY_INT: int = 128441 |  | ||||||
| const ICON_SPEAK: StringName = &"🗣" |  | ||||||
| const ICON_SPEAK_INT: int = 128483 |  | ||||||
| const ICON_LANGUAGE: StringName = &"🗩" |  | ||||||
| const ICON_LANGUAGE_INT: int = 128489 |  | ||||||
| const ICON_EXIT: StringName = &"🚪" |  | ||||||
| const ICON_EXIT_INT: int = 128682 |  | ||||||
| const ICON_INFORMATION: StringName = &"🛈" |  | ||||||
| const ICON_INFORMATION_INT: int = 128712 |  | ||||||
| const ICON_SHOPPING_CART: StringName = &"🛒" |  | ||||||
| const ICON_SHOPPING_CART_INT: int = 128722 |  | ||||||
| 
 |  | ||||||
| static var promptfont: PromptFont |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| static func _static_init() -> void: |  | ||||||
| 	promptfont = PromptFont.new() |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| static func get_str(name: StringName) -> StringName: |  | ||||||
| 	return promptfont.get(name) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| static func get_int(name: StringName) -> int: |  | ||||||
| 	return promptfont.get(name + "_INT") |  | ||||||
										
											Binary file not shown.
										
									
								
							| @ -1,34 +0,0 @@ | |||||||
| [remap] |  | ||||||
| 
 |  | ||||||
| importer="font_data_dynamic" |  | ||||||
| type="FontFile" |  | ||||||
| uid="uid://dyog4ex5nqfat" |  | ||||||
| path="res://.godot/imported/promptfont.otf-be4e68f585432fa59d03181ca09a9538.fontdata" |  | ||||||
| 
 |  | ||||||
| [deps] |  | ||||||
| 
 |  | ||||||
| source_file="res://assets/fonts/promptfont/promptfont.otf" |  | ||||||
| dest_files=["res://.godot/imported/promptfont.otf-be4e68f585432fa59d03181ca09a9538.fontdata"] |  | ||||||
| 
 |  | ||||||
| [params] |  | ||||||
| 
 |  | ||||||
| Rendering=null |  | ||||||
| antialiasing=1 |  | ||||||
| generate_mipmaps=true |  | ||||||
| disable_embedded_bitmaps=true |  | ||||||
| multichannel_signed_distance_field=false |  | ||||||
| msdf_pixel_range=8 |  | ||||||
| msdf_size=48 |  | ||||||
| allow_system_fallback=true |  | ||||||
| force_autohinter=false |  | ||||||
| hinting=1 |  | ||||||
| subpixel_positioning=1 |  | ||||||
| oversampling=0.0 |  | ||||||
| Fallbacks=null |  | ||||||
| fallbacks=[] |  | ||||||
| Compress=null |  | ||||||
| compress=true |  | ||||||
| preload=[] |  | ||||||
| language_support={} |  | ||||||
| script_support={} |  | ||||||
| opentype_features={} |  | ||||||
| @ -21,7 +21,7 @@ compress/lossy_quality=0.7 | |||||||
| compress/hdr_compression=1 | compress/hdr_compression=1 | ||||||
| compress/normal_map=0 | compress/normal_map=0 | ||||||
| compress/channel_pack=0 | compress/channel_pack=0 | ||||||
| mipmaps/generate=true | mipmaps/generate=false | ||||||
| mipmaps/limit=-1 | mipmaps/limit=-1 | ||||||
| roughness/mode=0 | roughness/mode=0 | ||||||
| roughness/src_normal="" | roughness/src_normal="" | ||||||
| @ -31,4 +31,4 @@ process/normal_map_invert_y=false | |||||||
| process/hdr_as_srgb=false | process/hdr_as_srgb=false | ||||||
| process/hdr_clamp_exposure=false | process/hdr_clamp_exposure=false | ||||||
| process/size_limit=0 | process/size_limit=0 | ||||||
| detect_3d/compress_to=0 | detect_3d/compress_to=1 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| [gd_scene load_steps=61 format=3 uid="uid://bm2o3mex10v11"] | [gd_scene load_steps=37 format=3 uid="uid://bm2o3mex10v11"] | ||||||
| 
 | 
 | ||||||
| [ext_resource type="Terrain3DAssets" uid="uid://cwl34gstabgrx" path="res://levels/debug_level/terrain_assets.res" id="1_5smdk"] | [ext_resource type="Terrain3DAssets" uid="uid://cwl34gstabgrx" path="res://levels/debug_level/terrain_assets.res" id="1_5smdk"] | ||||||
| [ext_resource type="Shader" path="res://src/shaders/psx_water.gdshader" id="6_0efu4"] | [ext_resource type="Shader" path="res://src/shaders/psx_water.gdshader" id="6_0efu4"] | ||||||
| @ -10,13 +10,9 @@ | |||||||
| [ext_resource type="PackedScene" uid="uid://di7aql54lksn7" path="res://src/props/scenery/trees/palm_tree/palm_tree.tscn" id="12_sswxf"] | [ext_resource type="PackedScene" uid="uid://di7aql54lksn7" path="res://src/props/scenery/trees/palm_tree/palm_tree.tscn" id="12_sswxf"] | ||||||
| [ext_resource type="PackedScene" uid="uid://c7l58wuuahn7w" path="res://src/props/flag/flag.tscn" id="13_6jtao"] | [ext_resource type="PackedScene" uid="uid://c7l58wuuahn7w" path="res://src/props/flag/flag.tscn" id="13_6jtao"] | ||||||
| [ext_resource type="PackedScene" uid="uid://cl0goj38u7r72" path="res://src/props/scenery/beach/sailboat.tscn" id="14_6reiy"] | [ext_resource type="PackedScene" uid="uid://cl0goj38u7r72" path="res://src/props/scenery/beach/sailboat.tscn" id="14_6reiy"] | ||||||
| [ext_resource type="PackedScene" uid="uid://dwfckgdxnwwru" path="res://src/world/effects/zephyr/zephyr_particle.tscn" id="16_2kyww"] |  | ||||||
| [ext_resource type="Texture2D" uid="uid://du3vk5nnksohs" path="res://assets/sprites/particles/sparkle.png" id="16_2m5yu"] | [ext_resource type="Texture2D" uid="uid://du3vk5nnksohs" path="res://assets/sprites/particles/sparkle.png" id="16_2m5yu"] | ||||||
| [ext_resource type="Shader" path="res://src/shaders/frosted_glass.gdshader" id="16_rat2n"] |  | ||||||
| [ext_resource type="PackedScene" uid="uid://nqar1qcun8ax" path="res://src/props/scenery/highway/guard_rail/guard_rail.tscn" id="16_xtxyj"] | [ext_resource type="PackedScene" uid="uid://nqar1qcun8ax" path="res://src/props/scenery/highway/guard_rail/guard_rail.tscn" id="16_xtxyj"] | ||||||
| [ext_resource type="PackedScene" uid="uid://d0tcr6uijpym5" path="res://src/props/scenery/highway/highway_road.tscn" id="17_amems"] | [ext_resource type="PackedScene" uid="uid://d0tcr6uijpym5" path="res://src/props/scenery/highway/highway_road.tscn" id="17_amems"] | ||||||
| [ext_resource type="Texture2D" uid="uid://bq8dxuxfw1rwu" path="res://assets/textures/wood/lacquered_planks.png" id="17_xciuf"] |  | ||||||
| [ext_resource type="Texture2D" path="res://assets/textures/grass_green/grass_green_albedo.dds" id="18_scall"] |  | ||||||
| [ext_resource type="PackedScene" uid="uid://cblsayfgirexr" path="res://src/characters/umineko/umineko.tscn" id="21_ch6qk"] | [ext_resource type="PackedScene" uid="uid://cblsayfgirexr" path="res://src/characters/umineko/umineko.tscn" id="21_ch6qk"] | ||||||
| 
 | 
 | ||||||
| [sub_resource type="FastNoiseLite" id="FastNoiseLite_rpgb7"] | [sub_resource type="FastNoiseLite" id="FastNoiseLite_rpgb7"] | ||||||
| @ -188,112 +184,6 @@ _data = { | |||||||
| } | } | ||||||
| point_count = 5 | point_count = 5 | ||||||
| 
 | 
 | ||||||
| [sub_resource type="FastNoiseLite" id="FastNoiseLite_h2ddb"] |  | ||||||
| 
 |  | ||||||
| [sub_resource type="NoiseTexture2D" id="NoiseTexture2D_b16ga"] |  | ||||||
| seamless = true |  | ||||||
| as_normal_map = true |  | ||||||
| noise = SubResource("FastNoiseLite_h2ddb") |  | ||||||
| 
 |  | ||||||
| [sub_resource type="FastNoiseLite" id="FastNoiseLite_cct0w"] |  | ||||||
| 
 |  | ||||||
| [sub_resource type="NoiseTexture2D" id="NoiseTexture2D_qd4od"] |  | ||||||
| seamless = true |  | ||||||
| noise = SubResource("FastNoiseLite_cct0w") |  | ||||||
| 
 |  | ||||||
| [sub_resource type="ShaderMaterial" id="ShaderMaterial_lwas5"] |  | ||||||
| render_priority = 0 |  | ||||||
| shader = ExtResource("16_rat2n") |  | ||||||
| shader_parameter/albedo = Color(0.263625, 0.1147, 0.37, 0.572549) |  | ||||||
| shader_parameter/roughness = 0.2 |  | ||||||
| shader_parameter/refraction = 0.200001 |  | ||||||
| shader_parameter/refraction_texture_channel = Vector4(1, 0, 0, 0) |  | ||||||
| shader_parameter/normal_strength = 0.552001 |  | ||||||
| shader_parameter/normal_map = SubResource("NoiseTexture2D_b16ga") |  | ||||||
| shader_parameter/subsurface_scattering_strength = 1.0 |  | ||||||
| shader_parameter/texture_subsurface_scattering = SubResource("NoiseTexture2D_qd4od") |  | ||||||
| shader_parameter/edge_color = Color(0, 0, 0, 1) |  | ||||||
| shader_parameter/surface_contribution = 6.655 |  | ||||||
| shader_parameter/specular_contribution = 2.0 |  | ||||||
| shader_parameter/refraction_contribution = 30.0 |  | ||||||
| shader_parameter/uv1_scale = Vector3(1, 1, 1) |  | ||||||
| shader_parameter/uv1_offset = Vector3(0, 0, 0) |  | ||||||
| 
 |  | ||||||
| [sub_resource type="BoxMesh" id="BoxMesh_jpetf"] |  | ||||||
| material = SubResource("ShaderMaterial_lwas5") |  | ||||||
| size = Vector3(64, 64, 64) |  | ||||||
| 
 |  | ||||||
| [sub_resource type="BoxShape3D" id="BoxShape3D_74f5g"] |  | ||||||
| size = Vector3(64, 64, 64) |  | ||||||
| 
 |  | ||||||
| [sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_axqqd"] |  | ||||||
| points = PackedVector3Array(-32, -16, -32, -64, 16, -64, 32, -16, -32, -32, -16, 32, -64, 16, 64, 64, 16, -64, 32, -16, 32, 64, 16, 64) |  | ||||||
| 
 |  | ||||||
| [sub_resource type="FastNoiseLite" id="FastNoiseLite_0mv06"] |  | ||||||
| noise_type = 2 |  | ||||||
| frequency = 0.015 |  | ||||||
| fractal_type = 3 |  | ||||||
| fractal_octaves = 1 |  | ||||||
| fractal_ping_pong_strength = 1.3 |  | ||||||
| 
 |  | ||||||
| [sub_resource type="NoiseTexture2D" id="NoiseTexture2D_vfmm3"] |  | ||||||
| seamless = true |  | ||||||
| as_normal_map = true |  | ||||||
| noise = SubResource("FastNoiseLite_0mv06") |  | ||||||
| 
 |  | ||||||
| [sub_resource type="FastNoiseLite" id="FastNoiseLite_qtehd"] |  | ||||||
| noise_type = 2 |  | ||||||
| frequency = 0.015 |  | ||||||
| fractal_type = 3 |  | ||||||
| fractal_octaves = 1 |  | ||||||
| fractal_ping_pong_strength = 1.3 |  | ||||||
| 
 |  | ||||||
| [sub_resource type="NoiseTexture2D" id="NoiseTexture2D_c7mgx"] |  | ||||||
| invert = true |  | ||||||
| seamless = true |  | ||||||
| noise = SubResource("FastNoiseLite_qtehd") |  | ||||||
| 
 |  | ||||||
| [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0lxst"] |  | ||||||
| albedo_color = Color(1, 1, 0.968627, 1) |  | ||||||
| roughness_texture = SubResource("NoiseTexture2D_c7mgx") |  | ||||||
| normal_enabled = true |  | ||||||
| normal_scale = 2.0 |  | ||||||
| normal_texture = SubResource("NoiseTexture2D_vfmm3") |  | ||||||
| subsurf_scatter_enabled = true |  | ||||||
| subsurf_scatter_strength = 1.0 |  | ||||||
| uv1_scale = Vector3(10, 5, 10) |  | ||||||
| 
 |  | ||||||
| [sub_resource type="SphereMesh" id="SphereMesh_ooxtq"] |  | ||||||
| material = SubResource("StandardMaterial3D_0lxst") |  | ||||||
| radius = 32.0 |  | ||||||
| height = 64.0 |  | ||||||
| radial_segments = 128 |  | ||||||
| rings = 64 |  | ||||||
| 
 |  | ||||||
| [sub_resource type="SphereShape3D" id="SphereShape3D_ne5nm"] |  | ||||||
| radius = 32.0 |  | ||||||
| 
 |  | ||||||
| [sub_resource type="SphereShape3D" id="SphereShape3D_avmlg"] |  | ||||||
| radius = 70.0 |  | ||||||
| 
 |  | ||||||
| [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_b7w2s"] |  | ||||||
| albedo_texture = ExtResource("17_xciuf") |  | ||||||
| uv1_scale = Vector3(32, 10, 20) |  | ||||||
| texture_filter = 4 |  | ||||||
| 
 |  | ||||||
| [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5pdkv"] |  | ||||||
| albedo_texture = ExtResource("18_scall") |  | ||||||
| uv1_scale = Vector3(4, 2, 1) |  | ||||||
| texture_filter = 4 |  | ||||||
| 
 |  | ||||||
| [sub_resource type="CylinderShape3D" id="CylinderShape3D_f1rqf"] |  | ||||||
| height = 32.0 |  | ||||||
| radius = 32.0 |  | ||||||
| 
 |  | ||||||
| [sub_resource type="CylinderShape3D" id="CylinderShape3D_sqfj0"] |  | ||||||
| height = 55.0 |  | ||||||
| radius = 100.0 |  | ||||||
| 
 |  | ||||||
| [node name="TestLevel" type="Node3D"] | [node name="TestLevel" type="Node3D"] | ||||||
| 
 | 
 | ||||||
| [node name="Terrain3D" type="Terrain3D" parent="."] | [node name="Terrain3D" type="Terrain3D" parent="."] | ||||||
| @ -312,7 +202,6 @@ camera_attributes = SubResource("CameraAttributesPractical_ypy22") | |||||||
| transform = Transform3D(0.782608, -0.611691, 0.11558, 0, 0.185667, 0.982613, -0.622515, -0.769001, 0.145304, 0, 0, 0) | transform = Transform3D(0.782608, -0.611691, 0.11558, 0, 0.185667, 0.982613, -0.622515, -0.769001, 0.145304, 0, 0, 0) | ||||||
| shadow_enabled = true | shadow_enabled = true | ||||||
| shadow_blur = 4.0 | shadow_blur = 4.0 | ||||||
| directional_shadow_max_distance = 160.0 |  | ||||||
| 
 | 
 | ||||||
| [node name="Course" type="Node3D" parent="."] | [node name="Course" type="Node3D" parent="."] | ||||||
| 
 | 
 | ||||||
| @ -344,7 +233,7 @@ shape = SubResource("BoxShape3D_x3wvm") | |||||||
| transform = Transform3D(-0.74629, 0, -0.665621, 0, 1, 0, 0.665621, 0, -0.74629, 381.024, -0.5, 224.968) | transform = Transform3D(-0.74629, 0, -0.665621, 0, 1, 0, 0.665621, 0, -0.74629, 381.024, -0.5, 224.968) | ||||||
| 
 | 
 | ||||||
| [node name="Flag" parent="Course" instance=ExtResource("13_6jtao")] | [node name="Flag" parent="Course" instance=ExtResource("13_6jtao")] | ||||||
| transform = Transform3D(-0.777146, 0, -0.629321, 0, 1, 0, 0.629321, 0, -0.777146, 540, 4, 452) | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 540, 4, 452) | ||||||
| 
 | 
 | ||||||
| [node name="PlayerSpawn1" type="Marker3D" parent="Course" groups=["PlayerSpawn"]] | [node name="PlayerSpawn1" type="Marker3D" parent="Course" groups=["PlayerSpawn"]] | ||||||
| transform = Transform3D(-0.842697, 0, -0.538388, 0, 1, 0, 0.538388, 0, -0.842697, 212.717, 4, 294.073) | transform = Transform3D(-0.842697, 0, -0.538388, 0, 1, 0, 0.538388, 0, -0.842697, 212.717, 4, 294.073) | ||||||
| @ -479,163 +368,3 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.107056, 54.6249, 58.7148) | |||||||
| 
 | 
 | ||||||
| [node name="Umineko2" parent="NorthSea" instance=ExtResource("21_ch6qk")] | [node name="Umineko2" parent="NorthSea" instance=ExtResource("21_ch6qk")] | ||||||
| transform = Transform3D(-0.911669, 0, -0.410926, 0, 1, 0, 0.410926, 0, -0.911669, 46.6726, 54.6249, 64.5933) | transform = Transform3D(-0.911669, 0, -0.410926, 0, 1, 0, 0.410926, 0, -0.911669, 46.6726, 54.6249, 64.5933) | ||||||
| 
 |  | ||||||
| [node name="GlobalEffects" type="Node3D" parent="."] |  | ||||||
| 
 |  | ||||||
| [node name="ZephyrParticle" parent="GlobalEffects" instance=ExtResource("16_2kyww")] |  | ||||||
| transform = Transform3D(0.744591, 0, -0.667521, 0, 1, 0, 0.667521, 0, 0.744591, 343.248, 54.9445, 208.568) |  | ||||||
| 
 |  | ||||||
| [node name="ZephyrParticle2" parent="GlobalEffects" instance=ExtResource("16_2kyww")] |  | ||||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -159.689, 62.5083, 1162.07) |  | ||||||
| 
 |  | ||||||
| [node name="ZephyrParticle3" parent="GlobalEffects" instance=ExtResource("16_2kyww")] |  | ||||||
| transform = Transform3D(0.258819, 0, -0.965926, 0, 1, 0, 0.965926, 0, 0.258819, -406.175, 99.5943, 417.273) |  | ||||||
| 
 |  | ||||||
| [node name="GravityCube" type="Node3D" parent="."] |  | ||||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 138.031, 94.1383, -166.358) |  | ||||||
| 
 |  | ||||||
| [node name="MeshInstance3D" type="MeshInstance3D" parent="GravityCube"] |  | ||||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00137329, 0.104053, -0.00378418) |  | ||||||
| mesh = SubResource("BoxMesh_jpetf") |  | ||||||
| 
 |  | ||||||
| [node name="StaticBody3D" type="StaticBody3D" parent="GravityCube/MeshInstance3D"] |  | ||||||
| 
 |  | ||||||
| [node name="CollisionShape3D" type="CollisionShape3D" parent="GravityCube/MeshInstance3D/StaticBody3D"] |  | ||||||
| shape = SubResource("BoxShape3D_74f5g") |  | ||||||
| 
 |  | ||||||
| [node name="Area3D" type="Area3D" parent="GravityCube/MeshInstance3D"] |  | ||||||
| gravity_space_override = 3 |  | ||||||
| 
 |  | ||||||
| [node name="CollisionShape3D" type="CollisionShape3D" parent="GravityCube/MeshInstance3D/Area3D"] |  | ||||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 48, 0) |  | ||||||
| shape = SubResource("ConvexPolygonShape3D_axqqd") |  | ||||||
| 
 |  | ||||||
| [node name="Area3D2" type="Area3D" parent="GravityCube/MeshInstance3D"] |  | ||||||
| transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0) |  | ||||||
| gravity_space_override = 3 |  | ||||||
| gravity_point_center = Vector3(0, 0, -1) |  | ||||||
| gravity_direction = Vector3(0, 0, -1) |  | ||||||
| 
 |  | ||||||
| [node name="CollisionShape3D" type="CollisionShape3D" parent="GravityCube/MeshInstance3D/Area3D2"] |  | ||||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 48, 0) |  | ||||||
| shape = SubResource("ConvexPolygonShape3D_axqqd") |  | ||||||
| 
 |  | ||||||
| [node name="Area3D3" type="Area3D" parent="GravityCube/MeshInstance3D"] |  | ||||||
| transform = Transform3D(1, 0, 0, 0, -1, 8.74228e-08, 0, -8.74228e-08, -1, 0, 0, 0) |  | ||||||
| gravity_space_override = 3 |  | ||||||
| 
 |  | ||||||
| [node name="CollisionShape3D" type="CollisionShape3D" parent="GravityCube/MeshInstance3D/Area3D3"] |  | ||||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 48, 0) |  | ||||||
| shape = SubResource("ConvexPolygonShape3D_axqqd") |  | ||||||
| 
 |  | ||||||
| [node name="Area3D4" type="Area3D" parent="GravityCube/MeshInstance3D"] |  | ||||||
| transform = Transform3D(1, 0, 0, 0, 1.19249e-08, 1, 0, -1, 1.19249e-08, 0, 0, 0) |  | ||||||
| gravity_space_override = 3 |  | ||||||
| gravity_point_center = Vector3(0, 0, 1) |  | ||||||
| gravity_direction = Vector3(0, 0, 1) |  | ||||||
| 
 |  | ||||||
| [node name="CollisionShape3D" type="CollisionShape3D" parent="GravityCube/MeshInstance3D/Area3D4"] |  | ||||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 48, 0) |  | ||||||
| shape = SubResource("ConvexPolygonShape3D_axqqd") |  | ||||||
| 
 |  | ||||||
| [node name="Area3D5" type="Area3D" parent="GravityCube/MeshInstance3D"] |  | ||||||
| transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 0, 0, 0) |  | ||||||
| gravity_space_override = 3 |  | ||||||
| gravity_point_center = Vector3(1, 0, 0) |  | ||||||
| gravity_direction = Vector3(1, 0, 0) |  | ||||||
| 
 |  | ||||||
| [node name="CollisionShape3D" type="CollisionShape3D" parent="GravityCube/MeshInstance3D/Area3D5"] |  | ||||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 48, 0) |  | ||||||
| shape = SubResource("ConvexPolygonShape3D_axqqd") |  | ||||||
| 
 |  | ||||||
| [node name="Area3D6" type="Area3D" parent="GravityCube/MeshInstance3D"] |  | ||||||
| transform = Transform3D(-4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0, 1, 0, 0, 0) |  | ||||||
| gravity_space_override = 3 |  | ||||||
| gravity_point_center = Vector3(-1, 0, 0) |  | ||||||
| gravity_direction = Vector3(-1, 0, 0) |  | ||||||
| 
 |  | ||||||
| [node name="CollisionShape3D" type="CollisionShape3D" parent="GravityCube/MeshInstance3D/Area3D6"] |  | ||||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 48, 0) |  | ||||||
| shape = SubResource("ConvexPolygonShape3D_axqqd") |  | ||||||
| 
 |  | ||||||
| [node name="GravityOrb" type="Node3D" parent="."] |  | ||||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 380.514, 68.1495, 149.757) |  | ||||||
| 
 |  | ||||||
| [node name="MeshInstance3D" type="MeshInstance3D" parent="GravityOrb"] |  | ||||||
| mesh = SubResource("SphereMesh_ooxtq") |  | ||||||
| 
 |  | ||||||
| [node name="StaticBody3D" type="StaticBody3D" parent="GravityOrb/MeshInstance3D"] |  | ||||||
| 
 |  | ||||||
| [node name="CollisionShape3D" type="CollisionShape3D" parent="GravityOrb/MeshInstance3D/StaticBody3D"] |  | ||||||
| shape = SubResource("SphereShape3D_ne5nm") |  | ||||||
| 
 |  | ||||||
| [node name="Area3D" type="Area3D" parent="GravityOrb/MeshInstance3D"] |  | ||||||
| priority = 1 |  | ||||||
| gravity_space_override = 3 |  | ||||||
| gravity_point = true |  | ||||||
| gravity_point_center = Vector3(0, 0, 0) |  | ||||||
| gravity_direction = Vector3(0, 0, 0) |  | ||||||
| 
 |  | ||||||
| [node name="CollisionShape3D" type="CollisionShape3D" parent="GravityOrb/MeshInstance3D/Area3D"] |  | ||||||
| shape = SubResource("SphereShape3D_avmlg") |  | ||||||
| 
 |  | ||||||
| [node name="GravityBowl" type="Node3D" parent="."] |  | ||||||
| transform = Transform3D(2.33934e-08, 0.535178, -0.844739, 1, -4.37114e-08, 0, -3.69247e-08, -0.844739, -0.535178, 346.094, 31.021, -73.4132) |  | ||||||
| 
 |  | ||||||
| [node name="CSGCombiner3D" type="CSGCombiner3D" parent="GravityBowl"] |  | ||||||
| use_collision = true |  | ||||||
| 
 |  | ||||||
| [node name="OuterCylinder" type="CSGCylinder3D" parent="GravityBowl/CSGCombiner3D"] |  | ||||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 16, 0) |  | ||||||
| radius = 32.0 |  | ||||||
| height = 32.0 |  | ||||||
| sides = 64 |  | ||||||
| material = SubResource("StandardMaterial3D_b7w2s") |  | ||||||
| 
 |  | ||||||
| [node name="InnerSphere" type="CSGSphere3D" parent="GravityBowl/CSGCombiner3D"] |  | ||||||
| operation = 2 |  | ||||||
| radius = 31.0 |  | ||||||
| radial_segments = 64 |  | ||||||
| rings = 32 |  | ||||||
| material = SubResource("StandardMaterial3D_5pdkv") |  | ||||||
| 
 |  | ||||||
| [node name="Area3D" type="Area3D" parent="GravityBowl"] |  | ||||||
| gravity_space_override = 3 |  | ||||||
| gravity_point = true |  | ||||||
| gravity_point_center = Vector3(0, 0, 0) |  | ||||||
| gravity_direction = Vector3(0, 0, 0) |  | ||||||
| gravity = -9.8 |  | ||||||
| 
 |  | ||||||
| [node name="CollisionShape3D" type="CollisionShape3D" parent="GravityBowl/Area3D"] |  | ||||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 16, 0) |  | ||||||
| shape = SubResource("CylinderShape3D_f1rqf") |  | ||||||
| 
 |  | ||||||
| [node name="GravityHalo" type="Node3D" parent="."] |  | ||||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 73.1897, 78.0923, 345.794) |  | ||||||
| 
 |  | ||||||
| [node name="CSGCombiner3D" type="CSGCombiner3D" parent="GravityHalo"] |  | ||||||
| use_collision = true |  | ||||||
| 
 |  | ||||||
| [node name="OuterShell" type="CSGTorus3D" parent="GravityHalo/CSGCombiner3D"] |  | ||||||
| inner_radius = 32.0 |  | ||||||
| outer_radius = 108.0 |  | ||||||
| sides = 64 |  | ||||||
| ring_sides = 32 |  | ||||||
| material = SubResource("StandardMaterial3D_b7w2s") |  | ||||||
| 
 |  | ||||||
| [node name="InnerSphere" type="CSGSphere3D" parent="GravityHalo/CSGCombiner3D"] |  | ||||||
| operation = 2 |  | ||||||
| radius = 100.0 |  | ||||||
| radial_segments = 64 |  | ||||||
| rings = 32 |  | ||||||
| material = SubResource("StandardMaterial3D_5pdkv") |  | ||||||
| 
 |  | ||||||
| [node name="Area3D" type="Area3D" parent="GravityHalo"] |  | ||||||
| gravity_space_override = 3 |  | ||||||
| gravity_point = true |  | ||||||
| gravity_point_center = Vector3(0, 0, 0) |  | ||||||
| gravity_direction = Vector3(0, 0, 0) |  | ||||||
| gravity = -9.8 |  | ||||||
| 
 |  | ||||||
| [node name="CollisionShape3D" type="CollisionShape3D" parent="GravityHalo/Area3D"] |  | ||||||
| shape = SubResource("CylinderShape3D_sqfj0") |  | ||||||
|  | |||||||
| @ -132,11 +132,6 @@ shot_cancel={ | |||||||
| "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":81,"key_label":0,"unicode":113,"location":0,"echo":false,"script":null) | "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":81,"key_label":0,"unicode":113,"location":0,"echo":false,"script":null) | ||||||
| ] | ] | ||||||
| } | } | ||||||
| shot_reset={ |  | ||||||
| "deadzone": 0.5, |  | ||||||
| "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":114,"location":0,"echo":false,"script":null) |  | ||||||
| ] |  | ||||||
| } |  | ||||||
| select_driver={ | select_driver={ | ||||||
| "deadzone": 0.5, | "deadzone": 0.5, | ||||||
| "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":49,"key_label":0,"unicode":49,"location":0,"echo":false,"script":null) | "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":49,"key_label":0,"unicode":49,"location":0,"echo":false,"script":null) | ||||||
| @ -201,7 +196,7 @@ ball_previous={ | |||||||
| [layer_names] | [layer_names] | ||||||
| 
 | 
 | ||||||
| 3d_physics/layer_1="Collision Geometry" | 3d_physics/layer_1="Collision Geometry" | ||||||
| 3d_physics/layer_2="Layer 2" | 3d_physics/layer_2="Layer 3" | ||||||
| 3d_physics/layer_27="Glass Material" | 3d_physics/layer_27="Glass Material" | ||||||
| 3d_physics/layer_28="Metal Material" | 3d_physics/layer_28="Metal Material" | ||||||
| 3d_physics/layer_29="Rock Material" | 3d_physics/layer_29="Rock Material" | ||||||
|  | |||||||
| @ -38,8 +38,6 @@ const MAGNUS_EPSILON := 1e-3 | |||||||
| ## Scaling factor for additional force-based damage | ## Scaling factor for additional force-based damage | ||||||
| @export var damage_force_scale := 0.01 | @export var damage_force_scale := 0.01 | ||||||
| 
 | 
 | ||||||
| var current_gravity: Vector3 |  | ||||||
| 
 |  | ||||||
| var _last_contact_normal: Vector3 = Vector3.UP | var _last_contact_normal: Vector3 = Vector3.UP | ||||||
| var _position_on_last_wake: Vector3 | var _position_on_last_wake: Vector3 | ||||||
| var _awake := false | var _awake := false | ||||||
| @ -82,7 +80,6 @@ func _magnus_force() -> Vector3: | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| func _integrate_forces(state: PhysicsDirectBodyState3D) -> void: | func _integrate_forces(state: PhysicsDirectBodyState3D) -> void: | ||||||
| 	current_gravity = state.total_gravity |  | ||||||
| 	if not _awake: | 	if not _awake: | ||||||
| 		# Triggered on first frame after waking | 		# Triggered on first frame after waking | ||||||
| 		_awake = true | 		_awake = true | ||||||
|  | |||||||
| @ -49,7 +49,6 @@ const WIDTH := 4 | |||||||
| 
 | 
 | ||||||
| @export var draw_reoriented_basis := true | @export var draw_reoriented_basis := true | ||||||
| @export var draw_magnus_effect := true | @export var draw_magnus_effect := true | ||||||
| @export var draw_gravity_basis := true |  | ||||||
| 
 | 
 | ||||||
| @onready var physics_ball: GameBall = $\"..\" | @onready var physics_ball: GameBall = $\"..\" | ||||||
| 
 | 
 | ||||||
| @ -74,19 +73,6 @@ func _draw() -> void: | |||||||
| 	if draw_magnus_effect: | 	if draw_magnus_effect: | ||||||
| 		var end := camera.unproject_position(physics_ball.global_position + physics_ball._magnus_force() * MAGNUS_SCALE) | 		var end := camera.unproject_position(physics_ball.global_position + physics_ball._magnus_force() * MAGNUS_SCALE) | ||||||
| 		draw_line(start, end, COLOR_MAGNUS, WIDTH) | 		draw_line(start, end, COLOR_MAGNUS, WIDTH) | ||||||
| 
 |  | ||||||
| 	if draw_gravity_basis: |  | ||||||
| 		var orbital: Node3D = camera.get_parent_node_3d().get_parent_node_3d().get_parent_node_3d() |  | ||||||
| 		var up := -physics_ball.current_gravity.normalized() |  | ||||||
| 		var right := up.cross(orbital.global_basis.z).normalized() |  | ||||||
| 		var forward := right.cross(up).normalized() |  | ||||||
| 
 |  | ||||||
| 		var end_x := camera.unproject_position(physics_ball.global_position + right) |  | ||||||
| 		var end_y := camera.unproject_position(physics_ball.global_position + up) |  | ||||||
| 		var end_z := camera.unproject_position(physics_ball.global_position + forward) |  | ||||||
| 		draw_line(start, end_x, COLOR_X, WIDTH) |  | ||||||
| 		draw_line(start, end_y, COLOR_Y, WIDTH) |  | ||||||
| 		draw_line(start, end_z, COLOR_Z, WIDTH) |  | ||||||
| " | " | ||||||
| 
 | 
 | ||||||
| [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_gc38m"] | [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_gc38m"] | ||||||
| @ -164,7 +150,6 @@ grow_horizontal = 2 | |||||||
| grow_vertical = 2 | grow_vertical = 2 | ||||||
| script = SubResource("GDScript_p4v7o") | script = SubResource("GDScript_p4v7o") | ||||||
| draw_reoriented_basis = false | draw_reoriented_basis = false | ||||||
| draw_magnus_effect = false |  | ||||||
| 
 | 
 | ||||||
| [node name="SFX" type="Node3D" parent="."] | [node name="SFX" type="Node3D" parent="."] | ||||||
| unique_name_in_owner = true | unique_name_in_owner = true | ||||||
|  | |||||||
| @ -8,7 +8,6 @@ enum Phase { | |||||||
| 	CURVE_ADJUST, | 	CURVE_ADJUST, | ||||||
| 	DOWNSWING, | 	DOWNSWING, | ||||||
| 	SHOT, | 	SHOT, | ||||||
| 	SHOT_RESET, |  | ||||||
| 	FINISHED, | 	FINISHED, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -88,15 +87,6 @@ var invert_pitch: bool = ProjectSettings.get_setting("game/config/controls/camer | |||||||
| 
 | 
 | ||||||
| var control_disabled := false | var control_disabled := false | ||||||
| 
 | 
 | ||||||
| var reset_enabled := false: |  | ||||||
| 	set(value): |  | ||||||
| 		if value != reset_enabled: |  | ||||||
| 			if value: |  | ||||||
| 				hud.show_reset_prompt() |  | ||||||
| 			else: |  | ||||||
| 				hud.hide_reset_prompt() |  | ||||||
| 		reset_enabled = value |  | ||||||
| 
 |  | ||||||
| var phase: Phase = Phase.FINISHED: | var phase: Phase = Phase.FINISHED: | ||||||
| 	set(value): | 	set(value): | ||||||
| 		if value != phase: | 		if value != phase: | ||||||
| @ -168,7 +158,6 @@ var _tracking_camera: OrbitalCamera | |||||||
| 
 | 
 | ||||||
| @onready var downswing_timer: Timer = %DownswingTimer | @onready var downswing_timer: Timer = %DownswingTimer | ||||||
| @onready var ball_return_timer: Timer = %BallReturnTimer | @onready var ball_return_timer: Timer = %BallReturnTimer | ||||||
| @onready var reset_prompt_timer: Timer = %ResetPromptTimer |  | ||||||
| 
 | 
 | ||||||
| @onready var explosion_animation: AnimationPlayer = %ExplosionAnimation | @onready var explosion_animation: AnimationPlayer = %ExplosionAnimation | ||||||
| @onready var player_label: Label3D = %PlayerLabel | @onready var player_label: Label3D = %PlayerLabel | ||||||
| @ -284,8 +273,6 @@ func take_shot() -> void: | |||||||
| 		game_ball.freeze = false | 		game_ball.freeze = false | ||||||
| 		game_ball.apply_impulse(impulse, offset) | 		game_ball.apply_impulse(impulse, offset) | ||||||
| 
 | 
 | ||||||
| 	reset_prompt_timer.start() |  | ||||||
| 
 |  | ||||||
| 	# Play SFX | 	# Play SFX | ||||||
| 	shot_sfx.play_shot_sfx(club_type, is_shot_good(), shot_power) | 	shot_sfx.play_shot_sfx(club_type, is_shot_good(), shot_power) | ||||||
| 
 | 
 | ||||||
| @ -388,7 +375,7 @@ func end_shot_track() -> void: | |||||||
| 	camera.make_current() | 	camera.make_current() | ||||||
| 	if is_instance_valid(_tracking_camera): | 	if is_instance_valid(_tracking_camera): | ||||||
| 		_tracking_camera.queue_free() | 		_tracking_camera.queue_free() | ||||||
| 	if phase in [Phase.SHOT, Phase.SHOT_RESET]: | 	if phase == Phase.SHOT: | ||||||
| 		phase = Phase.FINISHED | 		phase = Phase.FINISHED | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -431,9 +418,6 @@ func _set_club_type(new_club_type: Club.Type) -> void: | |||||||
| 
 | 
 | ||||||
| ## Called immediately before `phase` is mutated. | ## Called immediately before `phase` is mutated. | ||||||
| func _on_phase_change(new_phase: Phase) -> void: | func _on_phase_change(new_phase: Phase) -> void: | ||||||
| 	reset_prompt_timer.stop() |  | ||||||
| 	reset_enabled = false |  | ||||||
| 
 |  | ||||||
| 	match new_phase: | 	match new_phase: | ||||||
| 		Phase.AIM: | 		Phase.AIM: | ||||||
| 			hud.show_hud() | 			hud.show_hud() | ||||||
| @ -585,11 +569,6 @@ func _process(delta: float) -> void: | |||||||
| 				hud.stop_curve_bar() | 				hud.stop_curve_bar() | ||||||
| 				phase = Phase.DOWNSWING | 				phase = Phase.DOWNSWING | ||||||
| 		Phase.SHOT: | 		Phase.SHOT: | ||||||
| 			if reset_enabled and Input.is_action_just_pressed("shot_reset"): |  | ||||||
| 				phase = Phase.SHOT_RESET |  | ||||||
| 				reset_enabled = false |  | ||||||
| 				return_ball() |  | ||||||
| 
 |  | ||||||
| 			if driving_range and Input.is_action_just_pressed("shot_accept"): | 			if driving_range and Input.is_action_just_pressed("shot_accept"): | ||||||
| 				phase = Phase.AIM | 				phase = Phase.AIM | ||||||
| 				return_ball() | 				return_ball() | ||||||
| @ -608,7 +587,6 @@ func _on_ball_sleeping_state_changed() -> void: | |||||||
| func _on_ball_entered_water() -> void: | func _on_ball_entered_water() -> void: | ||||||
| 	# Should only be possible during SHOT phase, but let's check just to be sure... | 	# Should only be possible during SHOT phase, but let's check just to be sure... | ||||||
| 	if phase == Phase.SHOT: | 	if phase == Phase.SHOT: | ||||||
| 		phase = Phase.SHOT_RESET |  | ||||||
| 		game_ball.freeze = true | 		game_ball.freeze = true | ||||||
| 		hud.play_wasted_animation() | 		hud.play_wasted_animation() | ||||||
| 		player.life -= WATER_DAMAGE | 		player.life -= WATER_DAMAGE | ||||||
| @ -639,10 +617,6 @@ func _on_hitbox_ball_collision(ball: GameBall) -> void: | |||||||
| 	ball.apply_central_impulse(explosion_impulse) | 	ball.apply_central_impulse(explosion_impulse) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| func _on_reset_prompt_timer_timeout() -> void: |  | ||||||
| 	reset_enabled = true |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## Create a new instance for the given player. | ## Create a new instance for the given player. | ||||||
| static func create(_player: WorldPlayer) -> ShotSetup: | static func create(_player: WorldPlayer) -> ShotSetup: | ||||||
| 	var instance: ShotSetup = ShotSetup.scene.instantiate() | 	var instance: ShotSetup = ShotSetup.scene.instantiate() | ||||||
|  | |||||||
| @ -451,11 +451,6 @@ one_shot = true | |||||||
| unique_name_in_owner = true | unique_name_in_owner = true | ||||||
| one_shot = true | one_shot = true | ||||||
| 
 | 
 | ||||||
| [node name="ResetPromptTimer" type="Timer" parent="."] |  | ||||||
| unique_name_in_owner = true |  | ||||||
| wait_time = 45.0 |  | ||||||
| one_shot = true |  | ||||||
| 
 |  | ||||||
| [node name="Hitbox" type="Area3D" parent="."] | [node name="Hitbox" type="Area3D" parent="."] | ||||||
| script = ExtResource("7_uh8kn") | script = ExtResource("7_uh8kn") | ||||||
| 
 | 
 | ||||||
| @ -503,6 +498,5 @@ width = 120.0 | |||||||
| [connection signal="ball_changed" from="BallPoint" to="." method="_on_game_ball_changed"] | [connection signal="ball_changed" from="BallPoint" to="." method="_on_game_ball_changed"] | ||||||
| [connection signal="timeout" from="DownswingTimer" to="." method="finish_downswing"] | [connection signal="timeout" from="DownswingTimer" to="." method="finish_downswing"] | ||||||
| [connection signal="timeout" from="BallReturnTimer" to="." method="_on_ball_return_timer_timeout"] | [connection signal="timeout" from="BallReturnTimer" to="." method="_on_ball_return_timer_timeout"] | ||||||
| [connection signal="timeout" from="ResetPromptTimer" to="." method="_on_reset_prompt_timer_timeout"] |  | ||||||
| [connection signal="ball_collision" from="Hitbox" to="." method="_on_hitbox_ball_collision"] | [connection signal="ball_collision" from="Hitbox" to="." method="_on_hitbox_ball_collision"] | ||||||
| [connection signal="body_entered" from="Hitbox" to="Hitbox" method="_on_body_entered"] | [connection signal="body_entered" from="Hitbox" to="Hitbox" method="_on_body_entered"] | ||||||
|  | |||||||
| @ -1,49 +1,28 @@ | |||||||
| class_name OrbitalCamera extends Node3D | class_name OrbitalCamera extends Node3D | ||||||
| 
 | 
 | ||||||
| const POSITION_ACCELERATION := 4.0 | const POSITION_ACCELERATION := 4.0 | ||||||
| const BASIS_ACCELERATION := 4.0 |  | ||||||
| const TARGETER_ACCELERATION := 7.0 |  | ||||||
| 
 | 
 | ||||||
| @export var target: Node3D | @export var target: Node3D | ||||||
| @export var offset := Vector3(0, 1, 0) | @export var offset := Vector3(0, 1, 0) | ||||||
| 
 | 
 | ||||||
| @export var angular_speed := 0.007 | @export var angular_speed := 0.007 | ||||||
| 
 | 
 | ||||||
| var target_basis := Basis.IDENTITY |  | ||||||
| 
 |  | ||||||
| @onready var pivot: Node3D = %Pivot |  | ||||||
| @onready var camera: Camera3D = %Camera | @onready var camera: Camera3D = %Camera | ||||||
| @onready var targeter: Node3D = %Targeter |  | ||||||
| 
 | 
 | ||||||
| static var scene := preload("res://src/ui/camera/orbital_camera/orbital_camera.tscn") | static var scene := preload("res://src/ui/camera/orbital_camera/orbital_camera.tscn") | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| func _physics_process(delta: float) -> void: | func _physics_process(delta: float) -> void: | ||||||
| 	var up := Vector3.UP |  | ||||||
| 	# If target is a game ball, realign to gravity |  | ||||||
| 	if target is GameBall: |  | ||||||
| 		up = -(target as GameBall).current_gravity.normalized() |  | ||||||
| 		var right := up.cross(global_basis.z).normalized() |  | ||||||
| 		var forward := right.cross(up).normalized() |  | ||||||
| 		target_basis = Basis(right, up, forward) |  | ||||||
| 
 |  | ||||||
| 	# Slerp to basis |  | ||||||
| 	global_basis = global_basis.slerp(target_basis, delta * BASIS_ACCELERATION) |  | ||||||
| 
 |  | ||||||
| 	# Update position | 	# Update position | ||||||
| 	global_position = global_position.lerp( | 	global_position = global_position.lerp( | ||||||
| 		target.global_position + offset, delta * POSITION_ACCELERATION | 		target.global_position + offset, delta * POSITION_ACCELERATION | ||||||
| 	) | 	) | ||||||
| 
 | 
 | ||||||
| 	# Update rotation | 	# Update rotation | ||||||
| 	#camera.look_at(target.global_position, up) | 	camera.look_at(target.global_position) | ||||||
| 	targeter.look_at(target.global_position, up) |  | ||||||
| 	camera.global_basis = camera.global_basis.slerp( |  | ||||||
| 		targeter.global_basis.orthonormalized(), delta * TARGETER_ACCELERATION |  | ||||||
| 	) |  | ||||||
| 
 | 
 | ||||||
| 	# Update phase angle | 	# Update phase angle | ||||||
| 	pivot.rotation.y += angular_speed | 	rotation.y += angular_speed | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| static func create(_target: Node3D) -> OrbitalCamera: | static func create(_target: Node3D) -> OrbitalCamera: | ||||||
|  | |||||||
| @ -5,20 +5,12 @@ | |||||||
| [node name="OrbitalCamera" type="Node3D"] | [node name="OrbitalCamera" type="Node3D"] | ||||||
| script = ExtResource("1_nvlic") | script = ExtResource("1_nvlic") | ||||||
| 
 | 
 | ||||||
| [node name="Pivot" type="Node3D" parent="."] | [node name="Pitch" type="SpringArm3D" parent="."] | ||||||
| unique_name_in_owner = true |  | ||||||
| 
 |  | ||||||
| [node name="Pitch" type="SpringArm3D" parent="Pivot"] |  | ||||||
| transform = Transform3D(1, 0, 0, 0, 0.913545, 0.406737, 0, -0.406737, 0.913545, 0, 0, 0) | transform = Transform3D(1, 0, 0, 0, 0.913545, 0.406737, 0, -0.406737, 0.913545, 0, 0, 0) | ||||||
| spring_length = 3.2 | spring_length = 3.2 | ||||||
| 
 | 
 | ||||||
| [node name="CameraOffset" type="Node3D" parent="Pivot/Pitch"] | [node name="Camera" type="Camera3D" parent="Pitch"] | ||||||
|  | unique_name_in_owner = true | ||||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 3) | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 3) | ||||||
| 
 |  | ||||||
| [node name="Targeter" type="Node3D" parent="Pivot/Pitch/CameraOffset"] |  | ||||||
| unique_name_in_owner = true |  | ||||||
| 
 |  | ||||||
| [node name="Camera" type="Camera3D" parent="Pivot/Pitch/CameraOffset"] |  | ||||||
| unique_name_in_owner = true |  | ||||||
| current = true | current = true | ||||||
| far = 8192.0 | far = 8192.0 | ||||||
|  | |||||||
| @ -1,49 +0,0 @@ | |||||||
| @tool |  | ||||||
| extends Label |  | ||||||
| ## A prompt with the input symbol bound to the given action. |  | ||||||
| 
 |  | ||||||
| const PROMPT_FORMAT := "{0} - {1}" |  | ||||||
| 
 |  | ||||||
| const UNKNOWN_LABEL_SYM := "[unknown]" |  | ||||||
| 
 |  | ||||||
| @export var action: StringName: |  | ||||||
| 	set(value): |  | ||||||
| 		action = value |  | ||||||
| 		_update() |  | ||||||
| 
 |  | ||||||
| @export var label: String: |  | ||||||
| 	set(value): |  | ||||||
| 		label = value |  | ||||||
| 		_update() |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| func _ready() -> void: |  | ||||||
| 	_update() |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| func _update() -> void: |  | ||||||
| 	var input_symbol: String |  | ||||||
| 	var actions := InputMap.action_get_events(action) |  | ||||||
| 	if actions: |  | ||||||
| 		var primary := actions[0] |  | ||||||
| 		input_symbol = _get_input_symbol(primary) |  | ||||||
| 
 |  | ||||||
| 	text = PROMPT_FORMAT.format( |  | ||||||
| 		[ |  | ||||||
| 			input_symbol if input_symbol else PromptMap.UNKNOWN_INPUT_SYMBOL, |  | ||||||
| 			label if label else UNKNOWN_LABEL_SYM |  | ||||||
| 		] |  | ||||||
| 	) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| func _get_input_symbol(event: InputEvent) -> String: |  | ||||||
| 	if event is InputEventKey: |  | ||||||
| 		return PromptMap.key(event as InputEventKey) |  | ||||||
| 	elif event is InputEventMouseButton: |  | ||||||
| 		return PromptMap.mouse_button(event as InputEventMouseButton) |  | ||||||
| 	elif event is InputEventJoypadButton: |  | ||||||
| 		return PromptMap.gamepad_button(event as InputEventJoypadButton) |  | ||||||
| 	elif event is InputEventJoypadMotion: |  | ||||||
| 		return PromptMap.gamepad_axis(event as InputEventJoypadMotion) |  | ||||||
| 	else: |  | ||||||
| 		return PromptMap.UNKNOWN_INPUT_SYMBOL |  | ||||||
| @ -1,14 +0,0 @@ | |||||||
| [gd_scene load_steps=2 format=3 uid="uid://b47goj32i6sdh"] |  | ||||||
| 
 |  | ||||||
| [ext_resource type="Script" path="res://src/ui/input_prompt/input_prompt.gd" id="1_qq6w5"] |  | ||||||
| 
 |  | ||||||
| [node name="InputPrompt" type="Label"] |  | ||||||
| anchors_preset = 15 |  | ||||||
| anchor_right = 1.0 |  | ||||||
| anchor_bottom = 1.0 |  | ||||||
| grow_horizontal = 2 |  | ||||||
| grow_vertical = 2 |  | ||||||
| theme_type_variation = &"InputPrompt" |  | ||||||
| text = "❓ - [unknown]" |  | ||||||
| script = ExtResource("1_qq6w5") |  | ||||||
| action = "" |  | ||||||
| @ -1,271 +0,0 @@ | |||||||
| class_name PromptMap |  | ||||||
| ## Tools for mapping input events to PromptFont glyphs. |  | ||||||
| 
 |  | ||||||
| const UNKNOWN_INPUT_SYMBOL := PromptFont.ICON_QUESTION |  | ||||||
| 
 |  | ||||||
| ## Keyboard key map |  | ||||||
| const KEYBOARD := { |  | ||||||
| 	KEY_LEFT: PromptFont.KEYBOARD_LEFT, |  | ||||||
| 	KEY_UP: PromptFont.KEYBOARD_UP, |  | ||||||
| 	KEY_RIGHT: PromptFont.KEYBOARD_RIGHT, |  | ||||||
| 	KEY_DOWN: PromptFont.KEYBOARD_DOWN, |  | ||||||
| 	KEY_CTRL: PromptFont.KEYBOARD_CONTROL, |  | ||||||
| 	KEY_ALT: PromptFont.KEYBOARD_ALT, |  | ||||||
| 	KEY_SHIFT: PromptFont.KEYBOARD_SHIFT, |  | ||||||
| 	KEY_TAB: PromptFont.KEYBOARD_TAB, |  | ||||||
| 	KEY_CAPSLOCK: PromptFont.KEYBOARD_CAPS, |  | ||||||
| 	KEY_BACKSPACE: PromptFont.KEYBOARD_BACKSPACE, |  | ||||||
| 	KEY_ENTER: PromptFont.KEYBOARD_ENTER, |  | ||||||
| 	KEY_KP_ENTER: PromptFont.KEYBOARD_ENTER, |  | ||||||
| 	KEY_ESCAPE: PromptFont.KEYBOARD_ESCAPE, |  | ||||||
| 	KEY_PRINT: PromptFont.KEYBOARD_PRINT_SCREEN, |  | ||||||
| 	KEY_SCROLLLOCK: PromptFont.KEYBOARD_SCROLL_LOCK, |  | ||||||
| 	KEY_PAUSE: PromptFont.KEYBOARD_PAUSE, |  | ||||||
| 	KEY_NUMLOCK: PromptFont.KEYBOARD_NUM_LOCK, |  | ||||||
| 	KEY_INSERT: PromptFont.KEYBOARD_INSERT, |  | ||||||
| 	KEY_HOME: PromptFont.KEYBOARD_HOME, |  | ||||||
| 	KEY_PAGEUP: PromptFont.KEYBOARD_PAGE_UP, |  | ||||||
| 	KEY_DELETE: PromptFont.KEYBOARD_DELETE, |  | ||||||
| 	KEY_END: PromptFont.KEYBOARD_END, |  | ||||||
| 	KEY_PAGEDOWN: PromptFont.KEYBOARD_PAGE_DOWN, |  | ||||||
| 	KEY_SPACE: PromptFont.KEYBOARD_SPACE, |  | ||||||
| 	KEY_F1: PromptFont.KEYBOARD_F1, |  | ||||||
| 	KEY_F2: PromptFont.KEYBOARD_F2, |  | ||||||
| 	KEY_F3: PromptFont.KEYBOARD_F3, |  | ||||||
| 	KEY_F4: PromptFont.KEYBOARD_F4, |  | ||||||
| 	KEY_F5: PromptFont.KEYBOARD_F5, |  | ||||||
| 	KEY_F6: PromptFont.KEYBOARD_F6, |  | ||||||
| 	KEY_F7: PromptFont.KEYBOARD_F7, |  | ||||||
| 	KEY_F8: PromptFont.KEYBOARD_F8, |  | ||||||
| 	KEY_F9: PromptFont.KEYBOARD_F9, |  | ||||||
| 	KEY_F10: PromptFont.KEYBOARD_F10, |  | ||||||
| 	KEY_F11: PromptFont.KEYBOARD_F11, |  | ||||||
| 	KEY_F12: PromptFont.KEYBOARD_F12, |  | ||||||
| 	KEY_0: PromptFont.KEYBOARD_0, |  | ||||||
| 	KEY_1: PromptFont.KEYBOARD_1, |  | ||||||
| 	KEY_2: PromptFont.KEYBOARD_2, |  | ||||||
| 	KEY_3: PromptFont.KEYBOARD_3, |  | ||||||
| 	KEY_4: PromptFont.KEYBOARD_4, |  | ||||||
| 	KEY_5: PromptFont.KEYBOARD_5, |  | ||||||
| 	KEY_6: PromptFont.KEYBOARD_6, |  | ||||||
| 	KEY_7: PromptFont.KEYBOARD_7, |  | ||||||
| 	KEY_8: PromptFont.KEYBOARD_8, |  | ||||||
| 	KEY_9: PromptFont.KEYBOARD_9, |  | ||||||
| 	KEY_KP_0: PromptFont.KEYBOARD_0, |  | ||||||
| 	KEY_KP_1: PromptFont.KEYBOARD_1, |  | ||||||
| 	KEY_KP_2: PromptFont.KEYBOARD_2, |  | ||||||
| 	KEY_KP_3: PromptFont.KEYBOARD_3, |  | ||||||
| 	KEY_KP_4: PromptFont.KEYBOARD_4, |  | ||||||
| 	KEY_KP_5: PromptFont.KEYBOARD_5, |  | ||||||
| 	KEY_KP_6: PromptFont.KEYBOARD_6, |  | ||||||
| 	KEY_KP_7: PromptFont.KEYBOARD_7, |  | ||||||
| 	KEY_KP_8: PromptFont.KEYBOARD_8, |  | ||||||
| 	KEY_KP_9: PromptFont.KEYBOARD_9, |  | ||||||
| 	KEY_A: PromptFont.KEYBOARD_A, |  | ||||||
| 	KEY_B: PromptFont.KEYBOARD_B, |  | ||||||
| 	KEY_C: PromptFont.KEYBOARD_C, |  | ||||||
| 	KEY_D: PromptFont.KEYBOARD_D, |  | ||||||
| 	KEY_E: PromptFont.KEYBOARD_E, |  | ||||||
| 	KEY_F: PromptFont.KEYBOARD_F, |  | ||||||
| 	KEY_G: PromptFont.KEYBOARD_G, |  | ||||||
| 	KEY_H: PromptFont.KEYBOARD_H, |  | ||||||
| 	KEY_I: PromptFont.KEYBOARD_I, |  | ||||||
| 	KEY_J: PromptFont.KEYBOARD_J, |  | ||||||
| 	KEY_K: PromptFont.KEYBOARD_K, |  | ||||||
| 	KEY_L: PromptFont.KEYBOARD_L, |  | ||||||
| 	KEY_M: PromptFont.KEYBOARD_M, |  | ||||||
| 	KEY_N: PromptFont.KEYBOARD_N, |  | ||||||
| 	KEY_O: PromptFont.KEYBOARD_O, |  | ||||||
| 	KEY_P: PromptFont.KEYBOARD_P, |  | ||||||
| 	KEY_Q: PromptFont.KEYBOARD_Q, |  | ||||||
| 	KEY_R: PromptFont.KEYBOARD_R, |  | ||||||
| 	KEY_S: PromptFont.KEYBOARD_S, |  | ||||||
| 	KEY_T: PromptFont.KEYBOARD_T, |  | ||||||
| 	KEY_U: PromptFont.KEYBOARD_U, |  | ||||||
| 	KEY_V: PromptFont.KEYBOARD_V, |  | ||||||
| 	KEY_W: PromptFont.KEYBOARD_W, |  | ||||||
| 	KEY_X: PromptFont.KEYBOARD_X, |  | ||||||
| 	KEY_Y: PromptFont.KEYBOARD_Y, |  | ||||||
| 	KEY_Z: PromptFont.KEYBOARD_Z |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| ## Mouse button & scroll map |  | ||||||
| const MOUSE := { |  | ||||||
| 	MOUSE_BUTTON_LEFT: PromptFont.MOUSE_1, |  | ||||||
| 	MOUSE_BUTTON_RIGHT: PromptFont.MOUSE_2, |  | ||||||
| 	MOUSE_BUTTON_MIDDLE: PromptFont.MOUSE_3, |  | ||||||
| 	MOUSE_BUTTON_XBUTTON1: PromptFont.MOUSE_4, |  | ||||||
| 	MOUSE_BUTTON_XBUTTON2: PromptFont.MOUSE_5, |  | ||||||
| 	# PromptFont.MOUSE_6, |  | ||||||
| 	# PromptFont.MOUSE_7, |  | ||||||
| 	# PromptFont.MOUSE_8, |  | ||||||
| 	MOUSE_BUTTON_WHEEL_UP: PromptFont.MOUSE_SCROLL_UP, |  | ||||||
| 	MOUSE_BUTTON_WHEEL_DOWN: PromptFont.MOUSE_SCROLL_DOWN |  | ||||||
| 	# PromptFont.MOUSE_LEFT, |  | ||||||
| 	# PromptFont.MOUSE_RIGHT, |  | ||||||
| 	# PromptFont.MOUSE_MIDDLE, |  | ||||||
| 	# PromptFont.MOUSE_LEFT_RIGHT, |  | ||||||
| 	# PromptFont.MOUSE_UP_DOWN, |  | ||||||
| 	# PromptFont.MOUSE_ANY |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| ## Generic gamepad button map |  | ||||||
| const GAMEPAD_BUTTON := { |  | ||||||
| 	JOY_BUTTON_X: PromptFont.GAMEPAD_X, |  | ||||||
| 	JOY_BUTTON_Y: PromptFont.GAMEPAD_Y, |  | ||||||
| 	JOY_BUTTON_B: PromptFont.GAMEPAD_B, |  | ||||||
| 	JOY_BUTTON_A: PromptFont.GAMEPAD_A, |  | ||||||
| 	JOY_BUTTON_BACK: PromptFont.GAMEPAD_SELECT, |  | ||||||
| 	JOY_BUTTON_START: PromptFont.GAMEPAD_START, |  | ||||||
| 	JOY_BUTTON_GUIDE: PromptFont.GAMEPAD_HOME, |  | ||||||
| 	JOY_BUTTON_LEFT_STICK: PromptFont.ANALOG_L_CLICK, |  | ||||||
| 	JOY_BUTTON_RIGHT_STICK: PromptFont.ANALOG_R_CLICK, |  | ||||||
| 	JOY_BUTTON_LEFT_SHOULDER: PromptFont.XBOX_LEFT_SHOULDER, |  | ||||||
| 	JOY_BUTTON_RIGHT_SHOULDER: PromptFont.XBOX_RIGHT_SHOULDER, |  | ||||||
| 	JOY_BUTTON_DPAD_UP: PromptFont.DPAD_UP, |  | ||||||
| 	JOY_BUTTON_DPAD_DOWN: PromptFont.DPAD_DOWN, |  | ||||||
| 	JOY_BUTTON_DPAD_LEFT: PromptFont.DPAD_LEFT, |  | ||||||
| 	JOY_BUTTON_DPAD_RIGHT: PromptFont.DPAD_RIGHT, |  | ||||||
| 	JOY_BUTTON_MISC1: PromptFont.XBOX_VIEW, |  | ||||||
| 	# JOY_BUTTON_PADDLE_1:  ## Wtf is this? |  | ||||||
| 	JOY_BUTTON_TOUCHPAD: PromptFont.SONY_TOUCHPAD |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| ## Generic gamepad axis map |  | ||||||
| const GAMEPAD_AXIS := { |  | ||||||
| 	JOY_AXIS_LEFT_X: PromptFont.ANALOG_L_LEFT_RIGHT, |  | ||||||
| 	JOY_AXIS_LEFT_Y: PromptFont.ANALOG_L_UP_DOWN, |  | ||||||
| 	JOY_AXIS_RIGHT_X: PromptFont.ANALOG_R_LEFT_RIGHT, |  | ||||||
| 	JOY_AXIS_RIGHT_Y: PromptFont.ANALOG_R_UP_DOWN, |  | ||||||
| 	JOY_AXIS_TRIGGER_LEFT: PromptFont.XBOX_LEFT_TRIGGER, |  | ||||||
| 	JOY_AXIS_TRIGGER_RIGHT: PromptFont.XBOX_RIGHT_TRIGGER |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| ## Xbox gamepad button map |  | ||||||
| const XBOX_BUTTON := { |  | ||||||
| 	JOY_BUTTON_LEFT_SHOULDER: PromptFont.XBOX_LEFT_SHOULDER, |  | ||||||
| 	JOY_BUTTON_RIGHT_SHOULDER: PromptFont.XBOX_RIGHT_SHOULDER, |  | ||||||
| 	JOY_BUTTON_X: PromptFont.XBOX_X, |  | ||||||
| 	JOY_BUTTON_Y: PromptFont.XBOX_Y, |  | ||||||
| 	JOY_BUTTON_B: PromptFont.XBOX_B, |  | ||||||
| 	JOY_BUTTON_A: PromptFont.XBOX_A, |  | ||||||
| 	JOY_BUTTON_MISC1: PromptFont.XBOX_VIEW, |  | ||||||
| 	JOY_BUTTON_START: PromptFont.XBOX_MENU, |  | ||||||
| 	JOY_BUTTON_DPAD_LEFT: PromptFont.XBOX_DPAD_LEFT, |  | ||||||
| 	JOY_BUTTON_DPAD_UP: PromptFont.XBOX_DPAD_UP, |  | ||||||
| 	JOY_BUTTON_DPAD_RIGHT: PromptFont.XBOX_DPAD_RIGHT, |  | ||||||
| 	JOY_BUTTON_DPAD_DOWN: PromptFont.XBOX_DPAD_DOWN, |  | ||||||
| 	JOY_BUTTON_GUIDE: PromptFont.ICON_XBOX |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| ## Xbox gamepad axis map |  | ||||||
| const XBOX_AXIS := { |  | ||||||
| 	JOY_AXIS_TRIGGER_LEFT: PromptFont.XBOX_LEFT_TRIGGER, |  | ||||||
| 	JOY_AXIS_TRIGGER_RIGHT: PromptFont.XBOX_RIGHT_TRIGGER |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| ## Sony gamepad button map |  | ||||||
| const SONY_BUTTON := { |  | ||||||
| 	JOY_BUTTON_LEFT_SHOULDER: PromptFont.SONY_LEFT_SHOULDER, |  | ||||||
| 	JOY_BUTTON_RIGHT_SHOULDER: PromptFont.SONY_RIGHT_SHOULDER, |  | ||||||
| 	JOY_BUTTON_X: PromptFont.SONY_X, |  | ||||||
| 	JOY_BUTTON_Y: PromptFont.SONY_Y, |  | ||||||
| 	JOY_BUTTON_B: PromptFont.SONY_B, |  | ||||||
| 	JOY_BUTTON_A: PromptFont.SONY_A, |  | ||||||
| 	JOY_BUTTON_MISC1: PromptFont.SONY_SHARE, |  | ||||||
| 	JOY_BUTTON_TOUCHPAD: PromptFont.SONY_TOUCHPAD, |  | ||||||
| 	JOY_BUTTON_START: PromptFont.SONY_OPTIONS, |  | ||||||
| 	JOY_BUTTON_GUIDE: PromptFont.ICON_PLAYSTATION |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| ## Sony gamepad axis map |  | ||||||
| const SONY_AXIS := { |  | ||||||
| 	JOY_AXIS_TRIGGER_LEFT: PromptFont.SONY_LEFT_TRIGGER, |  | ||||||
| 	JOY_AXIS_TRIGGER_RIGHT: PromptFont.SONY_RIGHT_TRIGGER |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| ## Nintendo gamepad button map |  | ||||||
| const NINTENDO_BUTTON := { |  | ||||||
| 	JOY_BUTTON_LEFT_SHOULDER: PromptFont.NINTENDO_LEFT_SHOULDER, |  | ||||||
| 	JOY_BUTTON_RIGHT_SHOULDER: PromptFont.NINTENDO_RIGHT_SHOULDER, |  | ||||||
| 	JOY_BUTTON_BACK: PromptFont.NINTENDO_MINUS, |  | ||||||
| 	JOY_BUTTON_START: PromptFont.NINTENDO_PLUS, |  | ||||||
| 	JOY_BUTTON_DPAD_LEFT: PromptFont.NINTENDO_DPAD_LEFT, |  | ||||||
| 	JOY_BUTTON_DPAD_UP: PromptFont.NINTENDO_DPAD_UP, |  | ||||||
| 	JOY_BUTTON_DPAD_RIGHT: PromptFont.NINTENDO_DPAD_RIGHT, |  | ||||||
| 	JOY_BUTTON_DPAD_DOWN: PromptFont.NINTENDO_DPAD_DOWN |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| ## Nintendo gamepad axis map |  | ||||||
| const NINTENDO_AXIS := { |  | ||||||
| 	JOY_AXIS_TRIGGER_LEFT: PromptFont.NINTENDO_LEFT_TRIGGER, |  | ||||||
| 	JOY_AXIS_TRIGGER_RIGHT: PromptFont.NINTENDO_RIGHT_TRIGGER |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## Get the symbol representing the given keyboard input event. |  | ||||||
| ## |  | ||||||
| ## If there is no such symbol available, returns the key label. |  | ||||||
| static func key(event: InputEventKey) -> String: |  | ||||||
| 	if event.physical_keycode not in KEYBOARD: |  | ||||||
| 		return OS.get_keycode_string( |  | ||||||
| 			DisplayServer.keyboard_get_keycode_from_physical(event.physical_keycode) |  | ||||||
| 		) |  | ||||||
| 	return KEYBOARD[event.physical_keycode] |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## Get the symbol representing the given mouse button event. |  | ||||||
| static func mouse_button(event: InputEventMouseButton) -> String: |  | ||||||
| 	return MOUSE.get(event.button_index, UNKNOWN_INPUT_SYMBOL) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## Get the symbol representing the given gamepad button event. |  | ||||||
| static func gamepad_button(event: InputEventJoypadButton) -> String: |  | ||||||
| 	return GAMEPAD_BUTTON.get(event.button_index, UNKNOWN_INPUT_SYMBOL) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## Get the symbol representing the given gamepad axis event. |  | ||||||
| static func gamepad_axis(event: InputEventJoypadMotion) -> String: |  | ||||||
| 	return GAMEPAD_AXIS.get(event.axis, UNKNOWN_INPUT_SYMBOL) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## Get the symbol representing the given gamepad button event. |  | ||||||
| ## |  | ||||||
| ## Symbols specific to Xbox gamepads will be used where possible. |  | ||||||
| static func xbox_button(event: InputEventJoypadButton) -> String: |  | ||||||
| 	return XBOX_BUTTON.get(event.button_index, gamepad_button(event)) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## Get the symbol representing the given gamepad axis event. |  | ||||||
| ## |  | ||||||
| ## Symbols specific to Xbox gamepads will be used where possible. |  | ||||||
| static func xbox_axis(event: InputEventJoypadMotion) -> String: |  | ||||||
| 	return XBOX_AXIS.get(event.axis, gamepad_axis(event)) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## Get the symbol representing the given gamepad button event. |  | ||||||
| ## |  | ||||||
| ## Symbols specific to Playstation Dualshock gamepads will be used where possible. |  | ||||||
| static func sony_button(event: InputEventJoypadButton) -> String: |  | ||||||
| 	return SONY_BUTTON.get(event.button_index, gamepad_button(event)) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## Get the symbol representing the given gamepad axis event. |  | ||||||
| ## |  | ||||||
| ## Symbols specific to Playstation Dualshock gamepads will be used where possible. |  | ||||||
| static func sony_axis(event: InputEventJoypadMotion) -> String: |  | ||||||
| 	return SONY_AXIS.get(event.axis, gamepad_axis(event)) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## Get the symbol representing the given gamepad button event. |  | ||||||
| ## |  | ||||||
| ## Symbols specific to Nintendo Switch joycons will be used where possible. |  | ||||||
| static func nintendo_button(event: InputEventJoypadButton) -> String: |  | ||||||
| 	return NINTENDO_BUTTON.get(event.button_index, gamepad_button(event)) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## Get the symbol representing the given gamepad axis event. |  | ||||||
| ## |  | ||||||
| ## Symbols specific to Nintendo Switch joycons will be used where possible. |  | ||||||
| static func nintendo_axis(event: InputEventJoypadMotion) -> String: |  | ||||||
| 	return NINTENDO_AXIS.get(event.axis, gamepad_axis(event)) |  | ||||||
| @ -1,9 +1,8 @@ | |||||||
| [gd_resource type="Theme" load_steps=6 format=3 uid="uid://diodjft5u2cck"] | [gd_resource type="Theme" load_steps=5 format=3 uid="uid://diodjft5u2cck"] | ||||||
| 
 | 
 | ||||||
| [ext_resource type="FontFile" uid="uid://dsa0oh7c0h4pu" path="res://assets/fonts/Racing_Sans_One/RacingSansOne-Regular.ttf" id="1_3rv2b"] | [ext_resource type="FontFile" uid="uid://dsa0oh7c0h4pu" path="res://assets/fonts/Racing_Sans_One/RacingSansOne-Regular.ttf" id="1_3rv2b"] | ||||||
| [ext_resource type="FontFile" uid="uid://comihs66wounx" path="res://assets/fonts/Dokdo/Dokdo-Regular.ttf" id="1_eha6a"] | [ext_resource type="FontFile" uid="uid://comihs66wounx" path="res://assets/fonts/Dokdo/Dokdo-Regular.ttf" id="1_eha6a"] | ||||||
| [ext_resource type="FontFile" uid="uid://b6gxwgomstkgu" path="res://assets/fonts/Geo/Geo-Italic.ttf" id="2_5ty6u"] | [ext_resource type="FontFile" uid="uid://b6gxwgomstkgu" path="res://assets/fonts/Geo/Geo-Italic.ttf" id="2_5ty6u"] | ||||||
| [ext_resource type="FontFile" uid="uid://dyog4ex5nqfat" path="res://assets/fonts/promptfont/promptfont.otf" id="2_8kux8"] |  | ||||||
| [ext_resource type="FontFile" uid="uid://s4c1kf0rk2mb" path="res://assets/fonts/Geo/Geo-Regular.ttf" id="3_cee6l"] | [ext_resource type="FontFile" uid="uid://s4c1kf0rk2mb" path="res://assets/fonts/Geo/Geo-Regular.ttf" id="3_cee6l"] | ||||||
| 
 | 
 | ||||||
| [resource] | [resource] | ||||||
| @ -24,11 +23,6 @@ ClubSelectLabelDisabled/colors/font_outline_color = Color(0.2, 0.2, 0.2, 1) | |||||||
| ClubSelectLabelDisabled/colors/font_shadow_color = Color(0.2, 0.2, 0.2, 1) | ClubSelectLabelDisabled/colors/font_shadow_color = Color(0.2, 0.2, 0.2, 1) | ||||||
| ClubSelectLabelDisabled/font_sizes/font_size = 84 | ClubSelectLabelDisabled/font_sizes/font_size = 84 | ||||||
| ClubSelectLabelDisabled/fonts/font = ExtResource("1_3rv2b") | ClubSelectLabelDisabled/fonts/font = ExtResource("1_3rv2b") | ||||||
| InputPrompt/base_type = &"Label" |  | ||||||
| InputPrompt/colors/font_color = Color(1, 1, 0.870588, 1) |  | ||||||
| InputPrompt/constants/outline_size = 8 |  | ||||||
| InputPrompt/font_sizes/font_size = 32 |  | ||||||
| InputPrompt/fonts/font = ExtResource("2_8kux8") |  | ||||||
| PauseMenuButton/base_type = &"Button" | PauseMenuButton/base_type = &"Button" | ||||||
| PauseMenuButton/colors/font_outline_color = Color(0, 0, 0, 1) | PauseMenuButton/colors/font_outline_color = Color(0, 0, 0, 1) | ||||||
| PauseMenuButton/constants/outline_size = 6 | PauseMenuButton/constants/outline_size = 6 | ||||||
|  | |||||||
| @ -26,8 +26,6 @@ var player: WorldPlayer | |||||||
| 
 | 
 | ||||||
| @onready var _player_name: Label = %PlayerName | @onready var _player_name: Label = %PlayerName | ||||||
| 
 | 
 | ||||||
| @onready var _reset_prompt_animation: AnimationPlayer = %ResetPromptAnimation |  | ||||||
| 
 |  | ||||||
| @onready var _life_bar_rumbler: Rumbler = %LifeBarRumbler | @onready var _life_bar_rumbler: Rumbler = %LifeBarRumbler | ||||||
| 
 | 
 | ||||||
| static var scene: PackedScene = preload("res://src/ui/shot_hud/shot_hud.tscn") | static var scene: PackedScene = preload("res://src/ui/shot_hud/shot_hud.tscn") | ||||||
| @ -95,13 +93,6 @@ func play_wasted_animation() -> void: | |||||||
| 	_wasted_animation.play("display") | 	_wasted_animation.play("display") | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| func show_reset_prompt() -> void: |  | ||||||
| 	_reset_prompt_animation.play("show") |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| func hide_reset_prompt() -> void: |  | ||||||
| 	_reset_prompt_animation.play_backwards("show") |  | ||||||
| 
 |  | ||||||
| ## Set the value of the life bar, potentially playing some kind of effect in response. | ## Set the value of the life bar, potentially playing some kind of effect in response. | ||||||
| ## | ## | ||||||
| ## To set the life bar without triggering an effect, set it directly with `life_bar.value` | ## To set the life bar without triggering an effect, set it directly with `life_bar.value` | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| [gd_scene load_steps=47 format=3 uid="uid://c4ifdiohng830"] | [gd_scene load_steps=38 format=3 uid="uid://c4ifdiohng830"] | ||||||
| 
 | 
 | ||||||
| [ext_resource type="Script" path="res://src/ui/shot_hud/shot_hud.gd" id="1_x5b4c"] | [ext_resource type="Script" path="res://src/ui/shot_hud/shot_hud.gd" id="1_x5b4c"] | ||||||
| [ext_resource type="Shader" path="res://src/shaders/canvas_retro.gdshader" id="1_ybxxp"] | [ext_resource type="Shader" path="res://src/shaders/canvas_retro.gdshader" id="1_ybxxp"] | ||||||
| @ -13,7 +13,6 @@ | |||||||
| [ext_resource type="FontFile" uid="uid://dsa0oh7c0h4pu" path="res://assets/fonts/Racing_Sans_One/RacingSansOne-Regular.ttf" id="8_bejx4"] | [ext_resource type="FontFile" uid="uid://dsa0oh7c0h4pu" path="res://assets/fonts/Racing_Sans_One/RacingSansOne-Regular.ttf" id="8_bejx4"] | ||||||
| [ext_resource type="Texture2D" uid="uid://tancoet1lih5" path="res://assets/ui/ball_icons/basic_icon.png" id="8_tt8i3"] | [ext_resource type="Texture2D" uid="uid://tancoet1lih5" path="res://assets/ui/ball_icons/basic_icon.png" id="8_tt8i3"] | ||||||
| [ext_resource type="PackedScene" uid="uid://dmciuk3pbjsae" path="res://src/ui/shot_hud/life_bar/life_bar.tscn" id="9_w1fiw"] | [ext_resource type="PackedScene" uid="uid://dmciuk3pbjsae" path="res://src/ui/shot_hud/life_bar/life_bar.tscn" id="9_w1fiw"] | ||||||
| [ext_resource type="PackedScene" uid="uid://b47goj32i6sdh" path="res://src/ui/input_prompt/input_prompt.tscn" id="14_ik4gg"] |  | ||||||
| 
 | 
 | ||||||
| [sub_resource type="Animation" id="Animation_3xds6"] | [sub_resource type="Animation" id="Animation_3xds6"] | ||||||
| resource_name = "RESET" | resource_name = "RESET" | ||||||
| @ -643,114 +642,6 @@ _data = { | |||||||
| "show": SubResource("Animation_nicro") | "show": SubResource("Animation_nicro") | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| [sub_resource type="Gradient" id="Gradient_jevda"] |  | ||||||
| interpolation_mode = 2 |  | ||||||
| offsets = PackedFloat32Array(0, 0.5, 1) |  | ||||||
| colors = PackedColorArray(0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0) |  | ||||||
| 
 |  | ||||||
| [sub_resource type="GradientTexture2D" id="GradientTexture2D_q43a6"] |  | ||||||
| gradient = SubResource("Gradient_jevda") |  | ||||||
| fill_from = Vector2(0, 0.4) |  | ||||||
| fill_to = Vector2(1, 0.6) |  | ||||||
| metadata/_snap_enabled = true |  | ||||||
| 
 |  | ||||||
| [sub_resource type="Animation" id="Animation_ornnh"] |  | ||||||
| resource_name = "idle" |  | ||||||
| length = 6.0 |  | ||||||
| loop_mode = 1 |  | ||||||
| tracks/0/type = "value" |  | ||||||
| tracks/0/imported = false |  | ||||||
| tracks/0/enabled = true |  | ||||||
| tracks/0/path = NodePath("Glint:anchor_left") |  | ||||||
| tracks/0/interp = 2 |  | ||||||
| tracks/0/loop_wrap = false |  | ||||||
| tracks/0/keys = { |  | ||||||
| "times": PackedFloat32Array(0, 0.233333), |  | ||||||
| "transitions": PackedFloat32Array(1, 1), |  | ||||||
| "update": 0, |  | ||||||
| "values": [-1.0, 1.0] |  | ||||||
| } |  | ||||||
| tracks/1/type = "value" |  | ||||||
| tracks/1/imported = false |  | ||||||
| tracks/1/enabled = true |  | ||||||
| tracks/1/path = NodePath("Glint:anchor_right") |  | ||||||
| tracks/1/interp = 2 |  | ||||||
| tracks/1/loop_wrap = false |  | ||||||
| tracks/1/keys = { |  | ||||||
| "times": PackedFloat32Array(0, 0.233333), |  | ||||||
| "transitions": PackedFloat32Array(1, 1), |  | ||||||
| "update": 0, |  | ||||||
| "values": [0.0, 2.0] |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| [sub_resource type="Animation" id="Animation_3dab1"] |  | ||||||
| length = 0.001 |  | ||||||
| tracks/0/type = "value" |  | ||||||
| tracks/0/imported = false |  | ||||||
| tracks/0/enabled = true |  | ||||||
| tracks/0/path = NodePath("Glint:anchor_left") |  | ||||||
| tracks/0/interp = 1 |  | ||||||
| tracks/0/loop_wrap = true |  | ||||||
| tracks/0/keys = { |  | ||||||
| "times": PackedFloat32Array(0), |  | ||||||
| "transitions": PackedFloat32Array(1), |  | ||||||
| "update": 0, |  | ||||||
| "values": [-1.0] |  | ||||||
| } |  | ||||||
| tracks/1/type = "value" |  | ||||||
| tracks/1/imported = false |  | ||||||
| tracks/1/enabled = true |  | ||||||
| tracks/1/path = NodePath("Glint:anchor_right") |  | ||||||
| tracks/1/interp = 1 |  | ||||||
| tracks/1/loop_wrap = true |  | ||||||
| tracks/1/keys = { |  | ||||||
| "times": PackedFloat32Array(0), |  | ||||||
| "transitions": PackedFloat32Array(1), |  | ||||||
| "update": 0, |  | ||||||
| "values": [0.0] |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| [sub_resource type="AnimationLibrary" id="AnimationLibrary_bdkm3"] |  | ||||||
| _data = { |  | ||||||
| "RESET": SubResource("Animation_3dab1"), |  | ||||||
| "idle": SubResource("Animation_ornnh") |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| [sub_resource type="Animation" id="Animation_ll1u8"] |  | ||||||
| resource_name = "show" |  | ||||||
| length = 0.4 |  | ||||||
| tracks/0/type = "bezier" |  | ||||||
| tracks/0/imported = false |  | ||||||
| tracks/0/enabled = true |  | ||||||
| tracks/0/path = NodePath(".:position:y") |  | ||||||
| tracks/0/interp = 1 |  | ||||||
| tracks/0/loop_wrap = true |  | ||||||
| tracks/0/keys = { |  | ||||||
| "handle_modes": PackedInt32Array(0, 0), |  | ||||||
| "points": PackedFloat32Array(-55, -0.25, 0, 0.0709939, 50.4391, 0, -0.251647, 15.8692, 0.2, 0), |  | ||||||
| "times": PackedFloat32Array(0, 0.4) |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| [sub_resource type="Animation" id="Animation_qjs4v"] |  | ||||||
| length = 0.001 |  | ||||||
| tracks/0/type = "bezier" |  | ||||||
| tracks/0/imported = false |  | ||||||
| tracks/0/enabled = true |  | ||||||
| tracks/0/path = NodePath(".:position:y") |  | ||||||
| tracks/0/interp = 1 |  | ||||||
| tracks/0/loop_wrap = true |  | ||||||
| tracks/0/keys = { |  | ||||||
| "handle_modes": PackedInt32Array(0), |  | ||||||
| "points": PackedFloat32Array(-55, -0.25, 0, 0.25, 0), |  | ||||||
| "times": PackedFloat32Array(0) |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| [sub_resource type="AnimationLibrary" id="AnimationLibrary_o70c6"] |  | ||||||
| _data = { |  | ||||||
| "RESET": SubResource("Animation_qjs4v"), |  | ||||||
| "show": SubResource("Animation_ll1u8") |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| [node name="ShotHUD" type="Control"] | [node name="ShotHUD" type="Control"] | ||||||
| layout_mode = 3 | layout_mode = 3 | ||||||
| anchors_preset = 15 | anchors_preset = 15 | ||||||
| @ -1029,42 +920,3 @@ root_node = NodePath("../..") | |||||||
| libraries = { | libraries = { | ||||||
| "": SubResource("AnimationLibrary_c3i4w") | "": SubResource("AnimationLibrary_c3i4w") | ||||||
| } | } | ||||||
| 
 |  | ||||||
| [node name="ResetPrompt" type="MarginContainer" parent="."] |  | ||||||
| layout_mode = 1 |  | ||||||
| anchors_preset = -1 |  | ||||||
| anchor_left = 0.5 |  | ||||||
| anchor_right = 0.5 |  | ||||||
| offset_left = -95.5 |  | ||||||
| offset_top = -55.0 |  | ||||||
| offset_right = 95.5 |  | ||||||
| grow_horizontal = 2 |  | ||||||
| theme_override_constants/margin_top = 16 |  | ||||||
| 
 |  | ||||||
| [node name="ResetInputPrompt" parent="ResetPrompt" instance=ExtResource("14_ik4gg")] |  | ||||||
| clip_children = 2 |  | ||||||
| layout_mode = 2 |  | ||||||
| text = "❓ - RESET" |  | ||||||
| action = &"shot_reset" |  | ||||||
| label = "RESET" |  | ||||||
| 
 |  | ||||||
| [node name="Glint" type="TextureRect" parent="ResetPrompt/ResetInputPrompt"] |  | ||||||
| layout_mode = 1 |  | ||||||
| anchors_preset = -1 |  | ||||||
| anchor_left = -1.0 |  | ||||||
| anchor_bottom = 1.0 |  | ||||||
| grow_horizontal = 2 |  | ||||||
| grow_vertical = 2 |  | ||||||
| texture = SubResource("GradientTexture2D_q43a6") |  | ||||||
| 
 |  | ||||||
| [node name="GlintAnimation" type="AnimationPlayer" parent="ResetPrompt/ResetInputPrompt"] |  | ||||||
| libraries = { |  | ||||||
| "": SubResource("AnimationLibrary_bdkm3") |  | ||||||
| } |  | ||||||
| autoplay = "idle" |  | ||||||
| 
 |  | ||||||
| [node name="ResetPromptAnimation" type="AnimationPlayer" parent="ResetPrompt"] |  | ||||||
| unique_name_in_owner = true |  | ||||||
| libraries = { |  | ||||||
| "": SubResource("AnimationLibrary_o70c6") |  | ||||||
| } |  | ||||||
|  | |||||||
| @ -1,5 +0,0 @@ | |||||||
| [gd_resource type="Curve" format=3 uid="uid://5vyddepvq1ho"] |  | ||||||
| 
 |  | ||||||
| [resource] |  | ||||||
| _data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.333, 1), 0.0, 0.0, 0, 0, Vector2(0.667, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] |  | ||||||
| point_count = 4 |  | ||||||
| @ -1,13 +0,0 @@ | |||||||
| [gd_resource type="StandardMaterial3D" format=3 uid="uid://b20gam4x6f8gw"] |  | ||||||
| 
 |  | ||||||
| [resource] |  | ||||||
| transparency = 1 |  | ||||||
| cull_mode = 2 |  | ||||||
| diffuse_mode = 3 |  | ||||||
| specular_mode = 1 |  | ||||||
| vertex_color_use_as_albedo = true |  | ||||||
| albedo_color = Color(0.9, 1, 1, 0.666667) |  | ||||||
| emission_enabled = true |  | ||||||
| emission = Color(0.368627, 1, 1, 1) |  | ||||||
| emission_energy_multiplier = 0.1 |  | ||||||
| use_particle_trails = true |  | ||||||
| @ -1,89 +0,0 @@ | |||||||
| [gd_scene load_steps=13 format=3 uid="uid://dwfckgdxnwwru"] |  | ||||||
| 
 |  | ||||||
| [ext_resource type="Texture2D" uid="uid://c0rf8luj8nbom" path="res://src/world/effects/zephyr/zephyr_scale_curve.tres" id="1_opmvf"] |  | ||||||
| [ext_resource type="Curve" uid="uid://5vyddepvq1ho" path="res://src/world/effects/zephyr/zephyr_mesh_curve.tres" id="2_5lvg1"] |  | ||||||
| [ext_resource type="Material" uid="uid://b20gam4x6f8gw" path="res://src/world/effects/zephyr/zephyr_mesh_material.tres" id="3_yxxm1"] |  | ||||||
| 
 |  | ||||||
| [sub_resource type="Curve" id="Curve_ddgk4"] |  | ||||||
| min_value = -1.0 |  | ||||||
| _data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.25, -1), 0.0, 0.0, 0, 0, Vector2(0.5, 1), 0.0, 0.0, 0, 0, Vector2(0.75, -1), 0.0, 0.0, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0] |  | ||||||
| point_count = 5 |  | ||||||
| 
 |  | ||||||
| [sub_resource type="CurveXYZTexture" id="CurveXYZTexture_4pntk"] |  | ||||||
| curve_y = SubResource("Curve_ddgk4") |  | ||||||
| 
 |  | ||||||
| [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_t5ein"] |  | ||||||
| particle_flag_align_y = true |  | ||||||
| emission_shape = 3 |  | ||||||
| emission_box_extents = Vector3(100, 50, 100) |  | ||||||
| spread = 0.0 |  | ||||||
| initial_velocity_min = 40.0 |  | ||||||
| initial_velocity_max = 40.0 |  | ||||||
| directional_velocity_min = 3.99998 |  | ||||||
| directional_velocity_max = 3.99998 |  | ||||||
| directional_velocity_curve = SubResource("CurveXYZTexture_4pntk") |  | ||||||
| gravity = Vector3(0, 0, 0) |  | ||||||
| scale_curve = ExtResource("1_opmvf") |  | ||||||
| sub_emitter_mode = 1 |  | ||||||
| sub_emitter_frequency = 4.0 |  | ||||||
| 
 |  | ||||||
| [sub_resource type="RibbonTrailMesh" id="RibbonTrailMesh_rhyqq"] |  | ||||||
| material = ExtResource("3_yxxm1") |  | ||||||
| shape = 0 |  | ||||||
| sections = 12 |  | ||||||
| section_length = 0.87 |  | ||||||
| curve = ExtResource("2_5lvg1") |  | ||||||
| 
 |  | ||||||
| [sub_resource type="Curve" id="Curve_v0f0t"] |  | ||||||
| min_value = -1.0 |  | ||||||
| _data = [Vector2(0.2, 1), 0.0, 0.0, 0, 0, Vector2(0.3, -1), 0.0, 0.0, 0, 0, Vector2(0.4, 1), 0.0, 0.0, 0, 0] |  | ||||||
| point_count = 3 |  | ||||||
| 
 |  | ||||||
| [sub_resource type="Curve" id="Curve_mp6e7"] |  | ||||||
| min_value = -1.0 |  | ||||||
| _data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.0464768, 0.0216568), 0.0, 0.0, 0, 0, Vector2(0.130435, -0.0698431), 0.0, 0.0, 0, 0, Vector2(0.2, 0), 0.0, 20.0, 0, 1, Vector2(0.25, 1), 0.0, 0.0, 0, 0, Vector2(0.35, -1), 0.0, 0.0, 0, 0, Vector2(0.4, 0), 20.0, 0.0, 1, 0, Vector2(0.449102, 0.1875), 0.0, 0.0, 0, 0, Vector2(0.625749, -0.0577831), 0.0, 0.0, 0, 0, Vector2(0.7, 0), 0.0, 0.0, 0, 0] |  | ||||||
| point_count = 10 |  | ||||||
| 
 |  | ||||||
| [sub_resource type="CurveXYZTexture" id="CurveXYZTexture_j3h3q"] |  | ||||||
| curve_x = SubResource("Curve_v0f0t") |  | ||||||
| curve_y = SubResource("Curve_mp6e7") |  | ||||||
| 
 |  | ||||||
| [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_cn2bt"] |  | ||||||
| particle_flag_align_y = true |  | ||||||
| spread = 0.0 |  | ||||||
| directional_velocity_min = 37.0 |  | ||||||
| directional_velocity_max = 40.0 |  | ||||||
| directional_velocity_curve = SubResource("CurveXYZTexture_j3h3q") |  | ||||||
| gravity = Vector3(0, 0, 0) |  | ||||||
| scale_curve = ExtResource("1_opmvf") |  | ||||||
| 
 |  | ||||||
| [sub_resource type="RibbonTrailMesh" id="RibbonTrailMesh_inkcn"] |  | ||||||
| material = ExtResource("3_yxxm1") |  | ||||||
| shape = 0 |  | ||||||
| sections = 24 |  | ||||||
| curve = ExtResource("2_5lvg1") |  | ||||||
| 
 |  | ||||||
| [node name="WaveParticle" type="GPUParticles3D"] |  | ||||||
| amount = 4 |  | ||||||
| sub_emitter = NodePath("SwirlParticle") |  | ||||||
| lifetime = 6.0 |  | ||||||
| randomness = 1.0 |  | ||||||
| fixed_fps = 60 |  | ||||||
| interpolate = false |  | ||||||
| visibility_aabb = AABB(-100, -50, -100, 600, 100, 200) |  | ||||||
| local_coords = true |  | ||||||
| trail_enabled = true |  | ||||||
| trail_lifetime = 1.5 |  | ||||||
| process_material = SubResource("ParticleProcessMaterial_t5ein") |  | ||||||
| draw_pass_1 = SubResource("RibbonTrailMesh_rhyqq") |  | ||||||
| 
 |  | ||||||
| [node name="SwirlParticle" type="GPUParticles3D" parent="."] |  | ||||||
| amount = 1 |  | ||||||
| lifetime = 12.0 |  | ||||||
| randomness = 1.0 |  | ||||||
| visibility_aabb = AABB(-100, -50, -100, 600, 100, 200) |  | ||||||
| local_coords = true |  | ||||||
| trail_enabled = true |  | ||||||
| trail_lifetime = 3.0 |  | ||||||
| process_material = SubResource("ParticleProcessMaterial_cn2bt") |  | ||||||
| draw_pass_1 = SubResource("RibbonTrailMesh_inkcn") |  | ||||||
| @ -1,8 +0,0 @@ | |||||||
| [gd_resource type="CurveTexture" load_steps=2 format=3 uid="uid://b1bfyk5c003se"] |  | ||||||
| 
 |  | ||||||
| [sub_resource type="Curve" id="Curve_iycj4"] |  | ||||||
| _data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.1, 1), 0.0, 0.0, 0, 0, Vector2(0.65, 1), 0.0, 0.0, 0, 0, Vector2(0.75, 0), 0.0, 0.0, 0, 0] |  | ||||||
| point_count = 4 |  | ||||||
| 
 |  | ||||||
| [resource] |  | ||||||
| curve = SubResource("Curve_iycj4") |  | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user