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