mirror of
https://github.com/godotengine/godot
synced 2024-10-04 20:47:51 +00:00
clang-format: Various fixes to comments alignment from clang-format
13
All reviewed manually and occasionally rewritten to avoid bad auto formatting.
This commit is contained in:
parent
3b11e33a09
commit
3a6be64c12
|
@ -41,8 +41,8 @@ class InputMap : public Object {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* A special value used to signify that a given Action can be triggered by any device
|
* A special value used to signify that a given Action can be triggered by any device
|
||||||
*/
|
*/
|
||||||
static int ALL_DEVICES;
|
static int ALL_DEVICES;
|
||||||
|
|
||||||
struct Action {
|
struct Action {
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
* Image storage class. This is used to store an image in user memory, as well as
|
* Image storage class. This is used to store an image in user memory, as well as
|
||||||
* providing some basic methods for image manipulation.
|
* providing some basic methods for image manipulation.
|
||||||
* Images can be loaded from a file, or registered into the Render object as textures.
|
* Images can be loaded from a file, or registered into the Render object as textures.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class Image;
|
class Image;
|
||||||
|
|
||||||
|
|
|
@ -44,9 +44,9 @@ typedef uint32_t uintr_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Miscellaneous helpers for marshalling data types, and encoding
|
* Miscellaneous helpers for marshalling data types, and encoding
|
||||||
* in an endian independent way
|
* in an endian independent way
|
||||||
*/
|
*/
|
||||||
|
|
||||||
union MarshallFloat {
|
union MarshallFloat {
|
||||||
uint32_t i; ///< int
|
uint32_t i; ///< int
|
||||||
|
|
|
@ -42,24 +42,24 @@ BVHABB_CLASS _logic_abb_merge(const BVHABB_CLASS &a, const BVHABB_CLASS &b) {
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@file q3DynamicAABBTree.h
|
* @file q3DynamicAABBTree.h
|
||||||
@author Randy Gaul
|
* @author Randy Gaul
|
||||||
@date 10/10/2014
|
* @date 10/10/2014
|
||||||
Copyright (c) 2014 Randy Gaul http://www.randygaul.net
|
* Copyright (c) 2014 Randy Gaul http://www.randygaul.net
|
||||||
This software is provided 'as-is', without any express or implied
|
* This software is provided 'as-is', without any express or implied
|
||||||
warranty. In no event will the authors be held liable for any damages
|
* warranty. In no event will the authors be held liable for any damages
|
||||||
arising from the use of this software.
|
* arising from the use of this software.
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
* Permission is granted to anyone to use this software for any purpose,
|
||||||
including commercial applications, and to alter it and redistribute it
|
* including commercial applications, and to alter it and redistribute it
|
||||||
freely, subject to the following restrictions:
|
* freely, subject to the following restrictions:
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
* 1. The origin of this software must not be misrepresented; you must not
|
||||||
claim that you wrote the original software. If you use this software
|
* claim that you wrote the original software. If you use this software
|
||||||
in a product, an acknowledgment in the product documentation would be
|
* in a product, an acknowledgment in the product documentation would be
|
||||||
appreciated but is not required.
|
* appreciated but is not required.
|
||||||
2. Altered source versions must be plainly marked as such, and must not
|
* 2. Altered source versions must be plainly marked as such, and must not
|
||||||
be misrepresented as being the original software.
|
* be misrepresented as being the original software.
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
* 3. This notice may not be removed or altered from any source distribution.
|
||||||
*/
|
*/
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
// This function is based on the 'Balance' function from Randy Gaul's qu3e
|
// This function is based on the 'Balance' function from Randy Gaul's qu3e
|
||||||
|
@ -67,7 +67,7 @@ BVHABB_CLASS _logic_abb_merge(const BVHABB_CLASS &a, const BVHABB_CLASS &b) {
|
||||||
// It is MODIFIED from qu3e version.
|
// It is MODIFIED from qu3e version.
|
||||||
// This is the only function used (and _logic_abb_merge helper function).
|
// This is the only function used (and _logic_abb_merge helper function).
|
||||||
int32_t _logic_balance(int32_t iA, uint32_t p_tree_id) {
|
int32_t _logic_balance(int32_t iA, uint32_t p_tree_id) {
|
||||||
// return iA; // uncomment this to bypass balance
|
//return iA; // uncomment this to bypass balance
|
||||||
|
|
||||||
TNode *A = &_nodes[iA];
|
TNode *A = &_nodes[iA];
|
||||||
|
|
||||||
|
@ -75,12 +75,12 @@ int32_t _logic_balance(int32_t iA, uint32_t p_tree_id) {
|
||||||
return iA;
|
return iA;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* A
|
/* A
|
||||||
/ \
|
* / \
|
||||||
B C
|
* B C
|
||||||
/ \ / \
|
* / \ / \
|
||||||
D E F G
|
* D E F G
|
||||||
*/
|
*/
|
||||||
|
|
||||||
CRASH_COND(A->num_children != 2);
|
CRASH_COND(A->num_children != 2);
|
||||||
int32_t iB = A->children[0];
|
int32_t iB = A->children[0];
|
||||||
|
|
|
@ -735,8 +735,6 @@ int32_t ConvexHullInternal::Rational64::compare(const Rational64 &b) const {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// return (numerator * b.denominator > b.numerator * denominator) ? sign : (numerator * b.denominator < b.numerator * denominator) ? -sign : 0;
|
|
||||||
|
|
||||||
#ifdef USE_X86_64_ASM
|
#ifdef USE_X86_64_ASM
|
||||||
|
|
||||||
int32_t result;
|
int32_t result;
|
||||||
|
@ -757,10 +755,9 @@ int32_t ConvexHullInternal::Rational64::compare(const Rational64 &b) const {
|
||||||
: "=&b"(result), [tmp] "=&r"(tmp), "=a"(dummy)
|
: "=&b"(result), [tmp] "=&r"(tmp), "=a"(dummy)
|
||||||
: "a"(denominator), [bn] "g"(b.numerator), [tn] "g"(numerator), [bd] "g"(b.denominator)
|
: "a"(denominator), [bn] "g"(b.numerator), [tn] "g"(numerator), [bd] "g"(b.denominator)
|
||||||
: "%rdx", "cc");
|
: "%rdx", "cc");
|
||||||
return result ? result ^ sign // if sign is +1, only bit 0 of result is inverted, which does not change the sign of result (and cannot result in zero)
|
// if sign is +1, only bit 0 of result is inverted, which does not change the sign of result (and cannot result in zero)
|
||||||
// if sign is -1, all bits of result are inverted, which changes the sign of result (and again cannot result in zero)
|
// if sign is -1, all bits of result are inverted, which changes the sign of result (and again cannot result in zero)
|
||||||
:
|
return result ? result ^ sign : 0;
|
||||||
0;
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
|
|
@ -48,13 +48,13 @@ public:
|
||||||
Vector3 vertex[3];
|
Vector3 vertex[3];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param p_plane plane used to split the face
|
* @param p_plane plane used to split the face
|
||||||
* @param p_res array of at least 3 faces, amount used in function return
|
* @param p_res array of at least 3 faces, amount used in function return
|
||||||
* @param p_is_point_over array of at least 3 booleans, determining which face is over the plane, amount used in function return
|
* @param p_is_point_over array of at least 3 booleans, determining which face is over the plane, amount used in function return
|
||||||
* @param _epsilon constant used for numerical error rounding, to add "thickness" to the plane (so coplanar points can happen)
|
* @param _epsilon constant used for numerical error rounding, to add "thickness" to the plane (so coplanar points can happen)
|
||||||
* @return amount of faces generated by the split, either 0 (means no split possible), 2 or 3
|
* @return amount of faces generated by the split, either 0 (means no split possible), 2 or 3
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int split_by_plane(const Plane &p_plane, Face3 *p_res, bool *p_is_point_over) const;
|
int split_by_plane(const Plane &p_plane, Face3 *p_res, bool *p_is_point_over) const;
|
||||||
|
|
||||||
|
|
|
@ -116,10 +116,10 @@ enum Corner {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The "Real" type is an abstract type used for real numbers, such as 1.5,
|
* The "Real" type is an abstract type used for real numbers, such as 1.5,
|
||||||
* in contrast to integer numbers. Precision can be controlled with the
|
* in contrast to integer numbers. Precision can be controlled with the
|
||||||
* presence or absence of the REAL_T_IS_DOUBLE define.
|
* presence or absence of the REAL_T_IS_DOUBLE define.
|
||||||
*/
|
*/
|
||||||
#ifdef REAL_T_IS_DOUBLE
|
#ifdef REAL_T_IS_DOUBLE
|
||||||
typedef double real_t;
|
typedef double real_t;
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -42,18 +42,13 @@ real_t Triangulate::get_area(const Vector<Vector2> &contour) {
|
||||||
return A * 0.5;
|
return A * 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/* `is_inside_triangle` decides if a point P is inside the triangle
|
||||||
is_inside_triangle decides if a point P is Inside of the triangle
|
* defined by A, B, C. */
|
||||||
defined by A, B, C.
|
|
||||||
*/
|
|
||||||
|
|
||||||
bool Triangulate::is_inside_triangle(real_t Ax, real_t Ay,
|
bool Triangulate::is_inside_triangle(real_t Ax, real_t Ay,
|
||||||
real_t Bx, real_t By,
|
real_t Bx, real_t By,
|
||||||
real_t Cx, real_t Cy,
|
real_t Cx, real_t Cy,
|
||||||
real_t Px, real_t Py,
|
real_t Px, real_t Py,
|
||||||
bool include_edges)
|
bool include_edges) {
|
||||||
|
|
||||||
{
|
|
||||||
real_t ax, ay, bx, by, cx, cy, apx, apy, bpx, bpy, cpx, cpy;
|
real_t ax, ay, bx, by, cx, cy, apx, apy, bpx, bpy, cpx, cpy;
|
||||||
real_t cCROSSap, bCROSScp, aCROSSbp;
|
real_t cCROSSap, bCROSScp, aCROSSbp;
|
||||||
|
|
||||||
|
|
|
@ -2317,28 +2317,33 @@ bool String::is_numeric() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class C>
|
template <class C>
|
||||||
static double built_in_strtod(const C *string, /* A decimal ASCII floating-point number,
|
static double built_in_strtod(
|
||||||
* optionally preceded by white space. Must
|
/* A decimal ASCII floating-point number,
|
||||||
* have form "-I.FE-X", where I is the integer
|
* optionally preceded by white space. Must
|
||||||
* part of the mantissa, F is the fractional
|
* have form "-I.FE-X", where I is the integer
|
||||||
* part of the mantissa, and X is the
|
* part of the mantissa, F is the fractional
|
||||||
* exponent. Either of the signs may be "+",
|
* part of the mantissa, and X is the
|
||||||
* "-", or omitted. Either I or F may be
|
* exponent. Either of the signs may be "+",
|
||||||
* omitted, or both. The decimal point isn't
|
* "-", or omitted. Either I or F may be
|
||||||
* necessary unless F is present. The "E" may
|
* omitted, or both. The decimal point isn't
|
||||||
* actually be an "e". E and X may both be
|
* necessary unless F is present. The "E" may
|
||||||
* omitted (but not just one). */
|
* actually be an "e". E and X may both be
|
||||||
C **endPtr = nullptr) /* If non-nullptr, store terminating Cacter's
|
* omitted (but not just one). */
|
||||||
* address here. */
|
const C *string,
|
||||||
{
|
/* If non-nullptr, store terminating Cacter's
|
||||||
static const int maxExponent = 511; /* Largest possible base 10 exponent. Any
|
* address here. */
|
||||||
* exponent larger than this will already
|
C **endPtr = nullptr) {
|
||||||
* produce underflow or overflow, so there's
|
/* Largest possible base 10 exponent. Any
|
||||||
* no need to worry about additional digits.
|
* exponent larger than this will already
|
||||||
*/
|
* produce underflow or overflow, so there's
|
||||||
static const double powersOf10[] = { /* Table giving binary powers of 10. Entry */
|
* no need to worry about additional digits. */
|
||||||
10., /* is 10^2^i. Used to convert decimal */
|
static const int maxExponent = 511;
|
||||||
100., /* exponents into floating-point numbers. */
|
/* Table giving binary powers of 10. Entry
|
||||||
|
* is 10^2^i. Used to convert decimal
|
||||||
|
* exponents into floating-point numbers. */
|
||||||
|
static const double powersOf10[] = {
|
||||||
|
10.,
|
||||||
|
100.,
|
||||||
1.0e4,
|
1.0e4,
|
||||||
1.0e8,
|
1.0e8,
|
||||||
1.0e16,
|
1.0e16,
|
||||||
|
@ -2353,25 +2358,28 @@ static double built_in_strtod(const C *string, /* A decimal ASCII floating-point
|
||||||
const double *d;
|
const double *d;
|
||||||
const C *p;
|
const C *p;
|
||||||
int c;
|
int c;
|
||||||
int exp = 0; /* Exponent read from "EX" field. */
|
/* Exponent read from "EX" field. */
|
||||||
int fracExp = 0; /* Exponent that derives from the fractional
|
int exp = 0;
|
||||||
* part. Under normal circumstances, it is
|
/* Exponent that derives from the fractional
|
||||||
* the negative of the number of digits in F.
|
* part. Under normal circumstances, it is
|
||||||
* However, if I is very long, the last digits
|
* the negative of the number of digits in F.
|
||||||
* of I get dropped (otherwise a long I with a
|
* However, if I is very long, the last digits
|
||||||
* large negative exponent could cause an
|
* of I get dropped (otherwise a long I with a
|
||||||
* unnecessary overflow on I alone). In this
|
* large negative exponent could cause an
|
||||||
* case, fracExp is incremented one for each
|
* unnecessary overflow on I alone). In this
|
||||||
* dropped digit. */
|
* case, fracExp is incremented one for each
|
||||||
int mantSize; /* Number of digits in mantissa. */
|
* dropped digit. */
|
||||||
int decPt; /* Number of mantissa digits BEFORE decimal
|
int fracExp = 0;
|
||||||
* point. */
|
/* Number of digits in mantissa. */
|
||||||
const C *pExp; /* Temporarily holds location of exponent in
|
int mantSize;
|
||||||
* string. */
|
/* Number of mantissa digits BEFORE decimal point. */
|
||||||
|
int decPt;
|
||||||
|
/* Temporarily holds location of exponent in string. */
|
||||||
|
const C *pExp;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Strip off leading blanks and check for a sign.
|
* Strip off leading blanks and check for a sign.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
p = string;
|
p = string;
|
||||||
while (*p == ' ' || *p == '\t' || *p == '\n') {
|
while (*p == ' ' || *p == '\t' || *p == '\n') {
|
||||||
|
@ -2388,9 +2396,9 @@ static double built_in_strtod(const C *string, /* A decimal ASCII floating-point
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Count the number of digits in the mantissa (including the decimal
|
* Count the number of digits in the mantissa (including the decimal
|
||||||
* point), and also locate the decimal point.
|
* point), and also locate the decimal point.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
decPt = -1;
|
decPt = -1;
|
||||||
for (mantSize = 0;; mantSize += 1) {
|
for (mantSize = 0;; mantSize += 1) {
|
||||||
|
@ -2405,11 +2413,11 @@ static double built_in_strtod(const C *string, /* A decimal ASCII floating-point
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Now suck up the digits in the mantissa. Use two integers to collect 9
|
* Now suck up the digits in the mantissa. Use two integers to collect 9
|
||||||
* digits each (this is faster than using floating-point). If the mantissa
|
* digits each (this is faster than using floating-point). If the mantissa
|
||||||
* has more than 18 digits, ignore the extras, since they can't affect the
|
* has more than 18 digits, ignore the extras, since they can't affect the
|
||||||
* value anyway.
|
* value anyway.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
pExp = p;
|
pExp = p;
|
||||||
p -= mantSize;
|
p -= mantSize;
|
||||||
|
@ -2455,8 +2463,8 @@ static double built_in_strtod(const C *string, /* A decimal ASCII floating-point
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Skim off the exponent.
|
* Skim off the exponent.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
p = pExp;
|
p = pExp;
|
||||||
if ((*p == 'E') || (*p == 'e')) {
|
if ((*p == 'E') || (*p == 'e')) {
|
||||||
|
@ -2486,10 +2494,10 @@ static double built_in_strtod(const C *string, /* A decimal ASCII floating-point
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generate a floating-point number that represents the exponent. Do this
|
* Generate a floating-point number that represents the exponent. Do this
|
||||||
* by processing the exponent one bit at a time to combine many powers of
|
* by processing the exponent one bit at a time to combine many powers of
|
||||||
* 2 of 10. Then combine the exponent with the fraction.
|
* 2 of 10. Then combine the exponent with the fraction.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (exp < 0) {
|
if (exp < 0) {
|
||||||
expSign = true;
|
expSign = true;
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
* @param RELATIONSHIP Relationship at which the hash table is resized. if amount of elements is RELATIONSHIP
|
* @param RELATIONSHIP Relationship at which the hash table is resized. if amount of elements is RELATIONSHIP
|
||||||
* times bigger than the hash table, table is resized to solve this condition. if RELATIONSHIP is zero, table is always MIN_HASH_TABLE_POWER.
|
* times bigger than the hash table, table is resized to solve this condition. if RELATIONSHIP is zero, table is always MIN_HASH_TABLE_POWER.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
template <class TKey, class TData, class Hasher = HashMapHasherDefault, class Comparator = HashMapComparatorDefault<TKey>, uint8_t MIN_HASH_TABLE_POWER = 3, uint8_t RELATIONSHIP = 8>
|
template <class TKey, class TData, class Hasher = HashMapHasherDefault, class Comparator = HashMapComparatorDefault<TKey>, uint8_t MIN_HASH_TABLE_POWER = 3, uint8_t RELATIONSHIP = 8>
|
||||||
class HashMap {
|
class HashMap {
|
||||||
|
@ -458,8 +458,8 @@ public:
|
||||||
*
|
*
|
||||||
* print( *k );
|
* print( *k );
|
||||||
* }
|
* }
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
const TKey *next(const TKey *p_key) const {
|
const TKey *next(const TKey *p_key) const {
|
||||||
if (unlikely(!hash_table)) {
|
if (unlikely(!hash_table)) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
|
@ -249,29 +249,29 @@ private:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* return a const iterator to the beginning of the list.
|
* return a const iterator to the beginning of the list.
|
||||||
*/
|
*/
|
||||||
_FORCE_INLINE_ const Element *front() const {
|
_FORCE_INLINE_ const Element *front() const {
|
||||||
return _data ? _data->first : nullptr;
|
return _data ? _data->first : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* return an iterator to the beginning of the list.
|
* return an iterator to the beginning of the list.
|
||||||
*/
|
*/
|
||||||
_FORCE_INLINE_ Element *front() {
|
_FORCE_INLINE_ Element *front() {
|
||||||
return _data ? _data->first : nullptr;
|
return _data ? _data->first : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* return a const iterator to the last member of the list.
|
* return a const iterator to the last member of the list.
|
||||||
*/
|
*/
|
||||||
_FORCE_INLINE_ const Element *back() const {
|
_FORCE_INLINE_ const Element *back() const {
|
||||||
return _data ? _data->last : nullptr;
|
return _data ? _data->last : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* return an iterator to the last member of the list.
|
* return an iterator to the last member of the list.
|
||||||
*/
|
*/
|
||||||
_FORCE_INLINE_ Element *back() {
|
_FORCE_INLINE_ Element *back() {
|
||||||
return _data ? _data->last : nullptr;
|
return _data ? _data->last : nullptr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
* @class Vector
|
* @class Vector
|
||||||
* @author Juan Linietsky
|
* @author Juan Linietsky
|
||||||
* Vector container. Regular Vector Container. Use with care and for smaller arrays when possible. Use Vector for large arrays.
|
* Vector container. Regular Vector Container. Use with care and for smaller arrays when possible. Use Vector for large arrays.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "core/error/error_macros.h"
|
#include "core/error/error_macros.h"
|
||||||
#include "core/os/memory.h"
|
#include "core/os/memory.h"
|
||||||
|
|
|
@ -631,10 +631,10 @@ Error VulkanContext::_create_physical_device() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is info for a temp callback to use during CreateInstance.
|
* This is info for a temp callback to use during CreateInstance.
|
||||||
* After the instance is created, we use the instance-based
|
* After the instance is created, we use the instance-based
|
||||||
* function to register the final callback.
|
* function to register the final callback.
|
||||||
*/
|
*/
|
||||||
VkDebugUtilsMessengerCreateInfoEXT dbg_messenger_create_info;
|
VkDebugUtilsMessengerCreateInfoEXT dbg_messenger_create_info;
|
||||||
VkDebugReportCallbackCreateInfoEXT dbg_report_callback_create_info{};
|
VkDebugReportCallbackCreateInfoEXT dbg_report_callback_create_info{};
|
||||||
if (enabled_debug_utils) {
|
if (enabled_debug_utils) {
|
||||||
|
|
|
@ -252,13 +252,13 @@ Error ResourceImporterWAV::import(const String &p_source_file, const String &p_s
|
||||||
//loop point info!
|
//loop point info!
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Consider exploring next document:
|
* Consider exploring next document:
|
||||||
* http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/Docs/RIFFNEW.pdf
|
* http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/Docs/RIFFNEW.pdf
|
||||||
* Especially on page:
|
* Especially on page:
|
||||||
* 16 - 17
|
* 16 - 17
|
||||||
* Timestamp:
|
* Timestamp:
|
||||||
* 22:38 06.07.2017 GMT
|
* 22:38 06.07.2017 GMT
|
||||||
**/
|
**/
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
file->get_32(); // i wish to know why should i do this... no doc!
|
file->get_32(); // i wish to know why should i do this... no doc!
|
||||||
|
|
|
@ -614,15 +614,6 @@ Path3DEditorPlugin::Path3DEditorPlugin(EditorNode *p_node) {
|
||||||
menu->connect("id_pressed", callable_mp(this, &Path3DEditorPlugin::_handle_option_pressed));
|
menu->connect("id_pressed", callable_mp(this, &Path3DEditorPlugin::_handle_option_pressed));
|
||||||
|
|
||||||
curve_edit->set_pressed(true);
|
curve_edit->set_pressed(true);
|
||||||
/*
|
|
||||||
collision_polygon_editor = memnew( PathEditor(p_node) );
|
|
||||||
editor->get_main_control()->add_child(collision_polygon_editor);
|
|
||||||
collision_polygon_editor->set_margin(MARGIN_LEFT,200);
|
|
||||||
collision_polygon_editor->set_margin(MARGIN_RIGHT,230);
|
|
||||||
collision_polygon_editor->set_margin(MARGIN_TOP,0);
|
|
||||||
collision_polygon_editor->set_margin(MARGIN_BOTTOM,10);
|
|
||||||
collision_polygon_editor->hide();
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Path3DEditorPlugin::~Path3DEditorPlugin() {
|
Path3DEditorPlugin::~Path3DEditorPlugin() {
|
||||||
|
|
|
@ -1308,10 +1308,12 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
|
||||||
OS::get_singleton()->_allow_hidpi = GLOBAL_DEF("display/window/dpi/allow_hidpi", false);
|
OS::get_singleton()->_allow_hidpi = GLOBAL_DEF("display/window/dpi/allow_hidpi", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* todo restore
|
// FIXME: Restore support.
|
||||||
OS::get_singleton()->_allow_layered = GLOBAL_DEF("display/window/per_pixel_transparency/allowed", false);
|
#if 0
|
||||||
video_mode.layered = GLOBAL_DEF("display/window/per_pixel_transparency/enabled", false);
|
//OS::get_singleton()->_allow_layered = GLOBAL_DEF("display/window/per_pixel_transparency/allowed", false);
|
||||||
*/
|
video_mode.layered = GLOBAL_DEF("display/window/per_pixel_transparency/enabled", false);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (editor || project_manager) {
|
if (editor || project_manager) {
|
||||||
// The editor and project manager always detect and use hiDPI if needed
|
// The editor and project manager always detect and use hiDPI if needed
|
||||||
OS::get_singleton()->_allow_hidpi = true;
|
OS::get_singleton()->_allow_hidpi = true;
|
||||||
|
|
|
@ -82,46 +82,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
namespace FBXDocParser {
|
namespace FBXDocParser {
|
||||||
//enum Flag
|
|
||||||
//{
|
|
||||||
// e_unknown_0 = 1 << 0,
|
|
||||||
// e_unknown_1 = 1 << 1,
|
|
||||||
// e_unknown_2 = 1 << 2,
|
|
||||||
// e_unknown_3 = 1 << 3,
|
|
||||||
// e_unknown_4 = 1 << 4,
|
|
||||||
// e_unknown_5 = 1 << 5,
|
|
||||||
// e_unknown_6 = 1 << 6,
|
|
||||||
// e_unknown_7 = 1 << 7,
|
|
||||||
// e_unknown_8 = 1 << 8,
|
|
||||||
// e_unknown_9 = 1 << 9,
|
|
||||||
// e_unknown_10 = 1 << 10,
|
|
||||||
// e_unknown_11 = 1 << 11,
|
|
||||||
// e_unknown_12 = 1 << 12,
|
|
||||||
// e_unknown_13 = 1 << 13,
|
|
||||||
// e_unknown_14 = 1 << 14,
|
|
||||||
// e_unknown_15 = 1 << 15,
|
|
||||||
// e_unknown_16 = 1 << 16,
|
|
||||||
// e_unknown_17 = 1 << 17,
|
|
||||||
// e_unknown_18 = 1 << 18,
|
|
||||||
// e_unknown_19 = 1 << 19,
|
|
||||||
// e_unknown_20 = 1 << 20,
|
|
||||||
// e_unknown_21 = 1 << 21,
|
|
||||||
// e_unknown_22 = 1 << 22,
|
|
||||||
// e_unknown_23 = 1 << 23,
|
|
||||||
// e_flag_field_size_64_bit = 1 << 24, // Not sure what is
|
|
||||||
// e_unknown_25 = 1 << 25,
|
|
||||||
// e_unknown_26 = 1 << 26,
|
|
||||||
// e_unknown_27 = 1 << 27,
|
|
||||||
// e_unknown_28 = 1 << 28,
|
|
||||||
// e_unknown_29 = 1 << 29,
|
|
||||||
// e_unknown_30 = 1 << 30,
|
|
||||||
// e_unknown_31 = 1 << 31
|
|
||||||
//};
|
|
||||||
//
|
|
||||||
//bool check_flag(uint32_t flags, Flag to_check)
|
|
||||||
//{
|
|
||||||
// return (flags & to_check) != 0;
|
|
||||||
//}
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
Token::Token(const char *sbegin, const char *send, TokenType type, size_t offset) :
|
Token::Token(const char *sbegin, const char *send, TokenType type, size_t offset) :
|
||||||
sbegin(sbegin),
|
sbegin(sbegin),
|
||||||
|
@ -458,12 +418,6 @@ void TokenizeBinary(TokenList &output_tokens, const char *input, size_t length,
|
||||||
//TokenizeError("file is too short",0);
|
//TokenizeError("file is too short",0);
|
||||||
}
|
}
|
||||||
|
|
||||||
//uint32_t offset = 0x15;
|
|
||||||
/* const char* cursor = input + 0x15;
|
|
||||||
const uint32_t flags = ReadWord(input, cursor, input + length);
|
|
||||||
const uint8_t padding_0 = ReadByte(input, cursor, input + length); // unused
|
|
||||||
const uint8_t padding_1 = ReadByte(input, cursor, input + length); // unused*/
|
|
||||||
|
|
||||||
if (strncmp(input, "Kaydara FBX Binary", 18)) {
|
if (strncmp(input, "Kaydara FBX Binary", 18)) {
|
||||||
TokenizeError("magic bytes not found", 0);
|
TokenizeError("magic bytes not found", 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,8 +70,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @file FBXCommon.h
|
/** @file FBXCommon.h
|
||||||
* Some useful constants and enums for dealing with FBX files.
|
* Some useful constants and enums for dealing with FBX files.
|
||||||
*/
|
*/
|
||||||
#ifndef FBX_COMMON_H
|
#ifndef FBX_COMMON_H
|
||||||
#define FBX_COMMON_H
|
#define FBX_COMMON_H
|
||||||
|
|
||||||
|
|
|
@ -706,13 +706,13 @@ public:
|
||||||
virtual ~AnimationCurve();
|
virtual ~AnimationCurve();
|
||||||
|
|
||||||
/** get list of keyframe positions (time).
|
/** get list of keyframe positions (time).
|
||||||
* Invariant: |GetKeys()| > 0 */
|
* Invariant: |GetKeys()| > 0 */
|
||||||
const KeyTimeList &GetKeys() const {
|
const KeyTimeList &GetKeys() const {
|
||||||
return keys;
|
return keys;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** get list of keyframe values.
|
/** get list of keyframe values.
|
||||||
* Invariant: |GetKeys()| == |GetValues()| && |GetKeys()| > 0*/
|
* Invariant: |GetKeys()| == |GetValues()| && |GetKeys()| > 0*/
|
||||||
const KeyValueList &GetValues() const {
|
const KeyValueList &GetValues() const {
|
||||||
return values;
|
return values;
|
||||||
}
|
}
|
||||||
|
@ -750,8 +750,8 @@ typedef std::weak_ptr<AnimationCurveNode> AnimationCurveNodeWeakPtr;
|
||||||
class AnimationCurveNode : public Object {
|
class AnimationCurveNode : public Object {
|
||||||
public:
|
public:
|
||||||
/* the optional white list specifies a list of property names for which the caller
|
/* the optional white list specifies a list of property names for which the caller
|
||||||
wants animations for. If the curve node does not match one of these, std::range_error
|
wants animations for. If the curve node does not match one of these, std::range_error
|
||||||
will be thrown. */
|
will be thrown. */
|
||||||
AnimationCurveNode(uint64_t id, const ElementPtr element, const std::string &name, const Document &doc,
|
AnimationCurveNode(uint64_t id, const ElementPtr element, const std::string &name, const Document &doc,
|
||||||
const char *const *target_prop_whitelist = nullptr, size_t whitelist_size = 0);
|
const char *const *target_prop_whitelist = nullptr, size_t whitelist_size = 0);
|
||||||
|
|
||||||
|
@ -760,8 +760,8 @@ public:
|
||||||
const AnimationMap &Curves() const;
|
const AnimationMap &Curves() const;
|
||||||
|
|
||||||
/** Object the curve is assigned to, this can be nullptr if the
|
/** Object the curve is assigned to, this can be nullptr if the
|
||||||
* target object has no DOM representation or could not
|
* target object has no DOM representation or could not
|
||||||
* be read for other reasons.*/
|
* be read for other reasons.*/
|
||||||
Object *Target() const {
|
Object *Target() const {
|
||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
|
@ -799,8 +799,8 @@ public:
|
||||||
virtual ~AnimationLayer();
|
virtual ~AnimationLayer();
|
||||||
|
|
||||||
/* the optional white list specifies a list of property names for which the caller
|
/* the optional white list specifies a list of property names for which the caller
|
||||||
wants animations for. Curves not matching this list will not be added to the
|
wants animations for. Curves not matching this list will not be added to the
|
||||||
animation layer. */
|
animation layer. */
|
||||||
const AnimationCurveNodeList Nodes(const char *const *target_prop_whitelist = nullptr, size_t whitelist_size = 0) const;
|
const AnimationCurveNodeList Nodes(const char *const *target_prop_whitelist = nullptr, size_t whitelist_size = 0) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -891,15 +891,15 @@ public:
|
||||||
virtual ~Cluster();
|
virtual ~Cluster();
|
||||||
|
|
||||||
/** get the list of deformer weights associated with this cluster.
|
/** get the list of deformer weights associated with this cluster.
|
||||||
* Use #GetIndices() to get the associated vertices. Both arrays
|
* Use #GetIndices() to get the associated vertices. Both arrays
|
||||||
* have the same size (and may also be empty). */
|
* have the same size (and may also be empty). */
|
||||||
const std::vector<float> &GetWeights() const {
|
const std::vector<float> &GetWeights() const {
|
||||||
return weights;
|
return weights;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** get indices into the vertex data of the geometry associated
|
/** get indices into the vertex data of the geometry associated
|
||||||
* with this cluster. Use #GetWeights() to get the associated weights.
|
* with this cluster. Use #GetWeights() to get the associated weights.
|
||||||
* Both arrays have the same size (and may also be empty). */
|
* Both arrays have the same size (and may also be empty). */
|
||||||
const std::vector<unsigned int> &GetIndices() const {
|
const std::vector<unsigned int> &GetIndices() const {
|
||||||
return indices;
|
return indices;
|
||||||
}
|
}
|
||||||
|
@ -998,7 +998,7 @@ public:
|
||||||
LazyObject *LazyDestinationObject() const;
|
LazyObject *LazyDestinationObject() const;
|
||||||
|
|
||||||
/** return the name of the property the connection is attached to.
|
/** return the name of the property the connection is attached to.
|
||||||
* this is an empty string for object to object (OO) connections. */
|
* this is an empty string for object to object (OO) connections. */
|
||||||
const std::string &PropertyName() const {
|
const std::string &PropertyName() const {
|
||||||
return prop;
|
return prop;
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,29 +81,29 @@ namespace FBXDocParser {
|
||||||
/** FBX import settings, parts of which are publicly accessible via their corresponding AI_CONFIG constants */
|
/** FBX import settings, parts of which are publicly accessible via their corresponding AI_CONFIG constants */
|
||||||
struct ImportSettings {
|
struct ImportSettings {
|
||||||
/** enable strict mode:
|
/** enable strict mode:
|
||||||
* - only accept fbx 2012, 2013 files
|
* - only accept fbx 2012, 2013 files
|
||||||
* - on the slightest error, give up.
|
* - on the slightest error, give up.
|
||||||
*
|
*
|
||||||
* Basically, strict mode means that the fbx file will actually
|
* Basically, strict mode means that the fbx file will actually
|
||||||
* be validated.*/
|
* be validated.*/
|
||||||
bool strictMode = true;
|
bool strictMode = true;
|
||||||
|
|
||||||
/** specifies whether all geometry layers are read and scanned for
|
/** specifies whether all geometry layers are read and scanned for
|
||||||
* usable data channels. The FBX spec indicates that many readers
|
* usable data channels. The FBX spec indicates that many readers
|
||||||
* will only read the first channel and that this is in some way
|
* will only read the first channel and that this is in some way
|
||||||
* the recommended way- in reality, however, it happens a lot that
|
* the recommended way- in reality, however, it happens a lot that
|
||||||
* vertex data is spread among multiple layers.*/
|
* vertex data is spread among multiple layers.*/
|
||||||
bool readAllLayers = true;
|
bool readAllLayers = true;
|
||||||
|
|
||||||
/** specifies whether all materials are read, or only those that
|
/** specifies whether all materials are read, or only those that
|
||||||
* are referenced by at least one mesh. Reading all materials
|
* are referenced by at least one mesh. Reading all materials
|
||||||
* may make FBX reading a lot slower since all objects
|
* may make FBX reading a lot slower since all objects
|
||||||
* need to be processed.
|
* need to be processed.
|
||||||
* This bit is ignored unless readMaterials=true.*/
|
* This bit is ignored unless readMaterials=true.*/
|
||||||
bool readAllMaterials = true;
|
bool readAllMaterials = true;
|
||||||
|
|
||||||
/** import materials (true) or skip them and assign a default
|
/** import materials (true) or skip them and assign a default
|
||||||
* material.*/
|
* material.*/
|
||||||
bool readMaterials = true;
|
bool readMaterials = true;
|
||||||
|
|
||||||
/** import embedded textures?*/
|
/** import embedded textures?*/
|
||||||
|
@ -116,35 +116,35 @@ struct ImportSettings {
|
||||||
bool readLights = true;
|
bool readLights = true;
|
||||||
|
|
||||||
/** import animations (i.e. animation curves, the node
|
/** import animations (i.e. animation curves, the node
|
||||||
* skeleton is always imported).*/
|
* skeleton is always imported).*/
|
||||||
bool readAnimations = true;
|
bool readAnimations = true;
|
||||||
|
|
||||||
/** read bones (vertex weights and deform info).*/
|
/** read bones (vertex weights and deform info).*/
|
||||||
bool readWeights = true;
|
bool readWeights = true;
|
||||||
|
|
||||||
/** preserve transformation pivots and offsets. Since these can
|
/** preserve transformation pivots and offsets. Since these can
|
||||||
* not directly be represented in assimp, additional dummy
|
* not directly be represented in assimp, additional dummy
|
||||||
* nodes will be generated. Note that settings this to false
|
* nodes will be generated. Note that settings this to false
|
||||||
* can make animation import a lot slower.
|
* can make animation import a lot slower.
|
||||||
*
|
*
|
||||||
* The naming scheme for the generated nodes is:
|
* The naming scheme for the generated nodes is:
|
||||||
* <OriginalName>_$AssimpFbx$_<TransformName>
|
* <OriginalName>_$AssimpFbx$_<TransformName>
|
||||||
*
|
*
|
||||||
* where <TransformName> is one of
|
* where <TransformName> is one of
|
||||||
* RotationPivot
|
* RotationPivot
|
||||||
* RotationOffset
|
* RotationOffset
|
||||||
* PreRotation
|
* PreRotation
|
||||||
* PostRotation
|
* PostRotation
|
||||||
* ScalingPivot
|
* ScalingPivot
|
||||||
* ScalingOffset
|
* ScalingOffset
|
||||||
* Translation
|
* Translation
|
||||||
* Scaling
|
* Scaling
|
||||||
* Rotation
|
* Rotation
|
||||||
**/
|
**/
|
||||||
bool preservePivots = true;
|
bool preservePivots = true;
|
||||||
|
|
||||||
/** do not import animation curves that specify a constant
|
/** do not import animation curves that specify a constant
|
||||||
* values matching the corresponding node transformation.*/
|
* values matching the corresponding node transformation.*/
|
||||||
bool optimizeEmptyAnimationCurves = true;
|
bool optimizeEmptyAnimationCurves = true;
|
||||||
|
|
||||||
/** use legacy naming for embedded textures eg: (*0, *1, *2).*/
|
/** use legacy naming for embedded textures eg: (*0, *1, *2).*/
|
||||||
|
|
|
@ -226,7 +226,7 @@ public:
|
||||||
const std::vector<Vector3> &GetVertices() const;
|
const std::vector<Vector3> &GetVertices() const;
|
||||||
|
|
||||||
/** Get a list of all vertex normals or an empty array if
|
/** Get a list of all vertex normals or an empty array if
|
||||||
* no normals are specified. */
|
* no normals are specified. */
|
||||||
const std::vector<Vector3> &GetNormals() const;
|
const std::vector<Vector3> &GetNormals() const;
|
||||||
|
|
||||||
/** Return list of vertex indices. */
|
/** Return list of vertex indices. */
|
||||||
|
@ -238,8 +238,8 @@ private:
|
||||||
std::vector<unsigned int> m_indices;
|
std::vector<unsigned int> m_indices;
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* DOM class for FBX geometry of type "Line"
|
* DOM class for FBX geometry of type "Line"
|
||||||
*/
|
*/
|
||||||
class LineGeometry : public Geometry {
|
class LineGeometry : public Geometry {
|
||||||
public:
|
public:
|
||||||
/** The class constructor */
|
/** The class constructor */
|
||||||
|
|
|
@ -660,13 +660,6 @@ void ParseVectorDataArray(std::vector<Vector3> &out, const ElementPtr el) {
|
||||||
static_cast<real_t>(d[1]),
|
static_cast<real_t>(d[1]),
|
||||||
static_cast<real_t>(d[2])));
|
static_cast<real_t>(d[2])));
|
||||||
}
|
}
|
||||||
// for debugging
|
|
||||||
/*for ( size_t i = 0; i < out.size(); i++ ) {
|
|
||||||
aiVector3D vec3( out[ i ] );
|
|
||||||
std::stringstream stream;
|
|
||||||
stream << " vec3.x = " << vec3.x << " vec3.y = " << vec3.y << " vec3.z = " << vec3.z << std::endl;
|
|
||||||
DefaultLogger::get()->info( stream.str() );
|
|
||||||
}*/
|
|
||||||
} else if (type == 'f') {
|
} else if (type == 'f') {
|
||||||
const float *f = reinterpret_cast<const float *>(&buff[0]);
|
const float *f = reinterpret_cast<const float *>(&buff[0]);
|
||||||
for (unsigned int i = 0; i < count3; ++i, f += 3) {
|
for (unsigned int i = 0; i < count3; ++i, f += 3) {
|
||||||
|
|
|
@ -187,7 +187,7 @@ private:
|
||||||
class Parser {
|
class Parser {
|
||||||
public:
|
public:
|
||||||
/** Parse given a token list. Does not take ownership of the tokens -
|
/** Parse given a token list. Does not take ownership of the tokens -
|
||||||
* the objects must persist during the entire parser lifetime */
|
* the objects must persist during the entire parser lifetime */
|
||||||
Parser(const TokenList &tokens, bool is_binary);
|
Parser(const TokenList &tokens, bool is_binary);
|
||||||
~Parser();
|
~Parser();
|
||||||
|
|
||||||
|
|
|
@ -169,10 +169,10 @@ char EncodeBase64(char byte) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Encodes a block of 4 bytes to base64 encoding
|
/** Encodes a block of 4 bytes to base64 encoding
|
||||||
* @param bytes Bytes to encode.
|
* @param bytes Bytes to encode.
|
||||||
* @param out_string String to write encoded values to.
|
* @param out_string String to write encoded values to.
|
||||||
* @param string_pos Position in out_string.
|
* @param string_pos Position in out_string.
|
||||||
*/
|
*/
|
||||||
void EncodeByteBlock(const char *bytes, std::string &out_string, size_t string_pos) {
|
void EncodeByteBlock(const char *bytes, std::string &out_string, size_t string_pos) {
|
||||||
char b0 = (bytes[0] & 0xFC) >> 2;
|
char b0 = (bytes[0] & 0xFC) >> 2;
|
||||||
char b1 = (bytes[0] & 0x03) << 4 | ((bytes[1] & 0xF0) >> 4);
|
char b1 = (bytes[0] & 0x03) << 4 | ((bytes[1] & 0xF0) >> 4);
|
||||||
|
|
|
@ -87,34 +87,34 @@ namespace Util {
|
||||||
const char *TokenTypeString(TokenType t);
|
const char *TokenTypeString(TokenType t);
|
||||||
|
|
||||||
/** Decode a single Base64-encoded character.
|
/** Decode a single Base64-encoded character.
|
||||||
*
|
*
|
||||||
* @param ch Character to decode (from base64 to binary).
|
* @param ch Character to decode (from base64 to binary).
|
||||||
* @return decoded byte value*/
|
* @return decoded byte value*/
|
||||||
uint8_t DecodeBase64(char ch);
|
uint8_t DecodeBase64(char ch);
|
||||||
|
|
||||||
/** Compute decoded size of a Base64-encoded string
|
/** Compute decoded size of a Base64-encoded string
|
||||||
*
|
*
|
||||||
* @param in Characters to decode.
|
* @param in Characters to decode.
|
||||||
* @param inLength Number of characters to decode.
|
* @param inLength Number of characters to decode.
|
||||||
* @return size of the decoded data (number of bytes)*/
|
* @return size of the decoded data (number of bytes)*/
|
||||||
size_t ComputeDecodedSizeBase64(const char *in, size_t inLength);
|
size_t ComputeDecodedSizeBase64(const char *in, size_t inLength);
|
||||||
|
|
||||||
/** Decode a Base64-encoded string
|
/** Decode a Base64-encoded string
|
||||||
*
|
*
|
||||||
* @param in Characters to decode.
|
* @param in Characters to decode.
|
||||||
* @param inLength Number of characters to decode.
|
* @param inLength Number of characters to decode.
|
||||||
* @param out Pointer where we will store the decoded data.
|
* @param out Pointer where we will store the decoded data.
|
||||||
* @param maxOutLength Size of output buffer.
|
* @param maxOutLength Size of output buffer.
|
||||||
* @return size of the decoded data (number of bytes)*/
|
* @return size of the decoded data (number of bytes)*/
|
||||||
size_t DecodeBase64(const char *in, size_t inLength, uint8_t *out, size_t maxOutLength);
|
size_t DecodeBase64(const char *in, size_t inLength, uint8_t *out, size_t maxOutLength);
|
||||||
|
|
||||||
char EncodeBase64(char byte);
|
char EncodeBase64(char byte);
|
||||||
|
|
||||||
/** Encode bytes in base64-encoding
|
/** Encode bytes in base64-encoding
|
||||||
*
|
*
|
||||||
* @param data Binary data to encode.
|
* @param data Binary data to encode.
|
||||||
* @param inLength Number of bytes to encode.
|
* @param inLength Number of bytes to encode.
|
||||||
* @return base64-encoded string*/
|
* @return base64-encoded string*/
|
||||||
std::string EncodeBase64(const char *data, size_t length);
|
std::string EncodeBase64(const char *data, size_t length);
|
||||||
} // namespace Util
|
} // namespace Util
|
||||||
} // namespace FBXDocParser
|
} // namespace FBXDocParser
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
/**
|
/**
|
||||||
* Import Utils
|
* Import Utils
|
||||||
* Conversion tools / glue code to convert from FBX to Godot
|
* Conversion tools / glue code to convert from FBX to Godot
|
||||||
*/
|
*/
|
||||||
class ImportUtils {
|
class ImportUtils {
|
||||||
public:
|
public:
|
||||||
/// Convert a vector from degrees to radians.
|
/// Convert a vector from degrees to radians.
|
||||||
|
@ -201,7 +201,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Get fbx fps for time mode meta data
|
/** Get fbx fps for time mode meta data
|
||||||
*/
|
*/
|
||||||
static float get_fbx_fps(int32_t time_mode) {
|
static float get_fbx_fps(int32_t time_mode) {
|
||||||
switch (time_mode) {
|
switch (time_mode) {
|
||||||
case AssetImportFbx::TIME_MODE_DEFAULT:
|
case AssetImportFbx::TIME_MODE_DEFAULT:
|
||||||
|
@ -258,13 +258,13 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find hardcoded textures from assimp which could be in many different directories
|
* Find hardcoded textures from assimp which could be in many different directories
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* set_texture_mapping_mode
|
* set_texture_mapping_mode
|
||||||
* Helper to check the mapping mode of the texture (repeat, clamp and mirror)
|
* Helper to check the mapping mode of the texture (repeat, clamp and mirror)
|
||||||
*/
|
*/
|
||||||
// static void set_texture_mapping_mode(aiTextureMapMode *map_mode, Ref<ImageTexture> texture) {
|
// static void set_texture_mapping_mode(aiTextureMapMode *map_mode, Ref<ImageTexture> texture) {
|
||||||
// ERR_FAIL_COND(texture.is_null());
|
// ERR_FAIL_COND(texture.is_null());
|
||||||
// ERR_FAIL_COND(map_mode == nullptr);
|
// ERR_FAIL_COND(map_mode == nullptr);
|
||||||
|
@ -282,9 +282,9 @@ public:
|
||||||
// }
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load or load from cache image :)
|
* Load or load from cache image :)
|
||||||
* We need to upgrade this in the later version :) should not be hard
|
* We need to upgrade this in the later version :) should not be hard
|
||||||
*/
|
*/
|
||||||
//static Ref<Image> load_image(ImportState &state, const aiScene *p_scene, String p_path){
|
//static Ref<Image> load_image(ImportState &state, const aiScene *p_scene, String p_path){
|
||||||
// Map<String, Ref<Image> >::Element *match = state.path_to_image_cache.find(p_path);
|
// Map<String, Ref<Image> >::Element *match = state.path_to_image_cache.find(p_path);
|
||||||
|
|
||||||
|
|
|
@ -361,13 +361,6 @@ Error PluginScript::reload(bool p_keep_state) {
|
||||||
_properties_default_values[pi.name] = v["default_value"];
|
_properties_default_values[pi.name] = v["default_value"];
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef TOOLS_ENABLED
|
|
||||||
/*for (Set<PlaceHolderScriptInstance*>::Element *E=placeholders.front();E;E=E->next()) {
|
|
||||||
|
|
||||||
_update_placeholder(E->get());
|
|
||||||
}*/
|
|
||||||
#endif
|
|
||||||
|
|
||||||
FREE_SCRIPT_MANIFEST(manifest);
|
FREE_SCRIPT_MANIFEST(manifest);
|
||||||
return OK;
|
return OK;
|
||||||
#undef FREE_SCRIPT_MANIFEST
|
#undef FREE_SCRIPT_MANIFEST
|
||||||
|
|
|
@ -3068,9 +3068,9 @@ void GDScriptParser::get_class_doc_comment(int p_line, String &p_brief, String &
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/* Syntax:
|
/* Syntax:
|
||||||
@tutorial ( The Title Here ) : https://the.url/
|
* @tutorial ( The Title Here ) : https://the.url/
|
||||||
^ open ^ close ^ colon ^ url
|
* ^ open ^ close ^ colon ^ url
|
||||||
*/
|
*/
|
||||||
int open_bracket_pos = begin_scan, close_bracket_pos = 0;
|
int open_bracket_pos = begin_scan, close_bracket_pos = 0;
|
||||||
while (open_bracket_pos < striped_line.length() && (striped_line[open_bracket_pos] == ' ' || striped_line[open_bracket_pos] == '\t')) {
|
while (open_bracket_pos < striped_line.length() && (striped_line[open_bracket_pos] == ' ' || striped_line[open_bracket_pos] == '\t')) {
|
||||||
open_bracket_pos++;
|
open_bracket_pos++;
|
||||||
|
|
|
@ -358,21 +358,21 @@ struct Command {
|
||||||
|
|
||||||
namespace TextDocumentSyncKind {
|
namespace TextDocumentSyncKind {
|
||||||
/**
|
/**
|
||||||
* Documents should not be synced at all.
|
* Documents should not be synced at all.
|
||||||
*/
|
*/
|
||||||
static const int None = 0;
|
static const int None = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Documents are synced by always sending the full content
|
* Documents are synced by always sending the full content
|
||||||
* of the document.
|
* of the document.
|
||||||
*/
|
*/
|
||||||
static const int Full = 1;
|
static const int Full = 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Documents are synced by sending the full content on open.
|
* Documents are synced by sending the full content on open.
|
||||||
* After that only incremental updates to the document are
|
* After that only incremental updates to the document are
|
||||||
* send.
|
* send.
|
||||||
*/
|
*/
|
||||||
static const int Incremental = 2;
|
static const int Incremental = 2;
|
||||||
}; // namespace TextDocumentSyncKind
|
}; // namespace TextDocumentSyncKind
|
||||||
|
|
||||||
|
@ -667,20 +667,20 @@ struct TextDocumentContentChangeEvent {
|
||||||
// Use namespace instead of enumeration to follow the LSP specifications
|
// Use namespace instead of enumeration to follow the LSP specifications
|
||||||
namespace DiagnosticSeverity {
|
namespace DiagnosticSeverity {
|
||||||
/**
|
/**
|
||||||
* Reports an error.
|
* Reports an error.
|
||||||
*/
|
*/
|
||||||
static const int Error = 1;
|
static const int Error = 1;
|
||||||
/**
|
/**
|
||||||
* Reports a warning.
|
* Reports a warning.
|
||||||
*/
|
*/
|
||||||
static const int Warning = 2;
|
static const int Warning = 2;
|
||||||
/**
|
/**
|
||||||
* Reports an information.
|
* Reports an information.
|
||||||
*/
|
*/
|
||||||
static const int Information = 3;
|
static const int Information = 3;
|
||||||
/**
|
/**
|
||||||
* Reports a hint.
|
* Reports a hint.
|
||||||
*/
|
*/
|
||||||
static const int Hint = 4;
|
static const int Hint = 4;
|
||||||
}; // namespace DiagnosticSeverity
|
}; // namespace DiagnosticSeverity
|
||||||
|
|
||||||
|
@ -871,18 +871,18 @@ static const int TypeParameter = 25;
|
||||||
*/
|
*/
|
||||||
namespace InsertTextFormat {
|
namespace InsertTextFormat {
|
||||||
/**
|
/**
|
||||||
* The primary text to be inserted is treated as a plain string.
|
* The primary text to be inserted is treated as a plain string.
|
||||||
*/
|
*/
|
||||||
static const int PlainText = 1;
|
static const int PlainText = 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The primary text to be inserted is treated as a snippet.
|
* The primary text to be inserted is treated as a snippet.
|
||||||
*
|
*
|
||||||
* A snippet can define tab stops and placeholders with `$1`, `$2`
|
* A snippet can define tab stops and placeholders with `$1`, `$2`
|
||||||
* and `${3:foo}`. `$0` defines the final tab stop, it defaults to
|
* and `${3:foo}`. `$0` defines the final tab stop, it defaults to
|
||||||
* the end of the snippet. Placeholders with equal identifiers are linked,
|
* the end of the snippet. Placeholders with equal identifiers are linked,
|
||||||
* that is typing in one will update others too.
|
* that is typing in one will update others too.
|
||||||
*/
|
*/
|
||||||
static const int Snippet = 2;
|
static const int Snippet = 2;
|
||||||
}; // namespace InsertTextFormat
|
}; // namespace InsertTextFormat
|
||||||
|
|
||||||
|
@ -1359,16 +1359,16 @@ struct NativeSymbolInspectParams {
|
||||||
*/
|
*/
|
||||||
namespace FoldingRangeKind {
|
namespace FoldingRangeKind {
|
||||||
/**
|
/**
|
||||||
* Folding range for a comment
|
* Folding range for a comment
|
||||||
*/
|
*/
|
||||||
static const String Comment = "comment";
|
static const String Comment = "comment";
|
||||||
/**
|
/**
|
||||||
* Folding range for a imports or includes
|
* Folding range for a imports or includes
|
||||||
*/
|
*/
|
||||||
static const String Imports = "imports";
|
static const String Imports = "imports";
|
||||||
/**
|
/**
|
||||||
* Folding range for a region (e.g. `#region`)
|
* Folding range for a region (e.g. `#region`)
|
||||||
*/
|
*/
|
||||||
static const String Region = "region";
|
static const String Region = "region";
|
||||||
} // namespace FoldingRangeKind
|
} // namespace FoldingRangeKind
|
||||||
|
|
||||||
|
@ -1419,20 +1419,20 @@ struct FoldingRange {
|
||||||
*/
|
*/
|
||||||
namespace CompletionTriggerKind {
|
namespace CompletionTriggerKind {
|
||||||
/**
|
/**
|
||||||
* Completion was triggered by typing an identifier (24x7 code
|
* Completion was triggered by typing an identifier (24x7 code
|
||||||
* complete), manual invocation (e.g Ctrl+Space) or via API.
|
* complete), manual invocation (e.g Ctrl+Space) or via API.
|
||||||
*/
|
*/
|
||||||
static const int Invoked = 1;
|
static const int Invoked = 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Completion was triggered by a trigger character specified by
|
* Completion was triggered by a trigger character specified by
|
||||||
* the `triggerCharacters` properties of the `CompletionRegistrationOptions`.
|
* the `triggerCharacters` properties of the `CompletionRegistrationOptions`.
|
||||||
*/
|
*/
|
||||||
static const int TriggerCharacter = 2;
|
static const int TriggerCharacter = 2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Completion was re-triggered as the current completion list is incomplete.
|
* Completion was re-triggered as the current completion list is incomplete.
|
||||||
*/
|
*/
|
||||||
static const int TriggerForIncompleteCompletions = 3;
|
static const int TriggerForIncompleteCompletions = 3;
|
||||||
} // namespace CompletionTriggerKind
|
} // namespace CompletionTriggerKind
|
||||||
|
|
||||||
|
@ -1441,8 +1441,8 @@ static const int TriggerForIncompleteCompletions = 3;
|
||||||
*/
|
*/
|
||||||
struct CompletionContext {
|
struct CompletionContext {
|
||||||
/**
|
/**
|
||||||
* How the completion was triggered.
|
* How the completion was triggered.
|
||||||
*/
|
*/
|
||||||
int triggerKind = CompletionTriggerKind::TriggerCharacter;
|
int triggerKind = CompletionTriggerKind::TriggerCharacter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1906,7 +1906,7 @@ struct GodotNativeClassInfo {
|
||||||
struct GodotCapabilities {
|
struct GodotCapabilities {
|
||||||
/**
|
/**
|
||||||
* Native class list
|
* Native class list
|
||||||
*/
|
*/
|
||||||
List<GodotNativeClassInfo> native_classes;
|
List<GodotNativeClassInfo> native_classes;
|
||||||
|
|
||||||
Dictionary to_json() {
|
Dictionary to_json() {
|
||||||
|
|
|
@ -2370,7 +2370,6 @@ void VisualScriptLanguage::debug_get_stack_level_locals(int p_level, List<String
|
||||||
const StringName *f = _call_stack[l].function;
|
const StringName *f = _call_stack[l].function;
|
||||||
|
|
||||||
ERR_FAIL_COND(!_call_stack[l].instance->functions.has(*f));
|
ERR_FAIL_COND(!_call_stack[l].instance->functions.has(*f));
|
||||||
//VisualScriptInstance::Function *func = &_call_stack[l].instance->functions[*f];
|
|
||||||
|
|
||||||
VisualScriptNodeInstance *node = _call_stack[l].instance->instances[*_call_stack[l].current_id];
|
VisualScriptNodeInstance *node = _call_stack[l].instance->instances[*_call_stack[l].current_id];
|
||||||
ERR_FAIL_COND(!node);
|
ERR_FAIL_COND(!node);
|
||||||
|
@ -2416,21 +2415,6 @@ void VisualScriptLanguage::debug_get_stack_level_locals(int p_level, List<String
|
||||||
p_locals->push_back("working_mem/mem_" + itos(i));
|
p_locals->push_back("working_mem/mem_" + itos(i));
|
||||||
p_values->push_back((*_call_stack[l].work_mem)[i]);
|
p_values->push_back((*_call_stack[l].work_mem)[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
ERR_FAIL_INDEX(p_level,_debug_call_stack_pos);
|
|
||||||
|
|
||||||
|
|
||||||
VisualFunction *f = _call_stack[l].function;
|
|
||||||
|
|
||||||
List<Pair<StringName,int> > locals;
|
|
||||||
|
|
||||||
f->debug_get_stack_member_state(*_call_stack[l].line,&locals);
|
|
||||||
for( List<Pair<StringName,int> >::Element *E = locals.front();E;E=E->next() ) {
|
|
||||||
p_locals->push_back(E->get().first);
|
|
||||||
p_values->push_back(_call_stack[l].stack[E->get().second]);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void VisualScriptLanguage::debug_get_stack_level_members(int p_level, List<String> *p_members, List<Variant> *p_values, int p_max_subitems, int p_max_depth) {
|
void VisualScriptLanguage::debug_get_stack_level_members(int p_level, List<String> *p_members, List<Variant> *p_values, int p_max_subitems, int p_max_depth) {
|
||||||
|
|
|
@ -133,28 +133,28 @@ static _WinTranslatePair _ak_to_keycode[] = {
|
||||||
};
|
};
|
||||||
/*
|
/*
|
||||||
TODO: map these android key:
|
TODO: map these android key:
|
||||||
AKEYCODE_SOFT_LEFT = 1,
|
AKEYCODE_SOFT_LEFT = 1,
|
||||||
AKEYCODE_SOFT_RIGHT = 2,
|
AKEYCODE_SOFT_RIGHT = 2,
|
||||||
AKEYCODE_CALL = 5,
|
AKEYCODE_CALL = 5,
|
||||||
AKEYCODE_ENDCALL = 6,
|
AKEYCODE_ENDCALL = 6,
|
||||||
AKEYCODE_STAR = 17,
|
AKEYCODE_STAR = 17,
|
||||||
AKEYCODE_POUND = 18,
|
AKEYCODE_POUND = 18,
|
||||||
AKEYCODE_POWER = 26,
|
AKEYCODE_POWER = 26,
|
||||||
AKEYCODE_CAMERA = 27,
|
AKEYCODE_CAMERA = 27,
|
||||||
AKEYCODE_CLEAR = 28,
|
AKEYCODE_CLEAR = 28,
|
||||||
AKEYCODE_SYM = 63,
|
AKEYCODE_SYM = 63,
|
||||||
AKEYCODE_ENVELOPE = 65,
|
AKEYCODE_ENVELOPE = 65,
|
||||||
AKEYCODE_GRAVE = 68,
|
AKEYCODE_GRAVE = 68,
|
||||||
AKEYCODE_SEMICOLON = 74,
|
AKEYCODE_SEMICOLON = 74,
|
||||||
AKEYCODE_APOSTROPHE = 75,
|
AKEYCODE_APOSTROPHE = 75,
|
||||||
AKEYCODE_AT = 77,
|
AKEYCODE_AT = 77,
|
||||||
AKEYCODE_NUM = 78,
|
AKEYCODE_NUM = 78,
|
||||||
AKEYCODE_HEADSETHOOK = 79,
|
AKEYCODE_HEADSETHOOK = 79,
|
||||||
AKEYCODE_FOCUS = 80, // *Camera* focus
|
AKEYCODE_FOCUS = 80, // *Camera* focus
|
||||||
AKEYCODE_NOTIFICATION = 83,
|
AKEYCODE_NOTIFICATION = 83,
|
||||||
AKEYCODE_SEARCH = 84,
|
AKEYCODE_SEARCH = 84,
|
||||||
AKEYCODE_PICTSYMBOLS = 94,
|
AKEYCODE_PICTSYMBOLS = 94,
|
||||||
AKEYCODE_SWITCH_CHARSET = 95,
|
AKEYCODE_SWITCH_CHARSET = 95,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
unsigned int android_get_keysym(unsigned int p_code);
|
unsigned int android_get_keysym(unsigned int p_code);
|
||||||
|
|
|
@ -498,11 +498,11 @@ bool EditorExportPlatformAndroid::is_package_name_valid(const String &p_package,
|
||||||
|
|
||||||
bool EditorExportPlatformAndroid::_should_compress_asset(const String &p_path, const Vector<uint8_t> &p_data) {
|
bool EditorExportPlatformAndroid::_should_compress_asset(const String &p_path, const Vector<uint8_t> &p_data) {
|
||||||
/*
|
/*
|
||||||
* By not compressing files with little or not benefit in doing so,
|
* By not compressing files with little or not benefit in doing so,
|
||||||
* a performance gain is expected attime. Moreover, if the APK is
|
* a performance gain is expected attime. Moreover, if the APK is
|
||||||
* zip-aligned, assets stored as they are can be efficiently read by
|
* zip-aligned, assets stored as they are can be efficiently read by
|
||||||
* Android by memory-mapping them.
|
* Android by memory-mapping them.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// -- Unconditional uncompress to mimic AAPT plus some other
|
// -- Unconditional uncompress to mimic AAPT plus some other
|
||||||
|
|
||||||
|
@ -851,16 +851,11 @@ void EditorExportPlatformAndroid::_fix_manifest(const Ref<EditorExportPreset> &p
|
||||||
int iofs = ofs + 8;
|
int iofs = ofs + 8;
|
||||||
|
|
||||||
string_count = decode_uint32(&p_manifest[iofs]);
|
string_count = decode_uint32(&p_manifest[iofs]);
|
||||||
//styles_count = decode_uint32(&p_manifest[iofs + 4]);
|
// iofs + 4 is `styles_count`.
|
||||||
string_flags = decode_uint32(&p_manifest[iofs + 8]);
|
string_flags = decode_uint32(&p_manifest[iofs + 8]);
|
||||||
string_data_offset = decode_uint32(&p_manifest[iofs + 12]);
|
string_data_offset = decode_uint32(&p_manifest[iofs + 12]);
|
||||||
//styles_offset = decode_uint32(&p_manifest[iofs + 16]);
|
// iofs + 16 is `styles_offset`.
|
||||||
/*
|
|
||||||
printf("string count: %i\n",string_count);
|
|
||||||
printf("flags: %i\n",string_flags);
|
|
||||||
printf("sdata ofs: %i\n",string_data_offset);
|
|
||||||
printf("styles ofs: %i\n",styles_offset);
|
|
||||||
*/
|
|
||||||
uint32_t st_offset = iofs + 20;
|
uint32_t st_offset = iofs + 20;
|
||||||
string_table.resize(string_count);
|
string_table.resize(string_count);
|
||||||
uint32_t string_end = 0;
|
uint32_t string_end = 0;
|
||||||
|
|
|
@ -50,9 +50,9 @@ public class GodotDownloaderService extends DownloaderService {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This public key comes from your Android Market publisher account, and it
|
* This public key comes from your Android Market publisher account, and it
|
||||||
* used by the LVL to validate responses from Market on your behalf.
|
* used by the LVL to validate responses from Market on your behalf.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String getPublicKey() {
|
public String getPublicKey() {
|
||||||
SharedPreferences prefs = getApplicationContext().getSharedPreferences("app_data_keys", Context.MODE_PRIVATE);
|
SharedPreferences prefs = getApplicationContext().getSharedPreferences("app_data_keys", Context.MODE_PRIVATE);
|
||||||
|
@ -63,20 +63,20 @@ public class GodotDownloaderService extends DownloaderService {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is used by the preference obfuscater to make sure that your
|
* This is used by the preference obfuscater to make sure that your
|
||||||
* obfuscated preferences are different than the ones used by other
|
* obfuscated preferences are different than the ones used by other
|
||||||
* applications.
|
* applications.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public byte[] getSALT() {
|
public byte[] getSALT() {
|
||||||
return SALT;
|
return SALT;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fill this in with the class name for your alarm receiver. We do this
|
* Fill this in with the class name for your alarm receiver. We do this
|
||||||
* because receivers must be unique across all of Android (it's a good idea
|
* because receivers must be unique across all of Android (it's a good idea
|
||||||
* to make sure that your receiver is in your unique package)
|
* to make sure that your receiver is in your unique package)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String getAlarmReceiverClassName() {
|
public String getAlarmReceiverClassName() {
|
||||||
Log.d("GODOT", "getAlarmReceiverClassName()");
|
Log.d("GODOT", "getAlarmReceiverClassName()");
|
||||||
|
|
|
@ -2926,10 +2926,7 @@ void DisplayServerX11::process_events() {
|
||||||
xi.last_relative_time = raw_event->time;
|
xi.last_relative_time = raw_event->time;
|
||||||
} break;
|
} break;
|
||||||
#ifdef TOUCH_ENABLED
|
#ifdef TOUCH_ENABLED
|
||||||
case XI_TouchBegin: // Fall-through
|
case XI_TouchBegin:
|
||||||
// Disabled hand-in-hand with the grabbing
|
|
||||||
//XIAllowTouchEvents(x11_display, event_data->deviceid, event_data->detail, x11_window, XIAcceptTouch);
|
|
||||||
|
|
||||||
case XI_TouchEnd: {
|
case XI_TouchEnd: {
|
||||||
bool is_begin = event_data->evtype == XI_TouchBegin;
|
bool is_begin = event_data->evtype == XI_TouchBegin;
|
||||||
|
|
||||||
|
@ -4137,7 +4134,6 @@ DisplayServerX11::DisplayServerX11(const String &p_rendering_driver, WindowMode
|
||||||
}
|
}
|
||||||
show_window(main_window);
|
show_window(main_window);
|
||||||
|
|
||||||
//create RenderingDevice if used
|
|
||||||
#if defined(VULKAN_ENABLED)
|
#if defined(VULKAN_ENABLED)
|
||||||
if (rendering_driver == "vulkan") {
|
if (rendering_driver == "vulkan") {
|
||||||
//temporary
|
//temporary
|
||||||
|
@ -4148,13 +4144,6 @@ DisplayServerX11::DisplayServerX11(const String &p_rendering_driver, WindowMode
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
rendering_server = memnew(RenderingServerDefault);
|
|
||||||
if (get_render_thread_mode() != RENDER_THREAD_UNSAFE) {
|
|
||||||
rendering_server = memnew(RenderingServerWrapMT(rendering_server, get_render_thread_mode() == RENDER_SEPARATE_THREAD));
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
{
|
{
|
||||||
//set all event master mask
|
//set all event master mask
|
||||||
XIEventMask all_master_event_mask;
|
XIEventMask all_master_event_mask;
|
||||||
|
@ -4167,15 +4156,6 @@ DisplayServerX11::DisplayServerX11(const String &p_rendering_driver, WindowMode
|
||||||
XISelectEvents(x11_display, DefaultRootWindow(x11_display), &all_master_event_mask, 1);
|
XISelectEvents(x11_display, DefaultRootWindow(x11_display), &all_master_event_mask, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disabled by now since grabbing also blocks mouse events
|
|
||||||
// (they are received as extended events instead of standard events)
|
|
||||||
/*XIClearMask(xi.touch_event_mask.mask, XI_TouchOwnership);
|
|
||||||
|
|
||||||
// Grab touch devices to avoid OS gesture interference
|
|
||||||
for (int i = 0; i < xi.touch_devices.size(); ++i) {
|
|
||||||
XIGrabDevice(x11_display, xi.touch_devices[i], x11_window, CurrentTime, None, XIGrabModeAsync, XIGrabModeAsync, False, &xi.touch_event_mask);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
cursor_size = XcursorGetDefaultSize(x11_display);
|
cursor_size = XcursorGetDefaultSize(x11_display);
|
||||||
cursor_theme = XcursorGetTheme(x11_display);
|
cursor_theme = XcursorGetTheme(x11_display);
|
||||||
|
|
||||||
|
|
|
@ -325,11 +325,11 @@ void EditorExportPlatformOSX::_fix_plist(const Ref<EditorExportPreset> &p_preset
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
If we're running the OSX version of the Godot editor we'll:
|
* If we're running the OSX version of the Godot editor we'll:
|
||||||
- export our application bundle to a temporary folder
|
* - export our application bundle to a temporary folder
|
||||||
- attempt to code sign it
|
* - attempt to code sign it
|
||||||
- and then wrap it up in a DMG
|
* - and then wrap it up in a DMG
|
||||||
**/
|
*/
|
||||||
|
|
||||||
Error EditorExportPlatformOSX::_notarize(const Ref<EditorExportPreset> &p_preset, const String &p_path) {
|
Error EditorExportPlatformOSX::_notarize(const Ref<EditorExportPreset> &p_preset, const String &p_path) {
|
||||||
#ifdef OSX_ENABLED
|
#ifdef OSX_ENABLED
|
||||||
|
|
|
@ -367,15 +367,15 @@ class EditorExportPlatformUWP : public EditorExportPlatform {
|
||||||
|
|
||||||
static bool _should_compress_asset(const String &p_path, const Vector<uint8_t> &p_data) {
|
static bool _should_compress_asset(const String &p_path, const Vector<uint8_t> &p_data) {
|
||||||
/* TODO: This was copied verbatim from Android export. It should be
|
/* TODO: This was copied verbatim from Android export. It should be
|
||||||
* refactored to the parent class and also be used for .zip export.
|
* refactored to the parent class and also be used for .zip export.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* By not compressing files with little or not benefit in doing so,
|
* By not compressing files with little or not benefit in doing so,
|
||||||
* a performance gain is expected at runtime. Moreover, if the APK is
|
* a performance gain is expected at runtime. Moreover, if the APK is
|
||||||
* zip-aligned, assets stored as they are can be efficiently read by
|
* zip-aligned, assets stored as they are can be efficiently read by
|
||||||
* Android by memory-mapping them.
|
* Android by memory-mapping them.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// -- Unconditional uncompress to mimic AAPT plus some other
|
// -- Unconditional uncompress to mimic AAPT plus some other
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@
|
||||||
definition of invalidation: global is invalid
|
definition of invalidation: global is invalid
|
||||||
|
|
||||||
1) If a node sets a LOCAL, it produces an invalidation of everything above
|
1) If a node sets a LOCAL, it produces an invalidation of everything above
|
||||||
a) If above is invalid, don't keep invalidating upwards
|
. a) If above is invalid, don't keep invalidating upwards
|
||||||
2) If a node sets a GLOBAL, it is converted to LOCAL (and forces validation of everything pending below)
|
2) If a node sets a GLOBAL, it is converted to LOCAL (and forces validation of everything pending below)
|
||||||
|
|
||||||
drawback: setting/reading globals is useful and used very often, and using affine inverses is slow
|
drawback: setting/reading globals is useful and used very often, and using affine inverses is slow
|
||||||
|
@ -56,7 +56,7 @@
|
||||||
definition of invalidation: NONE dirty, LOCAL dirty, GLOBAL dirty
|
definition of invalidation: NONE dirty, LOCAL dirty, GLOBAL dirty
|
||||||
|
|
||||||
1) If a node sets a LOCAL, it must climb the tree and set it as GLOBAL dirty
|
1) If a node sets a LOCAL, it must climb the tree and set it as GLOBAL dirty
|
||||||
a) marking GLOBALs as dirty up all the tree must be done always
|
. a) marking GLOBALs as dirty up all the tree must be done always
|
||||||
2) If a node sets a GLOBAL, it marks local as dirty, and that's all?
|
2) If a node sets a GLOBAL, it marks local as dirty, and that's all?
|
||||||
|
|
||||||
//is clearing the dirty state correct in this case?
|
//is clearing the dirty state correct in this case?
|
||||||
|
|
|
@ -173,28 +173,20 @@ void AudioFilterSW::prepare_coefficients(Coeffs *p_coeffs) {
|
||||||
p_coeffs->a2 = ((tmpgain + 1.0) - (tmpgain - 1.0) * cos_v - beta * sin_v);
|
p_coeffs->a2 = ((tmpgain + 1.0) - (tmpgain - 1.0) * cos_v - beta * sin_v);
|
||||||
|
|
||||||
} break;
|
} break;
|
||||||
};
|
}
|
||||||
|
|
||||||
p_coeffs->b0 /= a0;
|
p_coeffs->b0 /= a0;
|
||||||
p_coeffs->b1 /= a0;
|
p_coeffs->b1 /= a0;
|
||||||
p_coeffs->b2 /= a0;
|
p_coeffs->b2 /= a0;
|
||||||
p_coeffs->a1 /= 0.0 - a0;
|
p_coeffs->a1 /= 0.0 - a0;
|
||||||
p_coeffs->a2 /= 0.0 - a0;
|
p_coeffs->a2 /= 0.0 - a0;
|
||||||
|
|
||||||
//undenormalise
|
|
||||||
/* p_coeffs->b0=undenormalise(p_coeffs->b0);
|
|
||||||
p_coeffs->b1=undenormalise(p_coeffs->b1);
|
|
||||||
p_coeffs->b2=undenormalise(p_coeffs->b2);
|
|
||||||
p_coeffs->a1=undenormalise(p_coeffs->a1);
|
|
||||||
p_coeffs->a2=undenormalise(p_coeffs->a2);*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudioFilterSW::set_stages(int p_stages) { //adjust for multiple stages
|
void AudioFilterSW::set_stages(int p_stages) {
|
||||||
|
|
||||||
stages = p_stages;
|
stages = p_stages;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fouriertransform kernel to obtain response */
|
/* Fourier transform kernel to obtain response */
|
||||||
|
|
||||||
float AudioFilterSW::get_response(float p_freq, Coeffs *p_coeffs) {
|
float AudioFilterSW::get_response(float p_freq, Coeffs *p_coeffs) {
|
||||||
float freq = p_freq / sampling_rate * Math_TAU;
|
float freq = p_freq / sampling_rate * Math_TAU;
|
||||||
|
|
|
@ -710,9 +710,11 @@ void GodotSoftBody3D::generate_bending_constraints(int p_distance) {
|
||||||
// A small structure to track lists of dependent link calculations.
|
// A small structure to track lists of dependent link calculations.
|
||||||
class LinkDeps {
|
class LinkDeps {
|
||||||
public:
|
public:
|
||||||
int value; // A link calculation that is dependent on this one
|
// A link calculation that is dependent on this one.
|
||||||
// Positive values = "input A" while negative values = "input B"
|
// Positive values = "input A" while negative values = "input B".
|
||||||
LinkDeps *next; // Next dependence in the list
|
int value;
|
||||||
|
// Next dependence in the list.
|
||||||
|
LinkDeps *next;
|
||||||
};
|
};
|
||||||
typedef LinkDeps *LinkDepsPtr;
|
typedef LinkDeps *LinkDepsPtr;
|
||||||
|
|
||||||
|
|
|
@ -119,11 +119,11 @@ public:
|
||||||
|
|
||||||
//! Test limit
|
//! Test limit
|
||||||
/*!
|
/*!
|
||||||
- free means upper < lower,
|
* - free means upper < lower,
|
||||||
- locked means upper == lower
|
* - locked means upper == lower
|
||||||
- limited means upper > lower
|
* - limited means upper > lower
|
||||||
- limitIndex: first 3 are linear, next 3 are angular
|
* - limitIndex: first 3 are linear, next 3 are angular
|
||||||
*/
|
*/
|
||||||
inline bool isLimited(int limitIndex) {
|
inline bool isLimited(int limitIndex) {
|
||||||
return (m_upperLimit[limitIndex] >= m_lowerLimit[limitIndex]);
|
return (m_upperLimit[limitIndex] >= m_lowerLimit[limitIndex]);
|
||||||
}
|
}
|
||||||
|
@ -291,11 +291,11 @@ public:
|
||||||
|
|
||||||
//! Test limit
|
//! Test limit
|
||||||
/*!
|
/*!
|
||||||
- free means upper < lower,
|
* - free means upper < lower,
|
||||||
- locked means upper == lower
|
* - locked means upper == lower
|
||||||
- limited means upper > lower
|
* - limited means upper > lower
|
||||||
- limitIndex: first 3 are linear, next 3 are angular
|
* - limitIndex: first 3 are linear, next 3 are angular
|
||||||
*/
|
*/
|
||||||
bool isLimited(int limitIndex) {
|
bool isLimited(int limitIndex) {
|
||||||
if (limitIndex < 3) {
|
if (limitIndex < 3) {
|
||||||
return m_linearLimits.isLimited(limitIndex);
|
return m_linearLimits.isLimited(limitIndex);
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
#include "renderer_canvas_render_rd.h"
|
#include "renderer_canvas_render_rd.h"
|
||||||
|
|
||||||
#include "core/config/project_settings.h"
|
#include "core/config/project_settings.h"
|
||||||
#include "core/math/geometry_2d.h"
|
#include "core/math/geometry_2d.h"
|
||||||
#include "core/math/math_defs.h"
|
#include "core/math/math_defs.h"
|
||||||
|
@ -1585,9 +1586,6 @@ void RendererCanvasRenderRD::light_update_shadow(RID p_rid, int p_shadow_index,
|
||||||
push_constant.z_far = p_far;
|
push_constant.z_far = p_far;
|
||||||
push_constant.pad = 0;
|
push_constant.pad = 0;
|
||||||
|
|
||||||
/*if (i == 0)
|
|
||||||
*p_xform_cache = projection;*/
|
|
||||||
|
|
||||||
LightOccluderInstance *instance = p_occluders;
|
LightOccluderInstance *instance = p_occluders;
|
||||||
|
|
||||||
while (instance) {
|
while (instance) {
|
||||||
|
|
|
@ -91,7 +91,6 @@ void main() {
|
||||||
uint instancing = draw_data.flags & FLAGS_INSTANCING_MASK;
|
uint instancing = draw_data.flags & FLAGS_INSTANCING_MASK;
|
||||||
|
|
||||||
#ifdef USE_ATTRIBUTES
|
#ifdef USE_ATTRIBUTES
|
||||||
|
|
||||||
if (instancing > 1) {
|
if (instancing > 1) {
|
||||||
// trails
|
// trails
|
||||||
|
|
||||||
|
@ -128,37 +127,37 @@ void main() {
|
||||||
|
|
||||||
vertex = new_vertex;
|
vertex = new_vertex;
|
||||||
color *= pcolor;
|
color *= pcolor;
|
||||||
|
|
||||||
} else
|
} else
|
||||||
#endif // USE_ATTRIBUTES
|
#endif // USE_ATTRIBUTES
|
||||||
|
{
|
||||||
|
if (instancing == 1) {
|
||||||
|
uint stride = 2;
|
||||||
|
{
|
||||||
|
if (bool(draw_data.flags & FLAGS_INSTANCING_HAS_COLORS)) {
|
||||||
|
stride += 1;
|
||||||
|
}
|
||||||
|
if (bool(draw_data.flags & FLAGS_INSTANCING_HAS_CUSTOM_DATA)) {
|
||||||
|
stride += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint offset = stride * gl_InstanceIndex;
|
||||||
|
|
||||||
|
mat4 matrix = mat4(transforms.data[offset + 0], transforms.data[offset + 1], vec4(0.0, 0.0, 1.0, 0.0), vec4(0.0, 0.0, 0.0, 1.0));
|
||||||
|
offset += 2;
|
||||||
|
|
||||||
if (instancing == 1) {
|
|
||||||
uint stride = 2;
|
|
||||||
{
|
|
||||||
if (bool(draw_data.flags & FLAGS_INSTANCING_HAS_COLORS)) {
|
if (bool(draw_data.flags & FLAGS_INSTANCING_HAS_COLORS)) {
|
||||||
stride += 1;
|
color *= transforms.data[offset];
|
||||||
|
offset += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bool(draw_data.flags & FLAGS_INSTANCING_HAS_CUSTOM_DATA)) {
|
if (bool(draw_data.flags & FLAGS_INSTANCING_HAS_CUSTOM_DATA)) {
|
||||||
stride += 1;
|
instance_custom = transforms.data[offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
matrix = transpose(matrix);
|
||||||
|
world_matrix = world_matrix * matrix;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint offset = stride * gl_InstanceIndex;
|
|
||||||
|
|
||||||
mat4 matrix = mat4(transforms.data[offset + 0], transforms.data[offset + 1], vec4(0.0, 0.0, 1.0, 0.0), vec4(0.0, 0.0, 0.0, 1.0));
|
|
||||||
offset += 2;
|
|
||||||
|
|
||||||
if (bool(draw_data.flags & FLAGS_INSTANCING_HAS_COLORS)) {
|
|
||||||
color *= transforms.data[offset];
|
|
||||||
offset += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bool(draw_data.flags & FLAGS_INSTANCING_HAS_CUSTOM_DATA)) {
|
|
||||||
instance_custom = transforms.data[offset];
|
|
||||||
}
|
|
||||||
|
|
||||||
matrix = transpose(matrix);
|
|
||||||
world_matrix = world_matrix * matrix;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(USE_ATTRIBUTES) && !defined(USE_PRIMITIVE)
|
#if !defined(USE_ATTRIBUTES) && !defined(USE_PRIMITIVE)
|
||||||
|
|
|
@ -1249,10 +1249,10 @@ void main() {
|
||||||
// LIGHTING
|
// LIGHTING
|
||||||
#if !defined(MODE_RENDER_DEPTH) && !defined(MODE_UNSHADED)
|
#if !defined(MODE_RENDER_DEPTH) && !defined(MODE_UNSHADED)
|
||||||
|
|
||||||
{ //directional light
|
{ // Directional light.
|
||||||
|
|
||||||
|
// Do shadow and lighting in two passes to reduce register pressure.
|
||||||
#ifndef SHADOWS_DISABLED
|
#ifndef SHADOWS_DISABLED
|
||||||
// Do shadow and lighting in two passes to reduce register pressure
|
|
||||||
uint shadow0 = 0;
|
uint shadow0 = 0;
|
||||||
uint shadow1 = 0;
|
uint shadow1 = 0;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue