mirror of
https://github.com/g-truc/glm.git
synced 2024-11-10 04:31:47 +00:00
Merged master
This commit is contained in:
commit
27b622e968
@ -245,7 +245,17 @@ add_subdirectory(test)
|
|||||||
set(GLM_INSTALL_CONFIGDIR "${CMAKE_INSTALL_LIBDIR}/cmake/glm")
|
set(GLM_INSTALL_CONFIGDIR "${CMAKE_INSTALL_LIBDIR}/cmake/glm")
|
||||||
install(DIRECTORY glm DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
install(DIRECTORY glm DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
|
|
||||||
|
|
||||||
|
# CMake automatically adds an architecture compatibility check to make sure
|
||||||
|
# 32 and 64 bit code is not accidentally mixed. For a header-only library this
|
||||||
|
# is not required. The check can be disabled by temporarily unsetting
|
||||||
|
# CMAKE_SIZEOF_VOID_P. In CMake 3.14 and later this can be achieved more cleanly
|
||||||
|
# with write_basic_package_version_file(ARCH_INDEPENDENT).
|
||||||
|
# TODO: Use this once a newer CMake can be required.
|
||||||
|
set(GLM_SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P})
|
||||||
|
unset(CMAKE_SIZEOF_VOID_P)
|
||||||
write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/glmConfigVersion.cmake" VERSION ${GLM_VERSION} COMPATIBILITY AnyNewerVersion)
|
write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/glmConfigVersion.cmake" VERSION ${GLM_VERSION} COMPATIBILITY AnyNewerVersion)
|
||||||
|
set(CMAKE_SIZEOF_VOID_P ${GLM_SIZEOF_VOID_P})
|
||||||
|
|
||||||
# build tree package config
|
# build tree package config
|
||||||
configure_file(cmake/glmBuildConfig.cmake.in glmConfig.cmake @ONLY)
|
configure_file(cmake/glmBuildConfig.cmake.in glmConfig.cmake @ONLY)
|
||||||
|
@ -259,7 +259,7 @@ namespace detail
|
|||||||
{
|
{
|
||||||
GLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& edge0, vec<L, T, Q> const& edge1, vec<L, T, Q> const& x)
|
GLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& edge0, vec<L, T, Q> const& edge1, vec<L, T, Q> const& x)
|
||||||
{
|
{
|
||||||
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || GLM_CONFIG_UNRESTRICTED_GENTYPE, "'step' only accept floating-point inputs");
|
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || GLM_CONFIG_UNRESTRICTED_GENTYPE, "'smoothstep' only accept floating-point inputs");
|
||||||
vec<L, T, Q> const tmp(clamp((x - edge0) / (edge1 - edge0), static_cast<T>(0), static_cast<T>(1)));
|
vec<L, T, Q> const tmp(clamp((x - edge0) / (edge1 - edge0), static_cast<T>(0), static_cast<T>(1)));
|
||||||
return tmp * tmp * (static_cast<T>(3) - static_cast<T>(2) * tmp);
|
return tmp * tmp * (static_cast<T>(3) - static_cast<T>(2) * tmp);
|
||||||
}
|
}
|
||||||
|
@ -119,7 +119,7 @@
|
|||||||
# define GLM_LANG (GLM_LANG_CXX2A | GLM_LANG_EXT)
|
# define GLM_LANG (GLM_LANG_CXX2A | GLM_LANG_EXT)
|
||||||
# elif __cplusplus == 201703L || GLM_LANG_PLATFORM == 201703L
|
# elif __cplusplus == 201703L || GLM_LANG_PLATFORM == 201703L
|
||||||
# define GLM_LANG (GLM_LANG_CXX17 | GLM_LANG_EXT)
|
# define GLM_LANG (GLM_LANG_CXX17 | GLM_LANG_EXT)
|
||||||
# elif __cplusplus == 201402L || GLM_LANG_PLATFORM == 201402L
|
# elif __cplusplus == 201402L || __cplusplus == 201500L || GLM_LANG_PLATFORM == 201402L
|
||||||
# define GLM_LANG (GLM_LANG_CXX14 | GLM_LANG_EXT)
|
# define GLM_LANG (GLM_LANG_CXX14 | GLM_LANG_EXT)
|
||||||
# elif __cplusplus == 201103L || GLM_LANG_PLATFORM == 201103L
|
# elif __cplusplus == 201103L || GLM_LANG_PLATFORM == 201103L
|
||||||
# define GLM_LANG (GLM_LANG_CXX11 | GLM_LANG_EXT)
|
# define GLM_LANG (GLM_LANG_CXX11 | GLM_LANG_EXT)
|
||||||
@ -298,7 +298,7 @@
|
|||||||
# if (GLM_COMPILER & GLM_COMPILER_CLANG)
|
# if (GLM_COMPILER & GLM_COMPILER_CLANG)
|
||||||
# define GLM_HAS_IF_CONSTEXPR __has_feature(cxx_if_constexpr)
|
# define GLM_HAS_IF_CONSTEXPR __has_feature(cxx_if_constexpr)
|
||||||
# elif (GLM_COMPILER & GLM_COMPILER_GCC)
|
# elif (GLM_COMPILER & GLM_COMPILER_GCC)
|
||||||
# define GLM_HAS_IF_CONSTEXPR GLM_COMPILER >= GLM_COMPILER_GCC7
|
# define GLM_HAS_IF_CONSTEXPR (__cplusplus >= 201703L)
|
||||||
# elif (GLM_LANG & GLM_LANG_CXX17_FLAG)
|
# elif (GLM_LANG & GLM_LANG_CXX17_FLAG)
|
||||||
# define GLM_HAS_IF_CONSTEXPR 1
|
# define GLM_HAS_IF_CONSTEXPR 1
|
||||||
# else
|
# else
|
||||||
@ -529,6 +529,48 @@
|
|||||||
# define GLM_EXPLICIT
|
# define GLM_EXPLICIT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// SYCL
|
||||||
|
|
||||||
|
#if GLM_COMPILER==GLM_COMPILER_SYCL
|
||||||
|
|
||||||
|
#include <CL/sycl.hpp>
|
||||||
|
#include <limits>
|
||||||
|
|
||||||
|
namespace glm {
|
||||||
|
namespace std {
|
||||||
|
// Import SYCL's functions into the namespace glm::std to force their usages.
|
||||||
|
// It's important to use the math built-in function (sin, exp, ...)
|
||||||
|
// of SYCL instead the std ones.
|
||||||
|
using namespace cl::sycl;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Import some "harmless" std's stuffs used by glm into
|
||||||
|
// the new glm::std namespace.
|
||||||
|
template<typename T>
|
||||||
|
using numeric_limits = ::std::numeric_limits<T>;
|
||||||
|
|
||||||
|
using ::std::size_t;
|
||||||
|
|
||||||
|
using ::std::uint8_t;
|
||||||
|
using ::std::uint16_t;
|
||||||
|
using ::std::uint32_t;
|
||||||
|
using ::std::uint64_t;
|
||||||
|
|
||||||
|
using ::std::int8_t;
|
||||||
|
using ::std::int16_t;
|
||||||
|
using ::std::int32_t;
|
||||||
|
using ::std::int64_t;
|
||||||
|
|
||||||
|
using ::std::make_unsigned;
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
} //namespace std
|
||||||
|
} //namespace glm
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////
|
||||||
// Length type: all length functions returns a length_t type.
|
// Length type: all length functions returns a length_t type.
|
||||||
// When GLM_FORCE_SIZE_T_LENGTH is defined, length_t is a typedef of size_t otherwise
|
// When GLM_FORCE_SIZE_T_LENGTH is defined, length_t is a typedef of size_t otherwise
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
#include "../detail/type_vec1.hpp"
|
#include "../detail/type_vec1.hpp"
|
||||||
|
|
||||||
#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
|
#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
|
||||||
# pragma message("GLM: GLM_EXT_vector_dvec1 extension included")
|
# pragma message("GLM: GLM_EXT_vector_double1 extension included")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace glm
|
namespace glm
|
||||||
|
@ -601,7 +601,7 @@ namespace glm
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// Convert each component from an integer vector into a packed unsigned integer.
|
/// Convert each component from an integer vector into a packed integer.
|
||||||
///
|
///
|
||||||
/// @see gtc_packing
|
/// @see gtc_packing
|
||||||
/// @see i8vec2 unpackInt2x8(int16 p)
|
/// @see i8vec2 unpackInt2x8(int16 p)
|
||||||
@ -625,7 +625,7 @@ namespace glm
|
|||||||
/// @see uint16 packInt2x8(u8vec2 const& v)
|
/// @see uint16 packInt2x8(u8vec2 const& v)
|
||||||
GLM_FUNC_DECL u8vec2 unpackUint2x8(uint16 p);
|
GLM_FUNC_DECL u8vec2 unpackUint2x8(uint16 p);
|
||||||
|
|
||||||
/// Convert each component from an integer vector into a packed unsigned integer.
|
/// Convert each component from an integer vector into a packed integer.
|
||||||
///
|
///
|
||||||
/// @see gtc_packing
|
/// @see gtc_packing
|
||||||
/// @see i8vec4 unpackInt4x8(int32 p)
|
/// @see i8vec4 unpackInt4x8(int32 p)
|
||||||
@ -649,7 +649,7 @@ namespace glm
|
|||||||
/// @see uint32 packUint4x8(u8vec2 const& v)
|
/// @see uint32 packUint4x8(u8vec2 const& v)
|
||||||
GLM_FUNC_DECL u8vec4 unpackUint4x8(uint32 p);
|
GLM_FUNC_DECL u8vec4 unpackUint4x8(uint32 p);
|
||||||
|
|
||||||
/// Convert each component from an integer vector into a packed unsigned integer.
|
/// Convert each component from an integer vector into a packed integer.
|
||||||
///
|
///
|
||||||
/// @see gtc_packing
|
/// @see gtc_packing
|
||||||
/// @see i16vec2 unpackInt2x16(int p)
|
/// @see i16vec2 unpackInt2x16(int p)
|
||||||
@ -661,7 +661,7 @@ namespace glm
|
|||||||
/// @see int packInt2x16(i16vec2 const& v)
|
/// @see int packInt2x16(i16vec2 const& v)
|
||||||
GLM_FUNC_DECL i16vec2 unpackInt2x16(int p);
|
GLM_FUNC_DECL i16vec2 unpackInt2x16(int p);
|
||||||
|
|
||||||
/// Convert each component from an integer vector into a packed unsigned integer.
|
/// Convert each component from an integer vector into a packed integer.
|
||||||
///
|
///
|
||||||
/// @see gtc_packing
|
/// @see gtc_packing
|
||||||
/// @see i16vec4 unpackInt4x16(int64 p)
|
/// @see i16vec4 unpackInt4x16(int64 p)
|
||||||
@ -697,7 +697,7 @@ namespace glm
|
|||||||
/// @see uint64 packUint4x16(u16vec4 const& v)
|
/// @see uint64 packUint4x16(u16vec4 const& v)
|
||||||
GLM_FUNC_DECL u16vec4 unpackUint4x16(uint64 p);
|
GLM_FUNC_DECL u16vec4 unpackUint4x16(uint64 p);
|
||||||
|
|
||||||
/// Convert each component from an integer vector into a packed unsigned integer.
|
/// Convert each component from an integer vector into a packed integer.
|
||||||
///
|
///
|
||||||
/// @see gtc_packing
|
/// @see gtc_packing
|
||||||
/// @see i32vec2 unpackInt2x32(int p)
|
/// @see i32vec2 unpackInt2x32(int p)
|
||||||
|
@ -228,7 +228,7 @@ namespace detail
|
|||||||
w = x1 * x1 + x2 * x2;
|
w = x1 * x1 + x2 * x2;
|
||||||
} while(w > genType(1));
|
} while(w > genType(1));
|
||||||
|
|
||||||
return x2 * Deviation * Deviation * sqrt((genType(-2) * log(w)) / w) + Mean;
|
return static_cast<genType>(x2 * Deviation * Deviation * sqrt((genType(-2) * log(w)) / w) + Mean);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<length_t L, typename T, qualifier Q>
|
template<length_t L, typename T, qualifier Q>
|
||||||
|
@ -73,9 +73,9 @@ namespace std
|
|||||||
};
|
};
|
||||||
|
|
||||||
template<typename T, glm::qualifier Q>
|
template<typename T, glm::qualifier Q>
|
||||||
struct hash<glm::tquat<T,Q>>
|
struct hash<glm::qua<T,Q>>
|
||||||
{
|
{
|
||||||
GLM_FUNC_DECL size_t operator()(glm::tquat<T, Q> const& q) const;
|
GLM_FUNC_DECL size_t operator()(glm::qua<T, Q> const& q) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename T, glm::qualifier Q>
|
template<typename T, glm::qualifier Q>
|
||||||
|
@ -62,7 +62,7 @@ namespace std
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename T, glm::qualifier Q>
|
template<typename T, glm::qualifier Q>
|
||||||
GLM_FUNC_QUALIFIER size_t hash<glm::tquat<T, Q>>::operator()(glm::tquat<T,Q> const& q) const
|
GLM_FUNC_QUALIFIER size_t hash<glm::qua<T, Q>>::operator()(glm::qua<T,Q> const& q) const
|
||||||
{
|
{
|
||||||
size_t seed = 0;
|
size_t seed = 0;
|
||||||
hash<T> hasher;
|
hash<T> hasher;
|
||||||
@ -77,7 +77,7 @@ namespace std
|
|||||||
GLM_FUNC_QUALIFIER size_t hash<glm::tdualquat<T, Q>>::operator()(glm::tdualquat<T, Q> const& q) const
|
GLM_FUNC_QUALIFIER size_t hash<glm::tdualquat<T, Q>>::operator()(glm::tdualquat<T, Q> const& q) const
|
||||||
{
|
{
|
||||||
size_t seed = 0;
|
size_t seed = 0;
|
||||||
hash<glm::tquat<T, Q>> hasher;
|
hash<glm::qua<T, Q>> hasher;
|
||||||
glm::detail::hash_combine(seed, hasher(q.real));
|
glm::detail::hash_combine(seed, hasher(q.real));
|
||||||
glm::detail::hash_combine(seed, hasher(q.dual));
|
glm::detail::hash_combine(seed, hasher(q.dual));
|
||||||
return seed;
|
return seed;
|
||||||
|
@ -81,6 +81,9 @@
|
|||||||
#define GLM_COMPILER_CUDA75 0x100000B0
|
#define GLM_COMPILER_CUDA75 0x100000B0
|
||||||
#define GLM_COMPILER_CUDA80 0x100000C0
|
#define GLM_COMPILER_CUDA80 0x100000C0
|
||||||
|
|
||||||
|
// SYCL
|
||||||
|
#define GLM_COMPILER_SYCL 0x00300000
|
||||||
|
|
||||||
// Clang
|
// Clang
|
||||||
#define GLM_COMPILER_CLANG 0x20000000
|
#define GLM_COMPILER_CLANG 0x20000000
|
||||||
#define GLM_COMPILER_CLANG34 0x20000050
|
#define GLM_COMPILER_CLANG34 0x20000050
|
||||||
@ -129,6 +132,10 @@
|
|||||||
# error "GLM requires CUDA 7.0 or higher"
|
# error "GLM requires CUDA 7.0 or higher"
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
// SYCL
|
||||||
|
#elif defined(__SYCL_DEVICE_ONLY__)
|
||||||
|
# define GLM_COMPILER GLM_COMPILER_SYCL
|
||||||
|
|
||||||
// Clang
|
// Clang
|
||||||
#elif defined(__clang__)
|
#elif defined(__clang__)
|
||||||
# if defined(__apple_build_version__)
|
# if defined(__apple_build_version__)
|
||||||
|
@ -15,6 +15,7 @@ This library works perfectly with *[OpenGL](https://www.opengl.org)* but it also
|
|||||||
- [LLVM](http://llvm.org/) 3.4 and higher
|
- [LLVM](http://llvm.org/) 3.4 and higher
|
||||||
- [Visual C++](http://www.visualstudio.com/) 2013 and higher
|
- [Visual C++](http://www.visualstudio.com/) 2013 and higher
|
||||||
- [CUDA](https://developer.nvidia.com/about-cuda) 7.0 and higher (experimental)
|
- [CUDA](https://developer.nvidia.com/about-cuda) 7.0 and higher (experimental)
|
||||||
|
- [SYCL](https://www.khronos.org/sycl/) (experimental: only [ComputeCpp](https://codeplay.com/products/computesuite/computecpp) implementation has been tested).
|
||||||
- Any C++11 compiler
|
- Any C++11 compiler
|
||||||
|
|
||||||
For more information about *GLM*, please have a look at the [manual](manual.md) and the [API reference documentation](http://glm.g-truc.net/0.9.8/api/index.html).
|
For more information about *GLM*, please have a look at the [manual](manual.md) and the [API reference documentation](http://glm.g-truc.net/0.9.8/api/index.html).
|
||||||
@ -54,9 +55,17 @@ glm::mat4 camera(float Translate, glm::vec2 const& Rotate)
|
|||||||
|
|
||||||
### [GLM 0.9.9.6](https://github.com/g-truc/glm/tree/master)
|
### [GLM 0.9.9.6](https://github.com/g-truc/glm/tree/master)
|
||||||
#### Improvements:
|
#### Improvements:
|
||||||
|
- Added SYCL support #914
|
||||||
- Added Visual C++ 2019 detection
|
- Added Visual C++ 2019 detection
|
||||||
- Added Visual C++ 2017 15.8 and 15.9 detection
|
- Added Visual C++ 2017 15.8 and 15.9 detection
|
||||||
|
|
||||||
|
#### Fixes:
|
||||||
|
- Fixed for g++6 where -std=c++1z sets __cplusplus to 201500 instead of 201402 #921
|
||||||
|
- Fixed hash hashes qua instead of tquat #919
|
||||||
|
- Fixed .natvis as structs renamed #915
|
||||||
|
- Fixed ldexp and frexp declaration #895
|
||||||
|
- Fixed missing const to quaternion conversion operators #890
|
||||||
|
|
||||||
### [GLM 0.9.9.5](https://github.com/g-truc/glm/releases/tag/0.9.9.5) - 2019-04-01
|
### [GLM 0.9.9.5](https://github.com/g-truc/glm/releases/tag/0.9.9.5) - 2019-04-01
|
||||||
#### Fixes:
|
#### Fixes:
|
||||||
- Fixed build errors when defining GLM_ENABLE_EXPERIMENTAL #884 #883
|
- Fixed build errors when defining GLM_ENABLE_EXPERIMENTAL #884 #883
|
||||||
|
@ -1,17 +1,22 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<!-- GLM visualizers for Visual Studio 2012 -->
|
<!-- GLM visualizers for Visual Studio -->
|
||||||
<!-- Put them into My Documents/Visual Studio 2012/Visualizers/ -->
|
<!-- Copy this file to -->
|
||||||
|
<!-- %USERPROFILE%\Douments\Visual Studio 2019\Visualizers\ (replace '2019' when necessary) -->
|
||||||
|
<!-- or -->
|
||||||
|
<!-- %VSINSTALLDIR%\Common7\Packages\Debugger\Visualizers\ (requires admin access) -->
|
||||||
|
<!-- See also https://docs.microsoft.com/en-us/visualstudio/debugger/create-custom-views-of-native-objects -->
|
||||||
|
|
||||||
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
|
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
|
||||||
<Type Name="glm::tvec1<*>">
|
|
||||||
|
<Type Name="glm::vec<1,*>">
|
||||||
<DisplayString>{x}</DisplayString>
|
<DisplayString>{x}</DisplayString>
|
||||||
<Expand>
|
<Expand>
|
||||||
<Item Name="x">x</Item>
|
<Item Name="x">x</Item>
|
||||||
</Expand>
|
</Expand>
|
||||||
</Type>
|
</Type>
|
||||||
|
|
||||||
<Type Name="glm::tvec2<*>">
|
<Type Name="glm::vec<2,*>">
|
||||||
<DisplayString>{x}, {y}</DisplayString>
|
<DisplayString>{x}, {y}</DisplayString>
|
||||||
<Expand>
|
<Expand>
|
||||||
<Item Name="x">x</Item>
|
<Item Name="x">x</Item>
|
||||||
@ -19,7 +24,7 @@
|
|||||||
</Expand>
|
</Expand>
|
||||||
</Type>
|
</Type>
|
||||||
|
|
||||||
<Type Name="glm::tvec3<*>">
|
<Type Name="glm::vec<3,*>">
|
||||||
<DisplayString>{x}, {y}, {z}</DisplayString>
|
<DisplayString>{x}, {y}, {z}</DisplayString>
|
||||||
<Expand>
|
<Expand>
|
||||||
<Item Name="x">x</Item>
|
<Item Name="x">x</Item>
|
||||||
@ -28,7 +33,7 @@
|
|||||||
</Expand>
|
</Expand>
|
||||||
</Type>
|
</Type>
|
||||||
|
|
||||||
<Type Name="glm::tvec4<*>">
|
<Type Name="glm::vec<4,*>">
|
||||||
<DisplayString>{x}, {y}, {z}, {w}</DisplayString>
|
<DisplayString>{x}, {y}, {z}, {w}</DisplayString>
|
||||||
<Expand>
|
<Expand>
|
||||||
<Item Name="x">x</Item>
|
<Item Name="x">x</Item>
|
||||||
@ -38,18 +43,8 @@
|
|||||||
</Expand>
|
</Expand>
|
||||||
</Type>
|
</Type>
|
||||||
|
|
||||||
<!--Type Name="glm::tmat4<*>">
|
<Type Name="glm::qua<*>">
|
||||||
<DisplayString>{value[0]}, {value[1]}, {value[2]}, {value[3]}</DisplayString>
|
<DisplayString>{x}, {y}, {z}, {w}</DisplayString>
|
||||||
<Expand>
|
|
||||||
<Item Name="[0]">value[0]</Item>
|
|
||||||
<Item Name="[1]">value[1]</Item>
|
|
||||||
<Item Name="[2]">value[2]</Item>
|
|
||||||
<Item Name="[3]">value[3]</Item>
|
|
||||||
</Expand>
|
|
||||||
</Type-->
|
|
||||||
|
|
||||||
<Type Name="glm::tquat<*>">
|
|
||||||
<DisplayString>({x}, {y}, {z}), {w}</DisplayString>
|
|
||||||
<Expand>
|
<Expand>
|
||||||
<Item Name="x">x</Item>
|
<Item Name="x">x</Item>
|
||||||
<Item Name="y">y</Item>
|
<Item Name="y">y</Item>
|
||||||
@ -65,5 +60,6 @@
|
|||||||
<Item Name="dual">dual</Item>
|
<Item Name="dual">dual</Item>
|
||||||
</Expand>
|
</Expand>
|
||||||
</Type>
|
</Type>
|
||||||
|
|
||||||
</AutoVisualizer>
|
</AutoVisualizer>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user