generated from krampus/template-godot4
	Compare commits
	
		
			5 Commits
		
	
	
		
			75d08d0dc2
			...
			bfe2ca46d4
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| bfe2ca46d4 | |||
| 317f77c358 | |||
| d8dbf0a7d1 | |||
| 1cc0f4cf7c | |||
| a935cdd077 | 
| @ -13,6 +13,14 @@ 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 | ||||||
|  | |||||||
							
								
								
									
										91
									
								
								assets/fonts/promptfont/LICENSE.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								assets/fonts/promptfont/LICENSE.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,91 @@ | |||||||
|  | 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. | ||||||
							
								
								
									
										959
									
								
								assets/fonts/promptfont/promptfont.gd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										959
									
								
								assets/fonts/promptfont/promptfont.gd
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,959 @@ | |||||||
|  | # 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") | ||||||
							
								
								
									
										
											BIN
										
									
								
								assets/fonts/promptfont/promptfont.otf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/fonts/promptfont/promptfont.otf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										34
									
								
								assets/fonts/promptfont/promptfont.otf.import
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								assets/fonts/promptfont/promptfont.otf.import
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | |||||||
|  | [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=false | mipmaps/generate=true | ||||||
| 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=1 | detect_3d/compress_to=0 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| [gd_scene load_steps=37 format=3 uid="uid://bm2o3mex10v11"] | [gd_scene load_steps=61 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,9 +10,13 @@ | |||||||
| [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"] | ||||||
| @ -184,6 +188,112 @@ _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="."] | ||||||
| @ -202,6 +312,7 @@ 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="."] | ||||||
| 
 | 
 | ||||||
| @ -233,7 +344,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(1, 0, 0, 0, 1, 0, 0, 0, 1, 540, 4, 452) | transform = Transform3D(-0.777146, 0, -0.629321, 0, 1, 0, 0.629321, 0, -0.777146, 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) | ||||||
| @ -368,3 +479,163 @@ 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,6 +132,11 @@ 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) | ||||||
| @ -196,7 +201,7 @@ ball_previous={ | |||||||
| [layer_names] | [layer_names] | ||||||
| 
 | 
 | ||||||
| 3d_physics/layer_1="Collision Geometry" | 3d_physics/layer_1="Collision Geometry" | ||||||
| 3d_physics/layer_2="Layer 3" | 3d_physics/layer_2="Layer 2" | ||||||
| 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,6 +38,8 @@ 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 | ||||||
| @ -80,6 +82,7 @@ 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,6 +49,7 @@ 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 = $\"..\" | ||||||
| 
 | 
 | ||||||
| @ -73,6 +74,19 @@ 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"] | ||||||
| @ -150,6 +164,7 @@ 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,6 +8,7 @@ enum Phase { | |||||||
| 	CURVE_ADJUST, | 	CURVE_ADJUST, | ||||||
| 	DOWNSWING, | 	DOWNSWING, | ||||||
| 	SHOT, | 	SHOT, | ||||||
|  | 	SHOT_RESET, | ||||||
| 	FINISHED, | 	FINISHED, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -87,6 +88,15 @@ 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: | ||||||
| @ -158,6 +168,7 @@ 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 | ||||||
| @ -273,6 +284,8 @@ 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) | ||||||
| 
 | 
 | ||||||
| @ -375,7 +388,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 == Phase.SHOT: | 	if phase in [Phase.SHOT, Phase.SHOT_RESET]: | ||||||
| 		phase = Phase.FINISHED | 		phase = Phase.FINISHED | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -418,6 +431,9 @@ 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() | ||||||
| @ -569,6 +585,11 @@ 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() | ||||||
| @ -587,6 +608,7 @@ 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 | ||||||
| @ -617,6 +639,10 @@ 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,6 +451,11 @@ 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") | ||||||
| 
 | 
 | ||||||
| @ -498,5 +503,6 @@ 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,28 +1,49 @@ | |||||||
| 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) | 	#camera.look_at(target.global_position, up) | ||||||
|  | 	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 | ||||||
| 	rotation.y += angular_speed | 	pivot.rotation.y += angular_speed | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| static func create(_target: Node3D) -> OrbitalCamera: | static func create(_target: Node3D) -> OrbitalCamera: | ||||||
|  | |||||||
| @ -5,12 +5,20 @@ | |||||||
| [node name="OrbitalCamera" type="Node3D"] | [node name="OrbitalCamera" type="Node3D"] | ||||||
| script = ExtResource("1_nvlic") | script = ExtResource("1_nvlic") | ||||||
| 
 | 
 | ||||||
| [node name="Pitch" type="SpringArm3D" parent="."] | [node name="Pivot" type="Node3D" 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="Camera" type="Camera3D" parent="Pitch"] | [node name="CameraOffset" type="Node3D" parent="Pivot/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 | ||||||
|  | |||||||
							
								
								
									
										49
									
								
								src/ui/input_prompt/input_prompt.gd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								src/ui/input_prompt/input_prompt.gd
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,49 @@ | |||||||
|  | @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 | ||||||
							
								
								
									
										14
									
								
								src/ui/input_prompt/input_prompt.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/ui/input_prompt/input_prompt.tscn
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | |||||||
|  | [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 = "" | ||||||
							
								
								
									
										271
									
								
								src/ui/input_prompt/prompt_map.gd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										271
									
								
								src/ui/input_prompt/prompt_map.gd
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,271 @@ | |||||||
|  | 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,8 +1,9 @@ | |||||||
| [gd_resource type="Theme" load_steps=5 format=3 uid="uid://diodjft5u2cck"] | [gd_resource type="Theme" load_steps=6 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] | ||||||
| @ -23,6 +24,11 @@ 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,6 +26,8 @@ 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") | ||||||
| @ -93,6 +95,13 @@ 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=38 format=3 uid="uid://c4ifdiohng830"] | [gd_scene load_steps=47 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,6 +13,7 @@ | |||||||
| [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" | ||||||
| @ -642,6 +643,114 @@ _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 | ||||||
| @ -920,3 +1029,42 @@ 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") | ||||||
|  | } | ||||||
|  | |||||||
							
								
								
									
										5
									
								
								src/world/effects/zephyr/zephyr_mesh_curve.tres
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/world/effects/zephyr/zephyr_mesh_curve.tres
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | |||||||
|  | [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 | ||||||
							
								
								
									
										13
									
								
								src/world/effects/zephyr/zephyr_mesh_material.tres
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/world/effects/zephyr/zephyr_mesh_material.tres
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | |||||||
|  | [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 | ||||||
							
								
								
									
										89
									
								
								src/world/effects/zephyr/zephyr_particle.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								src/world/effects/zephyr/zephyr_particle.tscn
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,89 @@ | |||||||
|  | [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") | ||||||
							
								
								
									
										8
									
								
								src/world/effects/zephyr/zephyr_scale_curve.tres
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/world/effects/zephyr/zephyr_scale_curve.tres
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | [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