Improvements and bug fixes

Improve ResizableBufferAdapter style

    Improve extesnion adxelua

    Improve code quality

    Fix lua-tests BillBoardTest

    Sync texture pixel format enum values for adxelua

    Fix luaval_to_vec2 parameter location

    Improve windows workflow

    Improve cmake scripts

    Take care Texture2D::setDefaultAlphaPixelFormat use
This commit is contained in:
halx99 2022-05-13 21:06:17 +08:00
parent 810b0f563d
commit 30a164c31a
27 changed files with 183 additions and 196 deletions

View File

@ -348,7 +348,7 @@ function(setup_cocos_app_config app_name)
if(BUILD_SHARED_LIBS)
target_compile_definitions(${app_name} PRIVATE SPINEPLUGIN_API=DLLIMPORT) # spine dll
endif()
target_link_libraries(${app_name} ${CC_EXTENSION_LIBS})
target_link_libraries(${app_name} ${_AX_EXTENSION_LIBS})
if(XCODE AND AX_USE_ALSOFT AND ALSOFT_OSX_FRAMEWORK)
# Embedded soft_oal embedded framework

View File

@ -32,7 +32,7 @@ message(STATUS "HOST_SYSTEM:" ${CMAKE_HOST_SYSTEM_NAME})
option(AX_ENABLE_EXT_LUA "Build lua libraries" OFF)
# hold the extensions list to auto link to app
set(CC_EXTENSION_LIBS "" CACHE INTERNAL "extensions for auto link to target application")
set(_AX_EXTENSION_LIBS "" CACHE INTERNAL "extensions for auto link to target application")
# include helper functions
include(CocosBuildHelpers)

View File

