Style: clang-format: Disable AllowShortCaseLabelsOnASingleLine
This commit is contained in:
parent
3d15f04668
commit
64a63e0861
91 changed files with 3804 additions and 1467 deletions
|
@ -13,7 +13,7 @@ AlignAfterOpenBracket: DontAlign
|
|||
AlignTrailingComments: false
|
||||
AllowAllParametersOfDeclarationOnNextLine: false
|
||||
# AllowShortBlocksOnASingleLine: false
|
||||
AllowShortCaseLabelsOnASingleLine: true
|
||||
# AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: Inline
|
||||
# AllowShortIfStatementsOnASingleLine: false
|
||||
# AllowShortLoopsOnASingleLine: false
|
||||
|
|
|
@ -576,14 +576,22 @@ String _OS::get_locale() const {
|
|||
|
||||
String _OS::get_latin_keyboard_variant() const {
|
||||
switch (OS::get_singleton()->get_latin_keyboard_variant()) {
|
||||
case OS::LATIN_KEYBOARD_QWERTY: return "QWERTY";
|
||||
case OS::LATIN_KEYBOARD_QWERTZ: return "QWERTZ";
|
||||
case OS::LATIN_KEYBOARD_AZERTY: return "AZERTY";
|
||||
case OS::LATIN_KEYBOARD_QZERTY: return "QZERTY";
|
||||
case OS::LATIN_KEYBOARD_DVORAK: return "DVORAK";
|
||||
case OS::LATIN_KEYBOARD_NEO: return "NEO";
|
||||
case OS::LATIN_KEYBOARD_COLEMAK: return "COLEMAK";
|
||||
default: return "ERROR";
|
||||
case OS::LATIN_KEYBOARD_QWERTY:
|
||||
return "QWERTY";
|
||||
case OS::LATIN_KEYBOARD_QWERTZ:
|
||||
return "QWERTZ";
|
||||
case OS::LATIN_KEYBOARD_AZERTY:
|
||||
return "AZERTY";
|
||||
case OS::LATIN_KEYBOARD_QZERTY:
|
||||
return "QZERTY";
|
||||
case OS::LATIN_KEYBOARD_DVORAK:
|
||||
return "DVORAK";
|
||||
case OS::LATIN_KEYBOARD_NEO:
|
||||
return "NEO";
|
||||
case OS::LATIN_KEYBOARD_COLEMAK:
|
||||
return "COLEMAK";
|
||||
default:
|
||||
return "ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
487
core/image.cpp
487
core/image.cpp
|
@ -112,23 +112,36 @@ int Image::get_format_pixel_size(Format p_format) {
|
|||
return 1; //luminance
|
||||
case FORMAT_LA8:
|
||||
return 2; //luminance-alpha
|
||||
case FORMAT_R8: return 1;
|
||||
case FORMAT_RG8: return 2;
|
||||
case FORMAT_RGB8: return 3;
|
||||
case FORMAT_RGBA8: return 4;
|
||||
case FORMAT_RGBA4444: return 2;
|
||||
case FORMAT_RGBA5551: return 2;
|
||||
case FORMAT_R8:
|
||||
return 1;
|
||||
case FORMAT_RG8:
|
||||
return 2;
|
||||
case FORMAT_RGB8:
|
||||
return 3;
|
||||
case FORMAT_RGBA8:
|
||||
return 4;
|
||||
case FORMAT_RGBA4444:
|
||||
return 2;
|
||||
case FORMAT_RGBA5551:
|
||||
return 2;
|
||||
case FORMAT_RF:
|
||||
return 4; //float
|
||||
case FORMAT_RGF: return 8;
|
||||
case FORMAT_RGBF: return 12;
|
||||
case FORMAT_RGBAF: return 16;
|
||||
case FORMAT_RGF:
|
||||
return 8;
|
||||
case FORMAT_RGBF:
|
||||
return 12;
|
||||
case FORMAT_RGBAF:
|
||||
return 16;
|
||||
case FORMAT_RH:
|
||||
return 2; //half float
|
||||
case FORMAT_RGH: return 4;
|
||||
case FORMAT_RGBH: return 6;
|
||||
case FORMAT_RGBAH: return 8;
|
||||
case FORMAT_RGBE9995: return 4;
|
||||
case FORMAT_RGH:
|
||||
return 4;
|
||||
case FORMAT_RGBH:
|
||||
return 6;
|
||||
case FORMAT_RGBAH:
|
||||
return 8;
|
||||
case FORMAT_RGBE9995:
|
||||
return 4;
|
||||
case FORMAT_DXT1:
|
||||
return 1; //s3tc bc1
|
||||
case FORMAT_DXT3:
|
||||
|
@ -147,20 +160,28 @@ int Image::get_format_pixel_size(Format p_format) {
|
|||
return 1; //unsigned float
|
||||
case FORMAT_PVRTC2:
|
||||
return 1; //pvrtc
|
||||
case FORMAT_PVRTC2A: return 1;
|
||||
case FORMAT_PVRTC4: return 1;
|
||||
case FORMAT_PVRTC4A: return 1;
|
||||
case FORMAT_PVRTC2A:
|
||||
return 1;
|
||||
case FORMAT_PVRTC4:
|
||||
return 1;
|
||||
case FORMAT_PVRTC4A:
|
||||
return 1;
|
||||
case FORMAT_ETC:
|
||||
return 1; //etc1
|
||||
case FORMAT_ETC2_R11:
|
||||
return 1; //etc2
|
||||
case FORMAT_ETC2_R11S:
|
||||
return 1; //signed: return 1; NOT srgb.
|
||||
case FORMAT_ETC2_RG11: return 1;
|
||||
case FORMAT_ETC2_RG11S: return 1;
|
||||
case FORMAT_ETC2_RGB8: return 1;
|
||||
case FORMAT_ETC2_RGBA8: return 1;
|
||||
case FORMAT_ETC2_RGB8A1: return 1;
|
||||
case FORMAT_ETC2_RG11:
|
||||
return 1;
|
||||
case FORMAT_ETC2_RG11S:
|
||||
return 1;
|
||||
case FORMAT_ETC2_RGB8:
|
||||
return 1;
|
||||
case FORMAT_ETC2_RGBA8:
|
||||
return 1;
|
||||
case FORMAT_ETC2_RGB8A1:
|
||||
return 1;
|
||||
case FORMAT_MAX: {
|
||||
}
|
||||
}
|
||||
|
@ -467,36 +488,96 @@ void Image::convert(Format p_new_format) {
|
|||
|
||||
switch (conversion_type) {
|
||||
|
||||
case FORMAT_L8 | (FORMAT_LA8 << 8): _convert<1, false, 1, true, true, true>(width, height, rptr, wptr); break;
|
||||
case FORMAT_L8 | (FORMAT_R8 << 8): _convert<1, false, 1, false, true, false>(width, height, rptr, wptr); break;
|
||||
case FORMAT_L8 | (FORMAT_RG8 << 8): _convert<1, false, 2, false, true, false>(width, height, rptr, wptr); break;
|
||||
case FORMAT_L8 | (FORMAT_RGB8 << 8): _convert<1, false, 3, false, true, false>(width, height, rptr, wptr); break;
|
||||
case FORMAT_L8 | (FORMAT_RGBA8 << 8): _convert<1, false, 3, true, true, false>(width, height, rptr, wptr); break;
|
||||
case FORMAT_LA8 | (FORMAT_L8 << 8): _convert<1, true, 1, false, true, true>(width, height, rptr, wptr); break;
|
||||
case FORMAT_LA8 | (FORMAT_R8 << 8): _convert<1, true, 1, false, true, false>(width, height, rptr, wptr); break;
|
||||
case FORMAT_LA8 | (FORMAT_RG8 << 8): _convert<1, true, 2, false, true, false>(width, height, rptr, wptr); break;
|
||||
case FORMAT_LA8 | (FORMAT_RGB8 << 8): _convert<1, true, 3, false, true, false>(width, height, rptr, wptr); break;
|
||||
case FORMAT_LA8 | (FORMAT_RGBA8 << 8): _convert<1, true, 3, true, true, false>(width, height, rptr, wptr); break;
|
||||
case FORMAT_R8 | (FORMAT_L8 << 8): _convert<1, false, 1, false, false, true>(width, height, rptr, wptr); break;
|
||||
case FORMAT_R8 | (FORMAT_LA8 << 8): _convert<1, false, 1, true, false, true>(width, height, rptr, wptr); break;
|
||||
case FORMAT_R8 | (FORMAT_RG8 << 8): _convert<1, false, 2, false, false, false>(width, height, rptr, wptr); break;
|
||||
case FORMAT_R8 | (FORMAT_RGB8 << 8): _convert<1, false, 3, false, false, false>(width, height, rptr, wptr); break;
|
||||
case FORMAT_R8 | (FORMAT_RGBA8 << 8): _convert<1, false, 3, true, false, false>(width, height, rptr, wptr); break;
|
||||
case FORMAT_RG8 | (FORMAT_L8 << 8): _convert<2, false, 1, false, false, true>(width, height, rptr, wptr); break;
|
||||
case FORMAT_RG8 | (FORMAT_LA8 << 8): _convert<2, false, 1, true, false, true>(width, height, rptr, wptr); break;
|
||||
case FORMAT_RG8 | (FORMAT_R8 << 8): _convert<2, false, 1, false, false, false>(width, height, rptr, wptr); break;
|
||||
case FORMAT_RG8 | (FORMAT_RGB8 << 8): _convert<2, false, 3, false, false, false>(width, height, rptr, wptr); break;
|
||||
case FORMAT_RG8 | (FORMAT_RGBA8 << 8): _convert<2, false, 3, true, false, false>(width, height, rptr, wptr); break;
|
||||
case FORMAT_RGB8 | (FORMAT_L8 << 8): _convert<3, false, 1, false, false, true>(width, height, rptr, wptr); break;
|
||||
case FORMAT_RGB8 | (FORMAT_LA8 << 8): _convert<3, false, 1, true, false, true>(width, height, rptr, wptr); break;
|
||||
case FORMAT_RGB8 | (FORMAT_R8 << 8): _convert<3, false, 1, false, false, false>(width, height, rptr, wptr); break;
|
||||
case FORMAT_RGB8 | (FORMAT_RG8 << 8): _convert<3, false, 2, false, false, false>(width, height, rptr, wptr); break;
|
||||
case FORMAT_RGB8 | (FORMAT_RGBA8 << 8): _convert<3, false, 3, true, false, false>(width, height, rptr, wptr); break;
|
||||
case FORMAT_RGBA8 | (FORMAT_L8 << 8): _convert<3, true, 1, false, false, true>(width, height, rptr, wptr); break;
|
||||
case FORMAT_RGBA8 | (FORMAT_LA8 << 8): _convert<3, true, 1, true, false, true>(width, height, rptr, wptr); break;
|
||||
case FORMAT_RGBA8 | (FORMAT_R8 << 8): _convert<3, true, 1, false, false, false>(width, height, rptr, wptr); break;
|
||||
case FORMAT_RGBA8 | (FORMAT_RG8 << 8): _convert<3, true, 2, false, false, false>(width, height, rptr, wptr); break;
|
||||
case FORMAT_RGBA8 | (FORMAT_RGB8 << 8): _convert<3, true, 3, false, false, false>(width, height, rptr, wptr); break;
|
||||
case FORMAT_L8 | (FORMAT_LA8 << 8):
|
||||
_convert<1, false, 1, true, true, true>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_L8 | (FORMAT_R8 << 8):
|
||||
_convert<1, false, 1, false, true, false>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_L8 | (FORMAT_RG8 << 8):
|
||||
_convert<1, false, 2, false, true, false>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_L8 | (FORMAT_RGB8 << 8):
|
||||
_convert<1, false, 3, false, true, false>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_L8 | (FORMAT_RGBA8 << 8):
|
||||
_convert<1, false, 3, true, true, false>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_LA8 | (FORMAT_L8 << 8):
|
||||
_convert<1, true, 1, false, true, true>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_LA8 | (FORMAT_R8 << 8):
|
||||
_convert<1, true, 1, false, true, false>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_LA8 | (FORMAT_RG8 << 8):
|
||||
_convert<1, true, 2, false, true, false>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_LA8 | (FORMAT_RGB8 << 8):
|
||||
_convert<1, true, 3, false, true, false>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_LA8 | (FORMAT_RGBA8 << 8):
|
||||
_convert<1, true, 3, true, true, false>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_R8 | (FORMAT_L8 << 8):
|
||||
_convert<1, false, 1, false, false, true>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_R8 | (FORMAT_LA8 << 8):
|
||||
_convert<1, false, 1, true, false, true>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_R8 | (FORMAT_RG8 << 8):
|
||||
_convert<1, false, 2, false, false, false>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_R8 | (FORMAT_RGB8 << 8):
|
||||
_convert<1, false, 3, false, false, false>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_R8 | (FORMAT_RGBA8 << 8):
|
||||
_convert<1, false, 3, true, false, false>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_RG8 | (FORMAT_L8 << 8):
|
||||
_convert<2, false, 1, false, false, true>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_RG8 | (FORMAT_LA8 << 8):
|
||||
_convert<2, false, 1, true, false, true>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_RG8 | (FORMAT_R8 << 8):
|
||||
_convert<2, false, 1, false, false, false>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_RG8 | (FORMAT_RGB8 << 8):
|
||||
_convert<2, false, 3, false, false, false>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_RG8 | (FORMAT_RGBA8 << 8):
|
||||
_convert<2, false, 3, true, false, false>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_RGB8 | (FORMAT_L8 << 8):
|
||||
_convert<3, false, 1, false, false, true>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_RGB8 | (FORMAT_LA8 << 8):
|
||||
_convert<3, false, 1, true, false, true>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_RGB8 | (FORMAT_R8 << 8):
|
||||
_convert<3, false, 1, false, false, false>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_RGB8 | (FORMAT_RG8 << 8):
|
||||
_convert<3, false, 2, false, false, false>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_RGB8 | (FORMAT_RGBA8 << 8):
|
||||
_convert<3, false, 3, true, false, false>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_RGBA8 | (FORMAT_L8 << 8):
|
||||
_convert<3, true, 1, false, false, true>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_RGBA8 | (FORMAT_LA8 << 8):
|
||||
_convert<3, true, 1, true, false, true>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_RGBA8 | (FORMAT_R8 << 8):
|
||||
_convert<3, true, 1, false, false, false>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_RGBA8 | (FORMAT_RG8 << 8):
|
||||
_convert<3, true, 2, false, false, false>(width, height, rptr, wptr);
|
||||
break;
|
||||
case FORMAT_RGBA8 | (FORMAT_RGB8 << 8):
|
||||
_convert<3, true, 3, false, false, false>(width, height, rptr, wptr);
|
||||
break;
|
||||
}
|
||||
|
||||
r.release();
|
||||
|
@ -942,25 +1023,49 @@ void Image::resize(int p_width, int p_height, Interpolation p_interpolation) {
|
|||
|
||||
if (format >= FORMAT_L8 && format <= FORMAT_RGBA8) {
|
||||
switch (get_format_pixel_size(format)) {
|
||||
case 1: _scale_nearest<1, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 2: _scale_nearest<2, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 3: _scale_nearest<3, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 4: _scale_nearest<4, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 1:
|
||||
_scale_nearest<1, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 2:
|
||||
_scale_nearest<2, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 3:
|
||||
_scale_nearest<3, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 4:
|
||||
_scale_nearest<4, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
}
|
||||
} else if (format >= FORMAT_RF && format <= FORMAT_RGBAF) {
|
||||
switch (get_format_pixel_size(format)) {
|
||||
case 4: _scale_nearest<1, float>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 8: _scale_nearest<2, float>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 12: _scale_nearest<3, float>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 16: _scale_nearest<4, float>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 4:
|
||||
_scale_nearest<1, float>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 8:
|
||||
_scale_nearest<2, float>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 12:
|
||||
_scale_nearest<3, float>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 16:
|
||||
_scale_nearest<4, float>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
}
|
||||
|
||||
} else if (format >= FORMAT_RH && format <= FORMAT_RGBAH) {
|
||||
switch (get_format_pixel_size(format)) {
|
||||
case 2: _scale_nearest<1, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 4: _scale_nearest<2, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 6: _scale_nearest<3, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 8: _scale_nearest<4, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 2:
|
||||
_scale_nearest<1, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 4:
|
||||
_scale_nearest<2, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 6:
|
||||
_scale_nearest<3, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 8:
|
||||
_scale_nearest<4, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1006,24 +1111,48 @@ void Image::resize(int p_width, int p_height, Interpolation p_interpolation) {
|
|||
|
||||
if (format >= FORMAT_L8 && format <= FORMAT_RGBA8) {
|
||||
switch (get_format_pixel_size(format)) {
|
||||
case 1: _scale_bilinear<1, uint8_t>(src_ptr, w_ptr, src_width, src_height, p_width, p_height); break;
|
||||
case 2: _scale_bilinear<2, uint8_t>(src_ptr, w_ptr, src_width, src_height, p_width, p_height); break;
|
||||
case 3: _scale_bilinear<3, uint8_t>(src_ptr, w_ptr, src_width, src_height, p_width, p_height); break;
|
||||
case 4: _scale_bilinear<4, uint8_t>(src_ptr, w_ptr, src_width, src_height, p_width, p_height); break;
|
||||
case 1:
|
||||
_scale_bilinear<1, uint8_t>(src_ptr, w_ptr, src_width, src_height, p_width, p_height);
|
||||
break;
|
||||
case 2:
|
||||
_scale_bilinear<2, uint8_t>(src_ptr, w_ptr, src_width, src_height, p_width, p_height);
|
||||
break;
|
||||
case 3:
|
||||
_scale_bilinear<3, uint8_t>(src_ptr, w_ptr, src_width, src_height, p_width, p_height);
|
||||
break;
|
||||
case 4:
|
||||
_scale_bilinear<4, uint8_t>(src_ptr, w_ptr, src_width, src_height, p_width, p_height);
|
||||
break;
|
||||
}
|
||||
} else if (format >= FORMAT_RF && format <= FORMAT_RGBAF) {
|
||||
switch (get_format_pixel_size(format)) {
|
||||
case 4: _scale_bilinear<1, float>(src_ptr, w_ptr, src_width, src_height, p_width, p_height); break;
|
||||
case 8: _scale_bilinear<2, float>(src_ptr, w_ptr, src_width, src_height, p_width, p_height); break;
|
||||
case 12: _scale_bilinear<3, float>(src_ptr, w_ptr, src_width, src_height, p_width, p_height); break;
|
||||
case 16: _scale_bilinear<4, float>(src_ptr, w_ptr, src_width, src_height, p_width, p_height); break;
|
||||
case 4:
|
||||
_scale_bilinear<1, float>(src_ptr, w_ptr, src_width, src_height, p_width, p_height);
|
||||
break;
|
||||
case 8:
|
||||
_scale_bilinear<2, float>(src_ptr, w_ptr, src_width, src_height, p_width, p_height);
|
||||
break;
|
||||
case 12:
|
||||
_scale_bilinear<3, float>(src_ptr, w_ptr, src_width, src_height, p_width, p_height);
|
||||
break;
|
||||
case 16:
|
||||
_scale_bilinear<4, float>(src_ptr, w_ptr, src_width, src_height, p_width, p_height);
|
||||
break;
|
||||
}
|
||||
} else if (format >= FORMAT_RH && format <= FORMAT_RGBAH) {
|
||||
switch (get_format_pixel_size(format)) {
|
||||
case 2: _scale_bilinear<1, uint16_t>(src_ptr, w_ptr, src_width, src_height, p_width, p_height); break;
|
||||
case 4: _scale_bilinear<2, uint16_t>(src_ptr, w_ptr, src_width, src_height, p_width, p_height); break;
|
||||
case 6: _scale_bilinear<3, uint16_t>(src_ptr, w_ptr, src_width, src_height, p_width, p_height); break;
|
||||
case 8: _scale_bilinear<4, uint16_t>(src_ptr, w_ptr, src_width, src_height, p_width, p_height); break;
|
||||
case 2:
|
||||
_scale_bilinear<1, uint16_t>(src_ptr, w_ptr, src_width, src_height, p_width, p_height);
|
||||
break;
|
||||
case 4:
|
||||
_scale_bilinear<2, uint16_t>(src_ptr, w_ptr, src_width, src_height, p_width, p_height);
|
||||
break;
|
||||
case 6:
|
||||
_scale_bilinear<3, uint16_t>(src_ptr, w_ptr, src_width, src_height, p_width, p_height);
|
||||
break;
|
||||
case 8:
|
||||
_scale_bilinear<4, uint16_t>(src_ptr, w_ptr, src_width, src_height, p_width, p_height);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1039,24 +1168,48 @@ void Image::resize(int p_width, int p_height, Interpolation p_interpolation) {
|
|||
|
||||
if (format >= FORMAT_L8 && format <= FORMAT_RGBA8) {
|
||||
switch (get_format_pixel_size(format)) {
|
||||
case 1: _scale_cubic<1, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 2: _scale_cubic<2, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 3: _scale_cubic<3, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 4: _scale_cubic<4, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 1:
|
||||
_scale_cubic<1, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 2:
|
||||
_scale_cubic<2, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 3:
|
||||
_scale_cubic<3, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 4:
|
||||
_scale_cubic<4, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
}
|
||||
} else if (format >= FORMAT_RF && format <= FORMAT_RGBAF) {
|
||||
switch (get_format_pixel_size(format)) {
|
||||
case 4: _scale_cubic<1, float>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 8: _scale_cubic<2, float>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 12: _scale_cubic<3, float>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 16: _scale_cubic<4, float>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 4:
|
||||
_scale_cubic<1, float>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 8:
|
||||
_scale_cubic<2, float>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 12:
|
||||
_scale_cubic<3, float>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 16:
|
||||
_scale_cubic<4, float>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
}
|
||||
} else if (format >= FORMAT_RH && format <= FORMAT_RGBAH) {
|
||||
switch (get_format_pixel_size(format)) {
|
||||
case 2: _scale_cubic<1, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 4: _scale_cubic<2, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 6: _scale_cubic<3, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 8: _scale_cubic<4, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 2:
|
||||
_scale_cubic<1, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 4:
|
||||
_scale_cubic<2, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 6:
|
||||
_scale_cubic<3, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 8:
|
||||
_scale_cubic<4, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} break;
|
||||
|
@ -1064,24 +1217,48 @@ void Image::resize(int p_width, int p_height, Interpolation p_interpolation) {
|
|||
|
||||
if (format >= FORMAT_L8 && format <= FORMAT_RGBA8) {
|
||||
switch (get_format_pixel_size(format)) {
|
||||
case 1: _scale_lanczos<1, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 2: _scale_lanczos<2, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 3: _scale_lanczos<3, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 4: _scale_lanczos<4, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 1:
|
||||
_scale_lanczos<1, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 2:
|
||||
_scale_lanczos<2, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 3:
|
||||
_scale_lanczos<3, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 4:
|
||||
_scale_lanczos<4, uint8_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
}
|
||||
} else if (format >= FORMAT_RF && format <= FORMAT_RGBAF) {
|
||||
switch (get_format_pixel_size(format)) {
|
||||
case 4: _scale_lanczos<1, float>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 8: _scale_lanczos<2, float>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 12: _scale_lanczos<3, float>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 16: _scale_lanczos<4, float>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 4:
|
||||
_scale_lanczos<1, float>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 8:
|
||||
_scale_lanczos<2, float>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 12:
|
||||
_scale_lanczos<3, float>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 16:
|
||||
_scale_lanczos<4, float>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
}
|
||||
} else if (format >= FORMAT_RH && format <= FORMAT_RGBAH) {
|
||||
switch (get_format_pixel_size(format)) {
|
||||
case 2: _scale_lanczos<1, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 4: _scale_lanczos<2, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 6: _scale_lanczos<3, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 8: _scale_lanczos<4, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height); break;
|
||||
case 2:
|
||||
_scale_lanczos<1, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 4:
|
||||
_scale_lanczos<2, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 6:
|
||||
_scale_lanczos<3, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
case 8:
|
||||
_scale_lanczos<4, uint16_t>(r_ptr, w_ptr, width, height, p_width, p_height);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} break;
|
||||
|
@ -1392,23 +1569,51 @@ void Image::shrink_x2() {
|
|||
switch (format) {
|
||||
|
||||
case FORMAT_L8:
|
||||
case FORMAT_R8: _generate_po2_mipmap<uint8_t, 1, false, Image::average_4_uint8, Image::renormalize_uint8>(r.ptr(), w.ptr(), width, height); break;
|
||||
case FORMAT_LA8: _generate_po2_mipmap<uint8_t, 2, false, Image::average_4_uint8, Image::renormalize_uint8>(r.ptr(), w.ptr(), width, height); break;
|
||||
case FORMAT_RG8: _generate_po2_mipmap<uint8_t, 2, false, Image::average_4_uint8, Image::renormalize_uint8>(r.ptr(), w.ptr(), width, height); break;
|
||||
case FORMAT_RGB8: _generate_po2_mipmap<uint8_t, 3, false, Image::average_4_uint8, Image::renormalize_uint8>(r.ptr(), w.ptr(), width, height); break;
|
||||
case FORMAT_RGBA8: _generate_po2_mipmap<uint8_t, 4, false, Image::average_4_uint8, Image::renormalize_uint8>(r.ptr(), w.ptr(), width, height); break;
|
||||
case FORMAT_R8:
|
||||
_generate_po2_mipmap<uint8_t, 1, false, Image::average_4_uint8, Image::renormalize_uint8>(r.ptr(), w.ptr(), width, height);
|
||||
break;
|
||||
case FORMAT_LA8:
|
||||
_generate_po2_mipmap<uint8_t, 2, false, Image::average_4_uint8, Image::renormalize_uint8>(r.ptr(), w.ptr(), width, height);
|
||||
break;
|
||||
case FORMAT_RG8:
|
||||
_generate_po2_mipmap<uint8_t, 2, false, Image::average_4_uint8, Image::renormalize_uint8>(r.ptr(), w.ptr(), width, height);
|
||||
break;
|
||||
case FORMAT_RGB8:
|
||||
_generate_po2_mipmap<uint8_t, 3, false, Image::average_4_uint8, Image::renormalize_uint8>(r.ptr(), w.ptr(), width, height);
|
||||
break;
|
||||
case FORMAT_RGBA8:
|
||||
_generate_po2_mipmap<uint8_t, 4, false, Image::average_4_uint8, Image::renormalize_uint8>(r.ptr(), w.ptr(), width, height);
|
||||
break;
|
||||
|
||||
case FORMAT_RF: _generate_po2_mipmap<float, 1, false, Image::average_4_float, Image::renormalize_float>(reinterpret_cast<const float *>(r.ptr()), reinterpret_cast<float *>(w.ptr()), width, height); break;
|
||||
case FORMAT_RGF: _generate_po2_mipmap<float, 2, false, Image::average_4_float, Image::renormalize_float>(reinterpret_cast<const float *>(r.ptr()), reinterpret_cast<float *>(w.ptr()), width, height); break;
|
||||
case FORMAT_RGBF: _generate_po2_mipmap<float, 3, false, Image::average_4_float, Image::renormalize_float>(reinterpret_cast<const float *>(r.ptr()), reinterpret_cast<float *>(w.ptr()), width, height); break;
|
||||
case FORMAT_RGBAF: _generate_po2_mipmap<float, 4, false, Image::average_4_float, Image::renormalize_float>(reinterpret_cast<const float *>(r.ptr()), reinterpret_cast<float *>(w.ptr()), width, height); break;
|
||||
case FORMAT_RF:
|
||||
_generate_po2_mipmap<float, 1, false, Image::average_4_float, Image::renormalize_float>(reinterpret_cast<const float *>(r.ptr()), reinterpret_cast<float *>(w.ptr()), width, height);
|
||||
break;
|
||||
case FORMAT_RGF:
|
||||
_generate_po2_mipmap<float, 2, false, Image::average_4_float, Image::renormalize_float>(reinterpret_cast<const float *>(r.ptr()), reinterpret_cast<float *>(w.ptr()), width, height);
|
||||
break;
|
||||
case FORMAT_RGBF:
|
||||
_generate_po2_mipmap<float, 3, false, Image::average_4_float, Image::renormalize_float>(reinterpret_cast<const float *>(r.ptr()), reinterpret_cast<float *>(w.ptr()), width, height);
|
||||
break;
|
||||
case FORMAT_RGBAF:
|
||||
_generate_po2_mipmap<float, 4, false, Image::average_4_float, Image::renormalize_float>(reinterpret_cast<const float *>(r.ptr()), reinterpret_cast<float *>(w.ptr()), width, height);
|
||||
break;
|
||||
|
||||
case FORMAT_RH: _generate_po2_mipmap<uint16_t, 1, false, Image::average_4_half, Image::renormalize_half>(reinterpret_cast<const uint16_t *>(r.ptr()), reinterpret_cast<uint16_t *>(w.ptr()), width, height); break;
|
||||
case FORMAT_RGH: _generate_po2_mipmap<uint16_t, 2, false, Image::average_4_half, Image::renormalize_half>(reinterpret_cast<const uint16_t *>(r.ptr()), reinterpret_cast<uint16_t *>(w.ptr()), width, height); break;
|
||||
case FORMAT_RGBH: _generate_po2_mipmap<uint16_t, 3, false, Image::average_4_half, Image::renormalize_half>(reinterpret_cast<const uint16_t *>(r.ptr()), reinterpret_cast<uint16_t *>(w.ptr()), width, height); break;
|
||||
case FORMAT_RGBAH: _generate_po2_mipmap<uint16_t, 4, false, Image::average_4_half, Image::renormalize_half>(reinterpret_cast<const uint16_t *>(r.ptr()), reinterpret_cast<uint16_t *>(w.ptr()), width, height); break;
|
||||
case FORMAT_RH:
|
||||
_generate_po2_mipmap<uint16_t, 1, false, Image::average_4_half, Image::renormalize_half>(reinterpret_cast<const uint16_t *>(r.ptr()), reinterpret_cast<uint16_t *>(w.ptr()), width, height);
|
||||
break;
|
||||
case FORMAT_RGH:
|
||||
_generate_po2_mipmap<uint16_t, 2, false, Image::average_4_half, Image::renormalize_half>(reinterpret_cast<const uint16_t *>(r.ptr()), reinterpret_cast<uint16_t *>(w.ptr()), width, height);
|
||||
break;
|
||||
case FORMAT_RGBH:
|
||||
_generate_po2_mipmap<uint16_t, 3, false, Image::average_4_half, Image::renormalize_half>(reinterpret_cast<const uint16_t *>(r.ptr()), reinterpret_cast<uint16_t *>(w.ptr()), width, height);
|
||||
break;
|
||||
case FORMAT_RGBAH:
|
||||
_generate_po2_mipmap<uint16_t, 4, false, Image::average_4_half, Image::renormalize_half>(reinterpret_cast<const uint16_t *>(r.ptr()), reinterpret_cast<uint16_t *>(w.ptr()), width, height);
|
||||
break;
|
||||
|
||||
case FORMAT_RGBE9995: _generate_po2_mipmap<uint32_t, 1, false, Image::average_4_rgbe9995, Image::renormalize_rgbe9995>(reinterpret_cast<const uint32_t *>(r.ptr()), reinterpret_cast<uint32_t *>(w.ptr()), width, height); break;
|
||||
case FORMAT_RGBE9995:
|
||||
_generate_po2_mipmap<uint32_t, 1, false, Image::average_4_rgbe9995, Image::renormalize_rgbe9995>(reinterpret_cast<const uint32_t *>(r.ptr()), reinterpret_cast<uint32_t *>(w.ptr()), width, height);
|
||||
break;
|
||||
default: {
|
||||
}
|
||||
}
|
||||
|
@ -1478,9 +1683,13 @@ Error Image::generate_mipmaps(bool p_renormalize) {
|
|||
switch (format) {
|
||||
|
||||
case FORMAT_L8:
|
||||
case FORMAT_R8: _generate_po2_mipmap<uint8_t, 1, false, Image::average_4_uint8, Image::renormalize_uint8>(&wp[prev_ofs], &wp[ofs], prev_w, prev_h); break;
|
||||
case FORMAT_R8:
|
||||
_generate_po2_mipmap<uint8_t, 1, false, Image::average_4_uint8, Image::renormalize_uint8>(&wp[prev_ofs], &wp[ofs], prev_w, prev_h);
|
||||
break;
|
||||
case FORMAT_LA8:
|
||||
case FORMAT_RG8: _generate_po2_mipmap<uint8_t, 2, false, Image::average_4_uint8, Image::renormalize_uint8>(&wp[prev_ofs], &wp[ofs], prev_w, prev_h); break;
|
||||
case FORMAT_RG8:
|
||||
_generate_po2_mipmap<uint8_t, 2, false, Image::average_4_uint8, Image::renormalize_uint8>(&wp[prev_ofs], &wp[ofs], prev_w, prev_h);
|
||||
break;
|
||||
case FORMAT_RGB8:
|
||||
if (p_renormalize)
|
||||
_generate_po2_mipmap<uint8_t, 3, true, Image::average_4_uint8, Image::renormalize_uint8>(&wp[prev_ofs], &wp[ofs], prev_w, prev_h);
|
||||
|
@ -1707,12 +1916,24 @@ void Image::create(const char **p_xpm) {
|
|||
break;
|
||||
|
||||
switch (i) {
|
||||
case 0: col_r = v << 4; break;
|
||||
case 1: col_r |= v; break;
|
||||
case 2: col_g = v << 4; break;
|
||||
case 3: col_g |= v; break;
|
||||
case 4: col_b = v << 4; break;
|
||||
case 5: col_b |= v; break;
|
||||
case 0:
|
||||
col_r = v << 4;
|
||||
break;
|
||||
case 1:
|
||||
col_r |= v;
|
||||
break;
|
||||
case 2:
|
||||
col_g = v << 4;
|
||||
break;
|
||||
case 3:
|
||||
col_g |= v;
|
||||
break;
|
||||
case 4:
|
||||
col_b = v << 4;
|
||||
break;
|
||||
case 5:
|
||||
col_b |= v;
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -2702,12 +2923,24 @@ Image::DetectChannels Image::get_detected_channels() {
|
|||
|
||||
void Image::optimize_channels() {
|
||||
switch (get_detected_channels()) {
|
||||
case DETECTED_L: convert(FORMAT_L8); break;
|
||||
case DETECTED_LA: convert(FORMAT_LA8); break;
|
||||
case DETECTED_R: convert(FORMAT_R8); break;
|
||||
case DETECTED_RG: convert(FORMAT_RG8); break;
|
||||
case DETECTED_RGB: convert(FORMAT_RGB8); break;
|
||||
case DETECTED_RGBA: convert(FORMAT_RGBA8); break;
|
||||
case DETECTED_L:
|
||||
convert(FORMAT_L8);
|
||||
break;
|
||||
case DETECTED_LA:
|
||||
convert(FORMAT_LA8);
|
||||
break;
|
||||
case DETECTED_R:
|
||||
convert(FORMAT_R8);
|
||||
break;
|
||||
case DETECTED_RG:
|
||||
convert(FORMAT_RG8);
|
||||
break;
|
||||
case DETECTED_RGB:
|
||||
convert(FORMAT_RGB8);
|
||||
break;
|
||||
case DETECTED_RGBA:
|
||||
convert(FORMAT_RGBA8);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -67,10 +67,14 @@ String JSON::_print_var(const Variant &p_var, const String &p_indent, int p_cur_
|
|||
|
||||
switch (p_var.get_type()) {
|
||||
|
||||
case Variant::NIL: return "null";
|
||||
case Variant::BOOL: return p_var.operator bool() ? "true" : "false";
|
||||
case Variant::INT: return itos(p_var);
|
||||
case Variant::REAL: return rtos(p_var);
|
||||
case Variant::NIL:
|
||||
return "null";
|
||||
case Variant::BOOL:
|
||||
return p_var.operator bool() ? "true" : "false";
|
||||
case Variant::INT:
|
||||
return itos(p_var);
|
||||
case Variant::REAL:
|
||||
return rtos(p_var);
|
||||
case Variant::POOL_INT_ARRAY:
|
||||
case Variant::POOL_REAL_ARRAY:
|
||||
case Variant::POOL_STRING_ARRAY:
|
||||
|
@ -114,7 +118,8 @@ String JSON::_print_var(const Variant &p_var, const String &p_indent, int p_cur_
|
|||
s += end_statement + _make_indent(p_indent, p_cur_indent) + "}";
|
||||
return s;
|
||||
};
|
||||
default: return "\"" + String(p_var).json_escape() + "\"";
|
||||
default:
|
||||
return "\"" + String(p_var).json_escape() + "\"";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -197,11 +202,21 @@ Error JSON::_get_token(const CharType *p_str, int &index, int p_len, Token &r_to
|
|||
|
||||
switch (next) {
|
||||
|
||||
case 'b': res = 8; break;
|
||||
case 't': res = 9; break;
|
||||
case 'n': res = 10; break;
|
||||
case 'f': res = 12; break;
|
||||
case 'r': res = 13; break;
|
||||
case 'b':
|
||||
res = 8;
|
||||
break;
|
||||
case 't':
|
||||
res = 9;
|
||||
break;
|
||||
case 'n':
|
||||
res = 10;
|
||||
break;
|
||||
case 'f':
|
||||
res = 12;
|
||||
break;
|
||||
case 'r':
|
||||
res = 13;
|
||||
break;
|
||||
case 'u': {
|
||||
//hexnumbarh - oct is deprecated
|
||||
|
||||
|
|
|
@ -67,11 +67,21 @@ void Logger::log_error(const char *p_function, const char *p_file, int p_line, c
|
|||
|
||||
const char *err_type = "**ERROR**";
|
||||
switch (p_type) {
|
||||
case ERR_ERROR: err_type = "**ERROR**"; break;
|
||||
case ERR_WARNING: err_type = "**WARNING**"; break;
|
||||
case ERR_SCRIPT: err_type = "**SCRIPT ERROR**"; break;
|
||||
case ERR_SHADER: err_type = "**SHADER ERROR**"; break;
|
||||
default: ERR_PRINT("Unknown error type"); break;
|
||||
case ERR_ERROR:
|
||||
err_type = "**ERROR**";
|
||||
break;
|
||||
case ERR_WARNING:
|
||||
err_type = "**WARNING**";
|
||||
break;
|
||||
case ERR_SCRIPT:
|
||||
err_type = "**SCRIPT ERROR**";
|
||||
break;
|
||||
case ERR_SHADER:
|
||||
err_type = "**SHADER ERROR**";
|
||||
break;
|
||||
default:
|
||||
ERR_PRINT("Unknown error type");
|
||||
break;
|
||||
}
|
||||
|
||||
const char *err_details;
|
||||
|
|
|
@ -181,14 +181,22 @@ Vector3 AABB::get_support(const Vector3 &p_normal) const {
|
|||
Vector3 AABB::get_endpoint(int p_point) const {
|
||||
|
||||
switch (p_point) {
|
||||
case 0: return Vector3(position.x, position.y, position.z);
|
||||
case 1: return Vector3(position.x, position.y, position.z + size.z);
|
||||
case 2: return Vector3(position.x, position.y + size.y, position.z);
|
||||
case 3: return Vector3(position.x, position.y + size.y, position.z + size.z);
|
||||
case 4: return Vector3(position.x + size.x, position.y, position.z);
|
||||
case 5: return Vector3(position.x + size.x, position.y, position.z + size.z);
|
||||
case 6: return Vector3(position.x + size.x, position.y + size.y, position.z);
|
||||
case 7: return Vector3(position.x + size.x, position.y + size.y, position.z + size.z);
|
||||
case 0:
|
||||
return Vector3(position.x, position.y, position.z);
|
||||
case 1:
|
||||
return Vector3(position.x, position.y, position.z + size.z);
|
||||
case 2:
|
||||
return Vector3(position.x, position.y + size.y, position.z);
|
||||
case 3:
|
||||
return Vector3(position.x, position.y + size.y, position.z + size.z);
|
||||
case 4:
|
||||
return Vector3(position.x + size.x, position.y, position.z);
|
||||
case 5:
|
||||
return Vector3(position.x + size.x, position.y, position.z + size.z);
|
||||
case 6:
|
||||
return Vector3(position.x + size.x, position.y + size.y, position.z);
|
||||
case 7:
|
||||
return Vector3(position.x + size.x, position.y + size.y, position.z + size.z);
|
||||
};
|
||||
|
||||
ERR_FAIL_V(Vector3());
|
||||
|
|
|
@ -1032,11 +1032,21 @@ Error Expression::_get_token(Token &r_token) {
|
|||
|
||||
switch (next) {
|
||||
|
||||
case 'b': res = 8; break;
|
||||
case 't': res = 9; break;
|
||||
case 'n': res = 10; break;
|
||||
case 'f': res = 12; break;
|
||||
case 'r': res = 13; break;
|
||||
case 'b':
|
||||
res = 8;
|
||||
break;
|
||||
case 't':
|
||||
res = 9;
|
||||
break;
|
||||
case 'n':
|
||||
res = 10;
|
||||
break;
|
||||
case 'f':
|
||||
res = 12;
|
||||
break;
|
||||
case 'r':
|
||||
res = 13;
|
||||
break;
|
||||
case 'u': {
|
||||
//hexnumbarh - oct is deprecated
|
||||
|
||||
|
@ -1718,27 +1728,69 @@ Expression::ENode *Expression::_parse_expression() {
|
|||
Variant::Operator op = Variant::OP_MAX;
|
||||
|
||||
switch (tk.type) {
|
||||
case TK_OP_IN: op = Variant::OP_IN; break;
|
||||
case TK_OP_EQUAL: op = Variant::OP_EQUAL; break;
|
||||
case TK_OP_NOT_EQUAL: op = Variant::OP_NOT_EQUAL; break;
|
||||
case TK_OP_LESS: op = Variant::OP_LESS; break;
|
||||
case TK_OP_LESS_EQUAL: op = Variant::OP_LESS_EQUAL; break;
|
||||
case TK_OP_GREATER: op = Variant::OP_GREATER; break;
|
||||
case TK_OP_GREATER_EQUAL: op = Variant::OP_GREATER_EQUAL; break;
|
||||
case TK_OP_AND: op = Variant::OP_AND; break;
|
||||
case TK_OP_OR: op = Variant::OP_OR; break;
|
||||
case TK_OP_NOT: op = Variant::OP_NOT; break;
|
||||
case TK_OP_ADD: op = Variant::OP_ADD; break;
|
||||
case TK_OP_SUB: op = Variant::OP_SUBTRACT; break;
|
||||
case TK_OP_MUL: op = Variant::OP_MULTIPLY; break;
|
||||
case TK_OP_DIV: op = Variant::OP_DIVIDE; break;
|
||||
case TK_OP_MOD: op = Variant::OP_MODULE; break;
|
||||
case TK_OP_SHIFT_LEFT: op = Variant::OP_SHIFT_LEFT; break;
|
||||
case TK_OP_SHIFT_RIGHT: op = Variant::OP_SHIFT_RIGHT; break;
|
||||
case TK_OP_BIT_AND: op = Variant::OP_BIT_AND; break;
|
||||
case TK_OP_BIT_OR: op = Variant::OP_BIT_OR; break;
|
||||
case TK_OP_BIT_XOR: op = Variant::OP_BIT_XOR; break;
|
||||
case TK_OP_BIT_INVERT: op = Variant::OP_BIT_NEGATE; break;
|
||||
case TK_OP_IN:
|
||||
op = Variant::OP_IN;
|
||||
break;
|
||||
case TK_OP_EQUAL:
|
||||
op = Variant::OP_EQUAL;
|
||||
break;
|
||||
case TK_OP_NOT_EQUAL:
|
||||
op = Variant::OP_NOT_EQUAL;
|
||||
break;
|
||||
case TK_OP_LESS:
|
||||
op = Variant::OP_LESS;
|
||||
break;
|
||||
case TK_OP_LESS_EQUAL:
|
||||
op = Variant::OP_LESS_EQUAL;
|
||||
break;
|
||||
case TK_OP_GREATER:
|
||||
op = Variant::OP_GREATER;
|
||||
break;
|
||||
case TK_OP_GREATER_EQUAL:
|
||||
op = Variant::OP_GREATER_EQUAL;
|
||||
break;
|
||||
case TK_OP_AND:
|
||||
op = Variant::OP_AND;
|
||||
break;
|
||||
case TK_OP_OR:
|
||||
op = Variant::OP_OR;
|
||||
break;
|
||||
case TK_OP_NOT:
|
||||
op = Variant::OP_NOT;
|
||||
break;
|
||||
case TK_OP_ADD:
|
||||
op = Variant::OP_ADD;
|
||||
break;
|
||||
case TK_OP_SUB:
|
||||
op = Variant::OP_SUBTRACT;
|
||||
break;
|
||||
case TK_OP_MUL:
|
||||
op = Variant::OP_MULTIPLY;
|
||||
break;
|
||||
case TK_OP_DIV:
|
||||
op = Variant::OP_DIVIDE;
|
||||
break;
|
||||
case TK_OP_MOD:
|
||||
op = Variant::OP_MODULE;
|
||||
break;
|
||||
case TK_OP_SHIFT_LEFT:
|
||||
op = Variant::OP_SHIFT_LEFT;
|
||||
break;
|
||||
case TK_OP_SHIFT_RIGHT:
|
||||
op = Variant::OP_SHIFT_RIGHT;
|
||||
break;
|
||||
case TK_OP_BIT_AND:
|
||||
op = Variant::OP_BIT_AND;
|
||||
break;
|
||||
case TK_OP_BIT_OR:
|
||||
op = Variant::OP_BIT_OR;
|
||||
break;
|
||||
case TK_OP_BIT_XOR:
|
||||
op = Variant::OP_BIT_XOR;
|
||||
break;
|
||||
case TK_OP_BIT_INVERT:
|
||||
op = Variant::OP_BIT_NEGATE;
|
||||
break;
|
||||
default: {
|
||||
};
|
||||
}
|
||||
|
@ -1787,36 +1839,74 @@ Expression::ENode *Expression::_parse_expression() {
|
|||
unary = true;
|
||||
break;
|
||||
|
||||
case Variant::OP_MULTIPLY: priority = 2; break;
|
||||
case Variant::OP_DIVIDE: priority = 2; break;
|
||||
case Variant::OP_MODULE: priority = 2; break;
|
||||
case Variant::OP_MULTIPLY:
|
||||
priority = 2;
|
||||
break;
|
||||
case Variant::OP_DIVIDE:
|
||||
priority = 2;
|
||||
break;
|
||||
case Variant::OP_MODULE:
|
||||
priority = 2;
|
||||
break;
|
||||
|
||||
case Variant::OP_ADD: priority = 3; break;
|
||||
case Variant::OP_SUBTRACT: priority = 3; break;
|
||||
case Variant::OP_ADD:
|
||||
priority = 3;
|
||||
break;
|
||||
case Variant::OP_SUBTRACT:
|
||||
priority = 3;
|
||||
break;
|
||||
|
||||
case Variant::OP_SHIFT_LEFT: priority = 4; break;
|
||||
case Variant::OP_SHIFT_RIGHT: priority = 4; break;
|
||||
case Variant::OP_SHIFT_LEFT:
|
||||
priority = 4;
|
||||
break;
|
||||
case Variant::OP_SHIFT_RIGHT:
|
||||
priority = 4;
|
||||
break;
|
||||
|
||||
case Variant::OP_BIT_AND: priority = 5; break;
|
||||
case Variant::OP_BIT_XOR: priority = 6; break;
|
||||
case Variant::OP_BIT_OR: priority = 7; break;
|
||||
case Variant::OP_BIT_AND:
|
||||
priority = 5;
|
||||
break;
|
||||
case Variant::OP_BIT_XOR:
|
||||
priority = 6;
|
||||
break;
|
||||
case Variant::OP_BIT_OR:
|
||||
priority = 7;
|
||||
break;
|
||||
|
||||
case Variant::OP_LESS: priority = 8; break;
|
||||
case Variant::OP_LESS_EQUAL: priority = 8; break;
|
||||
case Variant::OP_GREATER: priority = 8; break;
|
||||
case Variant::OP_GREATER_EQUAL: priority = 8; break;
|
||||
case Variant::OP_LESS:
|
||||
priority = 8;
|
||||
break;
|
||||
case Variant::OP_LESS_EQUAL:
|
||||
priority = 8;
|
||||
break;
|
||||
case Variant::OP_GREATER:
|
||||
priority = 8;
|
||||
break;
|
||||
case Variant::OP_GREATER_EQUAL:
|
||||
priority = 8;
|
||||
break;
|
||||
|
||||
case Variant::OP_EQUAL: priority = 8; break;
|
||||
case Variant::OP_NOT_EQUAL: priority = 8; break;
|
||||
case Variant::OP_EQUAL:
|
||||
priority = 8;
|
||||
break;
|
||||
case Variant::OP_NOT_EQUAL:
|
||||
priority = 8;
|
||||
break;
|
||||
|
||||
case Variant::OP_IN: priority = 10; break;
|
||||
case Variant::OP_IN:
|
||||
priority = 10;
|
||||
break;
|
||||
|
||||
case Variant::OP_NOT:
|
||||
priority = 11;
|
||||
unary = true;
|
||||
break;
|
||||
case Variant::OP_AND: priority = 12; break;
|
||||
case Variant::OP_OR: priority = 13; break;
|
||||
case Variant::OP_AND:
|
||||
priority = 12;
|
||||
break;
|
||||
case Variant::OP_OR:
|
||||
priority = 13;
|
||||
break;
|
||||
|
||||
default: {
|
||||
_set_error("Parser bug, invalid operator in expression: " + itos(expression[i].op));
|
||||
|
|
|
@ -453,7 +453,8 @@ static inline void _mark_outside(uint8_t ***p_cell_status, int x, int y, int z,
|
|||
next_z--;
|
||||
prev = _CELL_PREV_Z_POS;
|
||||
} break;
|
||||
default: ERR_FAIL();
|
||||
default:
|
||||
ERR_FAIL();
|
||||
}
|
||||
|
||||
if (next_x < 0 || next_x >= len_x)
|
||||
|
@ -1100,10 +1101,18 @@ Vector<Vector<Point2>> Geometry::_polypaths_do_operation(PolyBooleanOperation p_
|
|||
ClipType op = ctUnion;
|
||||
|
||||
switch (p_op) {
|
||||
case OPERATION_UNION: op = ctUnion; break;
|
||||
case OPERATION_DIFFERENCE: op = ctDifference; break;
|
||||
case OPERATION_INTERSECTION: op = ctIntersection; break;
|
||||
case OPERATION_XOR: op = ctXor; break;
|
||||
case OPERATION_UNION:
|
||||
op = ctUnion;
|
||||
break;
|
||||
case OPERATION_DIFFERENCE:
|
||||
op = ctDifference;
|
||||
break;
|
||||
case OPERATION_INTERSECTION:
|
||||
op = ctIntersection;
|
||||
break;
|
||||
case OPERATION_XOR:
|
||||
op = ctXor;
|
||||
break;
|
||||
}
|
||||
Path path_a, path_b;
|
||||
|
||||
|
@ -1152,19 +1161,35 @@ Vector<Vector<Point2>> Geometry::_polypath_offset(const Vector<Point2> &p_polypa
|
|||
JoinType jt = jtSquare;
|
||||
|
||||
switch (p_join_type) {
|
||||
case JOIN_SQUARE: jt = jtSquare; break;
|
||||
case JOIN_ROUND: jt = jtRound; break;
|
||||
case JOIN_MITER: jt = jtMiter; break;
|
||||
case JOIN_SQUARE:
|
||||
jt = jtSquare;
|
||||
break;
|
||||
case JOIN_ROUND:
|
||||
jt = jtRound;
|
||||
break;
|
||||
case JOIN_MITER:
|
||||
jt = jtMiter;
|
||||
break;
|
||||
}
|
||||
|
||||
EndType et = etClosedPolygon;
|
||||
|
||||
switch (p_end_type) {
|
||||
case END_POLYGON: et = etClosedPolygon; break;
|
||||
case END_JOINED: et = etClosedLine; break;
|
||||
case END_BUTT: et = etOpenButt; break;
|
||||
case END_SQUARE: et = etOpenSquare; break;
|
||||
case END_ROUND: et = etOpenRound; break;
|
||||
case END_POLYGON:
|
||||
et = etClosedPolygon;
|
||||
break;
|
||||
case END_JOINED:
|
||||
et = etClosedLine;
|
||||
break;
|
||||
case END_BUTT:
|
||||
et = etOpenButt;
|
||||
break;
|
||||
case END_SQUARE:
|
||||
et = etOpenSquare;
|
||||
break;
|
||||
case END_ROUND:
|
||||
et = etOpenRound;
|
||||
break;
|
||||
}
|
||||
ClipperOffset co(2.0, 0.25 * SCALE_FACTOR); // Defaults from ClipperOffset.
|
||||
Path path;
|
||||
|
|
|
@ -39,18 +39,24 @@ String DirAccess::_get_root_path() const {
|
|||
|
||||
switch (_access_type) {
|
||||
|
||||
case ACCESS_RESOURCES: return ProjectSettings::get_singleton()->get_resource_path();
|
||||
case ACCESS_USERDATA: return OS::get_singleton()->get_user_data_dir();
|
||||
default: return "";
|
||||
case ACCESS_RESOURCES:
|
||||
return ProjectSettings::get_singleton()->get_resource_path();
|
||||
case ACCESS_USERDATA:
|
||||
return OS::get_singleton()->get_user_data_dir();
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
String DirAccess::_get_root_string() const {
|
||||
|
||||
switch (_access_type) {
|
||||
|
||||
case ACCESS_RESOURCES: return "res://";
|
||||
case ACCESS_USERDATA: return "user://";
|
||||
default: return "";
|
||||
case ACCESS_RESOURCES:
|
||||
return "res://";
|
||||
case ACCESS_USERDATA:
|
||||
return "user://";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -224,7 +230,8 @@ String DirAccess::fix_path(String p_path) const {
|
|||
|
||||
return p_path;
|
||||
} break;
|
||||
case ACCESS_MAX: break; // Can't happen, but silences warning
|
||||
case ACCESS_MAX:
|
||||
break; // Can't happen, but silences warning
|
||||
}
|
||||
|
||||
return p_path;
|
||||
|
|
|
@ -163,7 +163,8 @@ String FileAccess::fix_path(const String &p_path) const {
|
|||
|
||||
return r_path;
|
||||
} break;
|
||||
case ACCESS_MAX: break; // Can't happen, but silences warning
|
||||
case ACCESS_MAX:
|
||||
break; // Can't happen, but silences warning
|
||||
}
|
||||
|
||||
return r_path;
|
||||
|
|
|
@ -4285,9 +4285,14 @@ String String::sprintf(const Array &values, bool *error) const {
|
|||
int base = 16;
|
||||
bool capitalize = false;
|
||||
switch (c) {
|
||||
case 'd': base = 10; break;
|
||||
case 'o': base = 8; break;
|
||||
case 'x': break;
|
||||
case 'd':
|
||||
base = 10;
|
||||
break;
|
||||
case 'o':
|
||||
base = 8;
|
||||
break;
|
||||
case 'x':
|
||||
break;
|
||||
case 'X':
|
||||
base = 16;
|
||||
capitalize = true;
|
||||
|
|
271
core/variant.cpp
271
core/variant.cpp
|
@ -1066,17 +1066,38 @@ void Variant::reference(const Variant &p_variant) {
|
|||
|
||||
void Variant::zero() {
|
||||
switch (type) {
|
||||
case NIL: break;
|
||||
case BOOL: this->_data._bool = false; break;
|
||||
case INT: this->_data._int = 0; break;
|
||||
case REAL: this->_data._real = 0; break;
|
||||
case VECTOR2: *reinterpret_cast<Vector2 *>(this->_data._mem) = Vector2(); break;
|
||||
case RECT2: *reinterpret_cast<Rect2 *>(this->_data._mem) = Rect2(); break;
|
||||
case VECTOR3: *reinterpret_cast<Vector3 *>(this->_data._mem) = Vector3(); break;
|
||||
case PLANE: *reinterpret_cast<Plane *>(this->_data._mem) = Plane(); break;
|
||||
case QUAT: *reinterpret_cast<Quat *>(this->_data._mem) = Quat(); break;
|
||||
case COLOR: *reinterpret_cast<Color *>(this->_data._mem) = Color(); break;
|
||||
default: this->clear(); break;
|
||||
case NIL:
|
||||
break;
|
||||
case BOOL:
|
||||
this->_data._bool = false;
|
||||
break;
|
||||
case INT:
|
||||
this->_data._int = 0;
|
||||
break;
|
||||
case REAL:
|
||||
this->_data._real = 0;
|
||||
break;
|
||||
case VECTOR2:
|
||||
*reinterpret_cast<Vector2 *>(this->_data._mem) = Vector2();
|
||||
break;
|
||||
case RECT2:
|
||||
*reinterpret_cast<Rect2 *>(this->_data._mem) = Rect2();
|
||||
break;
|
||||
case VECTOR3:
|
||||
*reinterpret_cast<Vector3 *>(this->_data._mem) = Vector3();
|
||||
break;
|
||||
case PLANE:
|
||||
*reinterpret_cast<Plane *>(this->_data._mem) = Plane();
|
||||
break;
|
||||
case QUAT:
|
||||
*reinterpret_cast<Quat *>(this->_data._mem) = Quat();
|
||||
break;
|
||||
case COLOR:
|
||||
*reinterpret_cast<Color *>(this->_data._mem) = Color();
|
||||
break;
|
||||
default:
|
||||
this->clear();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1185,11 +1206,16 @@ Variant::operator signed int() const {
|
|||
|
||||
switch (type) {
|
||||
|
||||
case NIL: return 0;
|
||||
case BOOL: return _data._bool ? 1 : 0;
|
||||
case INT: return _data._int;
|
||||
case REAL: return _data._real;
|
||||
case STRING: return operator String().to_int();
|
||||
case NIL:
|
||||
return 0;
|
||||
case BOOL:
|
||||
return _data._bool ? 1 : 0;
|
||||
case INT:
|
||||
return _data._int;
|
||||
case REAL:
|
||||
return _data._real;
|
||||
case STRING:
|
||||
return operator String().to_int();
|
||||
default: {
|
||||
|
||||
return 0;
|
||||
|
@ -1200,11 +1226,16 @@ Variant::operator unsigned int() const {
|
|||
|
||||
switch (type) {
|
||||
|
||||
case NIL: return 0;
|
||||
case BOOL: return _data._bool ? 1 : 0;
|
||||
case INT: return _data._int;
|
||||
case REAL: return _data._real;
|
||||
case STRING: return operator String().to_int();
|
||||
case NIL:
|
||||
return 0;
|
||||
case BOOL:
|
||||
return _data._bool ? 1 : 0;
|
||||
case INT:
|
||||
return _data._int;
|
||||
case REAL:
|
||||
return _data._real;
|
||||
case STRING:
|
||||
return operator String().to_int();
|
||||
default: {
|
||||
|
||||
return 0;
|
||||
|
@ -1216,11 +1247,16 @@ Variant::operator int64_t() const {
|
|||
|
||||
switch (type) {
|
||||
|
||||
case NIL: return 0;
|
||||
case BOOL: return _data._bool ? 1 : 0;
|
||||
case INT: return _data._int;
|
||||
case REAL: return _data._real;
|
||||
case STRING: return operator String().to_int64();
|
||||
case NIL:
|
||||
return 0;
|
||||
case BOOL:
|
||||
return _data._bool ? 1 : 0;
|
||||
case INT:
|
||||
return _data._int;
|
||||
case REAL:
|
||||
return _data._real;
|
||||
case STRING:
|
||||
return operator String().to_int64();
|
||||
default: {
|
||||
|
||||
return 0;
|
||||
|
@ -1252,11 +1288,16 @@ Variant::operator uint64_t() const {
|
|||
|
||||
switch (type) {
|
||||
|
||||
case NIL: return 0;
|
||||
case BOOL: return _data._bool ? 1 : 0;
|
||||
case INT: return _data._int;
|
||||
case REAL: return _data._real;
|
||||
case STRING: return operator String().to_int();
|
||||
case NIL:
|
||||
return 0;
|
||||
case BOOL:
|
||||
return _data._bool ? 1 : 0;
|
||||
case INT:
|
||||
return _data._int;
|
||||
case REAL:
|
||||
return _data._real;
|
||||
case STRING:
|
||||
return operator String().to_int();
|
||||
default: {
|
||||
|
||||
return 0;
|
||||
|
@ -1269,11 +1310,16 @@ Variant::operator signed long() const {
|
|||
|
||||
switch (type) {
|
||||
|
||||
case NIL: return 0;
|
||||
case BOOL: return _data._bool ? 1 : 0;
|
||||
case INT: return _data._int;
|
||||
case REAL: return _data._real;
|
||||
case STRING: return operator String().to_int();
|
||||
case NIL:
|
||||
return 0;
|
||||
case BOOL:
|
||||
return _data._bool ? 1 : 0;
|
||||
case INT:
|
||||
return _data._int;
|
||||
case REAL:
|
||||
return _data._real;
|
||||
case STRING:
|
||||
return operator String().to_int();
|
||||
default: {
|
||||
|
||||
return 0;
|
||||
|
@ -1287,11 +1333,16 @@ Variant::operator unsigned long() const {
|
|||
|
||||
switch (type) {
|
||||
|
||||
case NIL: return 0;
|
||||
case BOOL: return _data._bool ? 1 : 0;
|
||||
case INT: return _data._int;
|
||||
case REAL: return _data._real;
|
||||
case STRING: return operator String().to_int();
|
||||
case NIL:
|
||||
return 0;
|
||||
case BOOL:
|
||||
return _data._bool ? 1 : 0;
|
||||
case INT:
|
||||
return _data._int;
|
||||
case REAL:
|
||||
return _data._real;
|
||||
case STRING:
|
||||
return operator String().to_int();
|
||||
default: {
|
||||
|
||||
return 0;
|
||||
|
@ -1306,11 +1357,16 @@ Variant::operator signed short() const {
|
|||
|
||||
switch (type) {
|
||||
|
||||
case NIL: return 0;
|
||||
case BOOL: return _data._bool ? 1 : 0;
|
||||
case INT: return _data._int;
|
||||
case REAL: return _data._real;
|
||||
case STRING: return operator String().to_int();
|
||||
case NIL:
|
||||
return 0;
|
||||
case BOOL:
|
||||
return _data._bool ? 1 : 0;
|
||||
case INT:
|
||||
return _data._int;
|
||||
case REAL:
|
||||
return _data._real;
|
||||
case STRING:
|
||||
return operator String().to_int();
|
||||
default: {
|
||||
|
||||
return 0;
|
||||
|
@ -1321,11 +1377,16 @@ Variant::operator unsigned short() const {
|
|||
|
||||
switch (type) {
|
||||
|
||||
case NIL: return 0;
|
||||
case BOOL: return _data._bool ? 1 : 0;
|
||||
case INT: return _data._int;
|
||||
case REAL: return _data._real;
|
||||
case STRING: return operator String().to_int();
|
||||
case NIL:
|
||||
return 0;
|
||||
case BOOL:
|
||||
return _data._bool ? 1 : 0;
|
||||
case INT:
|
||||
return _data._int;
|
||||
case REAL:
|
||||
return _data._real;
|
||||
case STRING:
|
||||
return operator String().to_int();
|
||||
default: {
|
||||
|
||||
return 0;
|
||||
|
@ -1336,11 +1397,16 @@ Variant::operator signed char() const {
|
|||
|
||||
switch (type) {
|
||||
|
||||
case NIL: return 0;
|
||||
case BOOL: return _data._bool ? 1 : 0;
|
||||
case INT: return _data._int;
|
||||
case REAL: return _data._real;
|
||||
case STRING: return operator String().to_int();
|
||||
case NIL:
|
||||
return 0;
|
||||
case BOOL:
|
||||
return _data._bool ? 1 : 0;
|
||||
case INT:
|
||||
return _data._int;
|
||||
case REAL:
|
||||
return _data._real;
|
||||
case STRING:
|
||||
return operator String().to_int();
|
||||
default: {
|
||||
|
||||
return 0;
|
||||
|
@ -1351,11 +1417,16 @@ Variant::operator unsigned char() const {
|
|||
|
||||
switch (type) {
|
||||
|
||||
case NIL: return 0;
|
||||
case BOOL: return _data._bool ? 1 : 0;
|
||||
case INT: return _data._int;
|
||||
case REAL: return _data._real;
|
||||
case STRING: return operator String().to_int();
|
||||
case NIL:
|
||||
return 0;
|
||||
case BOOL:
|
||||
return _data._bool ? 1 : 0;
|
||||
case INT:
|
||||
return _data._int;
|
||||
case REAL:
|
||||
return _data._real;
|
||||
case STRING:
|
||||
return operator String().to_int();
|
||||
default: {
|
||||
|
||||
return 0;
|
||||
|
@ -1372,11 +1443,16 @@ Variant::operator float() const {
|
|||
|
||||
switch (type) {
|
||||
|
||||
case NIL: return 0;
|
||||
case BOOL: return _data._bool ? 1.0 : 0.0;
|
||||
case INT: return (float)_data._int;
|
||||
case REAL: return _data._real;
|
||||
case STRING: return operator String().to_double();
|
||||
case NIL:
|
||||
return 0;
|
||||
case BOOL:
|
||||
return _data._bool ? 1.0 : 0.0;
|
||||
case INT:
|
||||
return (float)_data._int;
|
||||
case REAL:
|
||||
return _data._real;
|
||||
case STRING:
|
||||
return operator String().to_double();
|
||||
default: {
|
||||
|
||||
return 0;
|
||||
|
@ -1387,11 +1463,16 @@ Variant::operator double() const {
|
|||
|
||||
switch (type) {
|
||||
|
||||
case NIL: return 0;
|
||||
case BOOL: return _data._bool ? 1.0 : 0.0;
|
||||
case INT: return (double)_data._int;
|
||||
case REAL: return _data._real;
|
||||
case STRING: return operator String().to_double();
|
||||
case NIL:
|
||||
return 0;
|
||||
case BOOL:
|
||||
return _data._bool ? 1.0 : 0.0;
|
||||
case INT:
|
||||
return (double)_data._int;
|
||||
case REAL:
|
||||
return _data._real;
|
||||
case STRING:
|
||||
return operator String().to_double();
|
||||
default: {
|
||||
|
||||
return 0;
|
||||
|
@ -1427,24 +1508,34 @@ Variant::operator String() const {
|
|||
String Variant::stringify(List<const void *> &stack) const {
|
||||
switch (type) {
|
||||
|
||||
case NIL: return "Null";
|
||||
case BOOL: return _data._bool ? "True" : "False";
|
||||
case INT: return itos(_data._int);
|
||||
case REAL: return rtos(_data._real);
|
||||
case STRING: return *reinterpret_cast<const String *>(_data._mem);
|
||||
case VECTOR2: return "(" + operator Vector2() + ")";
|
||||
case RECT2: return "(" + operator Rect2() + ")";
|
||||
case NIL:
|
||||
return "Null";
|
||||
case BOOL:
|
||||
return _data._bool ? "True" : "False";
|
||||
case INT:
|
||||
return itos(_data._int);
|
||||
case REAL:
|
||||
return rtos(_data._real);
|
||||
case STRING:
|
||||
return *reinterpret_cast<const String *>(_data._mem);
|
||||
case VECTOR2:
|
||||
return "(" + operator Vector2() + ")";
|
||||
case RECT2:
|
||||
return "(" + operator Rect2() + ")";
|
||||
case TRANSFORM2D: {
|
||||
|
||||
Transform2D mat32 = operator Transform2D();
|
||||
return "(" + Variant(mat32.elements[0]).operator String() + ", " + Variant(mat32.elements[1]).operator String() + ", " + Variant(mat32.elements[2]).operator String() + ")";
|
||||
} break;
|
||||
case VECTOR3: return "(" + operator Vector3() + ")";
|
||||
case VECTOR3:
|
||||
return "(" + operator Vector3() + ")";
|
||||
case PLANE:
|
||||
return operator Plane();
|
||||
//case QUAT:
|
||||
case AABB: return operator ::AABB();
|
||||
case QUAT: return "(" + operator Quat() + ")";
|
||||
case AABB:
|
||||
return operator ::AABB();
|
||||
case QUAT:
|
||||
return "(" + operator Quat() + ")";
|
||||
case BASIS: {
|
||||
|
||||
Basis mat3 = operator Basis();
|
||||
|
@ -1470,9 +1561,12 @@ String Variant::stringify(List<const void *> &stack) const {
|
|||
|
||||
return mtx + ")";
|
||||
} break;
|
||||
case TRANSFORM: return operator Transform();
|
||||
case NODE_PATH: return operator NodePath();
|
||||
case COLOR: return String::num(operator Color().r) + "," + String::num(operator Color().g) + "," + String::num(operator Color().b) + "," + String::num(operator Color().a);
|
||||
case TRANSFORM:
|
||||
return operator Transform();
|
||||
case NODE_PATH:
|
||||
return operator NodePath();
|
||||
case COLOR:
|
||||
return String::num(operator Color().r) + "," + String::num(operator Color().g) + "," + String::num(operator Color().b) + "," + String::num(operator Color().a);
|
||||
case DICTIONARY: {
|
||||
|
||||
const Dictionary &d = *reinterpret_cast<const Dictionary *>(_data._mem);
|
||||
|
@ -3243,9 +3337,12 @@ bool Variant::is_shared() const {
|
|||
|
||||
switch (type) {
|
||||
|
||||
case OBJECT: return true;
|
||||
case ARRAY: return true;
|
||||
case DICTIONARY: return true;
|
||||
case OBJECT:
|
||||
return true;
|
||||
case ARRAY:
|
||||
return true;
|
||||
case DICTIONARY:
|
||||
return true;
|
||||
default: {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -803,10 +803,17 @@ struct _VariantCall {
|
|||
|
||||
switch (p_args[0]->type) {
|
||||
|
||||
case Variant::VECTOR2: r_ret = reinterpret_cast<Transform2D *>(p_self._data._ptr)->xform(p_args[0]->operator Vector2()); return;
|
||||
case Variant::RECT2: r_ret = reinterpret_cast<Transform2D *>(p_self._data._ptr)->xform(p_args[0]->operator Rect2()); return;
|
||||
case Variant::POOL_VECTOR2_ARRAY: r_ret = reinterpret_cast<Transform2D *>(p_self._data._ptr)->xform(p_args[0]->operator PoolVector2Array()); return;
|
||||
default: r_ret = Variant();
|
||||
case Variant::VECTOR2:
|
||||
r_ret = reinterpret_cast<Transform2D *>(p_self._data._ptr)->xform(p_args[0]->operator Vector2());
|
||||
return;
|
||||
case Variant::RECT2:
|
||||
r_ret = reinterpret_cast<Transform2D *>(p_self._data._ptr)->xform(p_args[0]->operator Rect2());
|
||||
return;
|
||||
case Variant::POOL_VECTOR2_ARRAY:
|
||||
r_ret = reinterpret_cast<Transform2D *>(p_self._data._ptr)->xform(p_args[0]->operator PoolVector2Array());
|
||||
return;
|
||||
default:
|
||||
r_ret = Variant();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -814,10 +821,17 @@ struct _VariantCall {
|
|||
|
||||
switch (p_args[0]->type) {
|
||||
|
||||
case Variant::VECTOR2: r_ret = reinterpret_cast<Transform2D *>(p_self._data._ptr)->xform_inv(p_args[0]->operator Vector2()); return;
|
||||
case Variant::RECT2: r_ret = reinterpret_cast<Transform2D *>(p_self._data._ptr)->xform_inv(p_args[0]->operator Rect2()); return;
|
||||
case Variant::POOL_VECTOR2_ARRAY: r_ret = reinterpret_cast<Transform2D *>(p_self._data._ptr)->xform_inv(p_args[0]->operator PoolVector2Array()); return;
|
||||
default: r_ret = Variant();
|
||||
case Variant::VECTOR2:
|
||||
r_ret = reinterpret_cast<Transform2D *>(p_self._data._ptr)->xform_inv(p_args[0]->operator Vector2());
|
||||
return;
|
||||
case Variant::RECT2:
|
||||
r_ret = reinterpret_cast<Transform2D *>(p_self._data._ptr)->xform_inv(p_args[0]->operator Rect2());
|
||||
return;
|
||||
case Variant::POOL_VECTOR2_ARRAY:
|
||||
r_ret = reinterpret_cast<Transform2D *>(p_self._data._ptr)->xform_inv(p_args[0]->operator PoolVector2Array());
|
||||
return;
|
||||
default:
|
||||
r_ret = Variant();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -825,8 +839,11 @@ struct _VariantCall {
|
|||
|
||||
switch (p_args[0]->type) {
|
||||
|
||||
case Variant::VECTOR2: r_ret = reinterpret_cast<Transform2D *>(p_self._data._ptr)->basis_xform(p_args[0]->operator Vector2()); return;
|
||||
default: r_ret = Variant();
|
||||
case Variant::VECTOR2:
|
||||
r_ret = reinterpret_cast<Transform2D *>(p_self._data._ptr)->basis_xform(p_args[0]->operator Vector2());
|
||||
return;
|
||||
default:
|
||||
r_ret = Variant();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -834,8 +851,11 @@ struct _VariantCall {
|
|||
|
||||
switch (p_args[0]->type) {
|
||||
|
||||
case Variant::VECTOR2: r_ret = reinterpret_cast<Transform2D *>(p_self._data._ptr)->basis_xform_inv(p_args[0]->operator Vector2()); return;
|
||||
default: r_ret = Variant();
|
||||
case Variant::VECTOR2:
|
||||
r_ret = reinterpret_cast<Transform2D *>(p_self._data._ptr)->basis_xform_inv(p_args[0]->operator Vector2());
|
||||
return;
|
||||
default:
|
||||
r_ret = Variant();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -883,11 +903,20 @@ struct _VariantCall {
|
|||
|
||||
switch (p_args[0]->type) {
|
||||
|
||||
case Variant::VECTOR3: r_ret = reinterpret_cast<Transform *>(p_self._data._ptr)->xform(p_args[0]->operator Vector3()); return;
|
||||
case Variant::PLANE: r_ret = reinterpret_cast<Transform *>(p_self._data._ptr)->xform(p_args[0]->operator Plane()); return;
|
||||
case Variant::AABB: r_ret = reinterpret_cast<Transform *>(p_self._data._ptr)->xform(p_args[0]->operator ::AABB()); return;
|
||||
case Variant::POOL_VECTOR3_ARRAY: r_ret = reinterpret_cast<Transform *>(p_self._data._ptr)->xform(p_args[0]->operator ::PoolVector3Array()); return;
|
||||
default: r_ret = Variant();
|
||||
case Variant::VECTOR3:
|
||||
r_ret = reinterpret_cast<Transform *>(p_self._data._ptr)->xform(p_args[0]->operator Vector3());
|
||||
return;
|
||||
case Variant::PLANE:
|
||||
r_ret = reinterpret_cast<Transform *>(p_self._data._ptr)->xform(p_args[0]->operator Plane());
|
||||
return;
|
||||
case Variant::AABB:
|
||||
r_ret = reinterpret_cast<Transform *>(p_self._data._ptr)->xform(p_args[0]->operator ::AABB());
|
||||
return;
|
||||
case Variant::POOL_VECTOR3_ARRAY:
|
||||
r_ret = reinterpret_cast<Transform *>(p_self._data._ptr)->xform(p_args[0]->operator ::PoolVector3Array());
|
||||
return;
|
||||
default:
|
||||
r_ret = Variant();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -895,11 +924,20 @@ struct _VariantCall {
|
|||
|
||||
switch (p_args[0]->type) {
|
||||
|
||||
case Variant::VECTOR3: r_ret = reinterpret_cast<Transform *>(p_self._data._ptr)->xform_inv(p_args[0]->operator Vector3()); return;
|
||||
case Variant::PLANE: r_ret = reinterpret_cast<Transform *>(p_self._data._ptr)->xform_inv(p_args[0]->operator Plane()); return;
|
||||
case Variant::AABB: r_ret = reinterpret_cast<Transform *>(p_self._data._ptr)->xform_inv(p_args[0]->operator ::AABB()); return;
|
||||
case Variant::POOL_VECTOR3_ARRAY: r_ret = reinterpret_cast<Transform *>(p_self._data._ptr)->xform_inv(p_args[0]->operator ::PoolVector3Array()); return;
|
||||
default: r_ret = Variant();
|
||||
case Variant::VECTOR3:
|
||||
r_ret = reinterpret_cast<Transform *>(p_self._data._ptr)->xform_inv(p_args[0]->operator Vector3());
|
||||
return;
|
||||
case Variant::PLANE:
|
||||
r_ret = reinterpret_cast<Transform *>(p_self._data._ptr)->xform_inv(p_args[0]->operator Plane());
|
||||
return;
|
||||
case Variant::AABB:
|
||||
r_ret = reinterpret_cast<Transform *>(p_self._data._ptr)->xform_inv(p_args[0]->operator ::AABB());
|
||||
return;
|
||||
case Variant::POOL_VECTOR3_ARRAY:
|
||||
r_ret = reinterpret_cast<Transform *>(p_self._data._ptr)->xform_inv(p_args[0]->operator ::PoolVector3Array());
|
||||
return;
|
||||
default:
|
||||
r_ret = Variant();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1184,44 +1222,64 @@ Variant Variant::construct(const Variant::Type p_type, const Variant **p_args, i
|
|||
return Variant();
|
||||
|
||||
// atomic types
|
||||
case BOOL: return Variant(false);
|
||||
case INT: return 0;
|
||||
case REAL: return 0.0f;
|
||||
case BOOL:
|
||||
return Variant(false);
|
||||
case INT:
|
||||
return 0;
|
||||
case REAL:
|
||||
return 0.0f;
|
||||
case STRING:
|
||||
return String();
|
||||
|
||||
// math types
|
||||
case VECTOR2:
|
||||
return Vector2(); // 5
|
||||
case RECT2: return Rect2();
|
||||
case VECTOR3: return Vector3();
|
||||
case TRANSFORM2D: return Transform2D();
|
||||
case PLANE: return Plane();
|
||||
case QUAT: return Quat();
|
||||
case RECT2:
|
||||
return Rect2();
|
||||
case VECTOR3:
|
||||
return Vector3();
|
||||
case TRANSFORM2D:
|
||||
return Transform2D();
|
||||
case PLANE:
|
||||
return Plane();
|
||||
case QUAT:
|
||||
return Quat();
|
||||
case AABB:
|
||||
return ::AABB(); // 10
|
||||
case BASIS: return Basis();
|
||||
case BASIS:
|
||||
return Basis();
|
||||
case TRANSFORM:
|
||||
return Transform();
|
||||
|
||||
// misc types
|
||||
case COLOR: return Color();
|
||||
case COLOR:
|
||||
return Color();
|
||||
case NODE_PATH:
|
||||
return NodePath(); // 15
|
||||
case _RID: return RID();
|
||||
case OBJECT: return (Object *)NULL;
|
||||
case DICTIONARY: return Dictionary();
|
||||
case _RID:
|
||||
return RID();
|
||||
case OBJECT:
|
||||
return (Object *)NULL;
|
||||
case DICTIONARY:
|
||||
return Dictionary();
|
||||
case ARRAY:
|
||||
return Array(); // 20
|
||||
case POOL_BYTE_ARRAY: return PoolByteArray();
|
||||
case POOL_INT_ARRAY: return PoolIntArray();
|
||||
case POOL_REAL_ARRAY: return PoolRealArray();
|
||||
case POOL_STRING_ARRAY: return PoolStringArray();
|
||||
case POOL_BYTE_ARRAY:
|
||||
return PoolByteArray();
|
||||
case POOL_INT_ARRAY:
|
||||
return PoolIntArray();
|
||||
case POOL_REAL_ARRAY:
|
||||
return PoolRealArray();
|
||||
case POOL_STRING_ARRAY:
|
||||
return PoolStringArray();
|
||||
case POOL_VECTOR2_ARRAY:
|
||||
return PoolVector2Array(); // 25
|
||||
case POOL_VECTOR3_ARRAY: return PoolVector3Array();
|
||||
case POOL_COLOR_ARRAY: return PoolColorArray();
|
||||
default: return Variant();
|
||||
case POOL_VECTOR3_ARRAY:
|
||||
return PoolVector3Array();
|
||||
case POOL_COLOR_ARRAY:
|
||||
return PoolColorArray();
|
||||
default:
|
||||
return Variant();
|
||||
}
|
||||
|
||||
} else if (p_argcount == 1 && p_args[0]->type == p_type) {
|
||||
|
@ -1249,38 +1307,54 @@ Variant Variant::construct(const Variant::Type p_type, const Variant **p_args, i
|
|||
case VECTOR2: {
|
||||
return Vector2(*p_args[0]);
|
||||
}
|
||||
case RECT2: return (Rect2(*p_args[0]));
|
||||
case VECTOR3: return (Vector3(*p_args[0]));
|
||||
case RECT2:
|
||||
return (Rect2(*p_args[0]));
|
||||
case VECTOR3:
|
||||
return (Vector3(*p_args[0]));
|
||||
case TRANSFORM2D:
|
||||
return (Transform2D(p_args[0]->operator Transform2D()));
|
||||
case PLANE: return (Plane(*p_args[0]));
|
||||
case QUAT: return (p_args[0]->operator Quat());
|
||||
case PLANE:
|
||||
return (Plane(*p_args[0]));
|
||||
case QUAT:
|
||||
return (p_args[0]->operator Quat());
|
||||
case AABB:
|
||||
return (::AABB(*p_args[0])); // 10
|
||||
case BASIS: return (Basis(p_args[0]->operator Basis()));
|
||||
case BASIS:
|
||||
return (Basis(p_args[0]->operator Basis()));
|
||||
case TRANSFORM:
|
||||
return (Transform(p_args[0]->operator Transform()));
|
||||
|
||||
// misc types
|
||||
case COLOR: return p_args[0]->type == Variant::STRING ? Color::html(*p_args[0]) : Color::hex(*p_args[0]);
|
||||
case COLOR:
|
||||
return p_args[0]->type == Variant::STRING ? Color::html(*p_args[0]) : Color::hex(*p_args[0]);
|
||||
case NODE_PATH:
|
||||
return (NodePath(p_args[0]->operator NodePath())); // 15
|
||||
case _RID: return (RID(*p_args[0]));
|
||||
case OBJECT: return ((Object *)(p_args[0]->operator Object *()));
|
||||
case DICTIONARY: return p_args[0]->operator Dictionary();
|
||||
case _RID:
|
||||
return (RID(*p_args[0]));
|
||||
case OBJECT:
|
||||
return ((Object *)(p_args[0]->operator Object *()));
|
||||
case DICTIONARY:
|
||||
return p_args[0]->operator Dictionary();
|
||||
case ARRAY:
|
||||
return p_args[0]->operator Array(); // 20
|
||||
|
||||
// arrays
|
||||
case POOL_BYTE_ARRAY: return (PoolByteArray(*p_args[0]));
|
||||
case POOL_INT_ARRAY: return (PoolIntArray(*p_args[0]));
|
||||
case POOL_REAL_ARRAY: return (PoolRealArray(*p_args[0]));
|
||||
case POOL_STRING_ARRAY: return (PoolStringArray(*p_args[0]));
|
||||
case POOL_BYTE_ARRAY:
|
||||
return (PoolByteArray(*p_args[0]));
|
||||
case POOL_INT_ARRAY:
|
||||
return (PoolIntArray(*p_args[0]));
|
||||
case POOL_REAL_ARRAY:
|
||||
return (PoolRealArray(*p_args[0]));
|
||||
case POOL_STRING_ARRAY:
|
||||
return (PoolStringArray(*p_args[0]));
|
||||
case POOL_VECTOR2_ARRAY:
|
||||
return (PoolVector2Array(*p_args[0])); // 25
|
||||
case POOL_VECTOR3_ARRAY: return (PoolVector3Array(*p_args[0]));
|
||||
case POOL_COLOR_ARRAY: return (PoolColorArray(*p_args[0]));
|
||||
default: return Variant();
|
||||
case POOL_VECTOR3_ARRAY:
|
||||
return (PoolVector3Array(*p_args[0]));
|
||||
case POOL_COLOR_ARRAY:
|
||||
return (PoolColorArray(*p_args[0]));
|
||||
default:
|
||||
return Variant();
|
||||
}
|
||||
} else if (p_argcount >= 1) {
|
||||
|
||||
|
|
|
@ -894,7 +894,8 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|||
case VECTOR2: {
|
||||
_RETURN(p_a._data._transform2d->xform(*(const Vector2 *)p_b._data._mem));
|
||||
}
|
||||
default: _RETURN_FAIL;
|
||||
default:
|
||||
_RETURN_FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -909,7 +910,8 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|||
case REAL: {
|
||||
_RETURN(*reinterpret_cast<const Quat *>(p_a._data._mem) * p_b._data._real);
|
||||
}
|
||||
default: _RETURN_FAIL;
|
||||
default:
|
||||
_RETURN_FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -921,7 +923,8 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|||
case BASIS: {
|
||||
_RETURN(*p_a._data._basis * *p_b._data._basis);
|
||||
}
|
||||
default: _RETURN_FAIL;
|
||||
default:
|
||||
_RETURN_FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -933,7 +936,8 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|||
case TRANSFORM: {
|
||||
_RETURN(*p_a._data._transform * *p_b._data._transform);
|
||||
}
|
||||
default: _RETURN_FAIL;
|
||||
default:
|
||||
_RETURN_FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -229,11 +229,21 @@ Error VariantParser::get_token(Stream *p_stream, Token &r_token, int &line, Stri
|
|||
|
||||
switch (next) {
|
||||
|
||||
case 'b': res = 8; break;
|
||||
case 't': res = 9; break;
|
||||
case 'n': res = 10; break;
|
||||
case 'f': res = 12; break;
|
||||
case 'r': res = 13; break;
|
||||
case 'b':
|
||||
res = 8;
|
||||
break;
|
||||
case 't':
|
||||
res = 9;
|
||||
break;
|
||||
case 'n':
|
||||
res = 10;
|
||||
break;
|
||||
case 'f':
|
||||
res = 12;
|
||||
break;
|
||||
case 'r':
|
||||
res = 13;
|
||||
break;
|
||||
case 'u': {
|
||||
//hexnumbarh - oct is deprecated
|
||||
|
||||
|
|
|
@ -55,10 +55,14 @@ static String _typestr(SL::DataType p_type) {
|
|||
static String _prestr(SL::DataPrecision p_pres) {
|
||||
|
||||
switch (p_pres) {
|
||||
case SL::PRECISION_LOWP: return "lowp ";
|
||||
case SL::PRECISION_MEDIUMP: return "mediump ";
|
||||
case SL::PRECISION_HIGHP: return "highp ";
|
||||
case SL::PRECISION_DEFAULT: return "";
|
||||
case SL::PRECISION_LOWP:
|
||||
return "lowp ";
|
||||
case SL::PRECISION_MEDIUMP:
|
||||
return "mediump ";
|
||||
case SL::PRECISION_HIGHP:
|
||||
return "highp ";
|
||||
case SL::PRECISION_DEFAULT:
|
||||
return "";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
@ -66,9 +70,12 @@ static String _prestr(SL::DataPrecision p_pres) {
|
|||
static String _qualstr(SL::ArgumentQualifier p_qual) {
|
||||
|
||||
switch (p_qual) {
|
||||
case SL::ARGUMENT_QUALIFIER_IN: return "in ";
|
||||
case SL::ARGUMENT_QUALIFIER_OUT: return "out ";
|
||||
case SL::ARGUMENT_QUALIFIER_INOUT: return "inout ";
|
||||
case SL::ARGUMENT_QUALIFIER_IN:
|
||||
return "in ";
|
||||
case SL::ARGUMENT_QUALIFIER_OUT:
|
||||
return "out ";
|
||||
case SL::ARGUMENT_QUALIFIER_INOUT:
|
||||
return "inout ";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
@ -96,7 +103,8 @@ static String f2sp0(float p_float) {
|
|||
static String get_constant_text(SL::DataType p_type, const Vector<SL::ConstantNode::Value> &p_values) {
|
||||
|
||||
switch (p_type) {
|
||||
case SL::TYPE_BOOL: return p_values[0].boolean ? "true" : "false";
|
||||
case SL::TYPE_BOOL:
|
||||
return p_values[0].boolean ? "true" : "false";
|
||||
case SL::TYPE_BVEC2:
|
||||
case SL::TYPE_BVEC3:
|
||||
case SL::TYPE_BVEC4: {
|
||||
|
@ -118,7 +126,8 @@ static String get_constant_text(SL::DataType p_type, const Vector<SL::ConstantNo
|
|||
}
|
||||
|
||||
// GLSL ES 2 doesn't support uints, so we just use signed ints instead...
|
||||
case SL::TYPE_UINT: return itos(p_values[0].uint);
|
||||
case SL::TYPE_UINT:
|
||||
return itos(p_values[0].uint);
|
||||
case SL::TYPE_UVEC2:
|
||||
case SL::TYPE_UVEC3:
|
||||
case SL::TYPE_UVEC4: {
|
||||
|
@ -140,7 +149,8 @@ static String get_constant_text(SL::DataType p_type, const Vector<SL::ConstantNo
|
|||
|
||||
} break;
|
||||
|
||||
case SL::TYPE_INT: return itos(p_values[0].sint);
|
||||
case SL::TYPE_INT:
|
||||
return itos(p_values[0].sint);
|
||||
case SL::TYPE_IVEC2:
|
||||
case SL::TYPE_IVEC3:
|
||||
case SL::TYPE_IVEC4: {
|
||||
|
@ -161,7 +171,8 @@ static String get_constant_text(SL::DataType p_type, const Vector<SL::ConstantNo
|
|||
return text.as_string();
|
||||
|
||||
} break;
|
||||
case SL::TYPE_FLOAT: return f2sp0(p_values[0].real);
|
||||
case SL::TYPE_FLOAT:
|
||||
return f2sp0(p_values[0].real);
|
||||
case SL::TYPE_VEC2:
|
||||
case SL::TYPE_VEC3:
|
||||
case SL::TYPE_VEC4: {
|
||||
|
@ -202,7 +213,8 @@ static String get_constant_text(SL::DataType p_type, const Vector<SL::ConstantNo
|
|||
return text.as_string();
|
||||
|
||||
} break;
|
||||
default: ERR_FAIL_V(String());
|
||||
default:
|
||||
ERR_FAIL_V(String());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -440,7 +440,9 @@ int RasterizerSceneGLES3::get_directional_light_shadow_size(RID p_light_intance)
|
|||
case VS::LIGHT_DIRECTIONAL_SHADOW_ORTHOGONAL:
|
||||
break; //none
|
||||
case VS::LIGHT_DIRECTIONAL_SHADOW_PARALLEL_2_SPLITS:
|
||||
case VS::LIGHT_DIRECTIONAL_SHADOW_PARALLEL_4_SPLITS: shadow_size /= 2; break;
|
||||
case VS::LIGHT_DIRECTIONAL_SHADOW_PARALLEL_4_SPLITS:
|
||||
shadow_size /= 2;
|
||||
break;
|
||||
}
|
||||
|
||||
return shadow_size;
|
||||
|
|
|
@ -2495,8 +2495,12 @@ void RasterizerStorageGLES3::shader_get_param_list(RID p_shader, List<PropertyIn
|
|||
ShaderLanguage::ShaderNode::Uniform &u = shader->uniforms[E->get()];
|
||||
pi.name = E->get();
|
||||
switch (u.type) {
|
||||
case ShaderLanguage::TYPE_VOID: pi.type = Variant::NIL; break;
|
||||
case ShaderLanguage::TYPE_BOOL: pi.type = Variant::BOOL; break;
|
||||
case ShaderLanguage::TYPE_VOID:
|
||||
pi.type = Variant::NIL;
|
||||
break;
|
||||
case ShaderLanguage::TYPE_BOOL:
|
||||
pi.type = Variant::BOOL;
|
||||
break;
|
||||
case ShaderLanguage::TYPE_BVEC2:
|
||||
pi.type = Variant::INT;
|
||||
pi.hint = PROPERTY_HINT_FLAGS;
|
||||
|
@ -2538,8 +2542,12 @@ void RasterizerStorageGLES3::shader_get_param_list(RID p_shader, List<PropertyIn
|
|||
}
|
||||
|
||||
} break;
|
||||
case ShaderLanguage::TYPE_VEC2: pi.type = Variant::VECTOR2; break;
|
||||
case ShaderLanguage::TYPE_VEC3: pi.type = Variant::VECTOR3; break;
|
||||
case ShaderLanguage::TYPE_VEC2:
|
||||
pi.type = Variant::VECTOR2;
|
||||
break;
|
||||
case ShaderLanguage::TYPE_VEC3:
|
||||
pi.type = Variant::VECTOR3;
|
||||
break;
|
||||
case ShaderLanguage::TYPE_VEC4: {
|
||||
if (u.hint == ShaderLanguage::ShaderNode::Uniform::HINT_COLOR) {
|
||||
pi.type = Variant::COLOR;
|
||||
|
@ -2547,9 +2555,15 @@ void RasterizerStorageGLES3::shader_get_param_list(RID p_shader, List<PropertyIn
|
|||
pi.type = Variant::PLANE;
|
||||
}
|
||||
} break;
|
||||
case ShaderLanguage::TYPE_MAT2: pi.type = Variant::TRANSFORM2D; break;
|
||||
case ShaderLanguage::TYPE_MAT3: pi.type = Variant::BASIS; break;
|
||||
case ShaderLanguage::TYPE_MAT4: pi.type = Variant::TRANSFORM; break;
|
||||
case ShaderLanguage::TYPE_MAT2:
|
||||
pi.type = Variant::TRANSFORM2D;
|
||||
break;
|
||||
case ShaderLanguage::TYPE_MAT3:
|
||||
pi.type = Variant::BASIS;
|
||||
break;
|
||||
case ShaderLanguage::TYPE_MAT4:
|
||||
pi.type = Variant::TRANSFORM;
|
||||
break;
|
||||
case ShaderLanguage::TYPE_SAMPLER2D:
|
||||
case ShaderLanguage::TYPE_SAMPLEREXT:
|
||||
case ShaderLanguage::TYPE_ISAMPLER2D:
|
||||
|
|
|
@ -54,39 +54,68 @@ static int _get_datatype_size(SL::DataType p_type) {
|
|||
|
||||
switch (p_type) {
|
||||
|
||||
case SL::TYPE_VOID: return 0;
|
||||
case SL::TYPE_BOOL: return 4;
|
||||
case SL::TYPE_BVEC2: return 8;
|
||||
case SL::TYPE_BVEC3: return 12;
|
||||
case SL::TYPE_BVEC4: return 16;
|
||||
case SL::TYPE_INT: return 4;
|
||||
case SL::TYPE_IVEC2: return 8;
|
||||
case SL::TYPE_IVEC3: return 12;
|
||||
case SL::TYPE_IVEC4: return 16;
|
||||
case SL::TYPE_UINT: return 4;
|
||||
case SL::TYPE_UVEC2: return 8;
|
||||
case SL::TYPE_UVEC3: return 12;
|
||||
case SL::TYPE_UVEC4: return 16;
|
||||
case SL::TYPE_FLOAT: return 4;
|
||||
case SL::TYPE_VEC2: return 8;
|
||||
case SL::TYPE_VEC3: return 12;
|
||||
case SL::TYPE_VEC4: return 16;
|
||||
case SL::TYPE_VOID:
|
||||
return 0;
|
||||
case SL::TYPE_BOOL:
|
||||
return 4;
|
||||
case SL::TYPE_BVEC2:
|
||||
return 8;
|
||||
case SL::TYPE_BVEC3:
|
||||
return 12;
|
||||
case SL::TYPE_BVEC4:
|
||||
return 16;
|
||||
case SL::TYPE_INT:
|
||||
return 4;
|
||||
case SL::TYPE_IVEC2:
|
||||
return 8;
|
||||
case SL::TYPE_IVEC3:
|
||||
return 12;
|
||||
case SL::TYPE_IVEC4:
|
||||
return 16;
|
||||
case SL::TYPE_UINT:
|
||||
return 4;
|
||||
case SL::TYPE_UVEC2:
|
||||
return 8;
|
||||
case SL::TYPE_UVEC3:
|
||||
return 12;
|
||||
case SL::TYPE_UVEC4:
|
||||
return 16;
|
||||
case SL::TYPE_FLOAT:
|
||||
return 4;
|
||||
case SL::TYPE_VEC2:
|
||||
return 8;
|
||||
case SL::TYPE_VEC3:
|
||||
return 12;
|
||||
case SL::TYPE_VEC4:
|
||||
return 16;
|
||||
case SL::TYPE_MAT2:
|
||||
return 32; //4 * 4 + 4 * 4
|
||||
case SL::TYPE_MAT3:
|
||||
return 48; // 4 * 4 + 4 * 4 + 4 * 4
|
||||
case SL::TYPE_MAT4: return 64;
|
||||
case SL::TYPE_SAMPLER2D: return 16;
|
||||
case SL::TYPE_ISAMPLER2D: return 16;
|
||||
case SL::TYPE_USAMPLER2D: return 16;
|
||||
case SL::TYPE_SAMPLER2DARRAY: return 16;
|
||||
case SL::TYPE_ISAMPLER2DARRAY: return 16;
|
||||
case SL::TYPE_USAMPLER2DARRAY: return 16;
|
||||
case SL::TYPE_SAMPLER3D: return 16;
|
||||
case SL::TYPE_ISAMPLER3D: return 16;
|
||||
case SL::TYPE_USAMPLER3D: return 16;
|
||||
case SL::TYPE_SAMPLERCUBE: return 16;
|
||||
case SL::TYPE_SAMPLEREXT: return 16;
|
||||
case SL::TYPE_MAT4:
|
||||
return 64;
|
||||
case SL::TYPE_SAMPLER2D:
|
||||
return 16;
|
||||
case SL::TYPE_ISAMPLER2D:
|
||||
return 16;
|
||||
case SL::TYPE_USAMPLER2D:
|
||||
return 16;
|
||||
case SL::TYPE_SAMPLER2DARRAY:
|
||||
return 16;
|
||||
case SL::TYPE_ISAMPLER2DARRAY:
|
||||
return 16;
|
||||
case SL::TYPE_USAMPLER2DARRAY:
|
||||
return 16;
|
||||
case SL::TYPE_SAMPLER3D:
|
||||
return 16;
|
||||
case SL::TYPE_ISAMPLER3D:
|
||||
return 16;
|
||||
case SL::TYPE_USAMPLER3D:
|
||||
return 16;
|
||||
case SL::TYPE_SAMPLERCUBE:
|
||||
return 16;
|
||||
case SL::TYPE_SAMPLEREXT:
|
||||
return 16;
|
||||
}
|
||||
|
||||
ERR_FAIL_V(0);
|
||||
|
@ -96,37 +125,68 @@ static int _get_datatype_alignment(SL::DataType p_type) {
|
|||
|
||||
switch (p_type) {
|
||||
|
||||
case SL::TYPE_VOID: return 0;
|
||||
case SL::TYPE_BOOL: return 4;
|
||||
case SL::TYPE_BVEC2: return 8;
|
||||
case SL::TYPE_BVEC3: return 16;
|
||||
case SL::TYPE_BVEC4: return 16;
|
||||
case SL::TYPE_INT: return 4;
|
||||
case SL::TYPE_IVEC2: return 8;
|
||||
case SL::TYPE_IVEC3: return 16;
|
||||
case SL::TYPE_IVEC4: return 16;
|
||||
case SL::TYPE_UINT: return 4;
|
||||
case SL::TYPE_UVEC2: return 8;
|
||||
case SL::TYPE_UVEC3: return 16;
|
||||
case SL::TYPE_UVEC4: return 16;
|
||||
case SL::TYPE_FLOAT: return 4;
|
||||
case SL::TYPE_VEC2: return 8;
|
||||
case SL::TYPE_VEC3: return 16;
|
||||
case SL::TYPE_VEC4: return 16;
|
||||
case SL::TYPE_MAT2: return 16;
|
||||
case SL::TYPE_MAT3: return 16;
|
||||
case SL::TYPE_MAT4: return 16;
|
||||
case SL::TYPE_SAMPLER2D: return 16;
|
||||
case SL::TYPE_ISAMPLER2D: return 16;
|
||||
case SL::TYPE_USAMPLER2D: return 16;
|
||||
case SL::TYPE_SAMPLER2DARRAY: return 16;
|
||||
case SL::TYPE_ISAMPLER2DARRAY: return 16;
|
||||
case SL::TYPE_USAMPLER2DARRAY: return 16;
|
||||
case SL::TYPE_SAMPLER3D: return 16;
|
||||
case SL::TYPE_ISAMPLER3D: return 16;
|
||||
case SL::TYPE_USAMPLER3D: return 16;
|
||||
case SL::TYPE_SAMPLERCUBE: return 16;
|
||||
case SL::TYPE_SAMPLEREXT: return 16;
|
||||
case SL::TYPE_VOID:
|
||||
return 0;
|
||||
case SL::TYPE_BOOL:
|
||||
return 4;
|
||||
case SL::TYPE_BVEC2:
|
||||
return 8;
|
||||
case SL::TYPE_BVEC3:
|
||||
return 16;
|
||||
case SL::TYPE_BVEC4:
|
||||
return 16;
|
||||
case SL::TYPE_INT:
|
||||
return 4;
|
||||
case SL::TYPE_IVEC2:
|
||||
return 8;
|
||||
case SL::TYPE_IVEC3:
|
||||
return 16;
|
||||
case SL::TYPE_IVEC4:
|
||||
return 16;
|
||||
case SL::TYPE_UINT:
|
||||
return 4;
|
||||
case SL::TYPE_UVEC2:
|
||||
return 8;
|
||||
case SL::TYPE_UVEC3:
|
||||
return 16;
|
||||
case SL::TYPE_UVEC4:
|
||||
return 16;
|
||||
case SL::TYPE_FLOAT:
|
||||
return 4;
|
||||
case SL::TYPE_VEC2:
|
||||
return 8;
|
||||
case SL::TYPE_VEC3:
|
||||
return 16;
|
||||
case SL::TYPE_VEC4:
|
||||
return 16;
|
||||
case SL::TYPE_MAT2:
|
||||
return 16;
|
||||
case SL::TYPE_MAT3:
|
||||
return 16;
|
||||
case SL::TYPE_MAT4:
|
||||
return 16;
|
||||
case SL::TYPE_SAMPLER2D:
|
||||
return 16;
|
||||
case SL::TYPE_ISAMPLER2D:
|
||||
return 16;
|
||||
case SL::TYPE_USAMPLER2D:
|
||||
return 16;
|
||||
case SL::TYPE_SAMPLER2DARRAY:
|
||||
return 16;
|
||||
case SL::TYPE_ISAMPLER2DARRAY:
|
||||
return 16;
|
||||
case SL::TYPE_USAMPLER2DARRAY:
|
||||
return 16;
|
||||
case SL::TYPE_SAMPLER3D:
|
||||
return 16;
|
||||
case SL::TYPE_ISAMPLER3D:
|
||||
return 16;
|
||||
case SL::TYPE_USAMPLER3D:
|
||||
return 16;
|
||||
case SL::TYPE_SAMPLERCUBE:
|
||||
return 16;
|
||||
case SL::TYPE_SAMPLEREXT:
|
||||
return 16;
|
||||
}
|
||||
|
||||
ERR_FAIL_V(0);
|
||||
|
@ -134,8 +194,10 @@ static int _get_datatype_alignment(SL::DataType p_type) {
|
|||
static String _interpstr(SL::DataInterpolation p_interp) {
|
||||
|
||||
switch (p_interp) {
|
||||
case SL::INTERPOLATION_FLAT: return "flat ";
|
||||
case SL::INTERPOLATION_SMOOTH: return "";
|
||||
case SL::INTERPOLATION_FLAT:
|
||||
return "flat ";
|
||||
case SL::INTERPOLATION_SMOOTH:
|
||||
return "";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
@ -143,10 +205,14 @@ static String _interpstr(SL::DataInterpolation p_interp) {
|
|||
static String _prestr(SL::DataPrecision p_pres) {
|
||||
|
||||
switch (p_pres) {
|
||||
case SL::PRECISION_LOWP: return "lowp ";
|
||||
case SL::PRECISION_MEDIUMP: return "mediump ";
|
||||
case SL::PRECISION_HIGHP: return "highp ";
|
||||
case SL::PRECISION_DEFAULT: return "";
|
||||
case SL::PRECISION_LOWP:
|
||||
return "lowp ";
|
||||
case SL::PRECISION_MEDIUMP:
|
||||
return "mediump ";
|
||||
case SL::PRECISION_HIGHP:
|
||||
return "highp ";
|
||||
case SL::PRECISION_DEFAULT:
|
||||
return "";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
@ -154,9 +220,12 @@ static String _prestr(SL::DataPrecision p_pres) {
|
|||
static String _qualstr(SL::ArgumentQualifier p_qual) {
|
||||
|
||||
switch (p_qual) {
|
||||
case SL::ARGUMENT_QUALIFIER_IN: return "";
|
||||
case SL::ARGUMENT_QUALIFIER_OUT: return "out ";
|
||||
case SL::ARGUMENT_QUALIFIER_INOUT: return "inout ";
|
||||
case SL::ARGUMENT_QUALIFIER_IN:
|
||||
return "";
|
||||
case SL::ARGUMENT_QUALIFIER_OUT:
|
||||
return "out ";
|
||||
case SL::ARGUMENT_QUALIFIER_INOUT:
|
||||
return "inout ";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
@ -184,7 +253,8 @@ static String f2sp0(float p_float) {
|
|||
static String get_constant_text(SL::DataType p_type, const Vector<SL::ConstantNode::Value> &p_values) {
|
||||
|
||||
switch (p_type) {
|
||||
case SL::TYPE_BOOL: return p_values[0].boolean ? "true" : "false";
|
||||
case SL::TYPE_BOOL:
|
||||
return p_values[0].boolean ? "true" : "false";
|
||||
case SL::TYPE_BVEC2:
|
||||
case SL::TYPE_BVEC3:
|
||||
case SL::TYPE_BVEC4: {
|
||||
|
@ -200,7 +270,8 @@ static String get_constant_text(SL::DataType p_type, const Vector<SL::ConstantNo
|
|||
return text;
|
||||
}
|
||||
|
||||
case SL::TYPE_INT: return itos(p_values[0].sint);
|
||||
case SL::TYPE_INT:
|
||||
return itos(p_values[0].sint);
|
||||
case SL::TYPE_IVEC2:
|
||||
case SL::TYPE_IVEC3:
|
||||
case SL::TYPE_IVEC4: {
|
||||
|
@ -216,7 +287,8 @@ static String get_constant_text(SL::DataType p_type, const Vector<SL::ConstantNo
|
|||
return text;
|
||||
|
||||
} break;
|
||||
case SL::TYPE_UINT: return itos(p_values[0].uint) + "u";
|
||||
case SL::TYPE_UINT:
|
||||
return itos(p_values[0].uint) + "u";
|
||||
case SL::TYPE_UVEC2:
|
||||
case SL::TYPE_UVEC3:
|
||||
case SL::TYPE_UVEC4: {
|
||||
|
@ -231,7 +303,8 @@ static String get_constant_text(SL::DataType p_type, const Vector<SL::ConstantNo
|
|||
text += ")";
|
||||
return text;
|
||||
} break;
|
||||
case SL::TYPE_FLOAT: return f2sp0(p_values[0].real);
|
||||
case SL::TYPE_FLOAT:
|
||||
return f2sp0(p_values[0].real);
|
||||
case SL::TYPE_VEC2:
|
||||
case SL::TYPE_VEC3:
|
||||
case SL::TYPE_VEC4: {
|
||||
|
@ -262,7 +335,8 @@ static String get_constant_text(SL::DataType p_type, const Vector<SL::ConstantNo
|
|||
return text;
|
||||
|
||||
} break;
|
||||
default: ERR_FAIL_V(String());
|
||||
default:
|
||||
ERR_FAIL_V(String());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -49,11 +49,21 @@ void SyslogLogger::print_error(const char *p_function, const char *p_file, int p
|
|||
|
||||
const char *err_type = "**ERROR**";
|
||||
switch (p_type) {
|
||||
case ERR_ERROR: err_type = "**ERROR**"; break;
|
||||
case ERR_WARNING: err_type = "**WARNING**"; break;
|
||||
case ERR_SCRIPT: err_type = "**SCRIPT ERROR**"; break;
|
||||
case ERR_SHADER: err_type = "**SHADER ERROR**"; break;
|
||||
default: ERR_PRINT("Unknown error type"); break;
|
||||
case ERR_ERROR:
|
||||
err_type = "**ERROR**";
|
||||
break;
|
||||
case ERR_WARNING:
|
||||
err_type = "**WARNING**";
|
||||
break;
|
||||
case ERR_SCRIPT:
|
||||
err_type = "**SCRIPT ERROR**";
|
||||
break;
|
||||
case ERR_SHADER:
|
||||
err_type = "**SHADER ERROR**";
|
||||
break;
|
||||
default:
|
||||
ERR_PRINT("Unknown error type");
|
||||
break;
|
||||
}
|
||||
|
||||
const char *err_details;
|
||||
|
|
|
@ -5302,10 +5302,18 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
|||
}
|
||||
|
||||
switch (animation->track_get_type(i)) {
|
||||
case Animation::TYPE_TRANSFORM: text += " (Transform)"; break;
|
||||
case Animation::TYPE_METHOD: text += " (Methods)"; break;
|
||||
case Animation::TYPE_BEZIER: text += " (Bezier)"; break;
|
||||
case Animation::TYPE_AUDIO: text += " (Audio)"; break;
|
||||
case Animation::TYPE_TRANSFORM:
|
||||
text += " (Transform)";
|
||||
break;
|
||||
case Animation::TYPE_METHOD:
|
||||
text += " (Methods)";
|
||||
break;
|
||||
case Animation::TYPE_BEZIER:
|
||||
text += " (Bezier)";
|
||||
break;
|
||||
case Animation::TYPE_AUDIO:
|
||||
text += " (Audio)";
|
||||
break;
|
||||
default: {
|
||||
};
|
||||
}
|
||||
|
|
|
@ -173,19 +173,45 @@ void ConnectDialog::_add_bind() {
|
|||
Variant value;
|
||||
|
||||
switch (vt) {
|
||||
case Variant::BOOL: value = false; break;
|
||||
case Variant::INT: value = 0; break;
|
||||
case Variant::REAL: value = 0.0; break;
|
||||
case Variant::STRING: value = ""; break;
|
||||
case Variant::VECTOR2: value = Vector2(); break;
|
||||
case Variant::RECT2: value = Rect2(); break;
|
||||
case Variant::VECTOR3: value = Vector3(); break;
|
||||
case Variant::PLANE: value = Plane(); break;
|
||||
case Variant::QUAT: value = Quat(); break;
|
||||
case Variant::AABB: value = AABB(); break;
|
||||
case Variant::BASIS: value = Basis(); break;
|
||||
case Variant::TRANSFORM: value = Transform(); break;
|
||||
case Variant::COLOR: value = Color(); break;
|
||||
case Variant::BOOL:
|
||||
value = false;
|
||||
break;
|
||||
case Variant::INT:
|
||||
value = 0;
|
||||
break;
|
||||
case Variant::REAL:
|
||||
value = 0.0;
|
||||
break;
|
||||
case Variant::STRING:
|
||||
value = "";
|
||||
break;
|
||||
case Variant::VECTOR2:
|
||||
value = Vector2();
|
||||
break;
|
||||
case Variant::RECT2:
|
||||
value = Rect2();
|
||||
break;
|
||||
case Variant::VECTOR3:
|
||||
value = Vector3();
|
||||
break;
|
||||
case Variant::PLANE:
|
||||
value = Plane();
|
||||
break;
|
||||
case Variant::QUAT:
|
||||
value = Quat();
|
||||
break;
|
||||
case Variant::AABB:
|
||||
value = AABB();
|
||||
break;
|
||||
case Variant::BASIS:
|
||||
value = Basis();
|
||||
break;
|
||||
case Variant::TRANSFORM:
|
||||
value = Transform();
|
||||
break;
|
||||
case Variant::COLOR:
|
||||
value = Color();
|
||||
break;
|
||||
default: {
|
||||
ERR_FAIL();
|
||||
} break;
|
||||
|
|
|
@ -1493,7 +1493,8 @@ void EditorHelp::_notification(int p_what) {
|
|||
_class_desc_resized();
|
||||
}
|
||||
} break;
|
||||
default: break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1637,7 +1638,8 @@ void EditorHelpBit::_notification(int p_what) {
|
|||
|
||||
rich_text->add_color_override("selection_color", get_color("accent_color", "Editor") * Color(1, 1, 1, 0.4));
|
||||
} break;
|
||||
default: break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3235,13 +3235,27 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ
|
|||
|
||||
EditorPropertyMember::Type type = EditorPropertyMember::MEMBER_METHOD_OF_BASE_TYPE;
|
||||
switch (p_hint) {
|
||||
case PROPERTY_HINT_METHOD_OF_BASE_TYPE: type = EditorPropertyMember::MEMBER_METHOD_OF_BASE_TYPE; break;
|
||||
case PROPERTY_HINT_METHOD_OF_INSTANCE: type = EditorPropertyMember::MEMBER_METHOD_OF_INSTANCE; break;
|
||||
case PROPERTY_HINT_METHOD_OF_SCRIPT: type = EditorPropertyMember::MEMBER_METHOD_OF_SCRIPT; break;
|
||||
case PROPERTY_HINT_PROPERTY_OF_VARIANT_TYPE: type = EditorPropertyMember::MEMBER_PROPERTY_OF_VARIANT_TYPE; break;
|
||||
case PROPERTY_HINT_PROPERTY_OF_BASE_TYPE: type = EditorPropertyMember::MEMBER_PROPERTY_OF_BASE_TYPE; break;
|
||||
case PROPERTY_HINT_PROPERTY_OF_INSTANCE: type = EditorPropertyMember::MEMBER_PROPERTY_OF_INSTANCE; break;
|
||||
case PROPERTY_HINT_PROPERTY_OF_SCRIPT: type = EditorPropertyMember::MEMBER_PROPERTY_OF_SCRIPT; break;
|
||||
case PROPERTY_HINT_METHOD_OF_BASE_TYPE:
|
||||
type = EditorPropertyMember::MEMBER_METHOD_OF_BASE_TYPE;
|
||||
break;
|
||||
case PROPERTY_HINT_METHOD_OF_INSTANCE:
|
||||
type = EditorPropertyMember::MEMBER_METHOD_OF_INSTANCE;
|
||||
break;
|
||||
case PROPERTY_HINT_METHOD_OF_SCRIPT:
|
||||
type = EditorPropertyMember::MEMBER_METHOD_OF_SCRIPT;
|
||||
break;
|
||||
case PROPERTY_HINT_PROPERTY_OF_VARIANT_TYPE:
|
||||
type = EditorPropertyMember::MEMBER_PROPERTY_OF_VARIANT_TYPE;
|
||||
break;
|
||||
case PROPERTY_HINT_PROPERTY_OF_BASE_TYPE:
|
||||
type = EditorPropertyMember::MEMBER_PROPERTY_OF_BASE_TYPE;
|
||||
break;
|
||||
case PROPERTY_HINT_PROPERTY_OF_INSTANCE:
|
||||
type = EditorPropertyMember::MEMBER_PROPERTY_OF_INSTANCE;
|
||||
break;
|
||||
case PROPERTY_HINT_PROPERTY_OF_SCRIPT:
|
||||
type = EditorPropertyMember::MEMBER_PROPERTY_OF_SCRIPT;
|
||||
break;
|
||||
default: {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -499,18 +499,26 @@ void ExportTemplateManager::_notification(int p_what) {
|
|||
status = TTR("Disconnected");
|
||||
errored = true;
|
||||
break;
|
||||
case HTTPClient::STATUS_RESOLVING: status = TTR("Resolving"); break;
|
||||
case HTTPClient::STATUS_RESOLVING:
|
||||
status = TTR("Resolving");
|
||||
break;
|
||||
case HTTPClient::STATUS_CANT_RESOLVE:
|
||||
status = TTR("Can't Resolve");
|
||||
errored = true;
|
||||
break;
|
||||
case HTTPClient::STATUS_CONNECTING: status = TTR("Connecting..."); break;
|
||||
case HTTPClient::STATUS_CONNECTING:
|
||||
status = TTR("Connecting...");
|
||||
break;
|
||||
case HTTPClient::STATUS_CANT_CONNECT:
|
||||
status = TTR("Can't Connect");
|
||||
errored = true;
|
||||
break;
|
||||
case HTTPClient::STATUS_CONNECTED: status = TTR("Connected"); break;
|
||||
case HTTPClient::STATUS_REQUESTING: status = TTR("Requesting..."); break;
|
||||
case HTTPClient::STATUS_CONNECTED:
|
||||
status = TTR("Connected");
|
||||
break;
|
||||
case HTTPClient::STATUS_REQUESTING:
|
||||
status = TTR("Requesting...");
|
||||
break;
|
||||
case HTTPClient::STATUS_BODY:
|
||||
status = TTR("Downloading");
|
||||
if (download_templates->get_body_size() > 0) {
|
||||
|
|
|
@ -618,12 +618,18 @@ Error EditorSceneImporterGLTF::_parse_accessors(GLTFState &state) {
|
|||
String EditorSceneImporterGLTF::_get_component_type_name(const uint32_t p_component) {
|
||||
|
||||
switch (p_component) {
|
||||
case COMPONENT_TYPE_BYTE: return "Byte";
|
||||
case COMPONENT_TYPE_UNSIGNED_BYTE: return "UByte";
|
||||
case COMPONENT_TYPE_SHORT: return "Short";
|
||||
case COMPONENT_TYPE_UNSIGNED_SHORT: return "UShort";
|
||||
case COMPONENT_TYPE_INT: return "Int";
|
||||
case COMPONENT_TYPE_FLOAT: return "Float";
|
||||
case COMPONENT_TYPE_BYTE:
|
||||
return "Byte";
|
||||
case COMPONENT_TYPE_UNSIGNED_BYTE:
|
||||
return "UByte";
|
||||
case COMPONENT_TYPE_SHORT:
|
||||
return "Short";
|
||||
case COMPONENT_TYPE_UNSIGNED_SHORT:
|
||||
return "UShort";
|
||||
case COMPONENT_TYPE_INT:
|
||||
return "Int";
|
||||
case COMPONENT_TYPE_FLOAT:
|
||||
return "Float";
|
||||
}
|
||||
|
||||
return "<Error>";
|
||||
|
@ -735,12 +741,24 @@ Error EditorSceneImporterGLTF::_decode_buffer_view(GLTFState &state, double *dst
|
|||
int EditorSceneImporterGLTF::_get_component_type_size(const int component_type) {
|
||||
|
||||
switch (component_type) {
|
||||
case COMPONENT_TYPE_BYTE: return 1; break;
|
||||
case COMPONENT_TYPE_UNSIGNED_BYTE: return 1; break;
|
||||
case COMPONENT_TYPE_SHORT: return 2; break;
|
||||
case COMPONENT_TYPE_UNSIGNED_SHORT: return 2; break;
|
||||
case COMPONENT_TYPE_INT: return 4; break;
|
||||
case COMPONENT_TYPE_FLOAT: return 4; break;
|
||||
case COMPONENT_TYPE_BYTE:
|
||||
return 1;
|
||||
break;
|
||||
case COMPONENT_TYPE_UNSIGNED_BYTE:
|
||||
return 1;
|
||||
break;
|
||||
case COMPONENT_TYPE_SHORT:
|
||||
return 2;
|
||||
break;
|
||||
case COMPONENT_TYPE_UNSIGNED_SHORT:
|
||||
return 2;
|
||||
break;
|
||||
case COMPONENT_TYPE_INT:
|
||||
return 4;
|
||||
break;
|
||||
case COMPONENT_TYPE_FLOAT:
|
||||
return 4;
|
||||
break;
|
||||
default: {
|
||||
ERR_FAIL_V(0);
|
||||
}
|
||||
|
|
|
@ -83,9 +83,15 @@ Error ResourceImporterCSVTranslation::import(const String &p_source_file, const
|
|||
|
||||
String delimiter;
|
||||
switch ((int)p_options["delimiter"]) {
|
||||
case 0: delimiter = ","; break;
|
||||
case 1: delimiter = ";"; break;
|
||||
case 2: delimiter = "\t"; break;
|
||||
case 0:
|
||||
delimiter = ",";
|
||||
break;
|
||||
case 1:
|
||||
delimiter = ";";
|
||||
break;
|
||||
case 2:
|
||||
delimiter = "\t";
|
||||
break;
|
||||
}
|
||||
|
||||
FileAccessRef f = FileAccess::open(p_source_file, FileAccess::READ);
|
||||
|
|
|
@ -221,16 +221,26 @@ int ResourceImporterScene::get_preset_count() const {
|
|||
String ResourceImporterScene::get_preset_name(int p_idx) const {
|
||||
|
||||
switch (p_idx) {
|
||||
case PRESET_SINGLE_SCENE: return TTR("Import as Single Scene");
|
||||
case PRESET_SEPARATE_ANIMATIONS: return TTR("Import with Separate Animations");
|
||||
case PRESET_SEPARATE_MATERIALS: return TTR("Import with Separate Materials");
|
||||
case PRESET_SEPARATE_MESHES: return TTR("Import with Separate Objects");
|
||||
case PRESET_SEPARATE_MESHES_AND_MATERIALS: return TTR("Import with Separate Objects+Materials");
|
||||
case PRESET_SEPARATE_MESHES_AND_ANIMATIONS: return TTR("Import with Separate Objects+Animations");
|
||||
case PRESET_SEPARATE_MATERIALS_AND_ANIMATIONS: return TTR("Import with Separate Materials+Animations");
|
||||
case PRESET_SEPARATE_MESHES_MATERIALS_AND_ANIMATIONS: return TTR("Import with Separate Objects+Materials+Animations");
|
||||
case PRESET_MULTIPLE_SCENES: return TTR("Import as Multiple Scenes");
|
||||
case PRESET_MULTIPLE_SCENES_AND_MATERIALS: return TTR("Import as Multiple Scenes+Materials");
|
||||
case PRESET_SINGLE_SCENE:
|
||||
return TTR("Import as Single Scene");
|
||||
case PRESET_SEPARATE_ANIMATIONS:
|
||||
return TTR("Import with Separate Animations");
|
||||
case PRESET_SEPARATE_MATERIALS:
|
||||
return TTR("Import with Separate Materials");
|
||||
case PRESET_SEPARATE_MESHES:
|
||||
return TTR("Import with Separate Objects");
|
||||
case PRESET_SEPARATE_MESHES_AND_MATERIALS:
|
||||
return TTR("Import with Separate Objects+Materials");
|
||||
case PRESET_SEPARATE_MESHES_AND_ANIMATIONS:
|
||||
return TTR("Import with Separate Objects+Animations");
|
||||
case PRESET_SEPARATE_MATERIALS_AND_ANIMATIONS:
|
||||
return TTR("Import with Separate Materials+Animations");
|
||||
case PRESET_SEPARATE_MESHES_MATERIALS_AND_ANIMATIONS:
|
||||
return TTR("Import with Separate Objects+Materials+Animations");
|
||||
case PRESET_MULTIPLE_SCENES:
|
||||
return TTR("Import as Multiple Scenes");
|
||||
case PRESET_MULTIPLE_SCENES_AND_MATERIALS:
|
||||
return TTR("Import as Multiple Scenes+Materials");
|
||||
}
|
||||
|
||||
return "";
|
||||
|
|
|
@ -527,26 +527,49 @@ void AnimationTreePlayerEditor::_draw_node(const StringName &p_node) {
|
|||
switch (type) {
|
||||
|
||||
case AnimationTreePlayer::NODE_TIMESCALE:
|
||||
case AnimationTreePlayer::NODE_TIMESEEK: text = "in"; break;
|
||||
case AnimationTreePlayer::NODE_OUTPUT: text = "out"; break;
|
||||
case AnimationTreePlayer::NODE_ANIMATION: break;
|
||||
case AnimationTreePlayer::NODE_ONESHOT: text = (i == 0 ? "in" : "add"); break;
|
||||
case AnimationTreePlayer::NODE_TIMESEEK:
|
||||
text = "in";
|
||||
break;
|
||||
case AnimationTreePlayer::NODE_OUTPUT:
|
||||
text = "out";
|
||||
break;
|
||||
case AnimationTreePlayer::NODE_ANIMATION:
|
||||
break;
|
||||
case AnimationTreePlayer::NODE_ONESHOT:
|
||||
text = (i == 0 ? "in" : "add");
|
||||
break;
|
||||
case AnimationTreePlayer::NODE_BLEND2:
|
||||
case AnimationTreePlayer::NODE_MIX: text = (i == 0 ? "a" : "b"); break;
|
||||
case AnimationTreePlayer::NODE_MIX:
|
||||
text = (i == 0 ? "a" : "b");
|
||||
break;
|
||||
case AnimationTreePlayer::NODE_BLEND3:
|
||||
switch (i) {
|
||||
case 0: text = "b-"; break;
|
||||
case 1: text = "a"; break;
|
||||
case 2: text = "b+"; break;
|
||||
case 0:
|
||||
text = "b-";
|
||||
break;
|
||||
case 1:
|
||||
text = "a";
|
||||
break;
|
||||
case 2:
|
||||
text = "b+";
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case AnimationTreePlayer::NODE_BLEND4:
|
||||
switch (i) {
|
||||
case 0: text = "a0"; break;
|
||||
case 1: text = "b0"; break;
|
||||
case 2: text = "a1"; break;
|
||||
case 3: text = "b1"; break;
|
||||
case 0:
|
||||
text = "a0";
|
||||
break;
|
||||
case 1:
|
||||
text = "b0";
|
||||
break;
|
||||
case 2:
|
||||
text = "a1";
|
||||
break;
|
||||
case 3:
|
||||
text = "b1";
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -597,7 +620,8 @@ void AnimationTreePlayerEditor::_draw_node(const StringName &p_node) {
|
|||
|
||||
font->draw_halign(ci, ofs + ascofs, HALIGN_CENTER, w, "edit...", font_color_title);
|
||||
} break;
|
||||
default: editable = false;
|
||||
default:
|
||||
editable = false;
|
||||
}
|
||||
|
||||
if (editable) {
|
||||
|
|
|
@ -1318,7 +1318,8 @@ void EditorAssetLibrary::_http_request_completed(int p_status, int p_code, const
|
|||
}
|
||||
}
|
||||
} break;
|
||||
default: break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6379,7 +6379,8 @@ void CanvasItemEditorViewport::_notification(int p_what) {
|
|||
disconnect("mouse_exited", this, "_on_mouse_exit");
|
||||
} break;
|
||||
|
||||
default: break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -775,11 +775,16 @@ static int _get_key_modifier_setting(const String &p_property) {
|
|||
|
||||
switch (EditorSettings::get_singleton()->get(p_property).operator int()) {
|
||||
|
||||
case 0: return 0;
|
||||
case 1: return KEY_SHIFT;
|
||||
case 2: return KEY_ALT;
|
||||
case 3: return KEY_META;
|
||||
case 4: return KEY_CONTROL;
|
||||
case 0:
|
||||
return 0;
|
||||
case 1:
|
||||
return KEY_SHIFT;
|
||||
case 2:
|
||||
return KEY_ALT;
|
||||
case 3:
|
||||
return KEY_META;
|
||||
case 4:
|
||||
return KEY_CONTROL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -74,11 +74,21 @@ void ThemeEditor::_name_menu_about_to_show() {
|
|||
|
||||
switch (type_select->get_selected()) {
|
||||
|
||||
case 0: Theme::get_default()->get_icon_list(fromtype, &names); break;
|
||||
case 1: Theme::get_default()->get_stylebox_list(fromtype, &names); break;
|
||||
case 2: Theme::get_default()->get_font_list(fromtype, &names); break;
|
||||
case 3: Theme::get_default()->get_color_list(fromtype, &names); break;
|
||||
case 4: Theme::get_default()->get_constant_list(fromtype, &names); break;
|
||||
case 0:
|
||||
Theme::get_default()->get_icon_list(fromtype, &names);
|
||||
break;
|
||||
case 1:
|
||||
Theme::get_default()->get_stylebox_list(fromtype, &names);
|
||||
break;
|
||||
case 2:
|
||||
Theme::get_default()->get_font_list(fromtype, &names);
|
||||
break;
|
||||
case 3:
|
||||
Theme::get_default()->get_color_list(fromtype, &names);
|
||||
break;
|
||||
case 4:
|
||||
Theme::get_default()->get_constant_list(fromtype, &names);
|
||||
break;
|
||||
}
|
||||
} else if (popup_mode == POPUP_REMOVE) {
|
||||
|
||||
|
@ -324,11 +334,21 @@ void ThemeEditor::_dialog_cbk() {
|
|||
|
||||
switch (type_select->get_selected()) {
|
||||
|
||||
case 0: theme->set_icon(name_edit->get_text(), type_edit->get_text(), Ref<Texture>()); break;
|
||||
case 1: theme->set_stylebox(name_edit->get_text(), type_edit->get_text(), Ref<StyleBox>()); break;
|
||||
case 2: theme->set_font(name_edit->get_text(), type_edit->get_text(), Ref<Font>()); break;
|
||||
case 3: theme->set_color(name_edit->get_text(), type_edit->get_text(), Color()); break;
|
||||
case 4: theme->set_constant(name_edit->get_text(), type_edit->get_text(), 0); break;
|
||||
case 0:
|
||||
theme->set_icon(name_edit->get_text(), type_edit->get_text(), Ref<Texture>());
|
||||
break;
|
||||
case 1:
|
||||
theme->set_stylebox(name_edit->get_text(), type_edit->get_text(), Ref<StyleBox>());
|
||||
break;
|
||||
case 2:
|
||||
theme->set_font(name_edit->get_text(), type_edit->get_text(), Ref<Font>());
|
||||
break;
|
||||
case 3:
|
||||
theme->set_color(name_edit->get_text(), type_edit->get_text(), Color());
|
||||
break;
|
||||
case 4:
|
||||
theme->set_constant(name_edit->get_text(), type_edit->get_text(), 0);
|
||||
break;
|
||||
}
|
||||
|
||||
} break;
|
||||
|
@ -376,11 +396,21 @@ void ThemeEditor::_dialog_cbk() {
|
|||
case POPUP_REMOVE: {
|
||||
switch (type_select->get_selected()) {
|
||||
|
||||
case 0: theme->clear_icon(name_edit->get_text(), type_edit->get_text()); break;
|
||||
case 1: theme->clear_stylebox(name_edit->get_text(), type_edit->get_text()); break;
|
||||
case 2: theme->clear_font(name_edit->get_text(), type_edit->get_text()); break;
|
||||
case 3: theme->clear_color(name_edit->get_text(), type_edit->get_text()); break;
|
||||
case 4: theme->clear_constant(name_edit->get_text(), type_edit->get_text()); break;
|
||||
case 0:
|
||||
theme->clear_icon(name_edit->get_text(), type_edit->get_text());
|
||||
break;
|
||||
case 1:
|
||||
theme->clear_stylebox(name_edit->get_text(), type_edit->get_text());
|
||||
break;
|
||||
case 2:
|
||||
theme->clear_font(name_edit->get_text(), type_edit->get_text());
|
||||
break;
|
||||
case 3:
|
||||
theme->clear_color(name_edit->get_text(), type_edit->get_text());
|
||||
break;
|
||||
case 4:
|
||||
theme->clear_constant(name_edit->get_text(), type_edit->get_text());
|
||||
break;
|
||||
}
|
||||
|
||||
} break;
|
||||
|
|
|
@ -769,12 +769,23 @@ void ProjectSettingsEditor::_update_actions() {
|
|||
if (mb.is_valid()) {
|
||||
String str = _get_device_string(mb->get_device()) + ", ";
|
||||
switch (mb->get_button_index()) {
|
||||
case BUTTON_LEFT: str += TTR("Left Button."); break;
|
||||
case BUTTON_RIGHT: str += TTR("Right Button."); break;
|
||||
case BUTTON_MIDDLE: str += TTR("Middle Button."); break;
|
||||
case BUTTON_WHEEL_UP: str += TTR("Wheel Up."); break;
|
||||
case BUTTON_WHEEL_DOWN: str += TTR("Wheel Down."); break;
|
||||
default: str += TTR("Button") + " " + itos(mb->get_button_index()) + ".";
|
||||
case BUTTON_LEFT:
|
||||
str += TTR("Left Button.");
|
||||
break;
|
||||
case BUTTON_RIGHT:
|
||||
str += TTR("Right Button.");
|
||||
break;
|
||||
case BUTTON_MIDDLE:
|
||||
str += TTR("Middle Button.");
|
||||
break;
|
||||
case BUTTON_WHEEL_UP:
|
||||
str += TTR("Wheel Up.");
|
||||
break;
|
||||
case BUTTON_WHEEL_DOWN:
|
||||
str += TTR("Wheel Down.");
|
||||
break;
|
||||
default:
|
||||
str += TTR("Button") + " " + itos(mb->get_button_index()) + ".";
|
||||
}
|
||||
|
||||
action2->set_text(0, str);
|
||||
|
|
|
@ -1115,8 +1115,12 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
|
|||
}
|
||||
} else {
|
||||
switch (p_tool) {
|
||||
case TOOL_CREATE_2D_SCENE: new_node = memnew(Node2D); break;
|
||||
case TOOL_CREATE_3D_SCENE: new_node = memnew(Spatial); break;
|
||||
case TOOL_CREATE_2D_SCENE:
|
||||
new_node = memnew(Node2D);
|
||||
break;
|
||||
case TOOL_CREATE_3D_SCENE:
|
||||
new_node = memnew(Spatial);
|
||||
break;
|
||||
case TOOL_CREATE_USER_INTERFACE: {
|
||||
Control *node = memnew(Control);
|
||||
node->set_anchors_and_margins_preset(PRESET_WIDE); //more useful for resizable UIs.
|
||||
|
|
|
@ -2216,12 +2216,18 @@ int VisibilityNotifierGizmoPlugin::get_priority() const {
|
|||
String VisibilityNotifierGizmoPlugin::get_handle_name(const EditorSpatialGizmo *p_gizmo, int p_idx) const {
|
||||
|
||||
switch (p_idx) {
|
||||
case 0: return "Size X";
|
||||
case 1: return "Size Y";
|
||||
case 2: return "Size Z";
|
||||
case 3: return "Pos X";
|
||||
case 4: return "Pos Y";
|
||||
case 5: return "Pos Z";
|
||||
case 0:
|
||||
return "Size X";
|
||||
case 1:
|
||||
return "Size Y";
|
||||
case 2:
|
||||
return "Size Z";
|
||||
case 3:
|
||||
return "Pos X";
|
||||
case 4:
|
||||
return "Pos Y";
|
||||
case 5:
|
||||
return "Pos Z";
|
||||
}
|
||||
|
||||
return "";
|
||||
|
@ -2408,12 +2414,18 @@ bool ParticlesGizmoPlugin::is_selectable_when_hidden() const {
|
|||
String ParticlesGizmoPlugin::get_handle_name(const EditorSpatialGizmo *p_gizmo, int p_idx) const {
|
||||
|
||||
switch (p_idx) {
|
||||
case 0: return "Size X";
|
||||
case 1: return "Size Y";
|
||||
case 2: return "Size Z";
|
||||
case 3: return "Pos X";
|
||||
case 4: return "Pos Y";
|
||||
case 5: return "Pos Z";
|
||||
case 0:
|
||||
return "Size X";
|
||||
case 1:
|
||||
return "Size Y";
|
||||
case 2:
|
||||
return "Size Z";
|
||||
case 3:
|
||||
return "Pos X";
|
||||
case 4:
|
||||
return "Pos Y";
|
||||
case 5:
|
||||
return "Pos Z";
|
||||
}
|
||||
|
||||
return "";
|
||||
|
@ -2573,12 +2585,18 @@ int ReflectionProbeGizmoPlugin::get_priority() const {
|
|||
String ReflectionProbeGizmoPlugin::get_handle_name(const EditorSpatialGizmo *p_gizmo, int p_idx) const {
|
||||
|
||||
switch (p_idx) {
|
||||
case 0: return "Extents X";
|
||||
case 1: return "Extents Y";
|
||||
case 2: return "Extents Z";
|
||||
case 3: return "Origin X";
|
||||
case 4: return "Origin Y";
|
||||
case 5: return "Origin Z";
|
||||
case 0:
|
||||
return "Extents X";
|
||||
case 1:
|
||||
return "Extents Y";
|
||||
case 2:
|
||||
return "Extents Z";
|
||||
case 3:
|
||||
return "Origin X";
|
||||
case 4:
|
||||
return "Origin Y";
|
||||
case 5:
|
||||
return "Origin Z";
|
||||
}
|
||||
|
||||
return "";
|
||||
|
@ -2760,9 +2778,12 @@ int GIProbeGizmoPlugin::get_priority() const {
|
|||
String GIProbeGizmoPlugin::get_handle_name(const EditorSpatialGizmo *p_gizmo, int p_idx) const {
|
||||
|
||||
switch (p_idx) {
|
||||
case 0: return "Extents X";
|
||||
case 1: return "Extents Y";
|
||||
case 2: return "Extents Z";
|
||||
case 0:
|
||||
return "Extents X";
|
||||
case 1:
|
||||
return "Extents Y";
|
||||
case 2:
|
||||
return "Extents Z";
|
||||
}
|
||||
|
||||
return "";
|
||||
|
@ -2928,9 +2949,12 @@ BakedIndirectLightGizmoPlugin::BakedIndirectLightGizmoPlugin() {
|
|||
String BakedIndirectLightGizmoPlugin::get_handle_name(const EditorSpatialGizmo *p_gizmo, int p_idx) const {
|
||||
|
||||
switch (p_idx) {
|
||||
case 0: return "Extents X";
|
||||
case 1: return "Extents Y";
|
||||
case 2: return "Extents Z";
|
||||
case 0:
|
||||
return "Extents X";
|
||||
case 1:
|
||||
return "Extents Y";
|
||||
case 2:
|
||||
return "Extents Z";
|
||||
}
|
||||
|
||||
return "";
|
||||
|
|
|
@ -133,37 +133,68 @@ String Performance::get_monitor_name(Monitor p_monitor) const {
|
|||
float Performance::get_monitor(Monitor p_monitor) const {
|
||||
|
||||
switch (p_monitor) {
|
||||
case TIME_FPS: return Engine::get_singleton()->get_frames_per_second();
|
||||
case TIME_PROCESS: return _process_time;
|
||||
case TIME_PHYSICS_PROCESS: return _physics_process_time;
|
||||
case MEMORY_STATIC: return Memory::get_mem_usage();
|
||||
case MEMORY_DYNAMIC: return MemoryPool::total_memory;
|
||||
case MEMORY_STATIC_MAX: return Memory::get_mem_max_usage();
|
||||
case MEMORY_DYNAMIC_MAX: return MemoryPool::max_memory;
|
||||
case MEMORY_MESSAGE_BUFFER_MAX: return MessageQueue::get_singleton()->get_max_buffer_usage();
|
||||
case OBJECT_COUNT: return ObjectDB::get_object_count();
|
||||
case OBJECT_RESOURCE_COUNT: return ResourceCache::get_cached_resource_count();
|
||||
case OBJECT_NODE_COUNT: return _get_node_count();
|
||||
case OBJECT_ORPHAN_NODE_COUNT: return Node::orphan_node_count;
|
||||
case RENDER_OBJECTS_IN_FRAME: return VS::get_singleton()->get_render_info(VS::INFO_OBJECTS_IN_FRAME);
|
||||
case RENDER_VERTICES_IN_FRAME: return VS::get_singleton()->get_render_info(VS::INFO_VERTICES_IN_FRAME);
|
||||
case RENDER_MATERIAL_CHANGES_IN_FRAME: return VS::get_singleton()->get_render_info(VS::INFO_MATERIAL_CHANGES_IN_FRAME);
|
||||
case RENDER_SHADER_CHANGES_IN_FRAME: return VS::get_singleton()->get_render_info(VS::INFO_SHADER_CHANGES_IN_FRAME);
|
||||
case RENDER_SURFACE_CHANGES_IN_FRAME: return VS::get_singleton()->get_render_info(VS::INFO_SURFACE_CHANGES_IN_FRAME);
|
||||
case RENDER_DRAW_CALLS_IN_FRAME: return VS::get_singleton()->get_render_info(VS::INFO_DRAW_CALLS_IN_FRAME);
|
||||
case RENDER_2D_ITEMS_IN_FRAME: return VS::get_singleton()->get_render_info(VS::INFO_2D_ITEMS_IN_FRAME);
|
||||
case RENDER_2D_DRAW_CALLS_IN_FRAME: return VS::get_singleton()->get_render_info(VS::INFO_2D_DRAW_CALLS_IN_FRAME);
|
||||
case RENDER_VIDEO_MEM_USED: return VS::get_singleton()->get_render_info(VS::INFO_VIDEO_MEM_USED);
|
||||
case RENDER_TEXTURE_MEM_USED: return VS::get_singleton()->get_render_info(VS::INFO_TEXTURE_MEM_USED);
|
||||
case RENDER_VERTEX_MEM_USED: return VS::get_singleton()->get_render_info(VS::INFO_VERTEX_MEM_USED);
|
||||
case RENDER_USAGE_VIDEO_MEM_TOTAL: return VS::get_singleton()->get_render_info(VS::INFO_USAGE_VIDEO_MEM_TOTAL);
|
||||
case PHYSICS_2D_ACTIVE_OBJECTS: return Physics2DServer::get_singleton()->get_process_info(Physics2DServer::INFO_ACTIVE_OBJECTS);
|
||||
case PHYSICS_2D_COLLISION_PAIRS: return Physics2DServer::get_singleton()->get_process_info(Physics2DServer::INFO_COLLISION_PAIRS);
|
||||
case PHYSICS_2D_ISLAND_COUNT: return Physics2DServer::get_singleton()->get_process_info(Physics2DServer::INFO_ISLAND_COUNT);
|
||||
case PHYSICS_3D_ACTIVE_OBJECTS: return PhysicsServer::get_singleton()->get_process_info(PhysicsServer::INFO_ACTIVE_OBJECTS);
|
||||
case PHYSICS_3D_COLLISION_PAIRS: return PhysicsServer::get_singleton()->get_process_info(PhysicsServer::INFO_COLLISION_PAIRS);
|
||||
case PHYSICS_3D_ISLAND_COUNT: return PhysicsServer::get_singleton()->get_process_info(PhysicsServer::INFO_ISLAND_COUNT);
|
||||
case AUDIO_OUTPUT_LATENCY: return AudioServer::get_singleton()->get_output_latency();
|
||||
case TIME_FPS:
|
||||
return Engine::get_singleton()->get_frames_per_second();
|
||||
case TIME_PROCESS:
|
||||
return _process_time;
|
||||
case TIME_PHYSICS_PROCESS:
|
||||
return _physics_process_time;
|
||||
case MEMORY_STATIC:
|
||||
return Memory::get_mem_usage();
|
||||
case MEMORY_DYNAMIC:
|
||||
return MemoryPool::total_memory;
|
||||
case MEMORY_STATIC_MAX:
|
||||
return Memory::get_mem_max_usage();
|
||||
case MEMORY_DYNAMIC_MAX:
|
||||
return MemoryPool::max_memory;
|
||||
case MEMORY_MESSAGE_BUFFER_MAX:
|
||||
return MessageQueue::get_singleton()->get_max_buffer_usage();
|
||||
case OBJECT_COUNT:
|
||||
return ObjectDB::get_object_count();
|
||||
case OBJECT_RESOURCE_COUNT:
|
||||
return ResourceCache::get_cached_resource_count();
|
||||
case OBJECT_NODE_COUNT:
|
||||
return _get_node_count();
|
||||
case OBJECT_ORPHAN_NODE_COUNT:
|
||||
return Node::orphan_node_count;
|
||||
case RENDER_OBJECTS_IN_FRAME:
|
||||
return VS::get_singleton()->get_render_info(VS::INFO_OBJECTS_IN_FRAME);
|
||||
case RENDER_VERTICES_IN_FRAME:
|
||||
return VS::get_singleton()->get_render_info(VS::INFO_VERTICES_IN_FRAME);
|
||||
case RENDER_MATERIAL_CHANGES_IN_FRAME:
|
||||
return VS::get_singleton()->get_render_info(VS::INFO_MATERIAL_CHANGES_IN_FRAME);
|
||||
case RENDER_SHADER_CHANGES_IN_FRAME:
|
||||
return VS::get_singleton()->get_render_info(VS::INFO_SHADER_CHANGES_IN_FRAME);
|
||||
case RENDER_SURFACE_CHANGES_IN_FRAME:
|
||||
return VS::get_singleton()->get_render_info(VS::INFO_SURFACE_CHANGES_IN_FRAME);
|
||||
case RENDER_DRAW_CALLS_IN_FRAME:
|
||||
return VS::get_singleton()->get_render_info(VS::INFO_DRAW_CALLS_IN_FRAME);
|
||||
case RENDER_2D_ITEMS_IN_FRAME:
|
||||
return VS::get_singleton()->get_render_info(VS::INFO_2D_ITEMS_IN_FRAME);
|
||||
case RENDER_2D_DRAW_CALLS_IN_FRAME:
|
||||
return VS::get_singleton()->get_render_info(VS::INFO_2D_DRAW_CALLS_IN_FRAME);
|
||||
case RENDER_VIDEO_MEM_USED:
|
||||
return VS::get_singleton()->get_render_info(VS::INFO_VIDEO_MEM_USED);
|
||||
case RENDER_TEXTURE_MEM_USED:
|
||||
return VS::get_singleton()->get_render_info(VS::INFO_TEXTURE_MEM_USED);
|
||||
case RENDER_VERTEX_MEM_USED:
|
||||
return VS::get_singleton()->get_render_info(VS::INFO_VERTEX_MEM_USED);
|
||||
case RENDER_USAGE_VIDEO_MEM_TOTAL:
|
||||
return VS::get_singleton()->get_render_info(VS::INFO_USAGE_VIDEO_MEM_TOTAL);
|
||||
case PHYSICS_2D_ACTIVE_OBJECTS:
|
||||
return Physics2DServer::get_singleton()->get_process_info(Physics2DServer::INFO_ACTIVE_OBJECTS);
|
||||
case PHYSICS_2D_COLLISION_PAIRS:
|
||||
return Physics2DServer::get_singleton()->get_process_info(Physics2DServer::INFO_COLLISION_PAIRS);
|
||||
case PHYSICS_2D_ISLAND_COUNT:
|
||||
return Physics2DServer::get_singleton()->get_process_info(Physics2DServer::INFO_ISLAND_COUNT);
|
||||
case PHYSICS_3D_ACTIVE_OBJECTS:
|
||||
return PhysicsServer::get_singleton()->get_process_info(PhysicsServer::INFO_ACTIVE_OBJECTS);
|
||||
case PHYSICS_3D_COLLISION_PAIRS:
|
||||
return PhysicsServer::get_singleton()->get_process_info(PhysicsServer::INFO_COLLISION_PAIRS);
|
||||
case PHYSICS_3D_ISLAND_COUNT:
|
||||
return PhysicsServer::get_singleton()->get_process_info(PhysicsServer::INFO_ISLAND_COUNT);
|
||||
case AUDIO_OUTPUT_LATENCY:
|
||||
return AudioServer::get_singleton()->get_output_latency();
|
||||
|
||||
default: {
|
||||
}
|
||||
|
|
|
@ -199,14 +199,24 @@ class GetClassAndNamespace {
|
|||
|
||||
switch (next) {
|
||||
|
||||
case 'b': res = 8; break;
|
||||
case 't': res = 9; break;
|
||||
case 'n': res = 10; break;
|
||||
case 'f': res = 12; break;
|
||||
case 'b':
|
||||
res = 8;
|
||||
break;
|
||||
case 't':
|
||||
res = 9;
|
||||
break;
|
||||
case 'n':
|
||||
res = 10;
|
||||
break;
|
||||
case 'f':
|
||||
res = 12;
|
||||
break;
|
||||
case 'r':
|
||||
res = 13;
|
||||
break;
|
||||
case '\"': res = '\"'; break;
|
||||
case '\"':
|
||||
res = '\"';
|
||||
break;
|
||||
case '\\':
|
||||
res = '\\';
|
||||
break;
|
||||
|
|
|
@ -61,10 +61,14 @@ static String _typestr(SL::DataType p_type) {
|
|||
static String _prestr(SL::DataPrecision p_pres) {
|
||||
|
||||
switch (p_pres) {
|
||||
case SL::PRECISION_LOWP: return "lowp ";
|
||||
case SL::PRECISION_MEDIUMP: return "mediump ";
|
||||
case SL::PRECISION_HIGHP: return "highp ";
|
||||
case SL::PRECISION_DEFAULT: return "";
|
||||
case SL::PRECISION_LOWP:
|
||||
return "lowp ";
|
||||
case SL::PRECISION_MEDIUMP:
|
||||
return "mediump ";
|
||||
case SL::PRECISION_HIGHP:
|
||||
return "highp ";
|
||||
case SL::PRECISION_DEFAULT:
|
||||
return "";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
@ -77,23 +81,40 @@ static String _opstr(SL::Operator p_op) {
|
|||
static String get_constant_text(SL::DataType p_type, const Vector<SL::ConstantNode::Value> &p_values) {
|
||||
|
||||
switch (p_type) {
|
||||
case SL::TYPE_BOOL: return p_values[0].boolean ? "true" : "false";
|
||||
case SL::TYPE_BVEC2: return String() + "bvec2(" + (p_values[0].boolean ? "true" : "false") + (p_values[1].boolean ? "true" : "false") + ")";
|
||||
case SL::TYPE_BVEC3: return String() + "bvec3(" + (p_values[0].boolean ? "true" : "false") + "," + (p_values[1].boolean ? "true" : "false") + "," + (p_values[2].boolean ? "true" : "false") + ")";
|
||||
case SL::TYPE_BVEC4: return String() + "bvec4(" + (p_values[0].boolean ? "true" : "false") + "," + (p_values[1].boolean ? "true" : "false") + "," + (p_values[2].boolean ? "true" : "false") + "," + (p_values[3].boolean ? "true" : "false") + ")";
|
||||
case SL::TYPE_INT: return rtos(p_values[0].sint);
|
||||
case SL::TYPE_IVEC2: return String() + "ivec2(" + rtos(p_values[0].sint) + "," + rtos(p_values[1].sint) + ")";
|
||||
case SL::TYPE_IVEC3: return String() + "ivec3(" + rtos(p_values[0].sint) + "," + rtos(p_values[1].sint) + "," + rtos(p_values[2].sint) + ")";
|
||||
case SL::TYPE_IVEC4: return String() + "ivec4(" + rtos(p_values[0].sint) + "," + rtos(p_values[1].sint) + "," + rtos(p_values[2].sint) + "," + rtos(p_values[3].sint) + ")";
|
||||
case SL::TYPE_UINT: return rtos(p_values[0].real);
|
||||
case SL::TYPE_UVEC2: return String() + "uvec2(" + rtos(p_values[0].real) + "," + rtos(p_values[1].real) + ")";
|
||||
case SL::TYPE_UVEC3: return String() + "uvec3(" + rtos(p_values[0].real) + "," + rtos(p_values[1].real) + "," + rtos(p_values[2].real) + ")";
|
||||
case SL::TYPE_UVEC4: return String() + "uvec4(" + rtos(p_values[0].real) + "," + rtos(p_values[1].real) + "," + rtos(p_values[2].real) + "," + rtos(p_values[3].real) + ")";
|
||||
case SL::TYPE_FLOAT: return rtos(p_values[0].real);
|
||||
case SL::TYPE_VEC2: return String() + "vec2(" + rtos(p_values[0].real) + "," + rtos(p_values[1].real) + ")";
|
||||
case SL::TYPE_VEC3: return String() + "vec3(" + rtos(p_values[0].real) + "," + rtos(p_values[1].real) + "," + rtos(p_values[2].real) + ")";
|
||||
case SL::TYPE_VEC4: return String() + "vec4(" + rtos(p_values[0].real) + "," + rtos(p_values[1].real) + "," + rtos(p_values[2].real) + "," + rtos(p_values[3].real) + ")";
|
||||
default: ERR_FAIL_V(String());
|
||||
case SL::TYPE_BOOL:
|
||||
return p_values[0].boolean ? "true" : "false";
|
||||
case SL::TYPE_BVEC2:
|
||||
return String() + "bvec2(" + (p_values[0].boolean ? "true" : "false") + (p_values[1].boolean ? "true" : "false") + ")";
|
||||
case SL::TYPE_BVEC3:
|
||||
return String() + "bvec3(" + (p_values[0].boolean ? "true" : "false") + "," + (p_values[1].boolean ? "true" : "false") + "," + (p_values[2].boolean ? "true" : "false") + ")";
|
||||
case SL::TYPE_BVEC4:
|
||||
return String() + "bvec4(" + (p_values[0].boolean ? "true" : "false") + "," + (p_values[1].boolean ? "true" : "false") + "," + (p_values[2].boolean ? "true" : "false") + "," + (p_values[3].boolean ? "true" : "false") + ")";
|
||||
case SL::TYPE_INT:
|
||||
return rtos(p_values[0].sint);
|
||||
case SL::TYPE_IVEC2:
|
||||
return String() + "ivec2(" + rtos(p_values[0].sint) + "," + rtos(p_values[1].sint) + ")";
|
||||
case SL::TYPE_IVEC3:
|
||||
return String() + "ivec3(" + rtos(p_values[0].sint) + "," + rtos(p_values[1].sint) + "," + rtos(p_values[2].sint) + ")";
|
||||
case SL::TYPE_IVEC4:
|
||||
return String() + "ivec4(" + rtos(p_values[0].sint) + "," + rtos(p_values[1].sint) + "," + rtos(p_values[2].sint) + "," + rtos(p_values[3].sint) + ")";
|
||||
case SL::TYPE_UINT:
|
||||
return rtos(p_values[0].real);
|
||||
case SL::TYPE_UVEC2:
|
||||
return String() + "uvec2(" + rtos(p_values[0].real) + "," + rtos(p_values[1].real) + ")";
|
||||
case SL::TYPE_UVEC3:
|
||||
return String() + "uvec3(" + rtos(p_values[0].real) + "," + rtos(p_values[1].real) + "," + rtos(p_values[2].real) + ")";
|
||||
case SL::TYPE_UVEC4:
|
||||
return String() + "uvec4(" + rtos(p_values[0].real) + "," + rtos(p_values[1].real) + "," + rtos(p_values[2].real) + "," + rtos(p_values[3].real) + ")";
|
||||
case SL::TYPE_FLOAT:
|
||||
return rtos(p_values[0].real);
|
||||
case SL::TYPE_VEC2:
|
||||
return String() + "vec2(" + rtos(p_values[0].real) + "," + rtos(p_values[1].real) + ")";
|
||||
case SL::TYPE_VEC3:
|
||||
return String() + "vec3(" + rtos(p_values[0].real) + "," + rtos(p_values[1].real) + "," + rtos(p_values[2].real) + ")";
|
||||
case SL::TYPE_VEC4:
|
||||
return String() + "vec4(" + rtos(p_values[0].real) + "," + rtos(p_values[1].real) + "," + rtos(p_values[2].real) + "," + rtos(p_values[3].real) + ")";
|
||||
default:
|
||||
ERR_FAIL_V(String());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -157,7 +157,8 @@ void HingeJointBullet::set_flag(PhysicsServer::HingeJointFlag p_flag, bool p_val
|
|||
case PhysicsServer::HINGE_JOINT_FLAG_ENABLE_MOTOR:
|
||||
hingeConstraint->enableMotor(p_value);
|
||||
break;
|
||||
case PhysicsServer::HINGE_JOINT_FLAG_MAX: break; // Can't happen, but silences warning
|
||||
case PhysicsServer::HINGE_JOINT_FLAG_MAX:
|
||||
break; // Can't happen, but silences warning
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -344,56 +344,123 @@ real_t SliderJointBullet::getLinearPos() {
|
|||
|
||||
void SliderJointBullet::set_param(PhysicsServer::SliderJointParam p_param, real_t p_value) {
|
||||
switch (p_param) {
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_UPPER: setUpperLinLimit(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_LOWER: setLowerLinLimit(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_SOFTNESS: setSoftnessLimLin(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_RESTITUTION: setRestitutionLimLin(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_DAMPING: setDampingLimLin(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_SOFTNESS: setSoftnessDirLin(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_RESTITUTION: setRestitutionDirLin(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_DAMPING: setDampingDirLin(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_SOFTNESS: setSoftnessOrthoLin(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_RESTITUTION: setRestitutionOrthoLin(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_DAMPING: setDampingOrthoLin(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_UPPER: setUpperAngLimit(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_LOWER: setLowerAngLimit(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_SOFTNESS: setSoftnessLimAng(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_RESTITUTION: setRestitutionLimAng(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_DAMPING: setDampingLimAng(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_SOFTNESS: setSoftnessDirAng(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_RESTITUTION: setRestitutionDirAng(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_DAMPING: setDampingDirAng(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_SOFTNESS: setSoftnessOrthoAng(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_RESTITUTION: setRestitutionOrthoAng(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_DAMPING: setDampingOrthoAng(p_value); break;
|
||||
case PhysicsServer::SLIDER_JOINT_MAX: break; // Can't happen, but silences warning
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_UPPER:
|
||||
setUpperLinLimit(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_LOWER:
|
||||
setLowerLinLimit(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_SOFTNESS:
|
||||
setSoftnessLimLin(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_RESTITUTION:
|
||||
setRestitutionLimLin(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_DAMPING:
|
||||
setDampingLimLin(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_SOFTNESS:
|
||||
setSoftnessDirLin(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_RESTITUTION:
|
||||
setRestitutionDirLin(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_DAMPING:
|
||||
setDampingDirLin(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_SOFTNESS:
|
||||
setSoftnessOrthoLin(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_RESTITUTION:
|
||||
setRestitutionOrthoLin(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_DAMPING:
|
||||
setDampingOrthoLin(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_UPPER:
|
||||
setUpperAngLimit(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_LOWER:
|
||||
setLowerAngLimit(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_SOFTNESS:
|
||||
setSoftnessLimAng(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_RESTITUTION:
|
||||
setRestitutionLimAng(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_DAMPING:
|
||||
setDampingLimAng(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_SOFTNESS:
|
||||
setSoftnessDirAng(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_RESTITUTION:
|
||||
setRestitutionDirAng(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_DAMPING:
|
||||
setDampingDirAng(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_SOFTNESS:
|
||||
setSoftnessOrthoAng(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_RESTITUTION:
|
||||
setRestitutionOrthoAng(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_DAMPING:
|
||||
setDampingOrthoAng(p_value);
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_MAX:
|
||||
break; // Can't happen, but silences warning
|
||||
}
|
||||
}
|
||||
|
||||
real_t SliderJointBullet::get_param(PhysicsServer::SliderJointParam p_param) const {
|
||||
switch (p_param) {
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_UPPER: return getUpperLinLimit();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_LOWER: return getLowerLinLimit();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_SOFTNESS: return getSoftnessLimLin();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_RESTITUTION: return getRestitutionLimLin();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_DAMPING: return getDampingLimLin();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_SOFTNESS: return getSoftnessDirLin();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_RESTITUTION: return getRestitutionDirLin();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_DAMPING: return getDampingDirLin();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_SOFTNESS: return getSoftnessOrthoLin();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_RESTITUTION: return getRestitutionOrthoLin();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_DAMPING: return getDampingOrthoLin();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_UPPER: return getUpperAngLimit();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_LOWER: return getLowerAngLimit();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_SOFTNESS: return getSoftnessLimAng();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_RESTITUTION: return getRestitutionLimAng();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_DAMPING: return getDampingLimAng();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_SOFTNESS: return getSoftnessDirAng();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_RESTITUTION: return getRestitutionDirAng();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_DAMPING: return getDampingDirAng();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_SOFTNESS: return getSoftnessOrthoAng();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_RESTITUTION: return getRestitutionOrthoAng();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_DAMPING: return getDampingOrthoAng();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_UPPER:
|
||||
return getUpperLinLimit();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_LOWER:
|
||||
return getLowerLinLimit();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_SOFTNESS:
|
||||
return getSoftnessLimLin();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_RESTITUTION:
|
||||
return getRestitutionLimLin();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_DAMPING:
|
||||
return getDampingLimLin();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_SOFTNESS:
|
||||
return getSoftnessDirLin();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_RESTITUTION:
|
||||
return getRestitutionDirLin();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_DAMPING:
|
||||
return getDampingDirLin();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_SOFTNESS:
|
||||
return getSoftnessOrthoLin();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_RESTITUTION:
|
||||
return getRestitutionOrthoLin();
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_DAMPING:
|
||||
return getDampingOrthoLin();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_UPPER:
|
||||
return getUpperAngLimit();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_LOWER:
|
||||
return getLowerAngLimit();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_SOFTNESS:
|
||||
return getSoftnessLimAng();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_RESTITUTION:
|
||||
return getRestitutionLimAng();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_DAMPING:
|
||||
return getDampingLimAng();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_SOFTNESS:
|
||||
return getSoftnessDirAng();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_RESTITUTION:
|
||||
return getRestitutionDirAng();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_DAMPING:
|
||||
return getDampingDirAng();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_SOFTNESS:
|
||||
return getSoftnessOrthoAng();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_RESTITUTION:
|
||||
return getRestitutionOrthoAng();
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_DAMPING:
|
||||
return getDampingOrthoAng();
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -90,9 +90,12 @@ Variant CSGShapeSpatialGizmoPlugin::get_handle_value(EditorSpatialGizmo *p_gizmo
|
|||
|
||||
CSGBox *s = Object::cast_to<CSGBox>(cs);
|
||||
switch (p_idx) {
|
||||
case 0: return s->get_width();
|
||||
case 1: return s->get_height();
|
||||
case 2: return s->get_depth();
|
||||
case 0:
|
||||
return s->get_width();
|
||||
case 1:
|
||||
return s->get_height();
|
||||
case 2:
|
||||
return s->get_depth();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -157,9 +160,15 @@ void CSGShapeSpatialGizmoPlugin::set_handle(EditorSpatialGizmo *p_gizmo, int p_i
|
|||
d = 0.001;
|
||||
|
||||
switch (p_idx) {
|
||||
case 0: s->set_width(d * 2); break;
|
||||
case 1: s->set_height(d * 2); break;
|
||||
case 2: s->set_depth(d * 2); break;
|
||||
case 0:
|
||||
s->set_width(d * 2);
|
||||
break;
|
||||
case 1:
|
||||
s->set_height(d * 2);
|
||||
break;
|
||||
case 2:
|
||||
s->set_depth(d * 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -229,9 +238,15 @@ void CSGShapeSpatialGizmoPlugin::commit_handle(EditorSpatialGizmo *p_gizmo, int
|
|||
CSGBox *s = Object::cast_to<CSGBox>(cs);
|
||||
if (p_cancel) {
|
||||
switch (p_idx) {
|
||||
case 0: s->set_width(p_restore); break;
|
||||
case 1: s->set_height(p_restore); break;
|
||||
case 2: s->set_depth(p_restore); break;
|
||||
case 0:
|
||||
s->set_width(p_restore);
|
||||
break;
|
||||
case 1:
|
||||
s->set_height(p_restore);
|
||||
break;
|
||||
case 2:
|
||||
s->set_depth(p_restore);
|
||||
break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -241,9 +256,15 @@ void CSGShapeSpatialGizmoPlugin::commit_handle(EditorSpatialGizmo *p_gizmo, int
|
|||
static const char *method[3] = { "set_width", "set_height", "set_depth" };
|
||||
float current = 0;
|
||||
switch (p_idx) {
|
||||
case 0: current = s->get_width(); break;
|
||||
case 1: current = s->get_height(); break;
|
||||
case 2: current = s->get_depth(); break;
|
||||
case 0:
|
||||
current = s->get_width();
|
||||
break;
|
||||
case 1:
|
||||
current = s->get_height();
|
||||
break;
|
||||
case 2:
|
||||
current = s->get_depth();
|
||||
break;
|
||||
}
|
||||
|
||||
ur->add_do_method(s, method[p_idx], current);
|
||||
|
|
|
@ -180,9 +180,15 @@ CSGBrush *CSGShape::_get_brush() {
|
|||
CSGBrushOperation bop;
|
||||
|
||||
switch (child->get_operation()) {
|
||||
case CSGShape::OPERATION_UNION: bop.merge_brushes(CSGBrushOperation::OPERATION_UNION, *n, *nn2, *nn, snap); break;
|
||||
case CSGShape::OPERATION_INTERSECTION: bop.merge_brushes(CSGBrushOperation::OPERATION_INTERSECTION, *n, *nn2, *nn, snap); break;
|
||||
case CSGShape::OPERATION_SUBTRACTION: bop.merge_brushes(CSGBrushOperation::OPERATION_SUBSTRACTION, *n, *nn2, *nn, snap); break;
|
||||
case CSGShape::OPERATION_UNION:
|
||||
bop.merge_brushes(CSGBrushOperation::OPERATION_UNION, *n, *nn2, *nn, snap);
|
||||
break;
|
||||
case CSGShape::OPERATION_INTERSECTION:
|
||||
bop.merge_brushes(CSGBrushOperation::OPERATION_INTERSECTION, *n, *nn2, *nn, snap);
|
||||
break;
|
||||
case CSGShape::OPERATION_SUBTRACTION:
|
||||
bop.merge_brushes(CSGBrushOperation::OPERATION_SUBSTRACTION, *n, *nn2, *nn, snap);
|
||||
break;
|
||||
}
|
||||
memdelete(n);
|
||||
memdelete(nn2);
|
||||
|
@ -1850,8 +1856,12 @@ CSGBrush *CSGPolygon::_build_brush() {
|
|||
int face_count = 0;
|
||||
|
||||
switch (mode) {
|
||||
case MODE_DEPTH: face_count = triangles.size() * 2 / 3 + (final_polygon.size()) * 2; break;
|
||||
case MODE_SPIN: face_count = (spin_degrees < 360 ? triangles.size() * 2 / 3 : 0) + (final_polygon.size()) * 2 * spin_sides; break;
|
||||
case MODE_DEPTH:
|
||||
face_count = triangles.size() * 2 / 3 + (final_polygon.size()) * 2;
|
||||
break;
|
||||
case MODE_SPIN:
|
||||
face_count = (spin_degrees < 360 ? triangles.size() * 2 / 3 : 0) + (final_polygon.size()) * 2 * spin_sides;
|
||||
break;
|
||||
case MODE_PATH: {
|
||||
float bl = curve->get_baked_length();
|
||||
int splits = MAX(2, Math::ceil(bl / path_interval));
|
||||
|
|
|
@ -204,21 +204,36 @@ public:
|
|||
*/
|
||||
static float get_fbx_fps(int32_t time_mode) {
|
||||
switch (time_mode) {
|
||||
case AssetImportFbx::TIME_MODE_DEFAULT: return 24;
|
||||
case AssetImportFbx::TIME_MODE_120: return 120;
|
||||
case AssetImportFbx::TIME_MODE_100: return 100;
|
||||
case AssetImportFbx::TIME_MODE_60: return 60;
|
||||
case AssetImportFbx::TIME_MODE_50: return 50;
|
||||
case AssetImportFbx::TIME_MODE_48: return 48;
|
||||
case AssetImportFbx::TIME_MODE_30: return 30;
|
||||
case AssetImportFbx::TIME_MODE_30_DROP: return 30;
|
||||
case AssetImportFbx::TIME_MODE_NTSC_DROP_FRAME: return 29.9700262f;
|
||||
case AssetImportFbx::TIME_MODE_NTSC_FULL_FRAME: return 29.9700262f;
|
||||
case AssetImportFbx::TIME_MODE_PAL: return 25;
|
||||
case AssetImportFbx::TIME_MODE_CINEMA: return 24;
|
||||
case AssetImportFbx::TIME_MODE_1000: return 1000;
|
||||
case AssetImportFbx::TIME_MODE_CINEMA_ND: return 23.976f;
|
||||
case AssetImportFbx::TIME_MODE_CUSTOM: return -1;
|
||||
case AssetImportFbx::TIME_MODE_DEFAULT:
|
||||
return 24;
|
||||
case AssetImportFbx::TIME_MODE_120:
|
||||
return 120;
|
||||
case AssetImportFbx::TIME_MODE_100:
|
||||
return 100;
|
||||
case AssetImportFbx::TIME_MODE_60:
|
||||
return 60;
|
||||
case AssetImportFbx::TIME_MODE_50:
|
||||
return 50;
|
||||
case AssetImportFbx::TIME_MODE_48:
|
||||
return 48;
|
||||
case AssetImportFbx::TIME_MODE_30:
|
||||
return 30;
|
||||
case AssetImportFbx::TIME_MODE_30_DROP:
|
||||
return 30;
|
||||
case AssetImportFbx::TIME_MODE_NTSC_DROP_FRAME:
|
||||
return 29.9700262f;
|
||||
case AssetImportFbx::TIME_MODE_NTSC_FULL_FRAME:
|
||||
return 29.9700262f;
|
||||
case AssetImportFbx::TIME_MODE_PAL:
|
||||
return 25;
|
||||
case AssetImportFbx::TIME_MODE_CINEMA:
|
||||
return 24;
|
||||
case AssetImportFbx::TIME_MODE_1000:
|
||||
return 1000;
|
||||
case AssetImportFbx::TIME_MODE_CINEMA_ND:
|
||||
return 23.976f;
|
||||
case AssetImportFbx::TIME_MODE_CUSTOM:
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -186,16 +186,36 @@ int GDScriptCompiler::_parse_assign_right_expression(CodeGen &codegen, const GDS
|
|||
|
||||
switch (p_expression->op) {
|
||||
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN_ADD: var_op = Variant::OP_ADD; break;
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN_SUB: var_op = Variant::OP_SUBTRACT; break;
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN_MUL: var_op = Variant::OP_MULTIPLY; break;
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN_DIV: var_op = Variant::OP_DIVIDE; break;
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN_MOD: var_op = Variant::OP_MODULE; break;
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN_SHIFT_LEFT: var_op = Variant::OP_SHIFT_LEFT; break;
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN_SHIFT_RIGHT: var_op = Variant::OP_SHIFT_RIGHT; break;
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN_BIT_AND: var_op = Variant::OP_BIT_AND; break;
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN_BIT_OR: var_op = Variant::OP_BIT_OR; break;
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN_BIT_XOR: var_op = Variant::OP_BIT_XOR; break;
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN_ADD:
|
||||
var_op = Variant::OP_ADD;
|
||||
break;
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN_SUB:
|
||||
var_op = Variant::OP_SUBTRACT;
|
||||
break;
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN_MUL:
|
||||
var_op = Variant::OP_MULTIPLY;
|
||||
break;
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN_DIV:
|
||||
var_op = Variant::OP_DIVIDE;
|
||||
break;
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN_MOD:
|
||||
var_op = Variant::OP_MODULE;
|
||||
break;
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN_SHIFT_LEFT:
|
||||
var_op = Variant::OP_SHIFT_LEFT;
|
||||
break;
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN_SHIFT_RIGHT:
|
||||
var_op = Variant::OP_SHIFT_RIGHT;
|
||||
break;
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN_BIT_AND:
|
||||
var_op = Variant::OP_BIT_AND;
|
||||
break;
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN_BIT_OR:
|
||||
var_op = Variant::OP_BIT_OR;
|
||||
break;
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN_BIT_XOR:
|
||||
var_op = Variant::OP_BIT_XOR;
|
||||
break;
|
||||
case GDScriptParser::OperatorNode::OP_INIT_ASSIGN:
|
||||
case GDScriptParser::OperatorNode::OP_ASSIGN: {
|
||||
|
||||
|
|
|
@ -1088,16 +1088,36 @@ static bool _guess_expression_type(GDScriptCompletionContext &p_context, const G
|
|||
|
||||
Variant::Operator vop = Variant::OP_MAX;
|
||||
switch (op->op) {
|
||||
case GDScriptParser::OperatorNode::OP_ADD: vop = Variant::OP_ADD; break;
|
||||
case GDScriptParser::OperatorNode::OP_SUB: vop = Variant::OP_SUBTRACT; break;
|
||||
case GDScriptParser::OperatorNode::OP_MUL: vop = Variant::OP_MULTIPLY; break;
|
||||
case GDScriptParser::OperatorNode::OP_DIV: vop = Variant::OP_DIVIDE; break;
|
||||
case GDScriptParser::OperatorNode::OP_MOD: vop = Variant::OP_MODULE; break;
|
||||
case GDScriptParser::OperatorNode::OP_SHIFT_LEFT: vop = Variant::OP_SHIFT_LEFT; break;
|
||||
case GDScriptParser::OperatorNode::OP_SHIFT_RIGHT: vop = Variant::OP_SHIFT_RIGHT; break;
|
||||
case GDScriptParser::OperatorNode::OP_BIT_AND: vop = Variant::OP_BIT_AND; break;
|
||||
case GDScriptParser::OperatorNode::OP_BIT_OR: vop = Variant::OP_BIT_OR; break;
|
||||
case GDScriptParser::OperatorNode::OP_BIT_XOR: vop = Variant::OP_BIT_XOR; break;
|
||||
case GDScriptParser::OperatorNode::OP_ADD:
|
||||
vop = Variant::OP_ADD;
|
||||
break;
|
||||
case GDScriptParser::OperatorNode::OP_SUB:
|
||||
vop = Variant::OP_SUBTRACT;
|
||||
break;
|
||||
case GDScriptParser::OperatorNode::OP_MUL:
|
||||
vop = Variant::OP_MULTIPLY;
|
||||
break;
|
||||
case GDScriptParser::OperatorNode::OP_DIV:
|
||||
vop = Variant::OP_DIVIDE;
|
||||
break;
|
||||
case GDScriptParser::OperatorNode::OP_MOD:
|
||||
vop = Variant::OP_MODULE;
|
||||
break;
|
||||
case GDScriptParser::OperatorNode::OP_SHIFT_LEFT:
|
||||
vop = Variant::OP_SHIFT_LEFT;
|
||||
break;
|
||||
case GDScriptParser::OperatorNode::OP_SHIFT_RIGHT:
|
||||
vop = Variant::OP_SHIFT_RIGHT;
|
||||
break;
|
||||
case GDScriptParser::OperatorNode::OP_BIT_AND:
|
||||
vop = Variant::OP_BIT_AND;
|
||||
break;
|
||||
case GDScriptParser::OperatorNode::OP_BIT_OR:
|
||||
vop = Variant::OP_BIT_OR;
|
||||
break;
|
||||
case GDScriptParser::OperatorNode::OP_BIT_XOR:
|
||||
vop = Variant::OP_BIT_XOR;
|
||||
break;
|
||||
default: {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -910,10 +910,18 @@ GDScriptParser::Node *GDScriptParser::_parse_expression(Node *p_parent, bool p_s
|
|||
e.is_op = true;
|
||||
|
||||
switch (tokenizer->get_token()) {
|
||||
case GDScriptTokenizer::TK_OP_ADD: e.op = OperatorNode::OP_POS; break;
|
||||
case GDScriptTokenizer::TK_OP_SUB: e.op = OperatorNode::OP_NEG; break;
|
||||
case GDScriptTokenizer::TK_OP_NOT: e.op = OperatorNode::OP_NOT; break;
|
||||
case GDScriptTokenizer::TK_OP_BIT_INVERT: e.op = OperatorNode::OP_BIT_INVERT; break;
|
||||
case GDScriptTokenizer::TK_OP_ADD:
|
||||
e.op = OperatorNode::OP_POS;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_SUB:
|
||||
e.op = OperatorNode::OP_NEG;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_NOT:
|
||||
e.op = OperatorNode::OP_NOT;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_BIT_INVERT:
|
||||
e.op = OperatorNode::OP_BIT_INVERT;
|
||||
break;
|
||||
default: {
|
||||
}
|
||||
}
|
||||
|
@ -1329,25 +1337,55 @@ GDScriptParser::Node *GDScriptParser::_parse_expression(Node *p_parent, bool p_s
|
|||
|
||||
switch (tokenizer->get_token()) { //see operator
|
||||
|
||||
case GDScriptTokenizer::TK_OP_IN: op = OperatorNode::OP_IN; break;
|
||||
case GDScriptTokenizer::TK_OP_EQUAL: op = OperatorNode::OP_EQUAL; break;
|
||||
case GDScriptTokenizer::TK_OP_NOT_EQUAL: op = OperatorNode::OP_NOT_EQUAL; break;
|
||||
case GDScriptTokenizer::TK_OP_LESS: op = OperatorNode::OP_LESS; break;
|
||||
case GDScriptTokenizer::TK_OP_LESS_EQUAL: op = OperatorNode::OP_LESS_EQUAL; break;
|
||||
case GDScriptTokenizer::TK_OP_GREATER: op = OperatorNode::OP_GREATER; break;
|
||||
case GDScriptTokenizer::TK_OP_GREATER_EQUAL: op = OperatorNode::OP_GREATER_EQUAL; break;
|
||||
case GDScriptTokenizer::TK_OP_AND: op = OperatorNode::OP_AND; break;
|
||||
case GDScriptTokenizer::TK_OP_OR: op = OperatorNode::OP_OR; break;
|
||||
case GDScriptTokenizer::TK_OP_ADD: op = OperatorNode::OP_ADD; break;
|
||||
case GDScriptTokenizer::TK_OP_SUB: op = OperatorNode::OP_SUB; break;
|
||||
case GDScriptTokenizer::TK_OP_MUL: op = OperatorNode::OP_MUL; break;
|
||||
case GDScriptTokenizer::TK_OP_DIV: op = OperatorNode::OP_DIV; break;
|
||||
case GDScriptTokenizer::TK_OP_IN:
|
||||
op = OperatorNode::OP_IN;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_EQUAL:
|
||||
op = OperatorNode::OP_EQUAL;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_NOT_EQUAL:
|
||||
op = OperatorNode::OP_NOT_EQUAL;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_LESS:
|
||||
op = OperatorNode::OP_LESS;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_LESS_EQUAL:
|
||||
op = OperatorNode::OP_LESS_EQUAL;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_GREATER:
|
||||
op = OperatorNode::OP_GREATER;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_GREATER_EQUAL:
|
||||
op = OperatorNode::OP_GREATER_EQUAL;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_AND:
|
||||
op = OperatorNode::OP_AND;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_OR:
|
||||
op = OperatorNode::OP_OR;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_ADD:
|
||||
op = OperatorNode::OP_ADD;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_SUB:
|
||||
op = OperatorNode::OP_SUB;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_MUL:
|
||||
op = OperatorNode::OP_MUL;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_DIV:
|
||||
op = OperatorNode::OP_DIV;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_MOD:
|
||||
op = OperatorNode::OP_MOD;
|
||||
break;
|
||||
//case GDScriptTokenizer::TK_OP_NEG: op=OperatorNode::OP_NEG ; break;
|
||||
case GDScriptTokenizer::TK_OP_SHIFT_LEFT: op = OperatorNode::OP_SHIFT_LEFT; break;
|
||||
case GDScriptTokenizer::TK_OP_SHIFT_RIGHT: op = OperatorNode::OP_SHIFT_RIGHT; break;
|
||||
case GDScriptTokenizer::TK_OP_SHIFT_LEFT:
|
||||
op = OperatorNode::OP_SHIFT_LEFT;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_SHIFT_RIGHT:
|
||||
op = OperatorNode::OP_SHIFT_RIGHT;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN: {
|
||||
_VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN;
|
||||
|
||||
|
@ -1364,23 +1402,57 @@ GDScriptParser::Node *GDScriptParser::_parse_expression(Node *p_parent, bool p_s
|
|||
}
|
||||
|
||||
} break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN_ADD: _VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_ADD; break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN_SUB: _VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_SUB; break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN_MUL: _VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_MUL; break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN_DIV: _VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_DIV; break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN_MOD: _VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_MOD; break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN_SHIFT_LEFT: _VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_SHIFT_LEFT; break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN_SHIFT_RIGHT: _VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_SHIFT_RIGHT; break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN_BIT_AND: _VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_BIT_AND; break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN_BIT_OR: _VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_BIT_OR; break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN_BIT_XOR: _VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_BIT_XOR; break;
|
||||
case GDScriptTokenizer::TK_OP_BIT_AND: op = OperatorNode::OP_BIT_AND; break;
|
||||
case GDScriptTokenizer::TK_OP_BIT_OR: op = OperatorNode::OP_BIT_OR; break;
|
||||
case GDScriptTokenizer::TK_OP_BIT_XOR: op = OperatorNode::OP_BIT_XOR; break;
|
||||
case GDScriptTokenizer::TK_PR_IS: op = OperatorNode::OP_IS; break;
|
||||
case GDScriptTokenizer::TK_CF_IF: op = OperatorNode::OP_TERNARY_IF; break;
|
||||
case GDScriptTokenizer::TK_CF_ELSE: op = OperatorNode::OP_TERNARY_ELSE; break;
|
||||
default: valid = false; break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN_ADD:
|
||||
_VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_ADD;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN_SUB:
|
||||
_VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_SUB;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN_MUL:
|
||||
_VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_MUL;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN_DIV:
|
||||
_VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_DIV;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN_MOD:
|
||||
_VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_MOD;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN_SHIFT_LEFT:
|
||||
_VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_SHIFT_LEFT;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN_SHIFT_RIGHT:
|
||||
_VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_SHIFT_RIGHT;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN_BIT_AND:
|
||||
_VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_BIT_AND;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN_BIT_OR:
|
||||
_VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_BIT_OR;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_ASSIGN_BIT_XOR:
|
||||
_VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_BIT_XOR;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_BIT_AND:
|
||||
op = OperatorNode::OP_BIT_AND;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_BIT_OR:
|
||||
op = OperatorNode::OP_BIT_OR;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_OP_BIT_XOR:
|
||||
op = OperatorNode::OP_BIT_XOR;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_PR_IS:
|
||||
op = OperatorNode::OP_IS;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_CF_IF:
|
||||
op = OperatorNode::OP_TERNARY_IF;
|
||||
break;
|
||||
case GDScriptTokenizer::TK_CF_ELSE:
|
||||
op = OperatorNode::OP_TERNARY_ELSE;
|
||||
break;
|
||||
default:
|
||||
valid = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (valid) {
|
||||
|
@ -1433,36 +1505,74 @@ GDScriptParser::Node *GDScriptParser::_parse_expression(Node *p_parent, bool p_s
|
|||
unary = true;
|
||||
break;
|
||||
|
||||
case OperatorNode::OP_MUL: priority = 2; break;
|
||||
case OperatorNode::OP_DIV: priority = 2; break;
|
||||
case OperatorNode::OP_MOD: priority = 2; break;
|
||||
case OperatorNode::OP_MUL:
|
||||
priority = 2;
|
||||
break;
|
||||
case OperatorNode::OP_DIV:
|
||||
priority = 2;
|
||||
break;
|
||||
case OperatorNode::OP_MOD:
|
||||
priority = 2;
|
||||
break;
|
||||
|
||||
case OperatorNode::OP_ADD: priority = 3; break;
|
||||
case OperatorNode::OP_SUB: priority = 3; break;
|
||||
case OperatorNode::OP_ADD:
|
||||
priority = 3;
|
||||
break;
|
||||
case OperatorNode::OP_SUB:
|
||||
priority = 3;
|
||||
break;
|
||||
|
||||
case OperatorNode::OP_SHIFT_LEFT: priority = 4; break;
|
||||
case OperatorNode::OP_SHIFT_RIGHT: priority = 4; break;
|
||||
case OperatorNode::OP_SHIFT_LEFT:
|
||||
priority = 4;
|
||||
break;
|
||||
case OperatorNode::OP_SHIFT_RIGHT:
|
||||
priority = 4;
|
||||
break;
|
||||
|
||||
case OperatorNode::OP_BIT_AND: priority = 5; break;
|
||||
case OperatorNode::OP_BIT_XOR: priority = 6; break;
|
||||
case OperatorNode::OP_BIT_OR: priority = 7; break;
|
||||
case OperatorNode::OP_BIT_AND:
|
||||
priority = 5;
|
||||
break;
|
||||
case OperatorNode::OP_BIT_XOR:
|
||||
priority = 6;
|
||||
break;
|
||||
case OperatorNode::OP_BIT_OR:
|
||||
priority = 7;
|
||||
break;
|
||||
|
||||
case OperatorNode::OP_LESS: priority = 8; break;
|
||||
case OperatorNode::OP_LESS_EQUAL: priority = 8; break;
|
||||
case OperatorNode::OP_GREATER: priority = 8; break;
|
||||
case OperatorNode::OP_GREATER_EQUAL: priority = 8; break;
|
||||
case OperatorNode::OP_LESS:
|
||||
priority = 8;
|
||||
break;
|
||||
case OperatorNode::OP_LESS_EQUAL:
|
||||
priority = 8;
|
||||
break;
|
||||
case OperatorNode::OP_GREATER:
|
||||
priority = 8;
|
||||
break;
|
||||
case OperatorNode::OP_GREATER_EQUAL:
|
||||
priority = 8;
|
||||
break;
|
||||
|
||||
case OperatorNode::OP_EQUAL: priority = 8; break;
|
||||
case OperatorNode::OP_NOT_EQUAL: priority = 8; break;
|
||||
case OperatorNode::OP_EQUAL:
|
||||
priority = 8;
|
||||
break;
|
||||
case OperatorNode::OP_NOT_EQUAL:
|
||||
priority = 8;
|
||||
break;
|
||||
|
||||
case OperatorNode::OP_IN: priority = 10; break;
|
||||
case OperatorNode::OP_IN:
|
||||
priority = 10;
|
||||
break;
|
||||
|
||||
case OperatorNode::OP_NOT:
|
||||
priority = 11;
|
||||
unary = true;
|
||||
break;
|
||||
case OperatorNode::OP_AND: priority = 12; break;
|
||||
case OperatorNode::OP_OR: priority = 13; break;
|
||||
case OperatorNode::OP_AND:
|
||||
priority = 12;
|
||||
break;
|
||||
case OperatorNode::OP_OR:
|
||||
priority = 13;
|
||||
break;
|
||||
|
||||
case OperatorNode::OP_TERNARY_IF:
|
||||
priority = 14;
|
||||
|
@ -1475,17 +1585,39 @@ GDScriptParser::Node *GDScriptParser::_parse_expression(Node *p_parent, bool p_s
|
|||
// Rigth-to-left should be false in this case, otherwise it would always error.
|
||||
break;
|
||||
|
||||
case OperatorNode::OP_ASSIGN: priority = 15; break;
|
||||
case OperatorNode::OP_ASSIGN_ADD: priority = 15; break;
|
||||
case OperatorNode::OP_ASSIGN_SUB: priority = 15; break;
|
||||
case OperatorNode::OP_ASSIGN_MUL: priority = 15; break;
|
||||
case OperatorNode::OP_ASSIGN_DIV: priority = 15; break;
|
||||
case OperatorNode::OP_ASSIGN_MOD: priority = 15; break;
|
||||
case OperatorNode::OP_ASSIGN_SHIFT_LEFT: priority = 15; break;
|
||||
case OperatorNode::OP_ASSIGN_SHIFT_RIGHT: priority = 15; break;
|
||||
case OperatorNode::OP_ASSIGN_BIT_AND: priority = 15; break;
|
||||
case OperatorNode::OP_ASSIGN_BIT_OR: priority = 15; break;
|
||||
case OperatorNode::OP_ASSIGN_BIT_XOR: priority = 15; break;
|
||||
case OperatorNode::OP_ASSIGN:
|
||||
priority = 15;
|
||||
break;
|
||||
case OperatorNode::OP_ASSIGN_ADD:
|
||||
priority = 15;
|
||||
break;
|
||||
case OperatorNode::OP_ASSIGN_SUB:
|
||||
priority = 15;
|
||||
break;
|
||||
case OperatorNode::OP_ASSIGN_MUL:
|
||||
priority = 15;
|
||||
break;
|
||||
case OperatorNode::OP_ASSIGN_DIV:
|
||||
priority = 15;
|
||||
break;
|
||||
case OperatorNode::OP_ASSIGN_MOD:
|
||||
priority = 15;
|
||||
break;
|
||||
case OperatorNode::OP_ASSIGN_SHIFT_LEFT:
|
||||
priority = 15;
|
||||
break;
|
||||
case OperatorNode::OP_ASSIGN_SHIFT_RIGHT:
|
||||
priority = 15;
|
||||
break;
|
||||
case OperatorNode::OP_ASSIGN_BIT_AND:
|
||||
priority = 15;
|
||||
break;
|
||||
case OperatorNode::OP_ASSIGN_BIT_OR:
|
||||
priority = 15;
|
||||
break;
|
||||
case OperatorNode::OP_ASSIGN_BIT_XOR:
|
||||
priority = 15;
|
||||
break;
|
||||
|
||||
default: {
|
||||
_set_error("GDScriptParser bug, invalid operator in expression: " + itos(expression[i].op));
|
||||
|
@ -3191,9 +3323,15 @@ void GDScriptParser::_parse_block(BlockNode *p_block, bool p_static) {
|
|||
|
||||
ConstantNode *cn = alloc_node<ConstantNode>();
|
||||
switch (args.size()) {
|
||||
case 1: cn->value = (int)constants[0]; break;
|
||||
case 2: cn->value = Vector2(constants[0], constants[1]); break;
|
||||
case 3: cn->value = Vector3(constants[0], constants[1], constants[2]); break;
|
||||
case 1:
|
||||
cn->value = (int)constants[0];
|
||||
break;
|
||||
case 2:
|
||||
cn->value = Vector2(constants[0], constants[1]);
|
||||
break;
|
||||
case 3:
|
||||
cn->value = Vector3(constants[0], constants[1], constants[2]);
|
||||
break;
|
||||
}
|
||||
cn->datatype = _type_from_variant(cn->value);
|
||||
container = cn;
|
||||
|
@ -3205,9 +3343,15 @@ void GDScriptParser::_parse_block(BlockNode *p_block, bool p_static) {
|
|||
on->arguments.push_back(tn);
|
||||
|
||||
switch (args.size()) {
|
||||
case 1: tn->vtype = Variant::INT; break;
|
||||
case 2: tn->vtype = Variant::VECTOR2; break;
|
||||
case 3: tn->vtype = Variant::VECTOR3; break;
|
||||
case 1:
|
||||
tn->vtype = Variant::INT;
|
||||
break;
|
||||
case 2:
|
||||
tn->vtype = Variant::VECTOR2;
|
||||
break;
|
||||
case 3:
|
||||
tn->vtype = Variant::VECTOR3;
|
||||
break;
|
||||
}
|
||||
|
||||
for (int i = 0; i < args.size(); i++) {
|
||||
|
|
|
@ -800,16 +800,36 @@ void GDScriptTokenizerText::_advance() {
|
|||
|
||||
switch (next) {
|
||||
|
||||
case 'a': res = 7; break;
|
||||
case 'b': res = 8; break;
|
||||
case 't': res = 9; break;
|
||||
case 'n': res = 10; break;
|
||||
case 'v': res = 11; break;
|
||||
case 'f': res = 12; break;
|
||||
case 'r': res = 13; break;
|
||||
case '\'': res = '\''; break;
|
||||
case '\"': res = '\"'; break;
|
||||
case '\\': res = '\\'; break;
|
||||
case 'a':
|
||||
res = 7;
|
||||
break;
|
||||
case 'b':
|
||||
res = 8;
|
||||
break;
|
||||
case 't':
|
||||
res = 9;
|
||||
break;
|
||||
case 'n':
|
||||
res = 10;
|
||||
break;
|
||||
case 'v':
|
||||
res = 11;
|
||||
break;
|
||||
case 'f':
|
||||
res = 12;
|
||||
break;
|
||||
case 'r':
|
||||
res = 13;
|
||||
break;
|
||||
case '\'':
|
||||
res = '\'';
|
||||
break;
|
||||
case '\"':
|
||||
res = '\"';
|
||||
break;
|
||||
case '\\':
|
||||
res = '\\';
|
||||
break;
|
||||
case '/':
|
||||
res = '/';
|
||||
break; //wtf
|
||||
|
|
|
@ -181,14 +181,24 @@ ScriptClassParser::Token ScriptClassParser::get_token() {
|
|||
CharType res = 0;
|
||||
|
||||
switch (next) {
|
||||
case 'b': res = 8; break;
|
||||
case 't': res = 9; break;
|
||||
case 'n': res = 10; break;
|
||||
case 'f': res = 12; break;
|
||||
case 'b':
|
||||
res = 8;
|
||||
break;
|
||||
case 't':
|
||||
res = 9;
|
||||
break;
|
||||
case 'n':
|
||||
res = 10;
|
||||
break;
|
||||
case 'f':
|
||||
res = 12;
|
||||
break;
|
||||
case 'r':
|
||||
res = 13;
|
||||
break;
|
||||
case '\"': res = '\"'; break;
|
||||
case '\"':
|
||||
res = '\"';
|
||||
break;
|
||||
case '\\':
|
||||
res = '\\';
|
||||
break;
|
||||
|
|
|
@ -428,7 +428,8 @@ void GDMonoField::set_value_from_variant(MonoObject *p_object, const Variant &p_
|
|||
case Variant::POOL_COLOR_ARRAY: {
|
||||
SET_FROM_ARRAY(PoolColorArray);
|
||||
} break;
|
||||
default: break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} break;
|
||||
|
||||
|
|
|
@ -108,9 +108,13 @@ RES ResourceFormatPVR::load(const String &p_path, const String &p_original_path,
|
|||
switch (flags & 0xFF) {
|
||||
|
||||
case 0x18:
|
||||
case 0xC: format = (flags & PVR_HAS_ALPHA) ? Image::FORMAT_PVRTC2A : Image::FORMAT_PVRTC2; break;
|
||||
case 0xC:
|
||||
format = (flags & PVR_HAS_ALPHA) ? Image::FORMAT_PVRTC2A : Image::FORMAT_PVRTC2;
|
||||
break;
|
||||
case 0x19:
|
||||
case 0xD: format = (flags & PVR_HAS_ALPHA) ? Image::FORMAT_PVRTC4A : Image::FORMAT_PVRTC4; break;
|
||||
case 0xD:
|
||||
format = (flags & PVR_HAS_ALPHA) ? Image::FORMAT_PVRTC4A : Image::FORMAT_PVRTC4;
|
||||
break;
|
||||
case 0x16:
|
||||
format = Image::FORMAT_L8;
|
||||
break;
|
||||
|
|
|
@ -355,74 +355,182 @@ static Color _color_from_type(Variant::Type p_type, bool dark_theme = true) {
|
|||
Color color;
|
||||
if (dark_theme)
|
||||
switch (p_type) {
|
||||
case Variant::NIL: color = Color(0.41, 0.93, 0.74); break;
|
||||
case Variant::NIL:
|
||||
color = Color(0.41, 0.93, 0.74);
|
||||
break;
|
||||
|
||||
case Variant::BOOL: color = Color(0.55, 0.65, 0.94); break;
|
||||
case Variant::INT: color = Color(0.49, 0.78, 0.94); break;
|
||||
case Variant::REAL: color = Color(0.38, 0.85, 0.96); break;
|
||||
case Variant::STRING: color = Color(0.42, 0.65, 0.93); break;
|
||||
case Variant::BOOL:
|
||||
color = Color(0.55, 0.65, 0.94);
|
||||
break;
|
||||
case Variant::INT:
|
||||
color = Color(0.49, 0.78, 0.94);
|
||||
break;
|
||||
case Variant::REAL:
|
||||
color = Color(0.38, 0.85, 0.96);
|
||||
break;
|
||||
case Variant::STRING:
|
||||
color = Color(0.42, 0.65, 0.93);
|
||||
break;
|
||||
|
||||
case Variant::VECTOR2: color = Color(0.74, 0.57, 0.95); break;
|
||||
case Variant::RECT2: color = Color(0.95, 0.57, 0.65); break;
|
||||
case Variant::VECTOR3: color = Color(0.84, 0.49, 0.93); break;
|
||||
case Variant::TRANSFORM2D: color = Color(0.77, 0.93, 0.41); break;
|
||||
case Variant::PLANE: color = Color(0.97, 0.44, 0.44); break;
|
||||
case Variant::QUAT: color = Color(0.93, 0.41, 0.64); break;
|
||||
case Variant::AABB: color = Color(0.93, 0.47, 0.57); break;
|
||||
case Variant::BASIS: color = Color(0.89, 0.93, 0.41); break;
|
||||
case Variant::TRANSFORM: color = Color(0.96, 0.66, 0.43); break;
|
||||
case Variant::VECTOR2:
|
||||
color = Color(0.74, 0.57, 0.95);
|
||||
break;
|
||||
case Variant::RECT2:
|
||||
color = Color(0.95, 0.57, 0.65);
|
||||
break;
|
||||
case Variant::VECTOR3:
|
||||
color = Color(0.84, 0.49, 0.93);
|
||||
break;
|
||||
case Variant::TRANSFORM2D:
|
||||
color = Color(0.77, 0.93, 0.41);
|
||||
break;
|
||||
case Variant::PLANE:
|
||||
color = Color(0.97, 0.44, 0.44);
|
||||
break;
|
||||
case Variant::QUAT:
|
||||
color = Color(0.93, 0.41, 0.64);
|
||||
break;
|
||||
case Variant::AABB:
|
||||
color = Color(0.93, 0.47, 0.57);
|
||||
break;
|
||||
case Variant::BASIS:
|
||||
color = Color(0.89, 0.93, 0.41);
|
||||
break;
|
||||
case Variant::TRANSFORM:
|
||||
color = Color(0.96, 0.66, 0.43);
|
||||
break;
|
||||
|
||||
case Variant::COLOR: color = Color(0.62, 1.0, 0.44); break;
|
||||
case Variant::NODE_PATH: color = Color(0.41, 0.58, 0.93); break;
|
||||
case Variant::_RID: color = Color(0.41, 0.93, 0.6); break;
|
||||
case Variant::OBJECT: color = Color(0.47, 0.95, 0.91); break;
|
||||
case Variant::DICTIONARY: color = Color(0.47, 0.93, 0.69); break;
|
||||
case Variant::COLOR:
|
||||
color = Color(0.62, 1.0, 0.44);
|
||||
break;
|
||||
case Variant::NODE_PATH:
|
||||
color = Color(0.41, 0.58, 0.93);
|
||||
break;
|
||||
case Variant::_RID:
|
||||
color = Color(0.41, 0.93, 0.6);
|
||||
break;
|
||||
case Variant::OBJECT:
|
||||
color = Color(0.47, 0.95, 0.91);
|
||||
break;
|
||||
case Variant::DICTIONARY:
|
||||
color = Color(0.47, 0.93, 0.69);
|
||||
break;
|
||||
|
||||
case Variant::ARRAY: color = Color(0.88, 0.88, 0.88); break;
|
||||
case Variant::POOL_BYTE_ARRAY: color = Color(0.67, 0.96, 0.78); break;
|
||||
case Variant::POOL_INT_ARRAY: color = Color(0.69, 0.86, 0.96); break;
|
||||
case Variant::POOL_REAL_ARRAY: color = Color(0.59, 0.91, 0.97); break;
|
||||
case Variant::POOL_STRING_ARRAY: color = Color(0.62, 0.77, 0.95); break;
|
||||
case Variant::POOL_VECTOR2_ARRAY: color = Color(0.82, 0.7, 0.96); break;
|
||||
case Variant::POOL_VECTOR3_ARRAY: color = Color(0.87, 0.61, 0.95); break;
|
||||
case Variant::POOL_COLOR_ARRAY: color = Color(0.91, 1.0, 0.59); break;
|
||||
case Variant::ARRAY:
|
||||
color = Color(0.88, 0.88, 0.88);
|
||||
break;
|
||||
case Variant::POOL_BYTE_ARRAY:
|
||||
color = Color(0.67, 0.96, 0.78);
|
||||
break;
|
||||
case Variant::POOL_INT_ARRAY:
|
||||
color = Color(0.69, 0.86, 0.96);
|
||||
break;
|
||||
case Variant::POOL_REAL_ARRAY:
|
||||
color = Color(0.59, 0.91, 0.97);
|
||||
break;
|
||||
case Variant::POOL_STRING_ARRAY:
|
||||
color = Color(0.62, 0.77, 0.95);
|
||||
break;
|
||||
case Variant::POOL_VECTOR2_ARRAY:
|
||||
color = Color(0.82, 0.7, 0.96);
|
||||
break;
|
||||
case Variant::POOL_VECTOR3_ARRAY:
|
||||
color = Color(0.87, 0.61, 0.95);
|
||||
break;
|
||||
case Variant::POOL_COLOR_ARRAY:
|
||||
color = Color(0.91, 1.0, 0.59);
|
||||
break;
|
||||
|
||||
default:
|
||||
color.set_hsv(p_type / float(Variant::VARIANT_MAX), 0.7, 0.7);
|
||||
}
|
||||
else
|
||||
switch (p_type) {
|
||||
case Variant::NIL: color = Color(0.15, 0.89, 0.63); break;
|
||||
case Variant::NIL:
|
||||
color = Color(0.15, 0.89, 0.63);
|
||||
break;
|
||||
|
||||
case Variant::BOOL: color = Color(0.43, 0.56, 0.92); break;
|
||||
case Variant::INT: color = Color(0.31, 0.7, 0.91); break;
|
||||
case Variant::REAL: color = Color(0.15, 0.8, 0.94); break;
|
||||
case Variant::STRING: color = Color(0.27, 0.56, 0.91); break;
|
||||
case Variant::BOOL:
|
||||
color = Color(0.43, 0.56, 0.92);
|
||||
break;
|
||||
case Variant::INT:
|
||||
color = Color(0.31, 0.7, 0.91);
|
||||
break;
|
||||
case Variant::REAL:
|
||||
color = Color(0.15, 0.8, 0.94);
|
||||
break;
|
||||
case Variant::STRING:
|
||||
color = Color(0.27, 0.56, 0.91);
|
||||
break;
|
||||
|
||||
case Variant::VECTOR2: color = Color(0.68, 0.46, 0.93); break;
|
||||
case Variant::RECT2: color = Color(0.93, 0.46, 0.56); break;
|
||||
case Variant::VECTOR3: color = Color(0.86, 0.42, 0.93); break;
|
||||
case Variant::TRANSFORM2D: color = Color(0.59, 0.81, 0.1); break;
|
||||
case Variant::PLANE: color = Color(0.97, 0.44, 0.44); break;
|
||||
case Variant::QUAT: color = Color(0.93, 0.41, 0.64); break;
|
||||
case Variant::AABB: color = Color(0.93, 0.47, 0.57); break;
|
||||
case Variant::BASIS: color = Color(0.7, 0.73, 0.1); break;
|
||||
case Variant::TRANSFORM: color = Color(0.96, 0.56, 0.28); break;
|
||||
case Variant::VECTOR2:
|
||||
color = Color(0.68, 0.46, 0.93);
|
||||
break;
|
||||
case Variant::RECT2:
|
||||
color = Color(0.93, 0.46, 0.56);
|
||||
break;
|
||||
case Variant::VECTOR3:
|
||||
color = Color(0.86, 0.42, 0.93);
|
||||
break;
|
||||
case Variant::TRANSFORM2D:
|
||||
color = Color(0.59, 0.81, 0.1);
|
||||
break;
|
||||
case Variant::PLANE:
|
||||
color = Color(0.97, 0.44, 0.44);
|
||||
break;
|
||||
case Variant::QUAT:
|
||||
color = Color(0.93, 0.41, 0.64);
|
||||
break;
|
||||
case Variant::AABB:
|
||||
color = Color(0.93, 0.47, 0.57);
|
||||
break;
|
||||
case Variant::BASIS:
|
||||
color = Color(0.7, 0.73, 0.1);
|
||||
break;
|
||||
case Variant::TRANSFORM:
|
||||
color = Color(0.96, 0.56, 0.28);
|
||||
break;
|
||||
|
||||
case Variant::COLOR: color = Color(0.24, 0.75, 0.0); break;
|
||||
case Variant::NODE_PATH: color = Color(0.41, 0.58, 0.93); break;
|
||||
case Variant::_RID: color = Color(0.17, 0.9, 0.45); break;
|
||||
case Variant::OBJECT: color = Color(0.07, 0.84, 0.76); break;
|
||||
case Variant::DICTIONARY: color = Color(0.34, 0.91, 0.62); break;
|
||||
case Variant::COLOR:
|
||||
color = Color(0.24, 0.75, 0.0);
|
||||
break;
|
||||
case Variant::NODE_PATH:
|
||||
color = Color(0.41, 0.58, 0.93);
|
||||
break;
|
||||
case Variant::_RID:
|
||||
color = Color(0.17, 0.9, 0.45);
|
||||
break;
|
||||
case Variant::OBJECT:
|
||||
color = Color(0.07, 0.84, 0.76);
|
||||
break;
|
||||
case Variant::DICTIONARY:
|
||||
color = Color(0.34, 0.91, 0.62);
|
||||
break;
|
||||
|
||||
case Variant::ARRAY: color = Color(0.45, 0.45, 0.45); break;
|
||||
case Variant::POOL_BYTE_ARRAY: color = Color(0.38, 0.92, 0.6); break;
|
||||
case Variant::POOL_INT_ARRAY: color = Color(0.38, 0.73, 0.92); break;
|
||||
case Variant::POOL_REAL_ARRAY: color = Color(0.25, 0.83, 0.95); break;
|
||||
case Variant::POOL_STRING_ARRAY: color = Color(0.38, 0.62, 0.92); break;
|
||||
case Variant::POOL_VECTOR2_ARRAY: color = Color(0.62, 0.36, 0.92); break;
|
||||
case Variant::POOL_VECTOR3_ARRAY: color = Color(0.79, 0.35, 0.92); break;
|
||||
case Variant::POOL_COLOR_ARRAY: color = Color(0.57, 0.73, 0.0); break;
|
||||
case Variant::ARRAY:
|
||||
color = Color(0.45, 0.45, 0.45);
|
||||
break;
|
||||
case Variant::POOL_BYTE_ARRAY:
|
||||
color = Color(0.38, 0.92, 0.6);
|
||||
break;
|
||||
case Variant::POOL_INT_ARRAY:
|
||||
color = Color(0.38, 0.73, 0.92);
|
||||
break;
|
||||
case Variant::POOL_REAL_ARRAY:
|
||||
color = Color(0.25, 0.83, 0.95);
|
||||
break;
|
||||
case Variant::POOL_STRING_ARRAY:
|
||||
color = Color(0.38, 0.62, 0.92);
|
||||
break;
|
||||
case Variant::POOL_VECTOR2_ARRAY:
|
||||
color = Color(0.62, 0.36, 0.92);
|
||||
break;
|
||||
case Variant::POOL_VECTOR3_ARRAY:
|
||||
color = Color(0.79, 0.35, 0.92);
|
||||
break;
|
||||
case Variant::POOL_COLOR_ARRAY:
|
||||
color = Color(0.57, 0.73, 0.0);
|
||||
break;
|
||||
|
||||
default:
|
||||
color.set_hsv(p_type / float(Variant::VARIANT_MAX), 0.3, 0.3);
|
||||
|
|
|
@ -386,11 +386,21 @@ Error VisualScriptExpression::_get_token(Token &r_token) {
|
|||
|
||||
switch (next) {
|
||||
|
||||
case 'b': res = 8; break;
|
||||
case 't': res = 9; break;
|
||||
case 'n': res = 10; break;
|
||||
case 'f': res = 12; break;
|
||||
case 'r': res = 13; break;
|
||||
case 'b':
|
||||
res = 8;
|
||||
break;
|
||||
case 't':
|
||||
res = 9;
|
||||
break;
|
||||
case 'n':
|
||||
res = 10;
|
||||
break;
|
||||
case 'f':
|
||||
res = 12;
|
||||
break;
|
||||
case 'r':
|
||||
res = 13;
|
||||
break;
|
||||
case 'u': {
|
||||
//hexnumbarh - oct is deprecated
|
||||
|
||||
|
@ -1011,27 +1021,69 @@ VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
|||
Variant::Operator op = Variant::OP_MAX;
|
||||
|
||||
switch (tk.type) {
|
||||
case TK_OP_IN: op = Variant::OP_IN; break;
|
||||
case TK_OP_EQUAL: op = Variant::OP_EQUAL; break;
|
||||
case TK_OP_NOT_EQUAL: op = Variant::OP_NOT_EQUAL; break;
|
||||
case TK_OP_LESS: op = Variant::OP_LESS; break;
|
||||
case TK_OP_LESS_EQUAL: op = Variant::OP_LESS_EQUAL; break;
|
||||
case TK_OP_GREATER: op = Variant::OP_GREATER; break;
|
||||
case TK_OP_GREATER_EQUAL: op = Variant::OP_GREATER_EQUAL; break;
|
||||
case TK_OP_AND: op = Variant::OP_AND; break;
|
||||
case TK_OP_OR: op = Variant::OP_OR; break;
|
||||
case TK_OP_NOT: op = Variant::OP_NOT; break;
|
||||
case TK_OP_ADD: op = Variant::OP_ADD; break;
|
||||
case TK_OP_SUB: op = Variant::OP_SUBTRACT; break;
|
||||
case TK_OP_MUL: op = Variant::OP_MULTIPLY; break;
|
||||
case TK_OP_DIV: op = Variant::OP_DIVIDE; break;
|
||||
case TK_OP_MOD: op = Variant::OP_MODULE; break;
|
||||
case TK_OP_SHIFT_LEFT: op = Variant::OP_SHIFT_LEFT; break;
|
||||
case TK_OP_SHIFT_RIGHT: op = Variant::OP_SHIFT_RIGHT; break;
|
||||
case TK_OP_BIT_AND: op = Variant::OP_BIT_AND; break;
|
||||
case TK_OP_BIT_OR: op = Variant::OP_BIT_OR; break;
|
||||
case TK_OP_BIT_XOR: op = Variant::OP_BIT_XOR; break;
|
||||
case TK_OP_BIT_INVERT: op = Variant::OP_BIT_NEGATE; break;
|
||||
case TK_OP_IN:
|
||||
op = Variant::OP_IN;
|
||||
break;
|
||||
case TK_OP_EQUAL:
|
||||
op = Variant::OP_EQUAL;
|
||||
break;
|
||||
case TK_OP_NOT_EQUAL:
|
||||
op = Variant::OP_NOT_EQUAL;
|
||||
break;
|
||||
case TK_OP_LESS:
|
||||
op = Variant::OP_LESS;
|
||||
break;
|
||||
case TK_OP_LESS_EQUAL:
|
||||
op = Variant::OP_LESS_EQUAL;
|
||||
break;
|
||||
case TK_OP_GREATER:
|
||||
op = Variant::OP_GREATER;
|
||||
break;
|
||||
case TK_OP_GREATER_EQUAL:
|
||||
op = Variant::OP_GREATER_EQUAL;
|
||||
break;
|
||||
case TK_OP_AND:
|
||||
op = Variant::OP_AND;
|
||||
break;
|
||||
case TK_OP_OR:
|
||||
op = Variant::OP_OR;
|
||||
break;
|
||||
case TK_OP_NOT:
|
||||
op = Variant::OP_NOT;
|
||||
break;
|
||||
case TK_OP_ADD:
|
||||
op = Variant::OP_ADD;
|
||||
break;
|
||||
case TK_OP_SUB:
|
||||
op = Variant::OP_SUBTRACT;
|
||||
break;
|
||||
case TK_OP_MUL:
|
||||
op = Variant::OP_MULTIPLY;
|
||||
break;
|
||||
case TK_OP_DIV:
|
||||
op = Variant::OP_DIVIDE;
|
||||
break;
|
||||
case TK_OP_MOD:
|
||||
op = Variant::OP_MODULE;
|
||||
break;
|
||||
case TK_OP_SHIFT_LEFT:
|
||||
op = Variant::OP_SHIFT_LEFT;
|
||||
break;
|
||||
case TK_OP_SHIFT_RIGHT:
|
||||
op = Variant::OP_SHIFT_RIGHT;
|
||||
break;
|
||||
case TK_OP_BIT_AND:
|
||||
op = Variant::OP_BIT_AND;
|
||||
break;
|
||||
case TK_OP_BIT_OR:
|
||||
op = Variant::OP_BIT_OR;
|
||||
break;
|
||||
case TK_OP_BIT_XOR:
|
||||
op = Variant::OP_BIT_XOR;
|
||||
break;
|
||||
case TK_OP_BIT_INVERT:
|
||||
op = Variant::OP_BIT_NEGATE;
|
||||
break;
|
||||
default: {
|
||||
};
|
||||
}
|
||||
|
@ -1080,36 +1132,74 @@ VisualScriptExpression::ENode *VisualScriptExpression::_parse_expression() {
|
|||
unary = true;
|
||||
break;
|
||||
|
||||
case Variant::OP_MULTIPLY: priority = 2; break;
|
||||
case Variant::OP_DIVIDE: priority = 2; break;
|
||||
case Variant::OP_MODULE: priority = 2; break;
|
||||
case Variant::OP_MULTIPLY:
|
||||
priority = 2;
|
||||
break;
|
||||
case Variant::OP_DIVIDE:
|
||||
priority = 2;
|
||||
break;
|
||||
case Variant::OP_MODULE:
|
||||
priority = 2;
|
||||
break;
|
||||
|
||||
case Variant::OP_ADD: priority = 3; break;
|
||||
case Variant::OP_SUBTRACT: priority = 3; break;
|
||||
case Variant::OP_ADD:
|
||||
priority = 3;
|
||||
break;
|
||||
case Variant::OP_SUBTRACT:
|
||||
priority = 3;
|
||||
break;
|
||||
|
||||
case Variant::OP_SHIFT_LEFT: priority = 4; break;
|
||||
case Variant::OP_SHIFT_RIGHT: priority = 4; break;
|
||||
case Variant::OP_SHIFT_LEFT:
|
||||
priority = 4;
|
||||
break;
|
||||
case Variant::OP_SHIFT_RIGHT:
|
||||
priority = 4;
|
||||
break;
|
||||
|
||||
case Variant::OP_BIT_AND: priority = 5; break;
|
||||
case Variant::OP_BIT_XOR: priority = 6; break;
|
||||
case Variant::OP_BIT_OR: priority = 7; break;
|
||||
case Variant::OP_BIT_AND:
|
||||
priority = 5;
|
||||
break;
|
||||
case Variant::OP_BIT_XOR:
|
||||
priority = 6;
|
||||
break;
|
||||
case Variant::OP_BIT_OR:
|
||||
priority = 7;
|
||||
break;
|
||||
|
||||
case Variant::OP_LESS: priority = 8; break;
|
||||
case Variant::OP_LESS_EQUAL: priority = 8; break;
|
||||
case Variant::OP_GREATER: priority = 8; break;
|
||||
case Variant::OP_GREATER_EQUAL: priority = 8; break;
|
||||
case Variant::OP_LESS:
|
||||
priority = 8;
|
||||
break;
|
||||
case Variant::OP_LESS_EQUAL:
|
||||
priority = 8;
|
||||
break;
|
||||
case Variant::OP_GREATER:
|
||||
priority = 8;
|
||||
break;
|
||||
case Variant::OP_GREATER_EQUAL:
|
||||
priority = 8;
|
||||
break;
|
||||
|
||||
case Variant::OP_EQUAL: priority = 8; break;
|
||||
case Variant::OP_NOT_EQUAL: priority = 8; break;
|
||||
case Variant::OP_EQUAL:
|
||||
priority = 8;
|
||||
break;
|
||||
case Variant::OP_NOT_EQUAL:
|
||||
priority = 8;
|
||||
break;
|
||||
|
||||
case Variant::OP_IN: priority = 10; break;
|
||||
case Variant::OP_IN:
|
||||
priority = 10;
|
||||
break;
|
||||
|
||||
case Variant::OP_NOT:
|
||||
priority = 11;
|
||||
unary = true;
|
||||
break;
|
||||
case Variant::OP_AND: priority = 12; break;
|
||||
case Variant::OP_OR: priority = 13; break;
|
||||
case Variant::OP_AND:
|
||||
priority = 12;
|
||||
break;
|
||||
case Variant::OP_OR:
|
||||
priority = 13;
|
||||
break;
|
||||
|
||||
default: {
|
||||
_set_error("Parser bug, invalid operator in expression: " + itos(expression[i].op));
|
||||
|
|
|
@ -81,10 +81,18 @@ String VisualScriptYield::get_caption() const {
|
|||
String VisualScriptYield::get_text() const {
|
||||
|
||||
switch (yield_mode) {
|
||||
case YIELD_RETURN: return ""; break;
|
||||
case YIELD_FRAME: return "Next Frame"; break;
|
||||
case YIELD_PHYSICS_FRAME: return "Next Physics Frame"; break;
|
||||
case YIELD_WAIT: return rtos(wait_time) + " sec(s)"; break;
|
||||
case YIELD_RETURN:
|
||||
return "";
|
||||
break;
|
||||
case YIELD_FRAME:
|
||||
return "Next Frame";
|
||||
break;
|
||||
case YIELD_PHYSICS_FRAME:
|
||||
return "Next Physics Frame";
|
||||
break;
|
||||
case YIELD_WAIT:
|
||||
return rtos(wait_time) + " sec(s)";
|
||||
break;
|
||||
}
|
||||
|
||||
return String();
|
||||
|
@ -122,9 +130,15 @@ public:
|
|||
case VisualScriptYield::YIELD_RETURN:
|
||||
ret = STEP_EXIT_FUNCTION_BIT;
|
||||
break; //return the yield
|
||||
case VisualScriptYield::YIELD_FRAME: state->connect_to_signal(tree, "idle_frame", Array()); break;
|
||||
case VisualScriptYield::YIELD_PHYSICS_FRAME: state->connect_to_signal(tree, "physics_frame", Array()); break;
|
||||
case VisualScriptYield::YIELD_WAIT: state->connect_to_signal(tree->create_timer(wait_time).ptr(), "timeout", Array()); break;
|
||||
case VisualScriptYield::YIELD_FRAME:
|
||||
state->connect_to_signal(tree, "idle_frame", Array());
|
||||
break;
|
||||
case VisualScriptYield::YIELD_PHYSICS_FRAME:
|
||||
state->connect_to_signal(tree, "physics_frame", Array());
|
||||
break;
|
||||
case VisualScriptYield::YIELD_WAIT:
|
||||
state->connect_to_signal(tree->create_timer(wait_time).ptr(), "timeout", Array());
|
||||
break;
|
||||
}
|
||||
|
||||
*p_working_mem = state;
|
||||
|
|
|
@ -83,9 +83,13 @@ class JavaClass : public Reference {
|
|||
|
||||
switch (p_sig) {
|
||||
|
||||
case ARG_TYPE_VOID: r_type = Variant::NIL; break;
|
||||
case ARG_TYPE_VOID:
|
||||
r_type = Variant::NIL;
|
||||
break;
|
||||
case ARG_TYPE_BOOLEAN | ARG_NUMBER_CLASS_BIT:
|
||||
case ARG_TYPE_BOOLEAN: r_type = Variant::BOOL; break;
|
||||
case ARG_TYPE_BOOLEAN:
|
||||
r_type = Variant::BOOL;
|
||||
break;
|
||||
case ARG_TYPE_BYTE | ARG_NUMBER_CLASS_BIT:
|
||||
case ARG_TYPE_BYTE:
|
||||
r_type = Variant::INT;
|
||||
|
@ -121,10 +125,18 @@ class JavaClass : public Reference {
|
|||
r_type = Variant::REAL;
|
||||
likelihood = 0.5;
|
||||
break;
|
||||
case ARG_TYPE_STRING: r_type = Variant::STRING; break;
|
||||
case ARG_TYPE_CLASS: r_type = Variant::OBJECT; break;
|
||||
case ARG_ARRAY_BIT | ARG_TYPE_VOID: r_type = Variant::NIL; break;
|
||||
case ARG_ARRAY_BIT | ARG_TYPE_BOOLEAN: r_type = Variant::ARRAY; break;
|
||||
case ARG_TYPE_STRING:
|
||||
r_type = Variant::STRING;
|
||||
break;
|
||||
case ARG_TYPE_CLASS:
|
||||
r_type = Variant::OBJECT;
|
||||
break;
|
||||
case ARG_ARRAY_BIT | ARG_TYPE_VOID:
|
||||
r_type = Variant::NIL;
|
||||
break;
|
||||
case ARG_ARRAY_BIT | ARG_TYPE_BOOLEAN:
|
||||
r_type = Variant::ARRAY;
|
||||
break;
|
||||
case ARG_ARRAY_BIT | ARG_TYPE_BYTE:
|
||||
r_type = Variant::POOL_BYTE_ARRAY;
|
||||
likelihood = 1.0;
|
||||
|
@ -153,8 +165,12 @@ class JavaClass : public Reference {
|
|||
r_type = Variant::POOL_REAL_ARRAY;
|
||||
likelihood = 0.5;
|
||||
break;
|
||||
case ARG_ARRAY_BIT | ARG_TYPE_STRING: r_type = Variant::POOL_STRING_ARRAY; break;
|
||||
case ARG_ARRAY_BIT | ARG_TYPE_CLASS: r_type = Variant::ARRAY; break;
|
||||
case ARG_ARRAY_BIT | ARG_TYPE_STRING:
|
||||
r_type = Variant::POOL_STRING_ARRAY;
|
||||
break;
|
||||
case ARG_ARRAY_BIT | ARG_TYPE_CLASS:
|
||||
r_type = Variant::ARRAY;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -67,12 +67,18 @@ OS::ScreenOrientation _get_screen_orientation() {
|
|||
|
||||
int _get_android_orientation_value(OS::ScreenOrientation screen_orientation) {
|
||||
switch (screen_orientation) {
|
||||
case OS::SCREEN_PORTRAIT: return 1;
|
||||
case OS::SCREEN_REVERSE_LANDSCAPE: return 8;
|
||||
case OS::SCREEN_REVERSE_PORTRAIT: return 9;
|
||||
case OS::SCREEN_SENSOR_LANDSCAPE: return 11;
|
||||
case OS::SCREEN_SENSOR_PORTRAIT: return 12;
|
||||
case OS::SCREEN_SENSOR: return 13;
|
||||
case OS::SCREEN_PORTRAIT:
|
||||
return 1;
|
||||
case OS::SCREEN_REVERSE_LANDSCAPE:
|
||||
return 8;
|
||||
case OS::SCREEN_REVERSE_PORTRAIT:
|
||||
return 9;
|
||||
case OS::SCREEN_SENSOR_LANDSCAPE:
|
||||
return 11;
|
||||
case OS::SCREEN_SENSOR_PORTRAIT:
|
||||
return 12;
|
||||
case OS::SCREEN_SENSOR:
|
||||
return 13;
|
||||
case OS::SCREEN_LANDSCAPE:
|
||||
default:
|
||||
return 0;
|
||||
|
@ -81,12 +87,18 @@ int _get_android_orientation_value(OS::ScreenOrientation screen_orientation) {
|
|||
|
||||
String _get_android_orientation_label(OS::ScreenOrientation screen_orientation) {
|
||||
switch (screen_orientation) {
|
||||
case OS::SCREEN_PORTRAIT: return "portrait";
|
||||
case OS::SCREEN_REVERSE_LANDSCAPE: return "reverseLandscape";
|
||||
case OS::SCREEN_REVERSE_PORTRAIT: return "reversePortrait";
|
||||
case OS::SCREEN_SENSOR_LANDSCAPE: return "userLandscape";
|
||||
case OS::SCREEN_SENSOR_PORTRAIT: return "userPortrait";
|
||||
case OS::SCREEN_SENSOR: return "fullUser";
|
||||
case OS::SCREEN_PORTRAIT:
|
||||
return "portrait";
|
||||
case OS::SCREEN_REVERSE_LANDSCAPE:
|
||||
return "reverseLandscape";
|
||||
case OS::SCREEN_REVERSE_PORTRAIT:
|
||||
return "reversePortrait";
|
||||
case OS::SCREEN_SENSOR_LANDSCAPE:
|
||||
return "userLandscape";
|
||||
case OS::SCREEN_SENSOR_PORTRAIT:
|
||||
return "userPortrait";
|
||||
case OS::SCREEN_SENSOR:
|
||||
return "fullUser";
|
||||
case OS::SCREEN_LANDSCAPE:
|
||||
default:
|
||||
return "landscape";
|
||||
|
|
|
@ -324,12 +324,23 @@ EM_BOOL OS_JavaScript::mouse_button_callback(int p_event_type, const EmscriptenM
|
|||
dom2godot_mod(p_event, ev);
|
||||
|
||||
switch (p_event->button) {
|
||||
case DOM_BUTTON_LEFT: ev->set_button_index(BUTTON_LEFT); break;
|
||||
case DOM_BUTTON_MIDDLE: ev->set_button_index(BUTTON_MIDDLE); break;
|
||||
case DOM_BUTTON_RIGHT: ev->set_button_index(BUTTON_RIGHT); break;
|
||||
case DOM_BUTTON_XBUTTON1: ev->set_button_index(BUTTON_XBUTTON1); break;
|
||||
case DOM_BUTTON_XBUTTON2: ev->set_button_index(BUTTON_XBUTTON2); break;
|
||||
default: return false;
|
||||
case DOM_BUTTON_LEFT:
|
||||
ev->set_button_index(BUTTON_LEFT);
|
||||
break;
|
||||
case DOM_BUTTON_MIDDLE:
|
||||
ev->set_button_index(BUTTON_MIDDLE);
|
||||
break;
|
||||
case DOM_BUTTON_RIGHT:
|
||||
ev->set_button_index(BUTTON_RIGHT);
|
||||
break;
|
||||
case DOM_BUTTON_XBUTTON1:
|
||||
ev->set_button_index(BUTTON_XBUTTON1);
|
||||
break;
|
||||
case DOM_BUTTON_XBUTTON2:
|
||||
ev->set_button_index(BUTTON_XBUTTON2);
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ev->is_pressed()) {
|
||||
|
@ -413,22 +424,38 @@ static const char *godot2dom_cursor(OS::CursorShape p_shape) {
|
|||
case OS::CURSOR_ARROW:
|
||||
default:
|
||||
return "auto";
|
||||
case OS::CURSOR_IBEAM: return "text";
|
||||
case OS::CURSOR_POINTING_HAND: return "pointer";
|
||||
case OS::CURSOR_CROSS: return "crosshair";
|
||||
case OS::CURSOR_WAIT: return "progress";
|
||||
case OS::CURSOR_BUSY: return "wait";
|
||||
case OS::CURSOR_DRAG: return "grab";
|
||||
case OS::CURSOR_CAN_DROP: return "grabbing";
|
||||
case OS::CURSOR_FORBIDDEN: return "no-drop";
|
||||
case OS::CURSOR_VSIZE: return "ns-resize";
|
||||
case OS::CURSOR_HSIZE: return "ew-resize";
|
||||
case OS::CURSOR_BDIAGSIZE: return "nesw-resize";
|
||||
case OS::CURSOR_FDIAGSIZE: return "nwse-resize";
|
||||
case OS::CURSOR_MOVE: return "move";
|
||||
case OS::CURSOR_VSPLIT: return "row-resize";
|
||||
case OS::CURSOR_HSPLIT: return "col-resize";
|
||||
case OS::CURSOR_HELP: return "help";
|
||||
case OS::CURSOR_IBEAM:
|
||||
return "text";
|
||||
case OS::CURSOR_POINTING_HAND:
|
||||
return "pointer";
|
||||
case OS::CURSOR_CROSS:
|
||||
return "crosshair";
|
||||
case OS::CURSOR_WAIT:
|
||||
return "progress";
|
||||
case OS::CURSOR_BUSY:
|
||||
return "wait";
|
||||
case OS::CURSOR_DRAG:
|
||||
return "grab";
|
||||
case OS::CURSOR_CAN_DROP:
|
||||
return "grabbing";
|
||||
case OS::CURSOR_FORBIDDEN:
|
||||
return "no-drop";
|
||||
case OS::CURSOR_VSIZE:
|
||||
return "ns-resize";
|
||||
case OS::CURSOR_HSIZE:
|
||||
return "ew-resize";
|
||||
case OS::CURSOR_BDIAGSIZE:
|
||||
return "nesw-resize";
|
||||
case OS::CURSOR_FDIAGSIZE:
|
||||
return "nwse-resize";
|
||||
case OS::CURSOR_MOVE:
|
||||
return "move";
|
||||
case OS::CURSOR_VSPLIT:
|
||||
return "row-resize";
|
||||
case OS::CURSOR_HSPLIT:
|
||||
return "col-resize";
|
||||
case OS::CURSOR_HELP:
|
||||
return "help";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1956,23 +1956,57 @@ void OS_OSX::set_cursor_shape(CursorShape p_shape) {
|
|||
[cursors[p_shape] set];
|
||||
} else {
|
||||
switch (p_shape) {
|
||||
case CURSOR_ARROW: [[NSCursor arrowCursor] set]; break;
|
||||
case CURSOR_IBEAM: [[NSCursor IBeamCursor] set]; break;
|
||||
case CURSOR_POINTING_HAND: [[NSCursor pointingHandCursor] set]; break;
|
||||
case CURSOR_CROSS: [[NSCursor crosshairCursor] set]; break;
|
||||
case CURSOR_WAIT: [[NSCursor arrowCursor] set]; break;
|
||||
case CURSOR_BUSY: [[NSCursor arrowCursor] set]; break;
|
||||
case CURSOR_DRAG: [[NSCursor closedHandCursor] set]; break;
|
||||
case CURSOR_CAN_DROP: [[NSCursor openHandCursor] set]; break;
|
||||
case CURSOR_FORBIDDEN: [[NSCursor operationNotAllowedCursor] set]; break;
|
||||
case CURSOR_VSIZE: [cursorFromSelector(@selector(_windowResizeNorthSouthCursor), @selector(resizeUpDownCursor)) set]; break;
|
||||
case CURSOR_HSIZE: [cursorFromSelector(@selector(_windowResizeEastWestCursor), @selector(resizeLeftRightCursor)) set]; break;
|
||||
case CURSOR_BDIAGSIZE: [cursorFromSelector(@selector(_windowResizeNorthEastSouthWestCursor)) set]; break;
|
||||
case CURSOR_FDIAGSIZE: [cursorFromSelector(@selector(_windowResizeNorthWestSouthEastCursor)) set]; break;
|
||||
case CURSOR_MOVE: [[NSCursor arrowCursor] set]; break;
|
||||
case CURSOR_VSPLIT: [[NSCursor resizeUpDownCursor] set]; break;
|
||||
case CURSOR_HSPLIT: [[NSCursor resizeLeftRightCursor] set]; break;
|
||||
case CURSOR_HELP: [cursorFromSelector(@selector(_helpCursor)) set]; break;
|
||||
case CURSOR_ARROW:
|
||||
[[NSCursor arrowCursor] set];
|
||||
break;
|
||||
case CURSOR_IBEAM:
|
||||
[[NSCursor IBeamCursor] set];
|
||||
break;
|
||||
case CURSOR_POINTING_HAND:
|
||||
[[NSCursor pointingHandCursor] set];
|
||||
break;
|
||||
case CURSOR_CROSS:
|
||||
[[NSCursor crosshairCursor] set];
|
||||
break;
|
||||
case CURSOR_WAIT:
|
||||
[[NSCursor arrowCursor] set];
|
||||
break;
|
||||
case CURSOR_BUSY:
|
||||
[[NSCursor arrowCursor] set];
|
||||
break;
|
||||
case CURSOR_DRAG:
|
||||
[[NSCursor closedHandCursor] set];
|
||||
break;
|
||||
case CURSOR_CAN_DROP:
|
||||
[[NSCursor openHandCursor] set];
|
||||
break;
|
||||
case CURSOR_FORBIDDEN:
|
||||
[[NSCursor operationNotAllowedCursor] set];
|
||||
break;
|
||||
case CURSOR_VSIZE:
|
||||
[cursorFromSelector(@selector(_windowResizeNorthSouthCursor), @selector(resizeUpDownCursor)) set];
|
||||
break;
|
||||
case CURSOR_HSIZE:
|
||||
[cursorFromSelector(@selector(_windowResizeEastWestCursor), @selector(resizeLeftRightCursor)) set];
|
||||
break;
|
||||
case CURSOR_BDIAGSIZE:
|
||||
[cursorFromSelector(@selector(_windowResizeNorthEastSouthWestCursor)) set];
|
||||
break;
|
||||
case CURSOR_FDIAGSIZE:
|
||||
[cursorFromSelector(@selector(_windowResizeNorthWestSouthEastCursor)) set];
|
||||
break;
|
||||
case CURSOR_MOVE:
|
||||
[[NSCursor arrowCursor] set];
|
||||
break;
|
||||
case CURSOR_VSPLIT:
|
||||
[[NSCursor resizeUpDownCursor] set];
|
||||
break;
|
||||
case CURSOR_HSPLIT:
|
||||
[[NSCursor resizeLeftRightCursor] set];
|
||||
break;
|
||||
case CURSOR_HELP:
|
||||
[cursorFromSelector(@selector(_helpCursor)) set];
|
||||
break;
|
||||
default: {
|
||||
};
|
||||
}
|
||||
|
|
|
@ -2466,12 +2466,18 @@ void OS_Windows::request_attention() {
|
|||
|
||||
void *OS_Windows::get_native_handle(int p_handle_type) {
|
||||
switch (p_handle_type) {
|
||||
case APPLICATION_HANDLE: return hInstance;
|
||||
case DISPLAY_HANDLE: return NULL; // Do we have a value to return here?
|
||||
case WINDOW_HANDLE: return hWnd;
|
||||
case WINDOW_VIEW: return gl_context->get_hdc();
|
||||
case OPENGL_CONTEXT: return gl_context->get_hglrc();
|
||||
default: return NULL;
|
||||
case APPLICATION_HANDLE:
|
||||
return hInstance;
|
||||
case DISPLAY_HANDLE:
|
||||
return NULL; // Do we have a value to return here?
|
||||
case WINDOW_HANDLE:
|
||||
return hWnd;
|
||||
case WINDOW_VIEW:
|
||||
return gl_context->get_hdc();
|
||||
case OPENGL_CONTEXT:
|
||||
return gl_context->get_hglrc();
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -91,10 +91,18 @@ void WindowsTerminalLogger::log_error(const char *p_function, const char *p_file
|
|||
|
||||
uint32_t basecol = 0;
|
||||
switch (p_type) {
|
||||
case ERR_ERROR: basecol = FOREGROUND_RED; break;
|
||||
case ERR_WARNING: basecol = FOREGROUND_RED | FOREGROUND_GREEN; break;
|
||||
case ERR_SCRIPT: basecol = FOREGROUND_RED | FOREGROUND_BLUE; break;
|
||||
case ERR_SHADER: basecol = FOREGROUND_GREEN | FOREGROUND_BLUE; break;
|
||||
case ERR_ERROR:
|
||||
basecol = FOREGROUND_RED;
|
||||
break;
|
||||
case ERR_WARNING:
|
||||
basecol = FOREGROUND_RED | FOREGROUND_GREEN;
|
||||
break;
|
||||
case ERR_SCRIPT:
|
||||
basecol = FOREGROUND_RED | FOREGROUND_BLUE;
|
||||
break;
|
||||
case ERR_SHADER:
|
||||
basecol = FOREGROUND_GREEN | FOREGROUND_BLUE;
|
||||
break;
|
||||
}
|
||||
|
||||
basecol |= current_bg;
|
||||
|
@ -103,10 +111,18 @@ void WindowsTerminalLogger::log_error(const char *p_function, const char *p_file
|
|||
|
||||
SetConsoleTextAttribute(hCon, basecol | FOREGROUND_INTENSITY);
|
||||
switch (p_type) {
|
||||
case ERR_ERROR: logf("ERROR: "); break;
|
||||
case ERR_WARNING: logf("WARNING: "); break;
|
||||
case ERR_SCRIPT: logf("SCRIPT ERROR: "); break;
|
||||
case ERR_SHADER: logf("SHADER ERROR: "); break;
|
||||
case ERR_ERROR:
|
||||
logf("ERROR: ");
|
||||
break;
|
||||
case ERR_WARNING:
|
||||
logf("WARNING: ");
|
||||
break;
|
||||
case ERR_SCRIPT:
|
||||
logf("SCRIPT ERROR: ");
|
||||
break;
|
||||
case ERR_SHADER:
|
||||
logf("SHADER ERROR: ");
|
||||
break;
|
||||
}
|
||||
|
||||
SetConsoleTextAttribute(hCon, current_fg | current_bg | FOREGROUND_INTENSITY);
|
||||
|
@ -114,10 +130,18 @@ void WindowsTerminalLogger::log_error(const char *p_function, const char *p_file
|
|||
|
||||
SetConsoleTextAttribute(hCon, basecol);
|
||||
switch (p_type) {
|
||||
case ERR_ERROR: logf(" At: "); break;
|
||||
case ERR_WARNING: logf(" At: "); break;
|
||||
case ERR_SCRIPT: logf(" At: "); break;
|
||||
case ERR_SHADER: logf(" At: "); break;
|
||||
case ERR_ERROR:
|
||||
logf(" At: ");
|
||||
break;
|
||||
case ERR_WARNING:
|
||||
logf(" At: ");
|
||||
break;
|
||||
case ERR_SCRIPT:
|
||||
logf(" At: ");
|
||||
break;
|
||||
case ERR_SHADER:
|
||||
logf(" At: ");
|
||||
break;
|
||||
}
|
||||
|
||||
SetConsoleTextAttribute(hCon, current_fg | current_bg);
|
||||
|
@ -127,10 +151,18 @@ void WindowsTerminalLogger::log_error(const char *p_function, const char *p_file
|
|||
|
||||
SetConsoleTextAttribute(hCon, basecol | FOREGROUND_INTENSITY);
|
||||
switch (p_type) {
|
||||
case ERR_ERROR: logf("ERROR: %s: ", p_function); break;
|
||||
case ERR_WARNING: logf("WARNING: %s: ", p_function); break;
|
||||
case ERR_SCRIPT: logf("SCRIPT ERROR: %s: ", p_function); break;
|
||||
case ERR_SHADER: logf("SCRIPT ERROR: %s: ", p_function); break;
|
||||
case ERR_ERROR:
|
||||
logf("ERROR: %s: ", p_function);
|
||||
break;
|
||||
case ERR_WARNING:
|
||||
logf("WARNING: %s: ", p_function);
|
||||
break;
|
||||
case ERR_SCRIPT:
|
||||
logf("SCRIPT ERROR: %s: ", p_function);
|
||||
break;
|
||||
case ERR_SHADER:
|
||||
logf("SCRIPT ERROR: %s: ", p_function);
|
||||
break;
|
||||
}
|
||||
|
||||
SetConsoleTextAttribute(hCon, current_fg | current_bg | FOREGROUND_INTENSITY);
|
||||
|
@ -138,10 +170,18 @@ void WindowsTerminalLogger::log_error(const char *p_function, const char *p_file
|
|||
|
||||
SetConsoleTextAttribute(hCon, basecol);
|
||||
switch (p_type) {
|
||||
case ERR_ERROR: logf(" At: "); break;
|
||||
case ERR_WARNING: logf(" At: "); break;
|
||||
case ERR_SCRIPT: logf(" At: "); break;
|
||||
case ERR_SHADER: logf(" At: "); break;
|
||||
case ERR_ERROR:
|
||||
logf(" At: ");
|
||||
break;
|
||||
case ERR_WARNING:
|
||||
logf(" At: ");
|
||||
break;
|
||||
case ERR_SCRIPT:
|
||||
logf(" At: ");
|
||||
break;
|
||||
case ERR_SHADER:
|
||||
logf(" At: ");
|
||||
break;
|
||||
}
|
||||
|
||||
SetConsoleTextAttribute(hCon, current_fg | current_bg);
|
||||
|
|
|
@ -1800,12 +1800,18 @@ void OS_X11::request_attention() {
|
|||
|
||||
void *OS_X11::get_native_handle(int p_handle_type) {
|
||||
switch (p_handle_type) {
|
||||
case APPLICATION_HANDLE: return NULL; // Do we have a value to return here?
|
||||
case DISPLAY_HANDLE: return (void *)x11_display;
|
||||
case WINDOW_HANDLE: return (void *)x11_window;
|
||||
case WINDOW_VIEW: return NULL; // Do we have a value to return here?
|
||||
case OPENGL_CONTEXT: return context_gl->get_glx_context();
|
||||
default: return NULL;
|
||||
case APPLICATION_HANDLE:
|
||||
return NULL; // Do we have a value to return here?
|
||||
case DISPLAY_HANDLE:
|
||||
return (void *)x11_display;
|
||||
case WINDOW_HANDLE:
|
||||
return (void *)x11_window;
|
||||
case WINDOW_VIEW:
|
||||
return NULL; // Do we have a value to return here?
|
||||
case OPENGL_CONTEXT:
|
||||
return context_gl->get_glx_context();
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -94,18 +94,35 @@ void CanvasItemMaterial::_update_shader() {
|
|||
|
||||
String code = "shader_type canvas_item;\nrender_mode ";
|
||||
switch (blend_mode) {
|
||||
case BLEND_MODE_MIX: code += "blend_mix"; break;
|
||||
case BLEND_MODE_ADD: code += "blend_add"; break;
|
||||
case BLEND_MODE_SUB: code += "blend_sub"; break;
|
||||
case BLEND_MODE_MUL: code += "blend_mul"; break;
|
||||
case BLEND_MODE_PREMULT_ALPHA: code += "blend_premul_alpha"; break;
|
||||
case BLEND_MODE_DISABLED: code += "blend_disabled"; break;
|
||||
case BLEND_MODE_MIX:
|
||||
code += "blend_mix";
|
||||
break;
|
||||
case BLEND_MODE_ADD:
|
||||
code += "blend_add";
|
||||
break;
|
||||
case BLEND_MODE_SUB:
|
||||
code += "blend_sub";
|
||||
break;
|
||||
case BLEND_MODE_MUL:
|
||||
code += "blend_mul";
|
||||
break;
|
||||
case BLEND_MODE_PREMULT_ALPHA:
|
||||
code += "blend_premul_alpha";
|
||||
break;
|
||||
case BLEND_MODE_DISABLED:
|
||||
code += "blend_disabled";
|
||||
break;
|
||||
}
|
||||
|
||||
switch (light_mode) {
|
||||
case LIGHT_MODE_NORMAL: break;
|
||||
case LIGHT_MODE_UNSHADED: code += ",unshaded"; break;
|
||||
case LIGHT_MODE_LIGHT_ONLY: code += ",light_only"; break;
|
||||
case LIGHT_MODE_NORMAL:
|
||||
break;
|
||||
case LIGHT_MODE_UNSHADED:
|
||||
code += ",unshaded";
|
||||
break;
|
||||
case LIGHT_MODE_LIGHT_ONLY:
|
||||
code += ",light_only";
|
||||
break;
|
||||
}
|
||||
|
||||
code += ";\n";
|
||||
|
|
|
@ -99,10 +99,18 @@ void AudioStreamPlayer3D::_calc_output_vol(const Vector3 &source_dir, real_t tig
|
|||
unsigned int speaker_count; // only main speakers (no LFE)
|
||||
switch (AudioServer::get_singleton()->get_speaker_mode()) {
|
||||
default: //fallthrough
|
||||
case AudioServer::SPEAKER_MODE_STEREO: speaker_count = 2; break;
|
||||
case AudioServer::SPEAKER_SURROUND_31: speaker_count = 3; break;
|
||||
case AudioServer::SPEAKER_SURROUND_51: speaker_count = 5; break;
|
||||
case AudioServer::SPEAKER_SURROUND_71: speaker_count = 7; break;
|
||||
case AudioServer::SPEAKER_MODE_STEREO:
|
||||
speaker_count = 2;
|
||||
break;
|
||||
case AudioServer::SPEAKER_SURROUND_31:
|
||||
speaker_count = 3;
|
||||
break;
|
||||
case AudioServer::SPEAKER_SURROUND_51:
|
||||
speaker_count = 5;
|
||||
break;
|
||||
case AudioServer::SPEAKER_SURROUND_71:
|
||||
speaker_count = 7;
|
||||
break;
|
||||
}
|
||||
|
||||
Spcap spcap(speaker_count, speaker_directions); //TODO: should only be created/recreated once the speaker mode / speaker positions changes
|
||||
|
@ -311,7 +319,8 @@ float AudioStreamPlayer3D::_get_attenuation_db(float p_distance) const {
|
|||
case ATTENUATION_LOGARITHMIC: {
|
||||
att = -20 * Math::log(p_distance / unit_size + CMP_EPSILON);
|
||||
} break;
|
||||
case ATTENUATION_DISABLED: break;
|
||||
case ATTENUATION_DISABLED:
|
||||
break;
|
||||
default: {
|
||||
ERR_PRINT("Unknown attenuation type");
|
||||
break;
|
||||
|
|
|
@ -295,9 +295,15 @@ Light::Light(VisualServer::LightType p_type) {
|
|||
|
||||
type = p_type;
|
||||
switch (p_type) {
|
||||
case VS::LIGHT_DIRECTIONAL: light = VisualServer::get_singleton()->directional_light_create(); break;
|
||||
case VS::LIGHT_OMNI: light = VisualServer::get_singleton()->omni_light_create(); break;
|
||||
case VS::LIGHT_SPOT: light = VisualServer::get_singleton()->spot_light_create(); break;
|
||||
case VS::LIGHT_DIRECTIONAL:
|
||||
light = VisualServer::get_singleton()->directional_light_create();
|
||||
break;
|
||||
case VS::LIGHT_OMNI:
|
||||
light = VisualServer::get_singleton()->omni_light_create();
|
||||
break;
|
||||
case VS::LIGHT_SPOT:
|
||||
light = VisualServer::get_singleton()->spot_light_create();
|
||||
break;
|
||||
default: {
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1489,9 +1489,14 @@ void AnimationPlayer::_set_process(bool p_process, bool p_force) {
|
|||
|
||||
switch (animation_process_mode) {
|
||||
|
||||
case ANIMATION_PROCESS_PHYSICS: set_physics_process_internal(p_process && active); break;
|
||||
case ANIMATION_PROCESS_IDLE: set_process_internal(p_process && active); break;
|
||||
case ANIMATION_PROCESS_MANUAL: break;
|
||||
case ANIMATION_PROCESS_PHYSICS:
|
||||
set_physics_process_internal(p_process && active);
|
||||
break;
|
||||
case ANIMATION_PROCESS_IDLE:
|
||||
set_process_internal(p_process && active);
|
||||
break;
|
||||
case ANIMATION_PROCESS_MANUAL:
|
||||
break;
|
||||
}
|
||||
|
||||
processing = p_process;
|
||||
|
|
|
@ -57,8 +57,12 @@ void AnimationTreePlayer::_set_process(bool p_process, bool p_force) {
|
|||
|
||||
switch (animation_process_mode) {
|
||||
|
||||
case ANIMATION_PROCESS_PHYSICS: set_physics_process_internal(p_process && active); break;
|
||||
case ANIMATION_PROCESS_IDLE: set_process_internal(p_process && active); break;
|
||||
case ANIMATION_PROCESS_PHYSICS:
|
||||
set_physics_process_internal(p_process && active);
|
||||
break;
|
||||
case ANIMATION_PROCESS_IDLE:
|
||||
set_process_internal(p_process && active);
|
||||
break;
|
||||
}
|
||||
|
||||
processing = p_process;
|
||||
|
@ -250,17 +254,39 @@ bool AnimationTreePlayer::_get(const StringName &p_name, Variant &r_ret) const {
|
|||
node["position"] = n->pos;
|
||||
|
||||
switch (n->type) {
|
||||
case NODE_OUTPUT: node["type"] = "output"; break;
|
||||
case NODE_ANIMATION: node["type"] = "animation"; break;
|
||||
case NODE_ONESHOT: node["type"] = "oneshot"; break;
|
||||
case NODE_MIX: node["type"] = "mix"; break;
|
||||
case NODE_BLEND2: node["type"] = "blend2"; break;
|
||||
case NODE_BLEND3: node["type"] = "blend3"; break;
|
||||
case NODE_BLEND4: node["type"] = "blend4"; break;
|
||||
case NODE_TIMESCALE: node["type"] = "timescale"; break;
|
||||
case NODE_TIMESEEK: node["type"] = "timeseek"; break;
|
||||
case NODE_TRANSITION: node["type"] = "transition"; break;
|
||||
default: node["type"] = ""; break;
|
||||
case NODE_OUTPUT:
|
||||
node["type"] = "output";
|
||||
break;
|
||||
case NODE_ANIMATION:
|
||||
node["type"] = "animation";
|
||||
break;
|
||||
case NODE_ONESHOT:
|
||||
node["type"] = "oneshot";
|
||||
break;
|
||||
case NODE_MIX:
|
||||
node["type"] = "mix";
|
||||
break;
|
||||
case NODE_BLEND2:
|
||||
node["type"] = "blend2";
|
||||
break;
|
||||
case NODE_BLEND3:
|
||||
node["type"] = "blend3";
|
||||
break;
|
||||
case NODE_BLEND4:
|
||||
node["type"] = "blend4";
|
||||
break;
|
||||
case NODE_TIMESCALE:
|
||||
node["type"] = "timescale";
|
||||
break;
|
||||
case NODE_TIMESEEK:
|
||||
node["type"] = "timeseek";
|
||||
break;
|
||||
case NODE_TRANSITION:
|
||||
node["type"] = "transition";
|
||||
break;
|
||||
default:
|
||||
node["type"] = "";
|
||||
break;
|
||||
}
|
||||
|
||||
switch (n->type) {
|
||||
|
|
|
@ -826,8 +826,12 @@ void Tween::set_active(bool p_active) {
|
|||
|
||||
// Depending on physics or idle, set processing
|
||||
switch (tween_process_mode) {
|
||||
case TWEEN_PROCESS_IDLE: set_process_internal(p_active); break;
|
||||
case TWEEN_PROCESS_PHYSICS: set_physics_process_internal(p_active); break;
|
||||
case TWEEN_PROCESS_IDLE:
|
||||
set_process_internal(p_active);
|
||||
break;
|
||||
case TWEEN_PROCESS_PHYSICS:
|
||||
set_physics_process_internal(p_active);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -224,10 +224,18 @@ int RichTextLabel::_process_line(ItemFrame *p_frame, const Vector2 &p_ofs, int &
|
|||
} else { \
|
||||
int used = wofs - margin; \
|
||||
switch (align) { \
|
||||
case ALIGN_LEFT: l.offset_caches.push_back(0); break; \
|
||||
case ALIGN_CENTER: l.offset_caches.push_back(((p_width - margin) - used) / 2); break; \
|
||||
case ALIGN_RIGHT: l.offset_caches.push_back(((p_width - margin) - used)); break; \
|
||||
case ALIGN_FILL: l.offset_caches.push_back(line_wrapped ? ((p_width - margin) - used) : 0); break; \
|
||||
case ALIGN_LEFT: \
|
||||
l.offset_caches.push_back(0); \
|
||||
break; \
|
||||
case ALIGN_CENTER: \
|
||||
l.offset_caches.push_back(((p_width - margin) - used) / 2); \
|
||||
break; \
|
||||
case ALIGN_RIGHT: \
|
||||
l.offset_caches.push_back(((p_width - margin) - used)); \
|
||||
break; \
|
||||
case ALIGN_FILL: \
|
||||
l.offset_caches.push_back(line_wrapped ? ((p_width - margin) - used) : 0); \
|
||||
break; \
|
||||
} \
|
||||
l.height_caches.push_back(line_height); \
|
||||
l.ascent_caches.push_back(line_ascent); \
|
||||
|
|
|
@ -741,10 +741,14 @@ const Map<StringName, MultiplayerAPI::RPCMode>::Element *Node::get_node_rset_mod
|
|||
|
||||
bool Node::can_process_notification(int p_what) const {
|
||||
switch (p_what) {
|
||||
case NOTIFICATION_PHYSICS_PROCESS: return data.physics_process;
|
||||
case NOTIFICATION_PROCESS: return data.idle_process;
|
||||
case NOTIFICATION_INTERNAL_PROCESS: return data.idle_process_internal;
|
||||
case NOTIFICATION_INTERNAL_PHYSICS_PROCESS: return data.physics_process_internal;
|
||||
case NOTIFICATION_PHYSICS_PROCESS:
|
||||
return data.physics_process;
|
||||
case NOTIFICATION_PROCESS:
|
||||
return data.idle_process;
|
||||
case NOTIFICATION_INTERNAL_PROCESS:
|
||||
return data.idle_process_internal;
|
||||
case NOTIFICATION_INTERNAL_PHYSICS_PROCESS:
|
||||
return data.physics_process_internal;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -2992,10 +2996,14 @@ void Node::_bind_methods() {
|
|||
|
||||
String Node::_get_name_num_separator() {
|
||||
switch (ProjectSettings::get_singleton()->get("node/name_num_separator").operator int()) {
|
||||
case 0: return "";
|
||||
case 1: return " ";
|
||||
case 2: return "_";
|
||||
case 3: return "-";
|
||||
case 0:
|
||||
return "";
|
||||
case 1:
|
||||
return " ";
|
||||
case 2:
|
||||
return "_";
|
||||
case 3:
|
||||
return "-";
|
||||
}
|
||||
return " ";
|
||||
}
|
||||
|
|
|
@ -175,8 +175,12 @@ Timer::TimerProcessMode Timer::get_timer_process_mode() const {
|
|||
|
||||
void Timer::_set_process(bool p_process, bool p_force) {
|
||||
switch (timer_process_mode) {
|
||||
case TIMER_PROCESS_PHYSICS: set_physics_process_internal(p_process && !paused); break;
|
||||
case TIMER_PROCESS_IDLE: set_process_internal(p_process && !paused); break;
|
||||
case TIMER_PROCESS_PHYSICS:
|
||||
set_physics_process_internal(p_process && !paused);
|
||||
break;
|
||||
case TIMER_PROCESS_IDLE:
|
||||
set_process_internal(p_process && !paused);
|
||||
break;
|
||||
}
|
||||
processing = p_process;
|
||||
}
|
||||
|
|
|
@ -349,12 +349,24 @@ bool Animation::_get(const StringName &p_name, Variant &r_ret) const {
|
|||
|
||||
switch (track_get_type(track)) {
|
||||
|
||||
case TYPE_TRANSFORM: r_ret = "transform"; break;
|
||||
case TYPE_VALUE: r_ret = "value"; break;
|
||||
case TYPE_METHOD: r_ret = "method"; break;
|
||||
case TYPE_BEZIER: r_ret = "bezier"; break;
|
||||
case TYPE_AUDIO: r_ret = "audio"; break;
|
||||
case TYPE_ANIMATION: r_ret = "animation"; break;
|
||||
case TYPE_TRANSFORM:
|
||||
r_ret = "transform";
|
||||
break;
|
||||
case TYPE_VALUE:
|
||||
r_ret = "value";
|
||||
break;
|
||||
case TYPE_METHOD:
|
||||
r_ret = "method";
|
||||
break;
|
||||
case TYPE_BEZIER:
|
||||
r_ret = "bezier";
|
||||
break;
|
||||
case TYPE_AUDIO:
|
||||
r_ret = "audio";
|
||||
break;
|
||||
case TYPE_ANIMATION:
|
||||
r_ret = "animation";
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -1858,7 +1870,8 @@ T Animation::_interpolate(const Vector<TKey<T>> &p_keys, float p_time, Interpola
|
|||
return _cubic_interpolate(p_keys[pre].value, p_keys[idx].value, p_keys[next].value, p_keys[post].value, c);
|
||||
|
||||
} break;
|
||||
default: return p_keys[idx].value;
|
||||
default:
|
||||
return p_keys[idx].value;
|
||||
}
|
||||
|
||||
// do a barrel roll
|
||||
|
|
|
@ -230,9 +230,15 @@ void AudioStreamPlaybackSample::mix(AudioFrame *p_buffer, float p_rate_scale, in
|
|||
|
||||
int len = base->data_bytes;
|
||||
switch (base->format) {
|
||||
case AudioStreamSample::FORMAT_8_BITS: len /= 1; break;
|
||||
case AudioStreamSample::FORMAT_16_BITS: len /= 2; break;
|
||||
case AudioStreamSample::FORMAT_IMA_ADPCM: len *= 2; break;
|
||||
case AudioStreamSample::FORMAT_8_BITS:
|
||||
len /= 1;
|
||||
break;
|
||||
case AudioStreamSample::FORMAT_16_BITS:
|
||||
len /= 2;
|
||||
break;
|
||||
case AudioStreamSample::FORMAT_IMA_ADPCM:
|
||||
len *= 2;
|
||||
break;
|
||||
}
|
||||
|
||||
if (base->stereo) {
|
||||
|
@ -466,9 +472,15 @@ float AudioStreamSample::get_length() const {
|
|||
|
||||
int len = data_bytes;
|
||||
switch (format) {
|
||||
case AudioStreamSample::FORMAT_8_BITS: len /= 1; break;
|
||||
case AudioStreamSample::FORMAT_16_BITS: len /= 2; break;
|
||||
case AudioStreamSample::FORMAT_IMA_ADPCM: len *= 2; break;
|
||||
case AudioStreamSample::FORMAT_8_BITS:
|
||||
len /= 1;
|
||||
break;
|
||||
case AudioStreamSample::FORMAT_16_BITS:
|
||||
len /= 2;
|
||||
break;
|
||||
case AudioStreamSample::FORMAT_IMA_ADPCM:
|
||||
len *= 2;
|
||||
break;
|
||||
}
|
||||
|
||||
if (stereo) {
|
||||
|
@ -537,9 +549,15 @@ Error AudioStreamSample::save_to_wav(const String &p_path) {
|
|||
|
||||
int byte_pr_sample = 0;
|
||||
switch (format) {
|
||||
case AudioStreamSample::FORMAT_8_BITS: byte_pr_sample = 1; break;
|
||||
case AudioStreamSample::FORMAT_16_BITS: byte_pr_sample = 2; break;
|
||||
case AudioStreamSample::FORMAT_IMA_ADPCM: byte_pr_sample = 4; break;
|
||||
case AudioStreamSample::FORMAT_8_BITS:
|
||||
byte_pr_sample = 1;
|
||||
break;
|
||||
case AudioStreamSample::FORMAT_16_BITS:
|
||||
byte_pr_sample = 2;
|
||||
break;
|
||||
case AudioStreamSample::FORMAT_IMA_ADPCM:
|
||||
byte_pr_sample = 4;
|
||||
break;
|
||||
}
|
||||
|
||||
String file_path = p_path;
|
||||
|
|
|
@ -411,10 +411,18 @@ void SpatialMaterial::_update_shader() {
|
|||
|
||||
String code = "shader_type spatial;\nrender_mode ";
|
||||
switch (blend_mode) {
|
||||
case BLEND_MODE_MIX: code += "blend_mix"; break;
|
||||
case BLEND_MODE_ADD: code += "blend_add"; break;
|
||||
case BLEND_MODE_SUB: code += "blend_sub"; break;
|
||||
case BLEND_MODE_MUL: code += "blend_mul"; break;
|
||||
case BLEND_MODE_MIX:
|
||||
code += "blend_mix";
|
||||
break;
|
||||
case BLEND_MODE_ADD:
|
||||
code += "blend_add";
|
||||
break;
|
||||
case BLEND_MODE_SUB:
|
||||
code += "blend_sub";
|
||||
break;
|
||||
case BLEND_MODE_MUL:
|
||||
code += "blend_mul";
|
||||
break;
|
||||
}
|
||||
|
||||
DepthDrawMode ddm = depth_draw_mode;
|
||||
|
@ -423,30 +431,64 @@ void SpatialMaterial::_update_shader() {
|
|||
}
|
||||
|
||||
switch (ddm) {
|
||||
case DEPTH_DRAW_OPAQUE_ONLY: code += ",depth_draw_opaque"; break;
|
||||
case DEPTH_DRAW_ALWAYS: code += ",depth_draw_always"; break;
|
||||
case DEPTH_DRAW_DISABLED: code += ",depth_draw_never"; break;
|
||||
case DEPTH_DRAW_ALPHA_OPAQUE_PREPASS: code += ",depth_draw_alpha_prepass"; break;
|
||||
case DEPTH_DRAW_OPAQUE_ONLY:
|
||||
code += ",depth_draw_opaque";
|
||||
break;
|
||||
case DEPTH_DRAW_ALWAYS:
|
||||
code += ",depth_draw_always";
|
||||
break;
|
||||
case DEPTH_DRAW_DISABLED:
|
||||
code += ",depth_draw_never";
|
||||
break;
|
||||
case DEPTH_DRAW_ALPHA_OPAQUE_PREPASS:
|
||||
code += ",depth_draw_alpha_prepass";
|
||||
break;
|
||||
}
|
||||
|
||||
switch (cull_mode) {
|
||||
case CULL_BACK: code += ",cull_back"; break;
|
||||
case CULL_FRONT: code += ",cull_front"; break;
|
||||
case CULL_DISABLED: code += ",cull_disabled"; break;
|
||||
case CULL_BACK:
|
||||
code += ",cull_back";
|
||||
break;
|
||||
case CULL_FRONT:
|
||||
code += ",cull_front";
|
||||
break;
|
||||
case CULL_DISABLED:
|
||||
code += ",cull_disabled";
|
||||
break;
|
||||
}
|
||||
switch (diffuse_mode) {
|
||||
case DIFFUSE_BURLEY: code += ",diffuse_burley"; break;
|
||||
case DIFFUSE_LAMBERT: code += ",diffuse_lambert"; break;
|
||||
case DIFFUSE_LAMBERT_WRAP: code += ",diffuse_lambert_wrap"; break;
|
||||
case DIFFUSE_OREN_NAYAR: code += ",diffuse_oren_nayar"; break;
|
||||
case DIFFUSE_TOON: code += ",diffuse_toon"; break;
|
||||
case DIFFUSE_BURLEY:
|
||||
code += ",diffuse_burley";
|
||||
break;
|
||||
case DIFFUSE_LAMBERT:
|
||||
code += ",diffuse_lambert";
|
||||
break;
|
||||
case DIFFUSE_LAMBERT_WRAP:
|
||||
code += ",diffuse_lambert_wrap";
|
||||
break;
|
||||
case DIFFUSE_OREN_NAYAR:
|
||||
code += ",diffuse_oren_nayar";
|
||||
break;
|
||||
case DIFFUSE_TOON:
|
||||
code += ",diffuse_toon";
|
||||
break;
|
||||
}
|
||||
switch (specular_mode) {
|
||||
case SPECULAR_SCHLICK_GGX: code += ",specular_schlick_ggx"; break;
|
||||
case SPECULAR_BLINN: code += ",specular_blinn"; break;
|
||||
case SPECULAR_PHONG: code += ",specular_phong"; break;
|
||||
case SPECULAR_TOON: code += ",specular_toon"; break;
|
||||
case SPECULAR_DISABLED: code += ",specular_disabled"; break;
|
||||
case SPECULAR_SCHLICK_GGX:
|
||||
code += ",specular_schlick_ggx";
|
||||
break;
|
||||
case SPECULAR_BLINN:
|
||||
code += ",specular_blinn";
|
||||
break;
|
||||
case SPECULAR_PHONG:
|
||||
code += ",specular_phong";
|
||||
break;
|
||||
case SPECULAR_TOON:
|
||||
code += ",specular_toon";
|
||||
break;
|
||||
case SPECULAR_DISABLED:
|
||||
code += ",specular_disabled";
|
||||
break;
|
||||
}
|
||||
|
||||
if (flags[FLAG_UNSHADED]) {
|
||||
|
|
|
@ -716,7 +716,8 @@ void ParticlesMaterial::set_param(Parameter p_param, float p_value) {
|
|||
case PARAM_ANIM_OFFSET: {
|
||||
VisualServer::get_singleton()->material_set_param(_get_material(), shader_names->anim_offset, p_value);
|
||||
} break;
|
||||
case PARAM_MAX: break; // Can't happen, but silences warning
|
||||
case PARAM_MAX:
|
||||
break; // Can't happen, but silences warning
|
||||
}
|
||||
}
|
||||
float ParticlesMaterial::get_param(Parameter p_param) const {
|
||||
|
@ -769,7 +770,8 @@ void ParticlesMaterial::set_param_randomness(Parameter p_param, float p_value) {
|
|||
case PARAM_ANIM_OFFSET: {
|
||||
VisualServer::get_singleton()->material_set_param(_get_material(), shader_names->anim_offset_random, p_value);
|
||||
} break;
|
||||
case PARAM_MAX: break; // Can't happen, but silences warning
|
||||
case PARAM_MAX:
|
||||
break; // Can't happen, but silences warning
|
||||
}
|
||||
}
|
||||
float ParticlesMaterial::get_param_randomness(Parameter p_param) const {
|
||||
|
@ -841,7 +843,8 @@ void ParticlesMaterial::set_param_texture(Parameter p_param, const Ref<Texture>
|
|||
case PARAM_ANIM_OFFSET: {
|
||||
VisualServer::get_singleton()->material_set_param(_get_material(), shader_names->anim_offset_texture, p_texture);
|
||||
} break;
|
||||
case PARAM_MAX: break; // Can't happen, but silences warning
|
||||
case PARAM_MAX:
|
||||
break; // Can't happen, but silences warning
|
||||
}
|
||||
|
||||
_queue_shader_change();
|
||||
|
|
|
@ -1280,10 +1280,18 @@ Error VisualShader::_write_node(Type type, StringBuilder &global_code, StringBui
|
|||
for (int i = 0; i < output_count; i++) {
|
||||
String var_name = "n_out" + itos(node) + "p" + itos(i);
|
||||
switch (vsnode->get_output_port_type(i)) {
|
||||
case VisualShaderNode::PORT_TYPE_SCALAR: outputs[i] = "float " + var_name; break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR: outputs[i] = "vec3 " + var_name; break;
|
||||
case VisualShaderNode::PORT_TYPE_BOOLEAN: outputs[i] = "bool " + var_name; break;
|
||||
case VisualShaderNode::PORT_TYPE_TRANSFORM: outputs[i] = "mat4 " + var_name; break;
|
||||
case VisualShaderNode::PORT_TYPE_SCALAR:
|
||||
outputs[i] = "float " + var_name;
|
||||
break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR:
|
||||
outputs[i] = "vec3 " + var_name;
|
||||
break;
|
||||
case VisualShaderNode::PORT_TYPE_BOOLEAN:
|
||||
outputs[i] = "bool " + var_name;
|
||||
break;
|
||||
case VisualShaderNode::PORT_TYPE_TRANSFORM:
|
||||
outputs[i] = "mat4 " + var_name;
|
||||
break;
|
||||
default: {
|
||||
}
|
||||
}
|
||||
|
@ -1293,10 +1301,18 @@ Error VisualShader::_write_node(Type type, StringBuilder &global_code, StringBui
|
|||
for (int i = 0; i < output_count; i++) {
|
||||
outputs[i] = "n_out" + itos(node) + "p" + itos(i);
|
||||
switch (vsnode->get_output_port_type(i)) {
|
||||
case VisualShaderNode::PORT_TYPE_SCALAR: code += String() + "\tfloat " + outputs[i] + ";\n"; break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR: code += String() + "\tvec3 " + outputs[i] + ";\n"; break;
|
||||
case VisualShaderNode::PORT_TYPE_BOOLEAN: code += String() + "\tbool " + outputs[i] + ";\n"; break;
|
||||
case VisualShaderNode::PORT_TYPE_TRANSFORM: code += String() + "\tmat4 " + outputs[i] + ";\n"; break;
|
||||
case VisualShaderNode::PORT_TYPE_SCALAR:
|
||||
code += String() + "\tfloat " + outputs[i] + ";\n";
|
||||
break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR:
|
||||
code += String() + "\tvec3 " + outputs[i] + ";\n";
|
||||
break;
|
||||
case VisualShaderNode::PORT_TYPE_BOOLEAN:
|
||||
code += String() + "\tbool " + outputs[i] + ";\n";
|
||||
break;
|
||||
case VisualShaderNode::PORT_TYPE_TRANSFORM:
|
||||
code += String() + "\tmat4 " + outputs[i] + ";\n";
|
||||
break;
|
||||
default: {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -436,9 +436,14 @@ String VisualShaderNodeTexture::generate_global(Shader::Mode p_mode, VisualShade
|
|||
|
||||
String u = "uniform sampler2D " + make_unique_id(p_type, p_id, "tex");
|
||||
switch (texture_type) {
|
||||
case TYPE_DATA: break;
|
||||
case TYPE_COLOR: u += " : hint_albedo"; break;
|
||||
case TYPE_NORMALMAP: u += " : hint_normal"; break;
|
||||
case TYPE_DATA:
|
||||
break;
|
||||
case TYPE_COLOR:
|
||||
u += " : hint_albedo";
|
||||
break;
|
||||
case TYPE_NORMALMAP:
|
||||
u += " : hint_normal";
|
||||
break;
|
||||
}
|
||||
return u + ";\n";
|
||||
}
|
||||
|
@ -812,9 +817,14 @@ String VisualShaderNodeCubeMap::generate_global(Shader::Mode p_mode, VisualShade
|
|||
if (source == SOURCE_TEXTURE) {
|
||||
String u = "uniform samplerCube " + make_unique_id(p_type, p_id, "cube");
|
||||
switch (texture_type) {
|
||||
case TYPE_DATA: break;
|
||||
case TYPE_COLOR: u += " : hint_albedo"; break;
|
||||
case TYPE_NORMALMAP: u += " : hint_normal"; break;
|
||||
case TYPE_DATA:
|
||||
break;
|
||||
case TYPE_COLOR:
|
||||
u += " : hint_albedo";
|
||||
break;
|
||||
case TYPE_NORMALMAP:
|
||||
u += " : hint_normal";
|
||||
break;
|
||||
}
|
||||
return u + ";\n";
|
||||
}
|
||||
|
@ -982,16 +992,36 @@ String VisualShaderNodeScalarOp::generate_code(Shader::Mode p_mode, VisualShader
|
|||
String code = "\t" + p_output_vars[0] + " = ";
|
||||
switch (op) {
|
||||
|
||||
case OP_ADD: code += p_input_vars[0] + " + " + p_input_vars[1] + ";\n"; break;
|
||||
case OP_SUB: code += p_input_vars[0] + " - " + p_input_vars[1] + ";\n"; break;
|
||||
case OP_MUL: code += p_input_vars[0] + " * " + p_input_vars[1] + ";\n"; break;
|
||||
case OP_DIV: code += p_input_vars[0] + " / " + p_input_vars[1] + ";\n"; break;
|
||||
case OP_MOD: code += "mod(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n"; break;
|
||||
case OP_POW: code += "pow(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n"; break;
|
||||
case OP_MAX: code += "max(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n"; break;
|
||||
case OP_MIN: code += "min(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n"; break;
|
||||
case OP_ATAN2: code += "atan(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n"; break;
|
||||
case OP_STEP: code += "step(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n"; break;
|
||||
case OP_ADD:
|
||||
code += p_input_vars[0] + " + " + p_input_vars[1] + ";\n";
|
||||
break;
|
||||
case OP_SUB:
|
||||
code += p_input_vars[0] + " - " + p_input_vars[1] + ";\n";
|
||||
break;
|
||||
case OP_MUL:
|
||||
code += p_input_vars[0] + " * " + p_input_vars[1] + ";\n";
|
||||
break;
|
||||
case OP_DIV:
|
||||
code += p_input_vars[0] + " / " + p_input_vars[1] + ";\n";
|
||||
break;
|
||||
case OP_MOD:
|
||||
code += "mod(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n";
|
||||
break;
|
||||
case OP_POW:
|
||||
code += "pow(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n";
|
||||
break;
|
||||
case OP_MAX:
|
||||
code += "max(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n";
|
||||
break;
|
||||
case OP_MIN:
|
||||
code += "min(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n";
|
||||
break;
|
||||
case OP_ATAN2:
|
||||
code += "atan(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n";
|
||||
break;
|
||||
case OP_STEP:
|
||||
code += "step(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n";
|
||||
break;
|
||||
}
|
||||
|
||||
return code;
|
||||
|
@ -1074,18 +1104,42 @@ String VisualShaderNodeVectorOp::generate_code(Shader::Mode p_mode, VisualShader
|
|||
String code = "\t" + p_output_vars[0] + " = ";
|
||||
switch (op) {
|
||||
|
||||
case OP_ADD: code += p_input_vars[0] + " + " + p_input_vars[1] + ";\n"; break;
|
||||
case OP_SUB: code += p_input_vars[0] + " - " + p_input_vars[1] + ";\n"; break;
|
||||
case OP_MUL: code += p_input_vars[0] + " * " + p_input_vars[1] + ";\n"; break;
|
||||
case OP_DIV: code += p_input_vars[0] + " / " + p_input_vars[1] + ";\n"; break;
|
||||
case OP_MOD: code += "mod(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n"; break;
|
||||
case OP_POW: code += "pow(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n"; break;
|
||||
case OP_MAX: code += "max(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n"; break;
|
||||
case OP_MIN: code += "min(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n"; break;
|
||||
case OP_CROSS: code += "cross(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n"; break;
|
||||
case OP_ATAN2: code += "atan(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n"; break;
|
||||
case OP_REFLECT: code += "reflect(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n"; break;
|
||||
case OP_STEP: code += "step(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n"; break;
|
||||
case OP_ADD:
|
||||
code += p_input_vars[0] + " + " + p_input_vars[1] + ";\n";
|
||||
break;
|
||||
case OP_SUB:
|
||||
code += p_input_vars[0] + " - " + p_input_vars[1] + ";\n";
|
||||
break;
|
||||
case OP_MUL:
|
||||
code += p_input_vars[0] + " * " + p_input_vars[1] + ";\n";
|
||||
break;
|
||||
case OP_DIV:
|
||||
code += p_input_vars[0] + " / " + p_input_vars[1] + ";\n";
|
||||
break;
|
||||
case OP_MOD:
|
||||
code += "mod(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n";
|
||||
break;
|
||||
case OP_POW:
|
||||
code += "pow(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n";
|
||||
break;
|
||||
case OP_MAX:
|
||||
code += "max(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n";
|
||||
break;
|
||||
case OP_MIN:
|
||||
code += "min(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n";
|
||||
break;
|
||||
case OP_CROSS:
|
||||
code += "cross(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n";
|
||||
break;
|
||||
case OP_ATAN2:
|
||||
code += "atan(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n";
|
||||
break;
|
||||
case OP_REFLECT:
|
||||
code += "reflect(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n";
|
||||
break;
|
||||
case OP_STEP:
|
||||
code += "step(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n";
|
||||
break;
|
||||
}
|
||||
|
||||
return code;
|
||||
|
@ -3297,8 +3351,12 @@ String VisualShaderNodeTextureUniform::generate_global(Shader::Mode p_mode, Visu
|
|||
else
|
||||
code += " : hint_albedo;\n";
|
||||
break;
|
||||
case TYPE_NORMALMAP: code += " : hint_normal;\n"; break;
|
||||
case TYPE_ANISO: code += " : hint_aniso;\n"; break;
|
||||
case TYPE_NORMALMAP:
|
||||
code += " : hint_normal;\n";
|
||||
break;
|
||||
case TYPE_ANISO:
|
||||
code += " : hint_aniso;\n";
|
||||
break;
|
||||
}
|
||||
|
||||
return code;
|
||||
|
@ -3536,8 +3594,12 @@ String VisualShaderNodeCubeMapUniform::generate_global(Shader::Mode p_mode, Visu
|
|||
else
|
||||
code += " : hint_albedo;\n";
|
||||
break;
|
||||
case TYPE_NORMALMAP: code += " : hint_normal;\n"; break;
|
||||
case TYPE_ANISO: code += " : hint_aniso;\n"; break;
|
||||
case TYPE_NORMALMAP:
|
||||
code += " : hint_normal;\n";
|
||||
break;
|
||||
case TYPE_ANISO:
|
||||
code += " : hint_aniso;\n";
|
||||
break;
|
||||
}
|
||||
|
||||
return code;
|
||||
|
|
|
@ -119,10 +119,18 @@ bool AudioRBResampler::mix(AudioFrame *p_dest, int p_frames) {
|
|||
{
|
||||
int src_read = 0;
|
||||
switch (channels) {
|
||||
case 1: src_read = _resample<1>(p_dest, target_todo, increment); break;
|
||||
case 2: src_read = _resample<2>(p_dest, target_todo, increment); break;
|
||||
case 4: src_read = _resample<4>(p_dest, target_todo, increment); break;
|
||||
case 6: src_read = _resample<6>(p_dest, target_todo, increment); break;
|
||||
case 1:
|
||||
src_read = _resample<1>(p_dest, target_todo, increment);
|
||||
break;
|
||||
case 2:
|
||||
src_read = _resample<2>(p_dest, target_todo, increment);
|
||||
break;
|
||||
case 4:
|
||||
src_read = _resample<4>(p_dest, target_todo, increment);
|
||||
break;
|
||||
case 6:
|
||||
src_read = _resample<6>(p_dest, target_todo, increment);
|
||||
break;
|
||||
}
|
||||
|
||||
if (src_read > read_space)
|
||||
|
|
|
@ -113,9 +113,12 @@ void AudioDriver::input_buffer_write(int32_t sample) {
|
|||
|
||||
AudioDriver::SpeakerMode AudioDriver::get_speaker_mode_by_total_channels(int p_channels) const {
|
||||
switch (p_channels) {
|
||||
case 4: return SPEAKER_SURROUND_31;
|
||||
case 6: return SPEAKER_SURROUND_51;
|
||||
case 8: return SPEAKER_SURROUND_71;
|
||||
case 4:
|
||||
return SPEAKER_SURROUND_31;
|
||||
case 6:
|
||||
return SPEAKER_SURROUND_51;
|
||||
case 8:
|
||||
return SPEAKER_SURROUND_71;
|
||||
}
|
||||
|
||||
// Default to STEREO
|
||||
|
@ -124,10 +127,14 @@ AudioDriver::SpeakerMode AudioDriver::get_speaker_mode_by_total_channels(int p_c
|
|||
|
||||
int AudioDriver::get_total_channels_by_speaker_mode(AudioDriver::SpeakerMode p_mode) const {
|
||||
switch (p_mode) {
|
||||
case SPEAKER_MODE_STEREO: return 2;
|
||||
case SPEAKER_SURROUND_31: return 4;
|
||||
case SPEAKER_SURROUND_51: return 6;
|
||||
case SPEAKER_SURROUND_71: return 8;
|
||||
case SPEAKER_MODE_STEREO:
|
||||
return 2;
|
||||
case SPEAKER_SURROUND_31:
|
||||
return 4;
|
||||
case SPEAKER_SURROUND_51:
|
||||
return 6;
|
||||
case SPEAKER_SURROUND_71:
|
||||
return 8;
|
||||
}
|
||||
|
||||
ERR_FAIL_V(2);
|
||||
|
|
|
@ -266,10 +266,14 @@ protected:
|
|||
public:
|
||||
_FORCE_INLINE_ int get_channel_count() const {
|
||||
switch (get_speaker_mode()) {
|
||||
case SPEAKER_MODE_STEREO: return 1;
|
||||
case SPEAKER_SURROUND_31: return 2;
|
||||
case SPEAKER_SURROUND_51: return 3;
|
||||
case SPEAKER_SURROUND_71: return 4;
|
||||
case SPEAKER_MODE_STEREO:
|
||||
return 1;
|
||||
case SPEAKER_SURROUND_31:
|
||||
return 2;
|
||||
case SPEAKER_SURROUND_51:
|
||||
return 3;
|
||||
case SPEAKER_SURROUND_71:
|
||||
return 4;
|
||||
}
|
||||
ERR_FAIL_V(1);
|
||||
}
|
||||
|
|
|
@ -129,28 +129,52 @@ void AreaSW::set_space_override_mode(PhysicsServer::AreaSpaceOverrideMode p_mode
|
|||
void AreaSW::set_param(PhysicsServer::AreaParameter p_param, const Variant &p_value) {
|
||||
|
||||
switch (p_param) {
|
||||
case PhysicsServer::AREA_PARAM_GRAVITY: gravity = p_value; break;
|
||||
case PhysicsServer::AREA_PARAM_GRAVITY_VECTOR: gravity_vector = p_value; break;
|
||||
case PhysicsServer::AREA_PARAM_GRAVITY_IS_POINT: gravity_is_point = p_value; break;
|
||||
case PhysicsServer::AREA_PARAM_GRAVITY_DISTANCE_SCALE: gravity_distance_scale = p_value; break;
|
||||
case PhysicsServer::AREA_PARAM_GRAVITY_POINT_ATTENUATION: point_attenuation = p_value; break;
|
||||
case PhysicsServer::AREA_PARAM_LINEAR_DAMP: linear_damp = p_value; break;
|
||||
case PhysicsServer::AREA_PARAM_ANGULAR_DAMP: angular_damp = p_value; break;
|
||||
case PhysicsServer::AREA_PARAM_PRIORITY: priority = p_value; break;
|
||||
case PhysicsServer::AREA_PARAM_GRAVITY:
|
||||
gravity = p_value;
|
||||
break;
|
||||
case PhysicsServer::AREA_PARAM_GRAVITY_VECTOR:
|
||||
gravity_vector = p_value;
|
||||
break;
|
||||
case PhysicsServer::AREA_PARAM_GRAVITY_IS_POINT:
|
||||
gravity_is_point = p_value;
|
||||
break;
|
||||
case PhysicsServer::AREA_PARAM_GRAVITY_DISTANCE_SCALE:
|
||||
gravity_distance_scale = p_value;
|
||||
break;
|
||||
case PhysicsServer::AREA_PARAM_GRAVITY_POINT_ATTENUATION:
|
||||
point_attenuation = p_value;
|
||||
break;
|
||||
case PhysicsServer::AREA_PARAM_LINEAR_DAMP:
|
||||
linear_damp = p_value;
|
||||
break;
|
||||
case PhysicsServer::AREA_PARAM_ANGULAR_DAMP:
|
||||
angular_damp = p_value;
|
||||
break;
|
||||
case PhysicsServer::AREA_PARAM_PRIORITY:
|
||||
priority = p_value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Variant AreaSW::get_param(PhysicsServer::AreaParameter p_param) const {
|
||||
|
||||
switch (p_param) {
|
||||
case PhysicsServer::AREA_PARAM_GRAVITY: return gravity;
|
||||
case PhysicsServer::AREA_PARAM_GRAVITY_VECTOR: return gravity_vector;
|
||||
case PhysicsServer::AREA_PARAM_GRAVITY_IS_POINT: return gravity_is_point;
|
||||
case PhysicsServer::AREA_PARAM_GRAVITY_DISTANCE_SCALE: return gravity_distance_scale;
|
||||
case PhysicsServer::AREA_PARAM_GRAVITY_POINT_ATTENUATION: return point_attenuation;
|
||||
case PhysicsServer::AREA_PARAM_LINEAR_DAMP: return linear_damp;
|
||||
case PhysicsServer::AREA_PARAM_ANGULAR_DAMP: return angular_damp;
|
||||
case PhysicsServer::AREA_PARAM_PRIORITY: return priority;
|
||||
case PhysicsServer::AREA_PARAM_GRAVITY:
|
||||
return gravity;
|
||||
case PhysicsServer::AREA_PARAM_GRAVITY_VECTOR:
|
||||
return gravity_vector;
|
||||
case PhysicsServer::AREA_PARAM_GRAVITY_IS_POINT:
|
||||
return gravity_is_point;
|
||||
case PhysicsServer::AREA_PARAM_GRAVITY_DISTANCE_SCALE:
|
||||
return gravity_distance_scale;
|
||||
case PhysicsServer::AREA_PARAM_GRAVITY_POINT_ATTENUATION:
|
||||
return point_attenuation;
|
||||
case PhysicsServer::AREA_PARAM_LINEAR_DAMP:
|
||||
return linear_damp;
|
||||
case PhysicsServer::AREA_PARAM_ANGULAR_DAMP:
|
||||
return angular_damp;
|
||||
case PhysicsServer::AREA_PARAM_PRIORITY:
|
||||
return priority;
|
||||
}
|
||||
|
||||
return Variant();
|
||||
|
|
|
@ -336,7 +336,8 @@ void ConeTwistJointSW::set_param(PhysicsServer::ConeTwistJointParam p_param, rea
|
|||
|
||||
m_relaxationFactor = p_value;
|
||||
} break;
|
||||
case PhysicsServer::CONE_TWIST_MAX: break; // Can't happen, but silences warning
|
||||
case PhysicsServer::CONE_TWIST_MAX:
|
||||
break; // Can't happen, but silences warning
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -363,7 +364,8 @@ real_t ConeTwistJointSW::get_param(PhysicsServer::ConeTwistJointParam p_param) c
|
|||
|
||||
return m_relaxationFactor;
|
||||
} break;
|
||||
case PhysicsServer::CONE_TWIST_MAX: break; // Can't happen, but silences warning
|
||||
case PhysicsServer::CONE_TWIST_MAX:
|
||||
break; // Can't happen, but silences warning
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -525,7 +525,8 @@ void Generic6DOFJointSW::set_param(Vector3::Axis p_axis, PhysicsServer::G6DOFJoi
|
|||
case PhysicsServer::G6DOF_JOINT_ANGULAR_SPRING_EQUILIBRIUM_POINT: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_MAX: break; // Can't happen, but silences warning
|
||||
case PhysicsServer::G6DOF_JOINT_MAX:
|
||||
break; // Can't happen, but silences warning
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -625,7 +626,8 @@ real_t Generic6DOFJointSW::get_param(Vector3::Axis p_axis, PhysicsServer::G6DOFJ
|
|||
case PhysicsServer::G6DOF_JOINT_ANGULAR_SPRING_EQUILIBRIUM_POINT: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_MAX: break; // Can't happen, but silences warning
|
||||
case PhysicsServer::G6DOF_JOINT_MAX:
|
||||
break; // Can't happen, but silences warning
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -656,7 +658,8 @@ void Generic6DOFJointSW::set_flag(Vector3::Axis p_axis, PhysicsServer::G6DOFJoin
|
|||
case PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_ANGULAR_SPRING: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_FLAG_MAX: break; // Can't happen, but silences warning
|
||||
case PhysicsServer::G6DOF_JOINT_FLAG_MAX:
|
||||
break; // Can't happen, but silences warning
|
||||
}
|
||||
}
|
||||
bool Generic6DOFJointSW::get_flag(Vector3::Axis p_axis, PhysicsServer::G6DOFJointAxisFlag p_flag) const {
|
||||
|
@ -684,7 +687,8 @@ bool Generic6DOFJointSW::get_flag(Vector3::Axis p_axis, PhysicsServer::G6DOFJoin
|
|||
case PhysicsServer::G6DOF_JOINT_FLAG_ENABLE_ANGULAR_SPRING: {
|
||||
// Not implemented in GodotPhysics backend
|
||||
} break;
|
||||
case PhysicsServer::G6DOF_JOINT_FLAG_MAX: break; // Can't happen, but silences warning
|
||||
case PhysicsServer::G6DOF_JOINT_FLAG_MAX:
|
||||
break; // Can't happen, but silences warning
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -403,15 +403,32 @@ void HingeJointSW::set_param(PhysicsServer::HingeJointParam p_param, real_t p_va
|
|||
|
||||
switch (p_param) {
|
||||
|
||||
case PhysicsServer::HINGE_JOINT_BIAS: tau = p_value; break;
|
||||
case PhysicsServer::HINGE_JOINT_LIMIT_UPPER: m_upperLimit = p_value; break;
|
||||
case PhysicsServer::HINGE_JOINT_LIMIT_LOWER: m_lowerLimit = p_value; break;
|
||||
case PhysicsServer::HINGE_JOINT_LIMIT_BIAS: m_biasFactor = p_value; break;
|
||||
case PhysicsServer::HINGE_JOINT_LIMIT_SOFTNESS: m_limitSoftness = p_value; break;
|
||||
case PhysicsServer::HINGE_JOINT_LIMIT_RELAXATION: m_relaxationFactor = p_value; break;
|
||||
case PhysicsServer::HINGE_JOINT_MOTOR_TARGET_VELOCITY: m_motorTargetVelocity = p_value; break;
|
||||
case PhysicsServer::HINGE_JOINT_MOTOR_MAX_IMPULSE: m_maxMotorImpulse = p_value; break;
|
||||
case PhysicsServer::HINGE_JOINT_MAX: break; // Can't happen, but silences warning
|
||||
case PhysicsServer::HINGE_JOINT_BIAS:
|
||||
tau = p_value;
|
||||
break;
|
||||
case PhysicsServer::HINGE_JOINT_LIMIT_UPPER:
|
||||
m_upperLimit = p_value;
|
||||
break;
|
||||
case PhysicsServer::HINGE_JOINT_LIMIT_LOWER:
|
||||
m_lowerLimit = p_value;
|
||||
break;
|
||||
case PhysicsServer::HINGE_JOINT_LIMIT_BIAS:
|
||||
m_biasFactor = p_value;
|
||||
break;
|
||||
case PhysicsServer::HINGE_JOINT_LIMIT_SOFTNESS:
|
||||
m_limitSoftness = p_value;
|
||||
break;
|
||||
case PhysicsServer::HINGE_JOINT_LIMIT_RELAXATION:
|
||||
m_relaxationFactor = p_value;
|
||||
break;
|
||||
case PhysicsServer::HINGE_JOINT_MOTOR_TARGET_VELOCITY:
|
||||
m_motorTargetVelocity = p_value;
|
||||
break;
|
||||
case PhysicsServer::HINGE_JOINT_MOTOR_MAX_IMPULSE:
|
||||
m_maxMotorImpulse = p_value;
|
||||
break;
|
||||
case PhysicsServer::HINGE_JOINT_MAX:
|
||||
break; // Can't happen, but silences warning
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -419,15 +436,24 @@ real_t HingeJointSW::get_param(PhysicsServer::HingeJointParam p_param) const {
|
|||
|
||||
switch (p_param) {
|
||||
|
||||
case PhysicsServer::HINGE_JOINT_BIAS: return tau;
|
||||
case PhysicsServer::HINGE_JOINT_LIMIT_UPPER: return m_upperLimit;
|
||||
case PhysicsServer::HINGE_JOINT_LIMIT_LOWER: return m_lowerLimit;
|
||||
case PhysicsServer::HINGE_JOINT_LIMIT_BIAS: return m_biasFactor;
|
||||
case PhysicsServer::HINGE_JOINT_LIMIT_SOFTNESS: return m_limitSoftness;
|
||||
case PhysicsServer::HINGE_JOINT_LIMIT_RELAXATION: return m_relaxationFactor;
|
||||
case PhysicsServer::HINGE_JOINT_MOTOR_TARGET_VELOCITY: return m_motorTargetVelocity;
|
||||
case PhysicsServer::HINGE_JOINT_MOTOR_MAX_IMPULSE: return m_maxMotorImpulse;
|
||||
case PhysicsServer::HINGE_JOINT_MAX: break; // Can't happen, but silences warning
|
||||
case PhysicsServer::HINGE_JOINT_BIAS:
|
||||
return tau;
|
||||
case PhysicsServer::HINGE_JOINT_LIMIT_UPPER:
|
||||
return m_upperLimit;
|
||||
case PhysicsServer::HINGE_JOINT_LIMIT_LOWER:
|
||||
return m_lowerLimit;
|
||||
case PhysicsServer::HINGE_JOINT_LIMIT_BIAS:
|
||||
return m_biasFactor;
|
||||
case PhysicsServer::HINGE_JOINT_LIMIT_SOFTNESS:
|
||||
return m_limitSoftness;
|
||||
case PhysicsServer::HINGE_JOINT_LIMIT_RELAXATION:
|
||||
return m_relaxationFactor;
|
||||
case PhysicsServer::HINGE_JOINT_MOTOR_TARGET_VELOCITY:
|
||||
return m_motorTargetVelocity;
|
||||
case PhysicsServer::HINGE_JOINT_MOTOR_MAX_IMPULSE:
|
||||
return m_maxMotorImpulse;
|
||||
case PhysicsServer::HINGE_JOINT_MAX:
|
||||
break; // Can't happen, but silences warning
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -436,17 +462,25 @@ real_t HingeJointSW::get_param(PhysicsServer::HingeJointParam p_param) const {
|
|||
void HingeJointSW::set_flag(PhysicsServer::HingeJointFlag p_flag, bool p_value) {
|
||||
|
||||
switch (p_flag) {
|
||||
case PhysicsServer::HINGE_JOINT_FLAG_USE_LIMIT: m_useLimit = p_value; break;
|
||||
case PhysicsServer::HINGE_JOINT_FLAG_ENABLE_MOTOR: m_enableAngularMotor = p_value; break;
|
||||
case PhysicsServer::HINGE_JOINT_FLAG_MAX: break; // Can't happen, but silences warning
|
||||
case PhysicsServer::HINGE_JOINT_FLAG_USE_LIMIT:
|
||||
m_useLimit = p_value;
|
||||
break;
|
||||
case PhysicsServer::HINGE_JOINT_FLAG_ENABLE_MOTOR:
|
||||
m_enableAngularMotor = p_value;
|
||||
break;
|
||||
case PhysicsServer::HINGE_JOINT_FLAG_MAX:
|
||||
break; // Can't happen, but silences warning
|
||||
}
|
||||
}
|
||||
bool HingeJointSW::get_flag(PhysicsServer::HingeJointFlag p_flag) const {
|
||||
|
||||
switch (p_flag) {
|
||||
case PhysicsServer::HINGE_JOINT_FLAG_USE_LIMIT: return m_useLimit;
|
||||
case PhysicsServer::HINGE_JOINT_FLAG_ENABLE_MOTOR: return m_enableAngularMotor;
|
||||
case PhysicsServer::HINGE_JOINT_FLAG_MAX: break; // Can't happen, but silences warning
|
||||
case PhysicsServer::HINGE_JOINT_FLAG_USE_LIMIT:
|
||||
return m_useLimit;
|
||||
case PhysicsServer::HINGE_JOINT_FLAG_ENABLE_MOTOR:
|
||||
return m_enableAngularMotor;
|
||||
case PhysicsServer::HINGE_JOINT_FLAG_MAX:
|
||||
break; // Can't happen, but silences warning
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
|
@ -132,18 +132,27 @@ void PinJointSW::solve(real_t p_step) {
|
|||
void PinJointSW::set_param(PhysicsServer::PinJointParam p_param, real_t p_value) {
|
||||
|
||||
switch (p_param) {
|
||||
case PhysicsServer::PIN_JOINT_BIAS: m_tau = p_value; break;
|
||||
case PhysicsServer::PIN_JOINT_DAMPING: m_damping = p_value; break;
|
||||
case PhysicsServer::PIN_JOINT_IMPULSE_CLAMP: m_impulseClamp = p_value; break;
|
||||
case PhysicsServer::PIN_JOINT_BIAS:
|
||||
m_tau = p_value;
|
||||
break;
|
||||
case PhysicsServer::PIN_JOINT_DAMPING:
|
||||
m_damping = p_value;
|
||||
break;
|
||||
case PhysicsServer::PIN_JOINT_IMPULSE_CLAMP:
|
||||
m_impulseClamp = p_value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
real_t PinJointSW::get_param(PhysicsServer::PinJointParam p_param) const {
|
||||
|
||||
switch (p_param) {
|
||||
case PhysicsServer::PIN_JOINT_BIAS: return m_tau;
|
||||
case PhysicsServer::PIN_JOINT_DAMPING: return m_damping;
|
||||
case PhysicsServer::PIN_JOINT_IMPULSE_CLAMP: return m_impulseClamp;
|
||||
case PhysicsServer::PIN_JOINT_BIAS:
|
||||
return m_tau;
|
||||
case PhysicsServer::PIN_JOINT_DAMPING:
|
||||
return m_damping;
|
||||
case PhysicsServer::PIN_JOINT_IMPULSE_CLAMP:
|
||||
return m_impulseClamp;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -384,62 +384,130 @@ Vector3 SliderJointSW::getAncorInB(void) {
|
|||
void SliderJointSW::set_param(PhysicsServer::SliderJointParam p_param, real_t p_value) {
|
||||
|
||||
switch (p_param) {
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_UPPER: m_upperLinLimit = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_LOWER: m_lowerLinLimit = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_SOFTNESS: m_softnessLimLin = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_RESTITUTION: m_restitutionLimLin = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_DAMPING: m_dampingLimLin = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_SOFTNESS: m_softnessDirLin = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_RESTITUTION: m_restitutionDirLin = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_DAMPING: m_dampingDirLin = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_SOFTNESS: m_softnessOrthoLin = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_RESTITUTION: m_restitutionOrthoLin = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_DAMPING: m_dampingOrthoLin = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_UPPER:
|
||||
m_upperLinLimit = p_value;
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_LOWER:
|
||||
m_lowerLinLimit = p_value;
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_SOFTNESS:
|
||||
m_softnessLimLin = p_value;
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_RESTITUTION:
|
||||
m_restitutionLimLin = p_value;
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_DAMPING:
|
||||
m_dampingLimLin = p_value;
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_SOFTNESS:
|
||||
m_softnessDirLin = p_value;
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_RESTITUTION:
|
||||
m_restitutionDirLin = p_value;
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_DAMPING:
|
||||
m_dampingDirLin = p_value;
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_SOFTNESS:
|
||||
m_softnessOrthoLin = p_value;
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_RESTITUTION:
|
||||
m_restitutionOrthoLin = p_value;
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_DAMPING:
|
||||
m_dampingOrthoLin = p_value;
|
||||
break;
|
||||
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_UPPER: m_upperAngLimit = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_LOWER: m_lowerAngLimit = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_SOFTNESS: m_softnessLimAng = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_RESTITUTION: m_restitutionLimAng = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_DAMPING: m_dampingLimAng = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_SOFTNESS: m_softnessDirAng = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_RESTITUTION: m_restitutionDirAng = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_DAMPING: m_dampingDirAng = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_SOFTNESS: m_softnessOrthoAng = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_RESTITUTION: m_restitutionOrthoAng = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_DAMPING: m_dampingOrthoAng = p_value; break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_UPPER:
|
||||
m_upperAngLimit = p_value;
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_LOWER:
|
||||
m_lowerAngLimit = p_value;
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_SOFTNESS:
|
||||
m_softnessLimAng = p_value;
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_RESTITUTION:
|
||||
m_restitutionLimAng = p_value;
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_DAMPING:
|
||||
m_dampingLimAng = p_value;
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_SOFTNESS:
|
||||
m_softnessDirAng = p_value;
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_RESTITUTION:
|
||||
m_restitutionDirAng = p_value;
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_DAMPING:
|
||||
m_dampingDirAng = p_value;
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_SOFTNESS:
|
||||
m_softnessOrthoAng = p_value;
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_RESTITUTION:
|
||||
m_restitutionOrthoAng = p_value;
|
||||
break;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_DAMPING:
|
||||
m_dampingOrthoAng = p_value;
|
||||
break;
|
||||
|
||||
case PhysicsServer::SLIDER_JOINT_MAX: break; // Can't happen, but silences warning
|
||||
case PhysicsServer::SLIDER_JOINT_MAX:
|
||||
break; // Can't happen, but silences warning
|
||||
}
|
||||
}
|
||||
|
||||
real_t SliderJointSW::get_param(PhysicsServer::SliderJointParam p_param) const {
|
||||
|
||||
switch (p_param) {
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_UPPER: return m_upperLinLimit;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_LOWER: return m_lowerLinLimit;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_SOFTNESS: return m_softnessLimLin;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_RESTITUTION: return m_restitutionLimLin;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_DAMPING: return m_dampingLimLin;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_SOFTNESS: return m_softnessDirLin;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_RESTITUTION: return m_restitutionDirLin;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_DAMPING: return m_dampingDirLin;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_SOFTNESS: return m_softnessOrthoLin;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_RESTITUTION: return m_restitutionOrthoLin;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_DAMPING: return m_dampingOrthoLin;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_UPPER:
|
||||
return m_upperLinLimit;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_LOWER:
|
||||
return m_lowerLinLimit;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_SOFTNESS:
|
||||
return m_softnessLimLin;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_RESTITUTION:
|
||||
return m_restitutionLimLin;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_LIMIT_DAMPING:
|
||||
return m_dampingLimLin;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_SOFTNESS:
|
||||
return m_softnessDirLin;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_RESTITUTION:
|
||||
return m_restitutionDirLin;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_MOTION_DAMPING:
|
||||
return m_dampingDirLin;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_SOFTNESS:
|
||||
return m_softnessOrthoLin;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_RESTITUTION:
|
||||
return m_restitutionOrthoLin;
|
||||
case PhysicsServer::SLIDER_JOINT_LINEAR_ORTHOGONAL_DAMPING:
|
||||
return m_dampingOrthoLin;
|
||||
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_UPPER: return m_upperAngLimit;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_LOWER: return m_lowerAngLimit;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_SOFTNESS: return m_softnessLimAng;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_RESTITUTION: return m_restitutionLimAng;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_DAMPING: return m_dampingLimAng;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_SOFTNESS: return m_softnessDirAng;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_RESTITUTION: return m_restitutionDirAng;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_DAMPING: return m_dampingDirAng;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_SOFTNESS: return m_softnessOrthoAng;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_RESTITUTION: return m_restitutionOrthoAng;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_DAMPING: return m_dampingOrthoAng;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_UPPER:
|
||||
return m_upperAngLimit;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_LOWER:
|
||||
return m_lowerAngLimit;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_SOFTNESS:
|
||||
return m_softnessLimAng;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_RESTITUTION:
|
||||
return m_restitutionLimAng;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_LIMIT_DAMPING:
|
||||
return m_dampingLimAng;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_SOFTNESS:
|
||||
return m_softnessDirAng;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_RESTITUTION:
|
||||
return m_restitutionDirAng;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_MOTION_DAMPING:
|
||||
return m_dampingDirAng;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_SOFTNESS:
|
||||
return m_softnessOrthoAng;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_RESTITUTION:
|
||||
return m_restitutionOrthoAng;
|
||||
case PhysicsServer::SLIDER_JOINT_ANGULAR_ORTHOGONAL_DAMPING:
|
||||
return m_dampingOrthoAng;
|
||||
|
||||
case PhysicsServer::SLIDER_JOINT_MAX: break; // Can't happen, but silences warning
|
||||
case PhysicsServer::SLIDER_JOINT_MAX:
|
||||
break; // Can't happen, but silences warning
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -1187,15 +1187,33 @@ void SpaceSW::set_param(PhysicsServer::SpaceParameter p_param, real_t p_value) {
|
|||
|
||||
switch (p_param) {
|
||||
|
||||
case PhysicsServer::SPACE_PARAM_CONTACT_RECYCLE_RADIUS: contact_recycle_radius = p_value; break;
|
||||
case PhysicsServer::SPACE_PARAM_CONTACT_MAX_SEPARATION: contact_max_separation = p_value; break;
|
||||
case PhysicsServer::SPACE_PARAM_BODY_MAX_ALLOWED_PENETRATION: contact_max_allowed_penetration = p_value; break;
|
||||
case PhysicsServer::SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD: body_linear_velocity_sleep_threshold = p_value; break;
|
||||
case PhysicsServer::SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD: body_angular_velocity_sleep_threshold = p_value; break;
|
||||
case PhysicsServer::SPACE_PARAM_BODY_TIME_TO_SLEEP: body_time_to_sleep = p_value; break;
|
||||
case PhysicsServer::SPACE_PARAM_BODY_ANGULAR_VELOCITY_DAMP_RATIO: body_angular_velocity_damp_ratio = p_value; break;
|
||||
case PhysicsServer::SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS: constraint_bias = p_value; break;
|
||||
case PhysicsServer::SPACE_PARAM_TEST_MOTION_MIN_CONTACT_DEPTH: test_motion_min_contact_depth = p_value; break;
|
||||
case PhysicsServer::SPACE_PARAM_CONTACT_RECYCLE_RADIUS:
|
||||
contact_recycle_radius = p_value;
|
||||
break;
|
||||
case PhysicsServer::SPACE_PARAM_CONTACT_MAX_SEPARATION:
|
||||
contact_max_separation = p_value;
|
||||
break;
|
||||
case PhysicsServer::SPACE_PARAM_BODY_MAX_ALLOWED_PENETRATION:
|
||||
contact_max_allowed_penetration = p_value;
|
||||
break;
|
||||
case PhysicsServer::SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD:
|
||||
body_linear_velocity_sleep_threshold = p_value;
|
||||
break;
|
||||
case PhysicsServer::SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD:
|
||||
body_angular_velocity_sleep_threshold = p_value;
|
||||
break;
|
||||
case PhysicsServer::SPACE_PARAM_BODY_TIME_TO_SLEEP:
|
||||
body_time_to_sleep = p_value;
|
||||
break;
|
||||
case PhysicsServer::SPACE_PARAM_BODY_ANGULAR_VELOCITY_DAMP_RATIO:
|
||||
body_angular_velocity_damp_ratio = p_value;
|
||||
break;
|
||||
case PhysicsServer::SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS:
|
||||
constraint_bias = p_value;
|
||||
break;
|
||||
case PhysicsServer::SPACE_PARAM_TEST_MOTION_MIN_CONTACT_DEPTH:
|
||||
test_motion_min_contact_depth = p_value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1203,15 +1221,24 @@ real_t SpaceSW::get_param(PhysicsServer::SpaceParameter p_param) const {
|
|||
|
||||
switch (p_param) {
|
||||
|
||||
case PhysicsServer::SPACE_PARAM_CONTACT_RECYCLE_RADIUS: return contact_recycle_radius;
|
||||
case PhysicsServer::SPACE_PARAM_CONTACT_MAX_SEPARATION: return contact_max_separation;
|
||||
case PhysicsServer::SPACE_PARAM_BODY_MAX_ALLOWED_PENETRATION: return contact_max_allowed_penetration;
|
||||
case PhysicsServer::SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD: return body_linear_velocity_sleep_threshold;
|
||||
case PhysicsServer::SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD: return body_angular_velocity_sleep_threshold;
|
||||
case PhysicsServer::SPACE_PARAM_BODY_TIME_TO_SLEEP: return body_time_to_sleep;
|
||||
case PhysicsServer::SPACE_PARAM_BODY_ANGULAR_VELOCITY_DAMP_RATIO: return body_angular_velocity_damp_ratio;
|
||||
case PhysicsServer::SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS: return constraint_bias;
|
||||
case PhysicsServer::SPACE_PARAM_TEST_MOTION_MIN_CONTACT_DEPTH: return test_motion_min_contact_depth;
|
||||
case PhysicsServer::SPACE_PARAM_CONTACT_RECYCLE_RADIUS:
|
||||
return contact_recycle_radius;
|
||||
case PhysicsServer::SPACE_PARAM_CONTACT_MAX_SEPARATION:
|
||||
return contact_max_separation;
|
||||
case PhysicsServer::SPACE_PARAM_BODY_MAX_ALLOWED_PENETRATION:
|
||||
return contact_max_allowed_penetration;
|
||||
case PhysicsServer::SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD:
|
||||
return body_linear_velocity_sleep_threshold;
|
||||
case PhysicsServer::SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD:
|
||||
return body_angular_velocity_sleep_threshold;
|
||||
case PhysicsServer::SPACE_PARAM_BODY_TIME_TO_SLEEP:
|
||||
return body_time_to_sleep;
|
||||
case PhysicsServer::SPACE_PARAM_BODY_ANGULAR_VELOCITY_DAMP_RATIO:
|
||||
return body_angular_velocity_damp_ratio;
|
||||
case PhysicsServer::SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS:
|
||||
return constraint_bias;
|
||||
case PhysicsServer::SPACE_PARAM_TEST_MOTION_MIN_CONTACT_DEPTH:
|
||||
return test_motion_min_contact_depth;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -129,28 +129,52 @@ void Area2DSW::set_space_override_mode(Physics2DServer::AreaSpaceOverrideMode p_
|
|||
void Area2DSW::set_param(Physics2DServer::AreaParameter p_param, const Variant &p_value) {
|
||||
|
||||
switch (p_param) {
|
||||
case Physics2DServer::AREA_PARAM_GRAVITY: gravity = p_value; break;
|
||||
case Physics2DServer::AREA_PARAM_GRAVITY_VECTOR: gravity_vector = p_value; break;
|
||||
case Physics2DServer::AREA_PARAM_GRAVITY_IS_POINT: gravity_is_point = p_value; break;
|
||||
case Physics2DServer::AREA_PARAM_GRAVITY_DISTANCE_SCALE: gravity_distance_scale = p_value; break;
|
||||
case Physics2DServer::AREA_PARAM_GRAVITY_POINT_ATTENUATION: point_attenuation = p_value; break;
|
||||
case Physics2DServer::AREA_PARAM_LINEAR_DAMP: linear_damp = p_value; break;
|
||||
case Physics2DServer::AREA_PARAM_ANGULAR_DAMP: angular_damp = p_value; break;
|
||||
case Physics2DServer::AREA_PARAM_PRIORITY: priority = p_value; break;
|
||||
case Physics2DServer::AREA_PARAM_GRAVITY:
|
||||
gravity = p_value;
|
||||
break;
|
||||
case Physics2DServer::AREA_PARAM_GRAVITY_VECTOR:
|
||||
gravity_vector = p_value;
|
||||
break;
|
||||
case Physics2DServer::AREA_PARAM_GRAVITY_IS_POINT:
|
||||
gravity_is_point = p_value;
|
||||
break;
|
||||
case Physics2DServer::AREA_PARAM_GRAVITY_DISTANCE_SCALE:
|
||||
gravity_distance_scale = p_value;
|
||||
break;
|
||||
case Physics2DServer::AREA_PARAM_GRAVITY_POINT_ATTENUATION:
|
||||
point_attenuation = p_value;
|
||||
break;
|
||||
case Physics2DServer::AREA_PARAM_LINEAR_DAMP:
|
||||
linear_damp = p_value;
|
||||
break;
|
||||
case Physics2DServer::AREA_PARAM_ANGULAR_DAMP:
|
||||
angular_damp = p_value;
|
||||
break;
|
||||
case Physics2DServer::AREA_PARAM_PRIORITY:
|
||||
priority = p_value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Variant Area2DSW::get_param(Physics2DServer::AreaParameter p_param) const {
|
||||
|
||||
switch (p_param) {
|
||||
case Physics2DServer::AREA_PARAM_GRAVITY: return gravity;
|
||||
case Physics2DServer::AREA_PARAM_GRAVITY_VECTOR: return gravity_vector;
|
||||
case Physics2DServer::AREA_PARAM_GRAVITY_IS_POINT: return gravity_is_point;
|
||||
case Physics2DServer::AREA_PARAM_GRAVITY_DISTANCE_SCALE: return gravity_distance_scale;
|
||||
case Physics2DServer::AREA_PARAM_GRAVITY_POINT_ATTENUATION: return point_attenuation;
|
||||
case Physics2DServer::AREA_PARAM_LINEAR_DAMP: return linear_damp;
|
||||
case Physics2DServer::AREA_PARAM_ANGULAR_DAMP: return angular_damp;
|
||||
case Physics2DServer::AREA_PARAM_PRIORITY: return priority;
|
||||
case Physics2DServer::AREA_PARAM_GRAVITY:
|
||||
return gravity;
|
||||
case Physics2DServer::AREA_PARAM_GRAVITY_VECTOR:
|
||||
return gravity_vector;
|
||||
case Physics2DServer::AREA_PARAM_GRAVITY_IS_POINT:
|
||||
return gravity_is_point;
|
||||
case Physics2DServer::AREA_PARAM_GRAVITY_DISTANCE_SCALE:
|
||||
return gravity_distance_scale;
|
||||
case Physics2DServer::AREA_PARAM_GRAVITY_POINT_ATTENUATION:
|
||||
return point_attenuation;
|
||||
case Physics2DServer::AREA_PARAM_LINEAR_DAMP:
|
||||
return linear_damp;
|
||||
case Physics2DServer::AREA_PARAM_ANGULAR_DAMP:
|
||||
return angular_damp;
|
||||
case Physics2DServer::AREA_PARAM_PRIORITY:
|
||||
return priority;
|
||||
}
|
||||
|
||||
return Variant();
|
||||
|
|
|
@ -1086,9 +1086,15 @@ void Physics2DServerSW::joint_set_param(RID p_joint, JointParam p_param, real_t
|
|||
ERR_FAIL_COND(!joint);
|
||||
|
||||
switch (p_param) {
|
||||
case JOINT_PARAM_BIAS: joint->set_bias(p_value); break;
|
||||
case JOINT_PARAM_MAX_BIAS: joint->set_max_bias(p_value); break;
|
||||
case JOINT_PARAM_MAX_FORCE: joint->set_max_force(p_value); break;
|
||||
case JOINT_PARAM_BIAS:
|
||||
joint->set_bias(p_value);
|
||||
break;
|
||||
case JOINT_PARAM_MAX_BIAS:
|
||||
joint->set_max_bias(p_value);
|
||||
break;
|
||||
case JOINT_PARAM_MAX_FORCE:
|
||||
joint->set_max_force(p_value);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1098,9 +1104,15 @@ real_t Physics2DServerSW::joint_get_param(RID p_joint, JointParam p_param) const
|
|||
ERR_FAIL_COND_V(!joint, -1);
|
||||
|
||||
switch (p_param) {
|
||||
case JOINT_PARAM_BIAS: return joint->get_bias(); break;
|
||||
case JOINT_PARAM_MAX_BIAS: return joint->get_max_bias(); break;
|
||||
case JOINT_PARAM_MAX_FORCE: return joint->get_max_force(); break;
|
||||
case JOINT_PARAM_BIAS:
|
||||
return joint->get_bias();
|
||||
break;
|
||||
case JOINT_PARAM_MAX_BIAS:
|
||||
return joint->get_max_bias();
|
||||
break;
|
||||
case JOINT_PARAM_MAX_FORCE:
|
||||
return joint->get_max_force();
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -1323,14 +1323,30 @@ void Space2DSW::set_param(Physics2DServer::SpaceParameter p_param, real_t p_valu
|
|||
|
||||
switch (p_param) {
|
||||
|
||||
case Physics2DServer::SPACE_PARAM_CONTACT_RECYCLE_RADIUS: contact_recycle_radius = p_value; break;
|
||||
case Physics2DServer::SPACE_PARAM_CONTACT_MAX_SEPARATION: contact_max_separation = p_value; break;
|
||||
case Physics2DServer::SPACE_PARAM_BODY_MAX_ALLOWED_PENETRATION: contact_max_allowed_penetration = p_value; break;
|
||||
case Physics2DServer::SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD: body_linear_velocity_sleep_threshold = p_value; break;
|
||||
case Physics2DServer::SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD: body_angular_velocity_sleep_threshold = p_value; break;
|
||||
case Physics2DServer::SPACE_PARAM_BODY_TIME_TO_SLEEP: body_time_to_sleep = p_value; break;
|
||||
case Physics2DServer::SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS: constraint_bias = p_value; break;
|
||||
case Physics2DServer::SPACE_PARAM_TEST_MOTION_MIN_CONTACT_DEPTH: test_motion_min_contact_depth = p_value; break;
|
||||
case Physics2DServer::SPACE_PARAM_CONTACT_RECYCLE_RADIUS:
|
||||
contact_recycle_radius = p_value;
|
||||
break;
|
||||
case Physics2DServer::SPACE_PARAM_CONTACT_MAX_SEPARATION:
|
||||
contact_max_separation = p_value;
|
||||
break;
|
||||
case Physics2DServer::SPACE_PARAM_BODY_MAX_ALLOWED_PENETRATION:
|
||||
contact_max_allowed_penetration = p_value;
|
||||
break;
|
||||
case Physics2DServer::SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD:
|
||||
body_linear_velocity_sleep_threshold = p_value;
|
||||
break;
|
||||
case Physics2DServer::SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD:
|
||||
body_angular_velocity_sleep_threshold = p_value;
|
||||
break;
|
||||
case Physics2DServer::SPACE_PARAM_BODY_TIME_TO_SLEEP:
|
||||
body_time_to_sleep = p_value;
|
||||
break;
|
||||
case Physics2DServer::SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS:
|
||||
constraint_bias = p_value;
|
||||
break;
|
||||
case Physics2DServer::SPACE_PARAM_TEST_MOTION_MIN_CONTACT_DEPTH:
|
||||
test_motion_min_contact_depth = p_value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1338,14 +1354,22 @@ real_t Space2DSW::get_param(Physics2DServer::SpaceParameter p_param) const {
|
|||
|
||||
switch (p_param) {
|
||||
|
||||
case Physics2DServer::SPACE_PARAM_CONTACT_RECYCLE_RADIUS: return contact_recycle_radius;
|
||||
case Physics2DServer::SPACE_PARAM_CONTACT_MAX_SEPARATION: return contact_max_separation;
|
||||
case Physics2DServer::SPACE_PARAM_BODY_MAX_ALLOWED_PENETRATION: return contact_max_allowed_penetration;
|
||||
case Physics2DServer::SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD: return body_linear_velocity_sleep_threshold;
|
||||
case Physics2DServer::SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD: return body_angular_velocity_sleep_threshold;
|
||||
case Physics2DServer::SPACE_PARAM_BODY_TIME_TO_SLEEP: return body_time_to_sleep;
|
||||
case Physics2DServer::SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS: return constraint_bias;
|
||||
case Physics2DServer::SPACE_PARAM_TEST_MOTION_MIN_CONTACT_DEPTH: return test_motion_min_contact_depth;
|
||||
case Physics2DServer::SPACE_PARAM_CONTACT_RECYCLE_RADIUS:
|
||||
return contact_recycle_radius;
|
||||
case Physics2DServer::SPACE_PARAM_CONTACT_MAX_SEPARATION:
|
||||
return contact_max_separation;
|
||||
case Physics2DServer::SPACE_PARAM_BODY_MAX_ALLOWED_PENETRATION:
|
||||
return contact_max_allowed_penetration;
|
||||
case Physics2DServer::SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD:
|
||||
return body_linear_velocity_sleep_threshold;
|
||||
case Physics2DServer::SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD:
|
||||
return body_angular_velocity_sleep_threshold;
|
||||
case Physics2DServer::SPACE_PARAM_BODY_TIME_TO_SLEEP:
|
||||
return body_time_to_sleep;
|
||||
case Physics2DServer::SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS:
|
||||
return constraint_bias;
|
||||
case Physics2DServer::SPACE_PARAM_TEST_MOTION_MIN_CONTACT_DEPTH:
|
||||
return test_motion_min_contact_depth;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -801,9 +801,12 @@ ShaderLanguage::DataPrecision ShaderLanguage::get_token_precision(TokenType p_ty
|
|||
|
||||
String ShaderLanguage::get_precision_name(DataPrecision p_type) {
|
||||
switch (p_type) {
|
||||
case PRECISION_LOWP: return "lowp";
|
||||
case PRECISION_MEDIUMP: return "mediump";
|
||||
case PRECISION_HIGHP: return "highp";
|
||||
case PRECISION_LOWP:
|
||||
return "lowp";
|
||||
case PRECISION_MEDIUMP:
|
||||
return "mediump";
|
||||
case PRECISION_HIGHP:
|
||||
return "highp";
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -814,37 +817,68 @@ String ShaderLanguage::get_datatype_name(DataType p_type) {
|
|||
|
||||
switch (p_type) {
|
||||
|
||||
case TYPE_VOID: return "void";
|
||||
case TYPE_BOOL: return "bool";
|
||||
case TYPE_BVEC2: return "bvec2";
|
||||
case TYPE_BVEC3: return "bvec3";
|
||||
case TYPE_BVEC4: return "bvec4";
|
||||
case TYPE_INT: return "int";
|
||||
case TYPE_IVEC2: return "ivec2";
|
||||
case TYPE_IVEC3: return "ivec3";
|
||||
case TYPE_IVEC4: return "ivec4";
|
||||
case TYPE_UINT: return "uint";
|
||||
case TYPE_UVEC2: return "uvec2";
|
||||
case TYPE_UVEC3: return "uvec3";
|
||||
case TYPE_UVEC4: return "uvec4";
|
||||
case TYPE_FLOAT: return "float";
|
||||
case TYPE_VEC2: return "vec2";
|
||||
case TYPE_VEC3: return "vec3";
|
||||
case TYPE_VEC4: return "vec4";
|
||||
case TYPE_MAT2: return "mat2";
|
||||
case TYPE_MAT3: return "mat3";
|
||||
case TYPE_MAT4: return "mat4";
|
||||
case TYPE_SAMPLER2D: return "sampler2D";
|
||||
case TYPE_ISAMPLER2D: return "isampler2D";
|
||||
case TYPE_USAMPLER2D: return "usampler2D";
|
||||
case TYPE_SAMPLER2DARRAY: return "sampler2DArray";
|
||||
case TYPE_ISAMPLER2DARRAY: return "isampler2DArray";
|
||||
case TYPE_USAMPLER2DARRAY: return "usampler2DArray";
|
||||
case TYPE_SAMPLER3D: return "sampler3D";
|
||||
case TYPE_ISAMPLER3D: return "isampler3D";
|
||||
case TYPE_USAMPLER3D: return "usampler3D";
|
||||
case TYPE_SAMPLERCUBE: return "samplerCube";
|
||||
case TYPE_SAMPLEREXT: return "samplerExternalOES";
|
||||
case TYPE_VOID:
|
||||
return "void";
|
||||
case TYPE_BOOL:
|
||||
return "bool";
|
||||
case TYPE_BVEC2:
|
||||
return "bvec2";
|
||||
case TYPE_BVEC3:
|
||||
return "bvec3";
|
||||
case TYPE_BVEC4:
|
||||
return "bvec4";
|
||||
case TYPE_INT:
|
||||
return "int";
|
||||
case TYPE_IVEC2:
|
||||
return "ivec2";
|
||||
case TYPE_IVEC3:
|
||||
return "ivec3";
|
||||
case TYPE_IVEC4:
|
||||
return "ivec4";
|
||||
case TYPE_UINT:
|
||||
return "uint";
|
||||
case TYPE_UVEC2:
|
||||
return "uvec2";
|
||||
case TYPE_UVEC3:
|
||||
return "uvec3";
|
||||
case TYPE_UVEC4:
|
||||
return "uvec4";
|
||||
case TYPE_FLOAT:
|
||||
return "float";
|
||||
case TYPE_VEC2:
|
||||
return "vec2";
|
||||
case TYPE_VEC3:
|
||||
return "vec3";
|
||||
case TYPE_VEC4:
|
||||
return "vec4";
|
||||
case TYPE_MAT2:
|
||||
return "mat2";
|
||||
case TYPE_MAT3:
|
||||
return "mat3";
|
||||
case TYPE_MAT4:
|
||||
return "mat4";
|
||||
case TYPE_SAMPLER2D:
|
||||
return "sampler2D";
|
||||
case TYPE_ISAMPLER2D:
|
||||
return "isampler2D";
|
||||
case TYPE_USAMPLER2D:
|
||||
return "usampler2D";
|
||||
case TYPE_SAMPLER2DARRAY:
|
||||
return "sampler2DArray";
|
||||
case TYPE_ISAMPLER2DARRAY:
|
||||
return "isampler2DArray";
|
||||
case TYPE_USAMPLER2DARRAY:
|
||||
return "usampler2DArray";
|
||||
case TYPE_SAMPLER3D:
|
||||
return "sampler3D";
|
||||
case TYPE_ISAMPLER3D:
|
||||
return "isampler3D";
|
||||
case TYPE_USAMPLER3D:
|
||||
return "usampler3D";
|
||||
case TYPE_SAMPLERCUBE:
|
||||
return "samplerCube";
|
||||
case TYPE_SAMPLEREXT:
|
||||
return "samplerExternalOES";
|
||||
}
|
||||
|
||||
return "";
|
||||
|
@ -3162,12 +3196,23 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
|
|||
e.is_op = true;
|
||||
|
||||
switch (tk.type) {
|
||||
case TK_OP_SUB: e.op = OP_NEGATE; break;
|
||||
case TK_OP_NOT: e.op = OP_NOT; break;
|
||||
case TK_OP_BIT_INVERT: e.op = OP_BIT_INVERT; break;
|
||||
case TK_OP_INCREMENT: e.op = OP_INCREMENT; break;
|
||||
case TK_OP_DECREMENT: e.op = OP_DECREMENT; break;
|
||||
default: ERR_FAIL_V(NULL);
|
||||
case TK_OP_SUB:
|
||||
e.op = OP_NEGATE;
|
||||
break;
|
||||
case TK_OP_NOT:
|
||||
e.op = OP_NOT;
|
||||
break;
|
||||
case TK_OP_BIT_INVERT:
|
||||
e.op = OP_BIT_INVERT;
|
||||
break;
|
||||
case TK_OP_INCREMENT:
|
||||
e.op = OP_INCREMENT;
|
||||
break;
|
||||
case TK_OP_DECREMENT:
|
||||
e.op = OP_DECREMENT;
|
||||
break;
|
||||
default:
|
||||
ERR_FAIL_V(NULL);
|
||||
}
|
||||
|
||||
expression.push_back(e);
|
||||
|
@ -3379,12 +3424,23 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
|
|||
}
|
||||
|
||||
switch (expr->get_datatype()) {
|
||||
case TYPE_BVEC2: member_type = TYPE_BOOL; break;
|
||||
case TYPE_VEC2: member_type = TYPE_FLOAT; break;
|
||||
case TYPE_IVEC2: member_type = TYPE_INT; break;
|
||||
case TYPE_UVEC2: member_type = TYPE_UINT; break;
|
||||
case TYPE_MAT2: member_type = TYPE_VEC2; break;
|
||||
default: break;
|
||||
case TYPE_BVEC2:
|
||||
member_type = TYPE_BOOL;
|
||||
break;
|
||||
case TYPE_VEC2:
|
||||
member_type = TYPE_FLOAT;
|
||||
break;
|
||||
case TYPE_IVEC2:
|
||||
member_type = TYPE_INT;
|
||||
break;
|
||||
case TYPE_UVEC2:
|
||||
member_type = TYPE_UINT;
|
||||
break;
|
||||
case TYPE_MAT2:
|
||||
member_type = TYPE_VEC2;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -3405,12 +3461,23 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
|
|||
}
|
||||
|
||||
switch (expr->get_datatype()) {
|
||||
case TYPE_BVEC3: member_type = TYPE_BOOL; break;
|
||||
case TYPE_VEC3: member_type = TYPE_FLOAT; break;
|
||||
case TYPE_IVEC3: member_type = TYPE_INT; break;
|
||||
case TYPE_UVEC3: member_type = TYPE_UINT; break;
|
||||
case TYPE_MAT3: member_type = TYPE_VEC3; break;
|
||||
default: break;
|
||||
case TYPE_BVEC3:
|
||||
member_type = TYPE_BOOL;
|
||||
break;
|
||||
case TYPE_VEC3:
|
||||
member_type = TYPE_FLOAT;
|
||||
break;
|
||||
case TYPE_IVEC3:
|
||||
member_type = TYPE_INT;
|
||||
break;
|
||||
case TYPE_UVEC3:
|
||||
member_type = TYPE_UINT;
|
||||
break;
|
||||
case TYPE_MAT3:
|
||||
member_type = TYPE_VEC3;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case TYPE_BVEC4:
|
||||
|
@ -3430,12 +3497,23 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
|
|||
}
|
||||
|
||||
switch (expr->get_datatype()) {
|
||||
case TYPE_BVEC4: member_type = TYPE_BOOL; break;
|
||||
case TYPE_VEC4: member_type = TYPE_FLOAT; break;
|
||||
case TYPE_IVEC4: member_type = TYPE_INT; break;
|
||||
case TYPE_UVEC4: member_type = TYPE_UINT; break;
|
||||
case TYPE_MAT4: member_type = TYPE_VEC4; break;
|
||||
default: break;
|
||||
case TYPE_BVEC4:
|
||||
member_type = TYPE_BOOL;
|
||||
break;
|
||||
case TYPE_VEC4:
|
||||
member_type = TYPE_FLOAT;
|
||||
break;
|
||||
case TYPE_IVEC4:
|
||||
member_type = TYPE_INT;
|
||||
break;
|
||||
case TYPE_UVEC4:
|
||||
member_type = TYPE_UINT;
|
||||
break;
|
||||
case TYPE_MAT4:
|
||||
member_type = TYPE_VEC4;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default: {
|
||||
|
@ -3495,37 +3573,99 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
|
|||
|
||||
switch (tk.type) {
|
||||
|
||||
case TK_OP_EQUAL: o.op = OP_EQUAL; break;
|
||||
case TK_OP_NOT_EQUAL: o.op = OP_NOT_EQUAL; break;
|
||||
case TK_OP_LESS: o.op = OP_LESS; break;
|
||||
case TK_OP_LESS_EQUAL: o.op = OP_LESS_EQUAL; break;
|
||||
case TK_OP_GREATER: o.op = OP_GREATER; break;
|
||||
case TK_OP_GREATER_EQUAL: o.op = OP_GREATER_EQUAL; break;
|
||||
case TK_OP_AND: o.op = OP_AND; break;
|
||||
case TK_OP_OR: o.op = OP_OR; break;
|
||||
case TK_OP_ADD: o.op = OP_ADD; break;
|
||||
case TK_OP_SUB: o.op = OP_SUB; break;
|
||||
case TK_OP_MUL: o.op = OP_MUL; break;
|
||||
case TK_OP_DIV: o.op = OP_DIV; break;
|
||||
case TK_OP_MOD: o.op = OP_MOD; break;
|
||||
case TK_OP_SHIFT_LEFT: o.op = OP_SHIFT_LEFT; break;
|
||||
case TK_OP_SHIFT_RIGHT: o.op = OP_SHIFT_RIGHT; break;
|
||||
case TK_OP_ASSIGN: o.op = OP_ASSIGN; break;
|
||||
case TK_OP_ASSIGN_ADD: o.op = OP_ASSIGN_ADD; break;
|
||||
case TK_OP_ASSIGN_SUB: o.op = OP_ASSIGN_SUB; break;
|
||||
case TK_OP_ASSIGN_MUL: o.op = OP_ASSIGN_MUL; break;
|
||||
case TK_OP_ASSIGN_DIV: o.op = OP_ASSIGN_DIV; break;
|
||||
case TK_OP_ASSIGN_MOD: o.op = OP_ASSIGN_MOD; break;
|
||||
case TK_OP_ASSIGN_SHIFT_LEFT: o.op = OP_ASSIGN_SHIFT_LEFT; break;
|
||||
case TK_OP_ASSIGN_SHIFT_RIGHT: o.op = OP_ASSIGN_SHIFT_RIGHT; break;
|
||||
case TK_OP_ASSIGN_BIT_AND: o.op = OP_ASSIGN_BIT_AND; break;
|
||||
case TK_OP_ASSIGN_BIT_OR: o.op = OP_ASSIGN_BIT_OR; break;
|
||||
case TK_OP_ASSIGN_BIT_XOR: o.op = OP_ASSIGN_BIT_XOR; break;
|
||||
case TK_OP_BIT_AND: o.op = OP_BIT_AND; break;
|
||||
case TK_OP_BIT_OR: o.op = OP_BIT_OR; break;
|
||||
case TK_OP_BIT_XOR: o.op = OP_BIT_XOR; break;
|
||||
case TK_QUESTION: o.op = OP_SELECT_IF; break;
|
||||
case TK_COLON: o.op = OP_SELECT_ELSE; break;
|
||||
case TK_OP_EQUAL:
|
||||
o.op = OP_EQUAL;
|
||||
break;
|
||||
case TK_OP_NOT_EQUAL:
|
||||
o.op = OP_NOT_EQUAL;
|
||||
break;
|
||||
case TK_OP_LESS:
|
||||
o.op = OP_LESS;
|
||||
break;
|
||||
case TK_OP_LESS_EQUAL:
|
||||
o.op = OP_LESS_EQUAL;
|
||||
break;
|
||||
case TK_OP_GREATER:
|
||||
o.op = OP_GREATER;
|
||||
break;
|
||||
case TK_OP_GREATER_EQUAL:
|
||||
o.op = OP_GREATER_EQUAL;
|
||||
break;
|
||||
case TK_OP_AND:
|
||||
o.op = OP_AND;
|
||||
break;
|
||||
case TK_OP_OR:
|
||||
o.op = OP_OR;
|
||||
break;
|
||||
case TK_OP_ADD:
|
||||
o.op = OP_ADD;
|
||||
break;
|
||||
case TK_OP_SUB:
|
||||
o.op = OP_SUB;
|
||||
break;
|
||||
case TK_OP_MUL:
|
||||
o.op = OP_MUL;
|
||||
break;
|
||||
case TK_OP_DIV:
|
||||
o.op = OP_DIV;
|
||||
break;
|
||||
case TK_OP_MOD:
|
||||
o.op = OP_MOD;
|
||||
break;
|
||||
case TK_OP_SHIFT_LEFT:
|
||||
o.op = OP_SHIFT_LEFT;
|
||||
break;
|
||||
case TK_OP_SHIFT_RIGHT:
|
||||
o.op = OP_SHIFT_RIGHT;
|
||||
break;
|
||||
case TK_OP_ASSIGN:
|
||||
o.op = OP_ASSIGN;
|
||||
break;
|
||||
case TK_OP_ASSIGN_ADD:
|
||||
o.op = OP_ASSIGN_ADD;
|
||||
break;
|
||||
case TK_OP_ASSIGN_SUB:
|
||||
o.op = OP_ASSIGN_SUB;
|
||||
break;
|
||||
case TK_OP_ASSIGN_MUL:
|
||||
o.op = OP_ASSIGN_MUL;
|
||||
break;
|
||||
case TK_OP_ASSIGN_DIV:
|
||||
o.op = OP_ASSIGN_DIV;
|
||||
break;
|
||||
case TK_OP_ASSIGN_MOD:
|
||||
o.op = OP_ASSIGN_MOD;
|
||||
break;
|
||||
case TK_OP_ASSIGN_SHIFT_LEFT:
|
||||
o.op = OP_ASSIGN_SHIFT_LEFT;
|
||||
break;
|
||||
case TK_OP_ASSIGN_SHIFT_RIGHT:
|
||||
o.op = OP_ASSIGN_SHIFT_RIGHT;
|
||||
break;
|
||||
case TK_OP_ASSIGN_BIT_AND:
|
||||
o.op = OP_ASSIGN_BIT_AND;
|
||||
break;
|
||||
case TK_OP_ASSIGN_BIT_OR:
|
||||
o.op = OP_ASSIGN_BIT_OR;
|
||||
break;
|
||||
case TK_OP_ASSIGN_BIT_XOR:
|
||||
o.op = OP_ASSIGN_BIT_XOR;
|
||||
break;
|
||||
case TK_OP_BIT_AND:
|
||||
o.op = OP_BIT_AND;
|
||||
break;
|
||||
case TK_OP_BIT_OR:
|
||||
o.op = OP_BIT_OR;
|
||||
break;
|
||||
case TK_OP_BIT_XOR:
|
||||
o.op = OP_BIT_XOR;
|
||||
break;
|
||||
case TK_QUESTION:
|
||||
o.op = OP_SELECT_IF;
|
||||
break;
|
||||
case TK_COLON:
|
||||
o.op = OP_SELECT_ELSE;
|
||||
break;
|
||||
default: {
|
||||
_set_error("Invalid token for operator: " + get_token_text(tk));
|
||||
return NULL;
|
||||
|
@ -3561,14 +3701,30 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
|
|||
|
||||
int priority;
|
||||
switch (expression[i].op) {
|
||||
case OP_EQUAL: priority = 8; break;
|
||||
case OP_NOT_EQUAL: priority = 8; break;
|
||||
case OP_LESS: priority = 7; break;
|
||||
case OP_LESS_EQUAL: priority = 7; break;
|
||||
case OP_GREATER: priority = 7; break;
|
||||
case OP_GREATER_EQUAL: priority = 7; break;
|
||||
case OP_AND: priority = 12; break;
|
||||
case OP_OR: priority = 14; break;
|
||||
case OP_EQUAL:
|
||||
priority = 8;
|
||||
break;
|
||||
case OP_NOT_EQUAL:
|
||||
priority = 8;
|
||||
break;
|
||||
case OP_LESS:
|
||||
priority = 7;
|
||||
break;
|
||||
case OP_LESS_EQUAL:
|
||||
priority = 7;
|
||||
break;
|
||||
case OP_GREATER:
|
||||
priority = 7;
|
||||
break;
|
||||
case OP_GREATER_EQUAL:
|
||||
priority = 7;
|
||||
break;
|
||||
case OP_AND:
|
||||
priority = 12;
|
||||
break;
|
||||
case OP_OR:
|
||||
priority = 14;
|
||||
break;
|
||||
case OP_NOT:
|
||||
priority = 3;
|
||||
unary = true;
|
||||
|
@ -3577,27 +3733,69 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
|
|||
priority = 3;
|
||||
unary = true;
|
||||
break;
|
||||
case OP_ADD: priority = 5; break;
|
||||
case OP_SUB: priority = 5; break;
|
||||
case OP_MUL: priority = 4; break;
|
||||
case OP_DIV: priority = 4; break;
|
||||
case OP_MOD: priority = 4; break;
|
||||
case OP_SHIFT_LEFT: priority = 6; break;
|
||||
case OP_SHIFT_RIGHT: priority = 6; break;
|
||||
case OP_ASSIGN: priority = 16; break;
|
||||
case OP_ASSIGN_ADD: priority = 16; break;
|
||||
case OP_ASSIGN_SUB: priority = 16; break;
|
||||
case OP_ASSIGN_MUL: priority = 16; break;
|
||||
case OP_ASSIGN_DIV: priority = 16; break;
|
||||
case OP_ASSIGN_MOD: priority = 16; break;
|
||||
case OP_ASSIGN_SHIFT_LEFT: priority = 16; break;
|
||||
case OP_ASSIGN_SHIFT_RIGHT: priority = 16; break;
|
||||
case OP_ASSIGN_BIT_AND: priority = 16; break;
|
||||
case OP_ASSIGN_BIT_OR: priority = 16; break;
|
||||
case OP_ASSIGN_BIT_XOR: priority = 16; break;
|
||||
case OP_BIT_AND: priority = 9; break;
|
||||
case OP_BIT_OR: priority = 11; break;
|
||||
case OP_BIT_XOR: priority = 10; break;
|
||||
case OP_ADD:
|
||||
priority = 5;
|
||||
break;
|
||||
case OP_SUB:
|
||||
priority = 5;
|
||||
break;
|
||||
case OP_MUL:
|
||||
priority = 4;
|
||||
break;
|
||||
case OP_DIV:
|
||||
priority = 4;
|
||||
break;
|
||||
case OP_MOD:
|
||||
priority = 4;
|
||||
break;
|
||||
case OP_SHIFT_LEFT:
|
||||
priority = 6;
|
||||
break;
|
||||
case OP_SHIFT_RIGHT:
|
||||
priority = 6;
|
||||
break;
|
||||
case OP_ASSIGN:
|
||||
priority = 16;
|
||||
break;
|
||||
case OP_ASSIGN_ADD:
|
||||
priority = 16;
|
||||
break;
|
||||
case OP_ASSIGN_SUB:
|
||||
priority = 16;
|
||||
break;
|
||||
case OP_ASSIGN_MUL:
|
||||
priority = 16;
|
||||
break;
|
||||
case OP_ASSIGN_DIV:
|
||||
priority = 16;
|
||||
break;
|
||||
case OP_ASSIGN_MOD:
|
||||
priority = 16;
|
||||
break;
|
||||
case OP_ASSIGN_SHIFT_LEFT:
|
||||
priority = 16;
|
||||
break;
|
||||
case OP_ASSIGN_SHIFT_RIGHT:
|
||||
priority = 16;
|
||||
break;
|
||||
case OP_ASSIGN_BIT_AND:
|
||||
priority = 16;
|
||||
break;
|
||||
case OP_ASSIGN_BIT_OR:
|
||||
priority = 16;
|
||||
break;
|
||||
case OP_ASSIGN_BIT_XOR:
|
||||
priority = 16;
|
||||
break;
|
||||
case OP_BIT_AND:
|
||||
priority = 9;
|
||||
break;
|
||||
case OP_BIT_OR:
|
||||
priority = 11;
|
||||
break;
|
||||
case OP_BIT_XOR:
|
||||
priority = 10;
|
||||
break;
|
||||
case OP_BIT_INVERT:
|
||||
priority = 3;
|
||||
unary = true;
|
||||
|
@ -5894,9 +6092,15 @@ Error ShaderLanguage::complete(const String &p_code, const Map<StringName, Funct
|
|||
limit = 4;
|
||||
|
||||
} break;
|
||||
case TYPE_MAT2: limit = 2; break;
|
||||
case TYPE_MAT3: limit = 3; break;
|
||||
case TYPE_MAT4: limit = 4; break;
|
||||
case TYPE_MAT2:
|
||||
limit = 2;
|
||||
break;
|
||||
case TYPE_MAT3:
|
||||
limit = 3;
|
||||
break;
|
||||
case TYPE_MAT4:
|
||||
limit = 4;
|
||||
break;
|
||||
default: {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1548,9 +1548,15 @@ bool VisualServerScene::_light_instance_update_shadow(Instance *p_instance, cons
|
|||
|
||||
int splits = 0;
|
||||
switch (VSG::storage->light_directional_get_shadow_mode(p_instance->base)) {
|
||||
case VS::LIGHT_DIRECTIONAL_SHADOW_ORTHOGONAL: splits = 1; break;
|
||||
case VS::LIGHT_DIRECTIONAL_SHADOW_PARALLEL_2_SPLITS: splits = 2; break;
|
||||
case VS::LIGHT_DIRECTIONAL_SHADOW_PARALLEL_4_SPLITS: splits = 4; break;
|
||||
case VS::LIGHT_DIRECTIONAL_SHADOW_ORTHOGONAL:
|
||||
splits = 1;
|
||||
break;
|
||||
case VS::LIGHT_DIRECTIONAL_SHADOW_PARALLEL_2_SPLITS:
|
||||
splits = 2;
|
||||
break;
|
||||
case VS::LIGHT_DIRECTIONAL_SHADOW_PARALLEL_4_SPLITS:
|
||||
splits = 4;
|
||||
break;
|
||||
}
|
||||
|
||||
float distances[5];
|
||||
|
|
Loading…
Reference in a new issue