@ -354,10 +354,7 @@ void PlistSpriteSheetLoader::addSpriteFramesWithDictionary(ValueMap& dict,
if (pixelFormatIt != pixelFormats.end())
{
const backend::PixelFormat pixelFormat = (*pixelFormatIt).second;
const backend::PixelFormat currentPixelFormat = Texture2D::getDefaultAlphaPixelFormat();
Texture2D::setDefaultAlphaPixelFormat(pixelFormat);
texture = Director::getInstance()->getTextureCache()->addImage(texturePath);
Texture2D::setDefaultAlphaPixelFormat(currentPixelFormat);
texture = Director::getInstance()->getTextureCache()->addImage(texturePath, pixelFormat);
}
else
{

View File

@ -4,7 +4,8 @@ Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2011 Zynga Inc.
Copyright (c) 2013-2016 Chukong Technologies Inc.
Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
Copyright (c) 2021 Bytedance Inc.
Copyright (c) 2020 C4games Ltd.
Copyright (c) 2021-2022 Bytedance Inc.
https://adxeproject.github.io/
@ -73,9 +74,14 @@ Sprite* Sprite::createWithTexture(Texture2D* texture, const Rect& rect, bool rot
}
Sprite* Sprite::create(std::string_view filename)
{
return Sprite::create(filename, Texture2D::getDefaultAlphaPixelFormat());
}
Sprite* Sprite::create(std::string_view filename, PixelFormat format)
{
Sprite* sprite = new Sprite();
if (sprite->initWithFile(filename))
if (sprite->initWithFile(filename, format))
{
sprite->autorelease();
return sprite;
@ -168,6 +174,11 @@ bool Sprite::initWithTexture(Texture2D* texture, const Rect& rect)
}
bool Sprite::initWithFile(std::string_view filename)
{
return initWithFile(filename, Texture2D::getDefaultAlphaPixelFormat());
}
bool Sprite::initWithFile(std::string_view filename, PixelFormat format)
{
if (filename.empty())
{
@ -177,7 +188,7 @@ bool Sprite::initWithFile(std::string_view filename)
_fileName = filename;
Texture2D* texture = _director->getTextureCache()->addImage(filename);
Texture2D* texture = _director->getTextureCache()->addImage(filename, format);
if (texture)
{
Rect rect = Rect::ZERO;

View File

@ -4,6 +4,8 @@ Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2011 Zynga Inc.
Copyright (c) 2013-2016 Chukong Technologies Inc.
Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
Copyright (c) 2020 C4games Ltd.
Copyright (c) 2021-2022 Bytedance Inc.
https://adxeproject.github.io/
@ -130,6 +132,7 @@ public:
* @return An autoreleased sprite object.
*/
static Sprite* create(std::string_view filename);
static Sprite* create(std::string_view filename, PixelFormat format);
/**
* Creates a polygon sprite with a polygon info.
@ -601,6 +604,7 @@ public:
* @lua init
*/
virtual bool initWithFile(std::string_view filename);
virtual bool initWithFile(std::string_view filename, PixelFormat format);
/**
* Initializes a sprite with an image filename, and a rect.

View File

@ -196,10 +196,10 @@ endif()
# engine extensions
add_subdirectory(${ADXE_ROOT_PATH}/extensions ${ENGINE_BINARY_PATH}/extensions)
if(MSVC_IDE)
if(MSVC)
target_sources(${ADXE_CORE_LIB} PRIVATE ../thirdparty/yasio/yasio.natvis)
target_sources(${ADXE_CORE_LIB} PRIVATE ../thirdparty/robin-map/tsl-robin-map.natvis)
target_compile_options(${ADXE_CORE_LIB} PRIVATE "/Zm2000")
target_compile_options(${ADXE_CORE_LIB} PUBLIC "/Zm2000")
endif()
# copy all thirdparty libraries to ${CMAKE_BINARY_DIR}/lib/$<CONFIG>

View File

@ -44,6 +44,12 @@ class CC_DLL Data
friend class Properties;
public:
/* stl compatible */
using value_type = uint8_t;
size_t size() const { return _size; }
uint8_t* data() const { return _bytes; }
/**
* This parameter is defined for convenient reference if a null Data object is needed.
*/

View File

@ -1261,8 +1261,6 @@ void Director::createStatsLabel()
FileUtils::getInstance()->purgeCachedEntries();
}
backend::PixelFormat currentFormat = Texture2D::getDefaultAlphaPixelFormat();
Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::RGBA4);
unsigned char* data = nullptr;
ssize_t dataLength = 0;
getFPSImageData(&data, &dataLength);
@ -1277,7 +1275,7 @@ void Director::createStatsLabel()
return;
}
texture = _textureCache->addImage(image, "/cc_fps_images");
texture = _textureCache->addImage(image, "/cc_fps_images", PixelFormat::RGBA4);
CC_SAFE_RELEASE(image);
/*
@ -1305,8 +1303,6 @@ void Director::createStatsLabel()
_drawnVerticesLabel->setIgnoreContentScaleFactor(true);
_drawnVerticesLabel->setScale(scaleFactor);
Texture2D::setDefaultAlphaPixelFormat(currentFormat);
auto safeOrigin = getSafeAreaRect().origin;
const int height_spacing = (int)(22 / CC_CONTENT_SCALE_FACTOR());
_drawnVerticesLabel->setPosition(Vec2(0, height_spacing * 2.0f) + safeOrigin);

View File

@ -58,7 +58,8 @@ THE SOFTWARE.
#define DECLARE_GUARD (void)0
#if CC_TARGET_PLATFORM != CC_PLATFORM_IOS && (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID || (defined(__NDK_MAJOR__) && __NDK_MAJOR__ >= 22) )
#if CC_TARGET_PLATFORM != CC_PLATFORM_IOS && \
(CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID || (defined(__NDK_MAJOR__) && __NDK_MAJOR__ >= 22))
# define ADXE_HAVE_STDFS 1
# include <filesystem>
namespace stdfs = std::filesystem;
@ -989,7 +990,7 @@ void FileUtils::loadFilenameLookupDictionaryFromFile(std::string_view filename)
const std::string fullPath = fullPathForFilename(filename);
if (!fullPath.empty())
{
ValueMap dict = FileUtils::getInstance()->getValueMapFromFile(fullPath);
ValueMap dict = getValueMapFromFile(fullPath);
if (!dict.empty())
{
ValueMap& metadata = dict["metadata"].asValueMap();

View File

@ -58,62 +58,22 @@ public:
virtual ~ResizableBuffer() {}
virtual void resize(size_t size) = 0;
virtual void* buffer() const = 0;
virtual size_t size() const = 0;
};
template <typename T>
class ResizableBufferAdapter
{};
template <typename CharT, typename Traits, typename Allocator>
class ResizableBufferAdapter<std::basic_string<CharT, Traits, Allocator>> : public ResizableBuffer
class ResizableBufferAdapter : public ResizableBuffer
{
typedef std::basic_string<CharT, Traits, Allocator> BufferType;
BufferType* _buffer;
T* _buffer;
public:
explicit ResizableBufferAdapter(BufferType* buffer) : _buffer(buffer) {}
virtual void resize(size_t size) override { _buffer->resize((size + sizeof(CharT) - 1) / sizeof(CharT)); }
virtual void* buffer() const override
explicit ResizableBufferAdapter(T* buffer) : _buffer(buffer) {}
virtual void resize(size_t size) override
{
// can not invoke string::front() if it is empty
if (_buffer->empty())
return nullptr;
else
return &_buffer->front();
_buffer->resize((size + sizeof(typename T::value_type) - 1) / sizeof(typename T::value_type));
}
};
template <typename T, typename Allocator>
class ResizableBufferAdapter<std::vector<T, Allocator>> : public ResizableBuffer
{
typedef std::vector<T, Allocator> BufferType;
BufferType* _buffer;
public:
explicit ResizableBufferAdapter(BufferType* buffer) : _buffer(buffer) {}
virtual void resize(size_t size) override { _buffer->resize((size + sizeof(T) - 1) / sizeof(T)); }
virtual void* buffer() const override
{
// can not invoke vector::front() if it is empty
if (_buffer->empty())
return nullptr;
else
return &_buffer->front();
}
};
template <>
class ResizableBufferAdapter<Data> : public ResizableBuffer
{
typedef Data BufferType;
BufferType* _buffer;
public:
explicit ResizableBufferAdapter(BufferType* buffer) : _buffer(buffer) {}
virtual void resize(size_t size) override { _buffer->resize(size); }
virtual void* buffer() const override { return _buffer->getBytes(); }
virtual void* buffer() const override { return _buffer->data(); }
virtual size_t size() const override { return _buffer->size() * sizeof(typename T::value_type); }
};
/** Helper class to handle file operations. */
@ -240,7 +200,6 @@ public:
* virtual void* buffer() const override {
* // your code here
* }
* };
* NS_CC_END
* @endcode
*
@ -255,13 +214,11 @@ public:
* - Status::TooLarge when there file to be read is too large (> 2^32-1), the buffer will not changed.
* - Status::ObtainSizeFailed when failed to obtain the file size, the buffer will not changed.
*/
template <typename T,
typename Enable =
typename std::enable_if<std::is_base_of<ResizableBuffer, ResizableBufferAdapter<T>>::value>::type>
template <typename T>
Status getContents(std::string_view filename, T* buffer) const
{
ResizableBufferAdapter<T> buf(buffer);
return getContents(filename, &buf);
return getContents(filename, static_cast<ResizableBuffer*>(&buf));
}
virtual Status getContents(std::string_view filename, ResizableBuffer* buffer) const;

View File

@ -112,7 +112,7 @@ bool FileUtilsWin32::init()
_checkExePath();
bool startedFromSelfLocation = s_workingDir == s_exeDir;
if (!startedFromSelfLocation)
if (!startedFromSelfLocation || !isDirectoryExistInternal(AX_PC_RESOURCES_DIR))
_defaultResRootPath = s_workingDir;
else
{

View File

@ -3,7 +3,7 @@ Copyright (c) 2008 Apple Inc. All Rights Reserved.
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2013-2016 Chukong Technologies Inc.
Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
Copyright (c) 2020 C4games Ltd
Copyright (c) 2020 C4games Ltd.
Copyright (c) 2021-2022 Bytedance Inc.
https://adxeproject.github.io/
@ -60,7 +60,7 @@ NS_CC_BEGIN
// If the image has alpha, you can create RGBA8 (32-bit) or RGBA4 (16-bit) or RGB5A1 (16-bit)
// Default is: RGBA8888 (32-bit textures)
static backend::PixelFormat g_defaultAlphaPixelFormat = backend::PixelFormat::BGRA8;
static backend::PixelFormat g_defaultAlphaPixelFormat = backend::PixelFormat::RGBA8;
Texture2D::Texture2D()
: _pixelFormat(backend::PixelFormat::NONE)

View File

@ -4,7 +4,8 @@ Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2011 Zynga Inc.
Copyright (c) 2013-2016 Chukong Technologies Inc.
Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
Copyright (c) 2020 C4games Ltd
Copyright (c) 2020 C4games Ltd.
Copyright (c) 2021-2022 Bytedance Inc.
https://adxeproject.github.io/
@ -355,7 +356,7 @@ void TextureCache::addImageAsyncCallBack(float /*dt*/)
// ETC1 ALPHA supports.
if (asyncStruct->imageAlpha.getFileType() == Image::Format::ETC1)
{
texture->updateWithImage(&asyncStruct->imageAlpha, Texture2D::getDefaultAlphaPixelFormat(), 1);
texture->updateWithImage(&asyncStruct->imageAlpha, asyncStruct->pixelFormat, 1);
}
}
else
@ -384,6 +385,11 @@ void TextureCache::addImageAsyncCallBack(float /*dt*/)
}
Texture2D* TextureCache::addImage(std::string_view path)
{
return addImage(path, Texture2D::getDefaultAlphaPixelFormat());
}
Texture2D* TextureCache::addImage(std::string_view path, PixelFormat format)
{
Texture2D* texture = nullptr;
Image* image = nullptr;
@ -412,7 +418,7 @@ Texture2D* TextureCache::addImage(std::string_view path)
texture = new Texture2D();
if (texture->initWithImage(image))
if (texture->initWithImage(image, format))
{
#if CC_ENABLE_CACHE_TEXTURE_DATA
// cache the texture file name
@ -430,7 +436,7 @@ Texture2D* TextureCache::addImage(std::string_view path)
Image imageAlpha;
if (imageAlpha.initWithImageFile(alphaFullPath))
{
texture->updateWithImage(&imageAlpha, Texture2D::getDefaultAlphaPixelFormat(), 1);
texture->updateWithImage(&imageAlpha, format, 1);
}
}
@ -462,6 +468,11 @@ void TextureCache::parseNinePatchImage(cocos2d::Image* image, cocos2d::Texture2D
}
Texture2D* TextureCache::addImage(Image* image, std::string_view key)
{
return addImage(image, key, Texture2D::getDefaultAlphaPixelFormat());
}
Texture2D* TextureCache::addImage(Image* image, std::string_view key, PixelFormat format)
{
CCASSERT(image != nullptr, "TextureCache: image MUST not be nil");
CCASSERT(image->getData() != nullptr, "TextureCache: image MUST not be nil");
@ -478,7 +489,7 @@ Texture2D* TextureCache::addImage(Image* image, std::string_view key)
}
texture = new Texture2D();
if (texture->initWithImage(image))
if (texture->initWithImage(image, format))
{
_textures.emplace(key, texture);
}

View File

@ -4,6 +4,8 @@ Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2011 Zynga Inc.
Copyright (c) 2013-2016 Chukong Technologies Inc.
Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
Copyright (c) 2020 C4games Ltd.
Copyright (c) 2021-2022 Bytedance Inc.
https://adxeproject.github.io/
@ -93,16 +95,19 @@ public:
@param filepath The file path.
*/
Texture2D* addImage(std::string_view filepath);
Texture2D* addImage(std::string_view filepath, PixelFormat format);
/** Returns a Texture2D object given a file image.
* If the file image was not previously loaded, it will create a new Texture2D object and it will return it.
* Otherwise it will load a texture in a new thread, and when the image is loaded, the callback will be called with
* Otherwise it will load a texture in a offthread, and when the image is loaded, the callback will be called with
the Texture2D as a parameter.
* The callback will be called from the main thread, so it is safe to create any cocos2d object from the callback.
* Supported image extensions: .png, .jpg
@param filepath The file path.
@param callback A callback function would be invoked after the image is loaded.
@since v0.8
@remark Please don't invoke Texture2D::setDefaultAlphaPixelFormat in main GL thread before invoke this API.
*/
virtual void addImageAsync(std::string_view filepath, const std::function<void(Texture2D*)>& callback);
@ -130,6 +135,7 @@ public:
* If "key" is nil, then a new texture will be created each time.
*/
Texture2D* addImage(Image* image, std::string_view key);
Texture2D* addImage(Image* image, std::string_view key, PixelFormat format);
/** Returns an already created texture. Returns nil if the texture doesn't exist.
@param key It's the related/absolute path of the file image.

View File

@ -53,7 +53,7 @@ function(setup_cocos_extension_config target_name)
)
if(NOT opt_DNTLINK)
set(CC_EXTENSION_LIBS "${target_name};${CC_EXTENSION_LIBS}" CACHE INTERNAL "extensions for auto link to target application")
set(_AX_EXTENSION_LIBS "${target_name};${_AX_EXTENSION_LIBS}" CACHE INTERNAL "extensions for auto link to target application")
endif()
if(XCODE OR VS)
@ -122,4 +122,4 @@ if(AX_ENABLE_EXT_LUA)
endif()
message(STATUS "CC_EXTENSION_LIBS:${CC_EXTENSION_LIBS}")
message(STATUS "Enabled adxe extensions:${_AX_EXTENSION_LIBS}")

View File

@ -96,12 +96,7 @@ TextureAtlasData* CCFactory::_buildTextureAtlasData(TextureAtlasData* textureAtl
}
#endif
cocos2d::Texture2D::setDefaultAlphaPixelFormat(pixelFormat);
texture = textureCache->addImage(textureAtlasData->imagePath);
if (texture != nullptr)
{
cocos2d::Texture2D::setDefaultAlphaPixelFormat(defaultPixelFormat);
}
texture = textureCache->addImage(textureAtlasData->imagePath, pixelFormat);
}
static_cast<CCTextureAtlasData*>(textureAtlasData)->setRenderTexture(texture);

View File

@ -263,6 +263,20 @@ private:
void copy(const LuaValue& rhs);
};
inline std::string adxelua_tostr(lua_State* L, int arg)
{
size_t l = 0;
const char* s = lua_tolstring(L, arg, &l);
return std::string{s, l};
}
inline std::string_view adxelua_tosv(lua_State* L, int arg)
{
size_t l = 0;
const char* s = lua_tolstring(L, arg, &l);
return std::string_view{s, l};
}
NS_CC_END
// end group

View File

@ -35,20 +35,6 @@ THE SOFTWARE.
using namespace cocos2d;
static std::string adxelua_tostr(lua_State* L, int arg)
{
size_t l = 0;
const char* s = lua_tolstring(L, arg, &l);
return std::string{s, l};
}
static cxx17::string_view adxelua_tosv(lua_State* L, int arg)
{
size_t l = 0;
const char* s = lua_tolstring(L, arg, &l);
return cxx17::string_view{s, l};
}
extern "C" {
int cocos2dx_lua_loader(lua_State* L)
{

View File

@ -360,8 +360,8 @@ bool luaval_to_vec2(lua_State* L, int lo, cocos2d::Vec2* outValue, const char* f
}
// assertion: since we only have vec2, you should never passing rect as vec2 to native
const auto objlen = lua_objlen(L, -1);
assert(objlen == 2);
const auto objlen = lua_objlen(L, lo);
assert(objlen != 4);
if (ok)
{

View File

@ -1,7 +1,7 @@
/****************************************************************************
Copyright (c) 2013-2016 Chukong Technologies Inc.
Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
Copyright (c) 2021 Bytedance Inc.
Copyright (c) 2021-2022 Bytedance Inc.
https://adxeproject.github.io/
@ -245,11 +245,11 @@ static int tolua_cocos2d_MenuItemImage_create(lua_State* tolua_S)
ok = true;
break;
}
const std::string normalImage = ((const std::string)tolua_tocppstring(tolua_S, 2, 0));
const std::string selectedImage = ((const std::string)tolua_tocppstring(tolua_S, 3, 0));
MenuItemImage* tolua_ret = (MenuItemImage*)MenuItemImage::create(normalImage, selectedImage);
int nID = (tolua_ret) ? (int)tolua_ret->_ID : -1;
int* pLuaID = (tolua_ret) ? &tolua_ret->_luaID : NULL;
auto normalImage = adxelua_tosv(tolua_S, 2);
auto selectedImage = adxelua_tosv(tolua_S, 3);
MenuItemImage* tolua_ret = (MenuItemImage*)MenuItemImage::create(normalImage, selectedImage);
int nID = (tolua_ret) ? (int)tolua_ret->_ID : -1;
int* pLuaID = (tolua_ret) ? &tolua_ret->_luaID : NULL;
toluafix_pushusertype_ccobject(tolua_S, nID, pLuaID, (void*)tolua_ret, "cc.MenuItemImage");
return 1;
}
@ -266,9 +266,9 @@ static int tolua_cocos2d_MenuItemImage_create(lua_State* tolua_S)
break;
}
#endif
const std::string normalImage = ((const std::string)tolua_tocppstring(tolua_S, 2, 0));
const std::string selectedImage = ((const std::string)tolua_tocppstring(tolua_S, 3, 0));
const std::string disabledImage = ((const std::string)tolua_tocppstring(tolua_S, 4, 0));
auto normalImage = adxelua_tosv(tolua_S, 2);
auto selectedImage = adxelua_tosv(tolua_S, 3);
auto disabledImage = adxelua_tosv(tolua_S, 4);
MenuItemImage* tolua_ret = (MenuItemImage*)MenuItemImage::create(normalImage, selectedImage, disabledImage);
int nID = (tolua_ret) ? (int)tolua_ret->_ID : -1;
@ -352,7 +352,7 @@ static int tolua_cocos2d_MenuItemFont_create(lua_State* tolua_S)
goto tolua_lerror;
}
#endif
const std::string value = ((const std::string)tolua_tocppstring(tolua_S, 2, 0));
auto value = adxelua_tosv(tolua_S, 2);
MenuItemFont* tolua_ret = (MenuItemFont*)MenuItemFont::create(value);
int nID = (tolua_ret) ? (int)tolua_ret->_ID : -1;
int* pLuaID = (tolua_ret) ? &tolua_ret->_luaID : NULL;
@ -2293,7 +2293,7 @@ static int lua_cocos2dx_Node_enumerateChildren(lua_State* tolua_S)
}
#endif
std::string name = (std::string)tolua_tocppstring(tolua_S, 2, 0);
std::string name = adxelua_tostr(tolua_S, 2);
LUA_FUNCTION handler = toluafix_ref_function(tolua_S, 3, 0);
cobj->enumerateChildren(name, [=](Node* node) -> bool {
@ -4631,7 +4631,7 @@ static int tolua_cocos2d_LuaEventListenerCustom_create(lua_State* tolua_S)
goto tolua_lerror;
}
#endif
const std::string eventName = ((const std::string)tolua_tocppstring(tolua_S, 2, 0));
auto eventName = adxelua_tosv(tolua_S, 2);
LUA_FUNCTION handler = toluafix_ref_function(tolua_S, 3, 0);
cocos2d::EventListenerCustom* tolua_ret = LuaEventListenerCustom::create(eventName);
ScriptHandlerMgr::getInstance()->addObjectHandler((void*)tolua_ret, handler,
@ -7428,7 +7428,7 @@ static int tolua_cocos2d_utils_captureScreen(lua_State* tolua_S)
#endif
{
LUA_FUNCTION handler = toluafix_ref_function(tolua_S, 2, 0);
std::string fileName = tolua_tocppstring(tolua_S, 3, "");
auto fileName = adxelua_tosv(tolua_S, 3);
cocos2d::utils::captureScreen(
[=](bool succeed, std::string_view name) {
auto stack = LuaEngine::getInstance()->getLuaStack();
@ -7460,7 +7460,7 @@ static int tolua_cocos2d_utils_findChildren(lua_State* tolua_S)
#endif
{
cocos2d::Node* node = static_cast<Node*>(tolua_tousertype(tolua_S, 2, nullptr));
std::string name = tolua_tocppstring(tolua_S, 3, "");
auto name = adxelua_tosv(tolua_S, 3);
std::vector<Node*> children = cocos2d::utils::findChildren(*node, name);
lua_newtable(tolua_S);
int index = 1;
@ -7495,7 +7495,7 @@ static int tolua_cocos2d_utils_findChild(lua_State* tolua_S)
#endif
{
cocos2d::Node* node = static_cast<Node*>(tolua_tousertype(tolua_S, 1, nullptr));
std::string name = tolua_tocppstring(tolua_S, 2, "");
auto name = adxelua_tosv(tolua_S, 2);
auto obj = cocos2d::utils::findChild(node, name);
int ID = (obj) ? (int)obj->_ID : -1;
int* luaID = (obj) ? &obj->_luaID : NULL;

View File

@ -90,25 +90,39 @@ cc.TEXT_ALIGNMENT_CENTER = 0x1
cc.TEXT_ALIGNMENT_LEFT = 0x0
cc.TEXT_ALIGNMENT_RIGHT = 0x2
cc.TEXTURE2_D_PIXEL_FORMAT_AUTO = 0x0
cc.TEXTURE2_D_PIXEL_FORMAT_BGR_A8888 = 0x1
cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A8888 = 0x2
cc.TEXTURE2_D_PIXEL_FORMAT_RG_B888 = 0x3
cc.TEXTURE2_D_PIXEL_FORMAT_RG_B565 = 0x4
cc.TEXTURE2_D_PIXEL_FORMAT_A8 = 0x5
cc.TEXTURE2_D_PIXEL_FORMAT_I8 = 0x6
cc.TEXTURE2_D_PIXEL_FORMAT_A_I88 = 0x7
cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A4444 = 0x8
cc.TEXTURE2_D_PIXEL_FORMAT_RGB5_A1 = 0x9
cc.TEXTURE2_D_PIXEL_FORMAT_PVRTC4 = 0xa
cc.TEXTURE2_D_PIXEL_FORMAT_PVRTC4A = 0xb
cc.TEXTURE2_D_PIXEL_FORMAT_PVRTC2 = 0xc
cc.TEXTURE2_D_PIXEL_FORMAT_PVRTC2A = 0xd
cc.TEXTURE2_D_PIXEL_FORMAT_ETC = 0xe
cc.TEXTURE2_D_PIXEL_FORMAT_S3TC_DXT1 = 0xf
cc.TEXTURE2_D_PIXEL_FORMAT_S3TC_DXT3 = 0x10
cc.TEXTURE2_D_PIXEL_FORMAT_S3TC_DXT5 = 0x11
cc.TEXTURE2_D_PIXEL_FORMAT_DEFAULT = 0x0
cc.TEXTURE_PF_PVRTC4 = 0
cc.TEXTURE_PF_PVRTC4A = 1
cc.TEXTURE_PF_PVRTC2 = 2
cc.TEXTURE_PF_PVRTC2A = 3
cc.TEXTURE_PF_ETC1 = 4
cc.TEXTURE_PF_ETC2_RGB = 5
cc.TEXTURE_PF_ETC2_RGBA = 6
cc.TEXTURE_PF_S3TC_DXT1 = 7
cc.TEXTURE_PF_S3TC_DXT3 = 8
cc.TEXTURE_PF_S3TC_DXT5 = 9
cc.TEXTURE_PF_ATC_RGB = 10
cc.TEXTURE_PF_ATC_EXPLICIT_ALPHA = 11
cc.TEXTURE_PF_ATC_INTERPOLATED_ALPHA = 12
cc.TEXTURE_PF_ASTC4x4 = 13 --!< ASTC 4x4 8.0 BPP
cc.TEXTURE_PF_ASTC5x5 = 14 --!< ASTC 5x5 5.12 BPP
cc.TEXTURE_PF_ASTC6x6 = 15 --!< ASTC 6x6 3.56 BPP
cc.TEXTURE_PF_ASTC8x5 = 16 --!< ASTC 8x5 3.20 BPP
cc.TEXTURE_PF_ASTC8x6 = 17 --!< ASTC 8x6 2.67 BPP
cc.TEXTURE_PF_ASTC8x8 = 18 --!< ASTC 8x8 2.0 BPP
cc.TEXTURE_PF_ASTC10x5 = 19 --!< ASTC 10x5 2.56 BPP
cc.TEXTURE_PF_RGBA8 = 20
cc.TEXTURE_PF_BGRA8 = 21
cc.TEXTURE_PF_RGB8 = 22
cc.TEXTURE_PF_RGB565 = 23 -- !render as BGR565
cc.TEXTURE_PF_RGBA4 = 24 -- !render as ABGR4
cc.TEXTURE_PF_RGB5A1 = 25 -- !render as BGR5A1
cc.TEXTURE_PF_A8 = 26
cc.TEXTURE_PF_L8 = 27
cc.TEXTURE_PF_LA8 = 28
cc.TEXTURE_PF_D24S8 = 29
cc.TEXTURE_PF_COUNT = 30
cc.TEXTURE_PF_NONE = 0xffff
cc.TOUCHES_ALL_AT_ONCE = 0x0
cc.TOUCHES_ONE_BY_ONE = 0x1
cc.TRANSITION_ORIENTATION_DOWN_OVER = 0x1

View File

@ -13,17 +13,17 @@ _G.kCCDirectorProjectionDefault = cc.DIRECTOR_PROJECTION_DEFAULT
_G.kCCNodeTagInvalid = cc.NODE_TAG_INVALID
_G.kCCNodeOnEnter = cc.NODE_ON_ENTER
_G.kCCNodeOnExit = cc.NODE_ON_EXIT
_G.kCCTexture2DPixelFormat_RGBA8888 = cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A8888
_G.kCCTexture2DPixelFormat_RGB888 = cc.TEXTURE2_D_PIXEL_FORMAT_RG_B888
_G.kCCTexture2DPixelFormat_RGB565 = cc.TEXTURE2_D_PIXEL_FORMAT_RG_B565
_G.kCCTexture2DPixelFormat_A8 = cc.TEXTURE2_D_PIXEL_FORMAT_A8
_G.kCCTexture2DPixelFormat_I8 = cc.TEXTURE2_D_PIXEL_FORMAT_I8
_G.kCCTexture2DPixelFormat_AI88 = cc.TEXTURE2_D_PIXEL_FORMAT_A_I88
_G.kCCTexture2DPixelFormat_RGBA4444 = cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A4444
_G.kCCTexture2DPixelFormat_RGB5A1 = cc.TEXTURE2_D_PIXEL_FORMAT_RGB5_A1
_G.kCCTexture2DPixelFormat_PVRTC4 = cc.TEXTURE2_D_PIXEL_FORMAT_PVRTC4
_G.kCCTexture2DPixelFormat_PVRTC2 = cc.TEXTURE2_D_PIXEL_FORMAT_PVRTC2
_G.kCCTexture2DPixelFormat_Default = cc.TEXTURE2_D_PIXEL_FORMAT_DEFAULT
-- _G.kCCTexture2DPixelFormat_RGBA8888 = cc.TEXTURE_PF_RGBA8
-- _G.kCCTexture2DPixelFormat_RGB888 = cc.TEXTURE_PF_RGB8
-- _G.kCCTexture2DPixelFormat_RGB565 = cc.TEXTURE_PF_RGB565
-- _G.kCCTexture2DPixelFormat_A8 = cc.TEXTURE_PF_A8
-- _G.kCCTexture2DPixelFormat_I8 = cc.TEXTURE_PF_I8
-- _G.kCCTexture2DPixelFormat_AI88 = cc.TEXTURE_PF_LA8
-- _G.kCCTexture2DPixelFormat_RGBA4444 = cc.TEXTURE_PF_RGBA4
-- _G.kCCTexture2DPixelFormat_RGB5A1 = cc.TEXTURE_PF_RGB5A1
-- _G.kCCTexture2DPixelFormat_PVRTC4 = cc.TEXTURE_PF_PVRTC4
-- _G.kCCTexture2DPixelFormat_PVRTC2 = cc.TEXTURE_PF_PVRTC2
-- _G.kCCTexture2DPixelFormat_Default = cc.TEXTURE_PF_RGBA8
_G.kCCImageFormatPNG = cc.IMAGE_FORMAT_PNG
_G.kCCImageFormatJPEG = cc.IMAGE_FORMAT_JPEG
_G.kCCTouchesOneByOne = cc.TOUCHES_ONE_BY_ONE
@ -73,4 +73,4 @@ _G.kTargetIphone = cc.PLATFORM_OS_IPHONE
_G.kTargetIpad = cc.PLATFORM_OS_IPAD
_G.kTargetBlackBerry = cc.PLATFORM_OS_BLACKBERRY
cc.TEXTURE_PIXELFORMAT_DEFAULT = cc.TEXTURE2_D_PIXEL_FORMAT_DEFAULT
cc.TEXTURE_PIXELFORMAT_DEFAULT = cc.TEXTURE_PF_RGBA8

View File

@ -378,7 +378,7 @@ function display.newSprite(source, x, y, params)
sprite = spriteClass:create(source, params.rect, params.capInsets)
end
if display.TEXTURES_PIXEL_FORMAT[source] then
cc.Texture2D:setDefaultAlphaPixelFormat(cc.TEXTURE2_D_PIXEL_FORMAT_BGR_A8888)
cc.Texture2D:setDefaultAlphaPixelFormat(cc.TEXTURE_PF_BGRA8)
end
break
elseif sourceType ~= "userdata" then
@ -503,7 +503,7 @@ function display.loadSpriteFrames(dataFilename, imageFilename, callback)
spriteFrameCache:addSpriteFramesAsync(dataFilename, imageFilename, callback)
end
if display.TEXTURES_PIXEL_FORMAT[imageFilename] then
cc.Texture2D:setDefaultAlphaPixelFormat(cc.TEXTURE2_D_PIXEL_FORMAT_BGR_A8888)
cc.Texture2D:setDefaultAlphaPixelFormat(cc.TEXTURE_PF_BGRA8)
end
end

View File

@ -2,6 +2,15 @@ cmake_minimum_required(VERSION 3.10)
set(APP_NAME cpp-tests)
# "too large PDB" error often occurs in cpp-tests when using default "/Zi"
if (MSVC)
string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
endif()
project(${APP_NAME})
if(NOT DEFINED BUILD_ENGINE_DONE)
@ -503,15 +512,15 @@ if(WINDOWS OR MACOSX OR LINUX)
Classes/ChipmunkTestBed/demo/Slice.c
Classes/ChipmunkTestBed/demo/Unicycle.c
Classes/ChipmunkTestBed/demo/Tumble.c)
if(WINDOWS)
set_source_files_properties(${TESTBED_C_SORUCES} PROPERTIES COMPILE_FLAGS "/TP")
else()
set_source_files_properties(${TESTBED_C_SORUCES} PROPERTIES LANGUAGE CXX)
endif()
list(APPEND GAME_SOURCE
${TESTBED_C_SORUCES}
Classes/ChipmunkTestBed/ChipmunkTestBed.cpp
)
if(WINDOWS)
set_source_files_properties(${TESTBED_C_SORUCES} PROPERTIES COMPILE_FLAGS "/TP")
else()
set_source_files_properties(${TESTBED_C_SORUCES} PROPERTIES LANGUAGE CXX)
endif()
list(APPEND GAME_SOURCE
${TESTBED_C_SORUCES}
Classes/ChipmunkTestBed/ChipmunkTestBed.cpp
)
endif()
@ -566,8 +575,6 @@ if(APPLE)
# For code-signing, set the DEVELOPMENT_TEAM:
#set_xcode_property(${APP_NAME} DEVELOPMENT_TEAM "GRLXXXX2K9")
elseif(WINDOWS)
# "too large PDB" error often occurs in cpp-tests when using default "/Zi"
target_compile_options(${APP_NAME} PRIVATE /Z7)
cocos_copy_target_dll(${APP_NAME})
endif()

View File

@ -2,6 +2,8 @@
Copyright (c) 2012 cocos2d-x.org
Copyright (c) 2013-2016 Chukong Technologies Inc.
Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
Copyright (c) 2020 C4games Ltd.
Copyright (c) 2021-2022 Bytedance Inc.
https://adxeproject.github.io/
@ -322,10 +324,7 @@ protected:
if (pixelFormatIt != pixelFormats.end())
{
const backend::PixelFormat pixelFormat = (*pixelFormatIt).second;
const backend::PixelFormat currentPixelFormat = Texture2D::getDefaultAlphaPixelFormat();
Texture2D::setDefaultAlphaPixelFormat(pixelFormat);
texture = Director::getInstance()->getTextureCache()->addImage(texturePath);
Texture2D::setDefaultAlphaPixelFormat(currentPixelFormat);
texture = Director::getInstance()->getTextureCache()->addImage(texturePath, pixelFormat);
}
else
{

View File

@ -2,6 +2,8 @@
Copyright (c) 2012 cocos2d-x.org
Copyright (c) 2013-2016 Chukong Technologies Inc.
Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
Copyright (c) 2020 C4games Ltd.
Copyright (c) 2021-2022 Bytedance Inc.
https://adxeproject.github.io/
@ -1593,8 +1595,7 @@ void TexturePixelFormat::onEnter()
addChild(background, -1);
// RGBA 8888 image (32-bit)
Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::RGBA8);
auto sprite1 = Sprite::create("Images/test-rgba1.png");
auto sprite1 = Sprite::create("Images/test-rgba1.png", PixelFormat::RGBA8);
sprite1->setPosition(Vec2(1 * s.width / 7, s.height / 2 + 32));
addChild(sprite1, 0);
@ -1602,8 +1603,7 @@ void TexturePixelFormat::onEnter()
Director::getInstance()->getTextureCache()->removeTexture(sprite1->getTexture());
// RGBA 4444 image (16-bit)
Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::RGBA4);
auto sprite2 = Sprite::create("Images/test-rgba1.png");
auto sprite2 = Sprite::create("Images/test-rgba1.png", PixelFormat::RGBA4);
sprite2->setPosition(Vec2(2 * s.width / 7, s.height / 2 - 32));
addChild(sprite2, 0);
@ -1611,8 +1611,7 @@ void TexturePixelFormat::onEnter()
Director::getInstance()->getTextureCache()->removeTexture(sprite2->getTexture());
// RGB5A1 image (16-bit)
Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::RGB5A1);
auto sprite3 = Sprite::create("Images/test-rgba1.png");
auto sprite3 = Sprite::create("Images/test-rgba1.png", PixelFormat::RGB5A1);
sprite3->setPosition(Vec2(3 * s.width / 7, s.height / 2 + 32));
addChild(sprite3, 0);
@ -1620,8 +1619,7 @@ void TexturePixelFormat::onEnter()
Director::getInstance()->getTextureCache()->removeTexture(sprite3->getTexture());
// RGB888 image
Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::RGB8);
auto sprite4 = Sprite::create("Images/test-rgba1.png");
auto sprite4 = Sprite::create("Images/test-rgba1.png", PixelFormat::RGB8);
sprite4->setPosition(Vec2(4 * s.width / 7, s.height / 2 - 32));
addChild(sprite4, 0);
@ -1629,8 +1627,7 @@ void TexturePixelFormat::onEnter()
Director::getInstance()->getTextureCache()->removeTexture(sprite4->getTexture());
// RGB565 image (16-bit)
Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::RGB565);
auto sprite5 = Sprite::create("Images/test-rgba1.png");
auto sprite5 = Sprite::create("Images/test-rgba1.png", PixelFormat::RGB565);
sprite5->setPosition(Vec2(5 * s.width / 7, s.height / 2 + 32));
addChild(sprite5, 0);
@ -1638,8 +1635,7 @@ void TexturePixelFormat::onEnter()
Director::getInstance()->getTextureCache()->removeTexture(sprite5->getTexture());
// A8 image (8-bit)
Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::A8);
auto sprite6 = Sprite::create("Images/test-rgba1.png");
auto sprite6 = Sprite::create("Images/test-rgba1.png", PixelFormat::A8);
sprite6->setPosition(Vec2(6 * s.width / 7, s.height / 2 - 32));
addChild(sprite6, 0);
@ -1661,8 +1657,6 @@ void TexturePixelFormat::onEnter()
sprite4->runAction(seq_4ever4);
sprite5->runAction(seq_4ever5);
// restore default
Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::RGBA8);
log("%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
}
@ -2212,8 +2206,6 @@ TexturePVRv3Premult::TexturePVRv3Premult()
pvr2->setPosition(Vec2(size.width / 4 * 2, size.height / 2));
transformSprite(pvr2);
// PNG
Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::RGBA8);
Director::getInstance()->getTextureCache()->removeTextureForKey("Images/grossinis_sister1-testalpha.png");
auto png = Sprite::create("Images/grossinis_sister1-testalpha.png");
addChild(png, 0);
@ -2369,8 +2361,7 @@ std::string TextureATITCInterpolated::subtitle() const
static void addImageToDemo(TextureDemo& demo, float x, float y, const char* path, backend::PixelFormat format)
{
Texture2D::setDefaultAlphaPixelFormat(format);
auto sprite = Sprite::create(path);
auto sprite = Sprite::create(path, format);
sprite->setPosition(Vec2(x, y));
demo.addChild(sprite, 0);
@ -2398,8 +2389,6 @@ void TextureConvertRGB888::onEnter()
addImageToDemo(*this, 7 * s.width / 9, s.height / 2 + 32, img, backend::PixelFormat::RGBA4);
addImageToDemo(*this, 8 * s.width / 9, s.height / 2 - 32, img, backend::PixelFormat::RGB5A1);
// restore default
Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::RGBA8);
log("%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
}
@ -2432,8 +2421,6 @@ void TextureConvertRGBA8888::onEnter()
addImageToDemo(*this, 7 * s.width / 9, s.height / 2 + 32, img, backend::PixelFormat::RGBA4);
addImageToDemo(*this, 8 * s.width / 9, s.height / 2 - 32, img, backend::PixelFormat::RGB5A1);
// restore default
Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::RGBA8);
log("%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
}
@ -2466,8 +2453,6 @@ void TextureConvertL8::onEnter()
addImageToDemo(*this, 7 * s.width / 9, s.height / 2 + 32, img, backend::PixelFormat::RGBA4);
addImageToDemo(*this, 8 * s.width / 9, s.height / 2 - 32, img, backend::PixelFormat::RGB5A1);
// restore default
Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::RGBA8);
log("%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
}
@ -2500,8 +2485,6 @@ void TextureConvertLA8::onEnter()
addImageToDemo(*this, 7 * s.width / 9, s.height / 2 + 32, img, backend::PixelFormat::RGBA4);
addImageToDemo(*this, 8 * s.width / 9, s.height / 2 - 32, img, backend::PixelFormat::RGB5A1);
// restore default
Texture2D::setDefaultAlphaPixelFormat(backend::PixelFormat::RGBA8);
log("%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
}

View File

@ -82,8 +82,8 @@ function BillBoardTest:init()
cameraRightDir.y=0
local cameraPos= self._camera:getPosition3D()
cameraPos = cc.vec3add(cameraPos, cc.vec2mul(cameraDir, newPos.y * 0.5))
cameraPos = cc.vec3add(cameraPos, cc.vec2mul(cameraRightDir, newPos.x * 0.5))
cameraPos = cc.vec3add(cameraPos, cc.vec3mul(cameraDir, newPos.y * 0.5))
cameraPos = cc.vec3add(cameraPos, cc.vec3mul(cameraRightDir, newPos.x * 0.5))
self._camera:setPosition3D(cameraPos)
end
end, cc.Handler.EVENT_TOUCHES_MOVED)
@ -143,7 +143,7 @@ function BillBoardTest:init()
self:addNewAniBillBoardWithCoords(cc.vec3(-140,0,0))
self:addNewAniBillBoardWithCoords(cc.vec3(-180,0,0))
self._camera:setPosition(cc.vec3(0, 130, 230))
self._camera:setPosition3D(cc.vec3(0, 130, 230))
self._camera:lookAt(cc.vec3(0, 0, 100), cc.vec3(0, 1, 0))
local ttfConfig = {}