Small improvemnts

This commit is contained in:
aismann 2022-06-25 02:00:10 +02:00
parent 00d4e94dac
commit 945b65716f
40 changed files with 891 additions and 4 deletions

View File

@ -221,13 +221,10 @@ void SimpleSnake::update(float delta)
runTime += delta;
endLevelTime += delta;
if (finish)
{
float myScale = runTime + 1.1;
if (myScale > 3.0)
myScale = 3.0;
if (myScale > 3.0) myScale = 3.0;
background->setScale(myScale);
return;
}

View File

@ -0,0 +1,174 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## 2021-12-09
### Added
* Add static library(.a) for Mac Catalyst.
## 2021-10-07
### Added
* Add `x86_64` library for Android.
* Add `arm64` library for macOS.
## 2021-03-09
### Added
* Add funtcions for Viewer.
* `csmGetParameterKeyCounts`
* `csmGetParameterKeyValues`
### Changed
* Update Core version to `04.01.0000`.
## 2020-01-30
### Added
* Add static library(.lib) for statically linking DLL.
* Add symbol file for Windows dynamic library (dll).
## 2019-11-19
### Fixed
* Fix linking static libraries for Windows (.lib).
## 2019-11-14
### Added
* Support Visual Studio 2019.
* Support macOS dynamic library (dylib).
### Changed
* Update Windows dynamic library: Use Visual Studio 2019 for building.
### Security
* Bundle certificate and notary ticket to macOS shared library.
## 2019-09-04
### Added
* Support new Inverted Masking features.
* Support ARM64 architecture for Universal Windows Platform.
### Changed
* Upgrade Core version to 04.00.0000 (67108864). This upgrade is following Cubism Editor 4.0 features.
* Add calling convention for *Windows/x86 DLL* only.
### Removed
* Remove bitcode binary due to suspension of *Cubism Bindings.*
## 2019-04-09
### Added
* Support Universal Windows Platform for Windows Store Application.
## 2019-01-31
### Added
* Add API to get the parent part of the specified part.
* Add API to get moc3 version.
## 2018-12-20
### Added
* [Native] Add new function: `csmGetPartParentPartIndices`.
* [Native, 3.3 Support] Support new Warp Deformer features.
### Changed
* Upgrade Core version to 03.03.0000 (50528256). This upgrade is following Cubism Editor 3.3 features.
## 2018-08-22
### Added
* [Native] Add support for Neon.
## 2018-05-14
### Added
* [Native] Add Windows **Visual C++ 2013** library.
* [Windows] Add runtime library choice `MT`, `MD`, `MTd`, `MDd`.
* [iOS] Add support for iPhone Simulator SDK.
### Fixed
* Fix an error occurred when linking libraries for Android `arm64-v8a`.
## 2017-11-17
### Fixed
* Fix processing of vertex index.
## 2017-10-05
### Added
* Provide bitcode for iOS.
## 2017-08-09
### Added
* [Native] Add Android *arm64-v8a* ABI library.
### Fixed
* Fix drawing order in certain scenarios.
## 2017-07-12
### Added
* Add experimental support for Emscripten.
* Add `CHANGELOG.md`.
### Fixed
* Fix access violation in certain scenarios.
* Fix update result in certain scenarios.
## 2017-05-02
### Added
* [Native] Add experimental support for Raspberry PI.
* Add `README.md`.

View File

@ -0,0 +1,70 @@
cmake_minimum_required(VERSION 3.6)
project(CubismCore)
add_library(Live2DCubismCore STATIC IMPORTED GLOBAL)
set(CORE_PATH ${CMAKE_CURRENT_LIST_DIR})
if(ANDROID)
set_target_properties(Live2DCubismCore
PROPERTIES
IMPORTED_LOCATION
${CORE_PATH}/lib/android/${ANDROID_ABI}/libLive2DCubismCore.a
)
elseif(LINUX)
set_target_properties(Live2DCubismCore
PROPERTIES
IMPORTED_LOCATION
${CORE_PATH}/lib/linux/x86_64/libLive2DCubismCore.a
)
elseif(WINDOWS)
set(CRT MD)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set_target_properties(Live2DCubismCore
PROPERTIES
IMPORTED_LOCATION ${CORE_PATH}/lib/windows/x86_64/142/Live2DCubismCore_MD.lib
IMPORTED_LOCATION_DEBUG
${CORE_PATH}/lib/windows/x86_64/142/Live2DCubismCore_${CRT}d.lib
IMPORTED_LOCATION_RELEASE
${CORE_PATH}/lib/windows/x86_64/142/Live2DCubismCore_MD.lib
)
else()
set_target_properties(Live2DCubismCore
PROPERTIES
IMPORTED_LOCATION ${CORE_PATH}/lib/windows/x86/142/Live2DCubismCore_MD.lib
IMPORTED_LOCATION_DEBUG
${CORE_PATH}/lib/windows/x86/142/Live2DCubismCore_${CRT}d.lib
IMPORTED_LOCATION_RELEASE
${CORE_PATH}/lib/windows/x86/142/Live2DCubismCore_MD.lib
)
endif()
elseif(APPLE)
if(IOS)
# iPhone Simulator (i386) is not support on Cubism Core.
if(IOS_PLATFORM STREQUAL "SIMULATOR")
message(FATAL_ERROR
"Cubism Core does not support i386 iOS architecture."
)
endif()
set_target_properties(Live2DCubismCore
PROPERTIES
IMPORTED_LOCATION_DEBUG
${CORE_PATH}/lib/ios/Debug-iphoneos/libLive2DCubismCore.a
IMPORTED_LOCATION_RELEASE
${CORE_PATH}/lib/ios/Release-iphoneos/libLive2DCubismCore.a
)
elseif(MACOSX)
set_target_properties(Live2DCubismCore
PROPERTIES
IMPORTED_LOCATION
${CORE_PATH}/lib/macos/x86_64/libLive2DCubismCore.a
)
endif()
endif()
# Set core include directory.
set_target_properties(Live2DCubismCore
PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES ${CORE_PATH}/include
)

View File

@ -0,0 +1,7 @@
## Live2D Proprietary Software License
Live2D Cubism Core is available under Live2D Proprietary Software License.
* [Live2D Proprietary Software License Agreement](https://www.live2d.com/eula/live2d-proprietary-software-license-agreement_en.html)
* [Live2D Proprietary Software 使用許諾契約書](https://www.live2d.com/eula/live2d-proprietary-software-license-agreement_jp.html)
* [Live2D Proprietary Software 使用授权协议](https://www.live2d.com/eula/live2d-proprietary-software-license-agreement_cn.html)

View File

@ -0,0 +1,71 @@
# Live2D Cubism Core
This folder contains header and platform-specific library files for developing native applications.
What's the Core anyway? It's a small library that allows you to load Cubism models in your application.
## Getting Started
You probably want to play back animations and want to display your models on screen, too.
[Go here](https://github.com/Live2D/CubismNativeSamples) for further information.
## File Structure
```
Core
├─ dll # Shared (Dynamic) Library files
├─ include # Header file
└─ lib # Static Library files
```
## Library List
| Platform | Architecture | dll | lib | Path | Note |
| --- | --- | --- | --- | --- | --- |
| Android | ARM64 | ✓ | ✓ | android/arm64-v8a | |
| Android | ARMv7 | ✓ | ✓ | android/armeabi-v7a | |
| Android | x86 | ✓ | ✓ | android/x86 | |
| Android | x86_64 | ✓ | ✓ | android/x86_64 | |
| iOS | ARM64 | | ✓ | ios/xxx-iphoneos | iOS Devices |
| iOS | x86_64 | | ✓ | ios/xxx-iphonesimulator | iOS Simulator |
| Linux | x86_64 | ✓ | ✓ | linux/x86_64 | |
| macOS | ARM64 | ✓ | ✓ | macos/arm64 | |
| macOS | x86_64 | ✓ | ✓ | macos/x86_64 | |
| Mac Catalyst | ARM64 | | ✓ | experimental/catalyst | Universal Binary |
| Mac Catalyst | x86_64 | | ✓ | experimental/catalyst | Universal Binary |
| Raspberry Pi | ARM | ✓ | ✓ | experimental/rpi | |
| UWP | ARM | ✓ | | experimental/uwp/arm | |
| UWP | ARM64 | ✓ | | experimental/uwp/arm64 | |
| UWP | x64 | ✓ | | experimental/uwp/x64 | |
| UWP | x86 | ✓ | | experimental/uwp/x86 | |
| Windows | x86 | ✓ | ✓ | windows/x86 | |
| Windows | x86_64 | ✓ | ✓ | windows/x86_64 | |
### Experimental Library
`Raspberry Pi`, `UWP` and `catalyst` are experimental libraries.
### Windows Static Library
Libraries are located under VC++ version name directory.
Below is the Visual Studio version for VC++ version.
| VC++ version | Visual Studio version |
| ---: | --- |
| 120 | Visual Studio 2013 |
| 140 | Visual Studio 2015 |
| 141 | Visual Studio 2017 |
| 142 | Visual Studio 2019 |
Also, the suffix library (`_MD`, `_MDd`, `_MT`, `_MTd`) refers to the
[Use Run-Time Library](https://docs.microsoft.com/en-us/cpp/build/reference/md-mt-ld-use-run-time-library)
option used to compile the library.
### Calling convention
When using dynamic library of *Windows/x86*, explicitly using `__stdcall` as calling convention.

View File

@ -0,0 +1,64 @@
The following is a list of files available for redistribution
under the terms of the Live2D Proprietary Software License Agreement:
- dll/android/arm64-v8a/libLive2DCubismCore.so
- dll/android/armeabi-v7a/libLive2DCubismCore.so
- dll/android/x86/libLive2DCubismCore.so
- dll/android/x86_64/libLive2DCubismCore.so
- dll/experimental/rpi/libLive2DCubismCore.so
- dll/experimental/uwp/arm/Live2DCubismCore.dll
- dll/experimental/uwp/arm64/Live2DCubismCore.dll
- dll/experimental/uwp/x64/Live2DCubismCore.dll
- dll/experimental/uwp/x86/Live2DCubismCore.dll
- dll/linux/x86_64/libLive2DCubismCore.so
- dll/macos/Live2DCubismCore.bundle
- dll/macos/libLive2DCubismCore.dylib
- dll/windows/x86/Live2DCubismCore.dll
- dll/windows/x86/Live2DCubismCore.lib
- dll/windows/x86_64/Live2DCubismCore.dll
- dll/windows/x86_64/Live2DCubismCore.lib
- lib/android/arm64-v8a/libLive2DCubismCore.a
- lib/android/armeabi-v7a/libLive2DCubismCore.a
- lib/android/x86/libLive2DCubismCore.a
- lib/android/x86_64/libLive2DCubismCore.so
- lib/experimental/catalyst/libLive2DCubismCore.a
- lib/experimental/rpi/libLive2DCubismCore.a
- lib/ios/Debug-iphoneos/libLive2DCubismCore.a
- lib/ios/Debug-iphonesimulator/libLive2DCubismCore.a
- lib/ios/Release-iphoneos/libLive2DCubismCore.a
- lib/ios/Release-iphonesimulator/libLive2DCubismCore.a
- lib/linux/x86_64/libLive2DCubismCore.a
- lib/macos/arm64/libLive2DCubismCore.a
- lib/macos/x86_64/libLive2DCubismCore.a
- lib/windows/x86/120/Live2DCubismCore_MD.lib
- lib/windows/x86/120/Live2DCubismCore_MDd.lib
- lib/windows/x86/120/Live2DCubismCore_MT.lib
- lib/windows/x86/120/Live2DCubismCore_MTd.lib
- lib/windows/x86/140/Live2DCubismCore_MD.lib
- lib/windows/x86/140/Live2DCubismCore_MDd.lib
- lib/windows/x86/140/Live2DCubismCore_MT.lib
- lib/windows/x86/140/Live2DCubismCore_MTd.lib
- lib/windows/x86/141/Live2DCubismCore_MD.lib
- lib/windows/x86/141/Live2DCubismCore_MDd.lib
- lib/windows/x86/141/Live2DCubismCore_MT.lib
- lib/windows/x86/141/Live2DCubismCore_MTd.lib
- lib/windows/x86/142/Live2DCubismCore_MD.lib
- lib/windows/x86/142/Live2DCubismCore_MDd.lib
- lib/windows/x86/142/Live2DCubismCore_MT.lib
- lib/windows/x86/142/Live2DCubismCore_MTd.lib
- lib/windows/x86_64/120/Live2DCubismCore_MD.lib
- lib/windows/x86_64/120/Live2DCubismCore_MDd.lib
- lib/windows/x86_64/120/Live2DCubismCore_MT.lib
- lib/windows/x86_64/120/Live2DCubismCore_MTd.lib
- lib/windows/x86_64/140/Live2DCubismCore_MD.lib
- lib/windows/x86_64/140/Live2DCubismCore_MDd.lib
- lib/windows/x86_64/140/Live2DCubismCore_MT.lib
- lib/windows/x86_64/140/Live2DCubismCore_MTd.lib
- lib/windows/x86_64/141/Live2DCubismCore_MD.lib
- lib/windows/x86_64/141/Live2DCubismCore_MDd.lib
- lib/windows/x86_64/141/Live2DCubismCore_MT.lib
- lib/windows/x86_64/141/Live2DCubismCore_MTd.lib
- lib/windows/x86_64/142/Live2DCubismCore_MD.lib
- lib/windows/x86_64/142/Live2DCubismCore_MDd.lib
- lib/windows/x86_64/142/Live2DCubismCore_MT.lib
- lib/windows/x86_64/142/Live2DCubismCore_MTd.lib

View File

@ -0,0 +1,504 @@
/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Proprietary Software license
* that can be found at https://www.live2d.com/eula/live2d-proprietary-software-license-agreement_en.html.
*/
#ifndef LIVE2D_CUBISM_CORE_H
#define LIVE2D_CUBISM_CORE_H
#if defined(__cplusplus)
extern "C"
{
#endif
/* ------- *
* DEFINES *
* ------- */
/** Core API attribute. */
#if !defined(csmApi)
#define csmApi
#endif
/* ----- *
* TYPES *
* ----- */
/** Cubism moc. */
typedef struct csmMoc csmMoc;
/** Cubism model. */
typedef struct csmModel csmModel;
/** Cubism version identifier. */
typedef unsigned int csmVersion;
/** Alignment constraints. */
enum
{
/** Necessary alignment for mocs (in bytes). */
csmAlignofMoc = 64,
/** Necessary alignment for models (in bytes). */
csmAlignofModel = 16
};
/** Bit masks for non-dynamic drawable flags. */
enum
{
/** Additive blend mode mask. */
csmBlendAdditive = 1 << 0,
/** Multiplicative blend mode mask. */
csmBlendMultiplicative = 1 << 1,
/** Double-sidedness mask. */
csmIsDoubleSided = 1 << 2,
/** Clipping mask inversion mode mask. */
csmIsInvertedMask = 1 << 3
};
/** Bit masks for dynamic drawable flags. */
enum
{
/** Flag set when visible. */
csmIsVisible = 1 << 0,
/** Flag set when visibility did change. */
csmVisibilityDidChange = 1 << 1,
/** Flag set when opacity did change. */
csmOpacityDidChange = 1 << 2,
/** Flag set when draw order did change. */
csmDrawOrderDidChange = 1 << 3,
/** Flag set when render order did change. */
csmRenderOrderDidChange = 1 << 4,
/** Flag set when vertex positions did change. */
csmVertexPositionsDidChange = 1 << 5
};
/** Bitfield. */
typedef unsigned char csmFlags;
/** moc3 file format version. */
enum
{
/** unknown */
csmMocVersion_Unknown = 0,
/** moc3 file version 3.0.00 - 3.2.07 */
csmMocVersion_30 = 1,
/** moc3 file version 3.3.00 - 3.3.03 */
csmMocVersion_33 = 2,
/** moc3 file version 4.0.00 - */
csmMocVersion_40 = 3
};
/** moc3 version identifier. */
typedef unsigned int csmMocVersion;
/** 2 component vector. */
typedef struct
{
/** First component. */
float X;
/** Second component. */
float Y;
} csmVector2;
/** Log handler.
*
* @param message Null-terminated string message to log.
*/
typedef void (*csmLogFunction)(const char* message);
#if CSM_CORE_WIN32_DLL
#define csmCallingConvention __stdcall
#else
#define csmCallingConvention
#endif
/* ------- *
* VERSION *
* ------- */
/**
* Queries Core version.
*
* @return Core version.
*/
csmApi csmVersion csmCallingConvention csmGetVersion();
/**
* Gets Moc file supported latest version.
*
* @return csmMocVersion (Moc file latest format version).
*/
csmApi csmMocVersion csmCallingConvention csmGetLatestMocVersion();
/**
* Gets Moc file format version.
*
* @param address Address of moc.
* @param size Size of moc (in bytes).
*
* @return csmMocVersion
*/
csmApi csmMocVersion csmCallingConvention csmGetMocVersion(const void* address, const unsigned int size);
/* ------- *
* LOGGING *
* ------- */
/**
* Queries log handler.
*
* @return Log handler.
*/
csmApi csmLogFunction csmCallingConvention csmGetLogFunction();
/**
* Sets log handler.
*
* @param handler Handler to use.
*/
csmApi void csmCallingConvention csmSetLogFunction(csmLogFunction handler);
/* --- *
* MOC *
* --- */
/**
* Tries to revive a moc from bytes in place.
*
* @param address Address of unrevived moc. The address must be aligned to 'csmAlignofMoc'.
* @param size Size of moc (in bytes).
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi csmMoc* csmCallingConvention csmReviveMocInPlace(void* address, const unsigned int size);
/* ----- *
* MODEL *
* ----- */
/**
* Queries size of a model in bytes.
*
* @param moc Moc to query.
*
* @return Valid size on success; '0' otherwise.
*/
csmApi unsigned int csmCallingConvention csmGetSizeofModel(const csmMoc* moc);
/**
* Tries to instantiate a model in place.
*
* @param moc Source moc.
* @param address Address to place instance at. Address must be aligned to 'csmAlignofModel'.
* @param size Size of memory block for instance (in bytes).
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi csmModel* csmCallingConvention csmInitializeModelInPlace(const csmMoc* moc,
void* address,
const unsigned int size);
/**
* Updates a model.
*
* @param model Model to update.
*/
csmApi void csmCallingConvention csmUpdateModel(csmModel* model);
/* ------ *
* CANVAS *
* ------ */
/**
* Reads info on a model canvas.
*
* @param model Model query.
*
* @param outSizeInPixels Canvas dimensions.
* @param outOriginInPixels Origin of model on canvas.
* @param outPixelsPerUnit Aspect used for scaling pixels to units.
*/
csmApi void csmCallingConvention csmReadCanvasInfo(const csmModel* model,
csmVector2* outSizeInPixels,
csmVector2* outOriginInPixels,
float* outPixelsPerUnit);
/* ---------- *
* PARAMETERS *
* ---------- */
/**
* Gets number of parameters.
*
* @param[in] model Model to query.
*
* @return Valid count on success; '-1' otherwise.
*/
csmApi int csmCallingConvention csmGetParameterCount(const csmModel* model);
/**
* Gets parameter IDs.
* All IDs are null-terminated ANSI strings.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi const char** csmCallingConvention csmGetParameterIds(const csmModel* model);
/**
* Gets minimum parameter values.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi const float* csmCallingConvention csmGetParameterMinimumValues(const csmModel* model);
/**
* Gets maximum parameter values.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi const float* csmCallingConvention csmGetParameterMaximumValues(const csmModel* model);
/**
* Gets default parameter values.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi const float* csmCallingConvention csmGetParameterDefaultValues(const csmModel* model);
/**
* Gets read/write parameter values buffer.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi float* csmCallingConvention csmGetParameterValues(csmModel* model);
/**
* Gets number of key values of each parameter.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi const int* csmCallingConvention csmGetParameterKeyCounts(const csmModel* model);
/**
* Gets key values of each parameter.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi const float** csmCallingConvention csmGetParameterKeyValues(const csmModel* model);
/* ----- *
* PARTS *
* ----- */
/**
* Gets number of parts.
*
* @param model Model to query.
*
* @return Valid count on success; '-1' otherwise.
*/
csmApi int csmCallingConvention csmGetPartCount(const csmModel* model);
/**
* Gets parts IDs.
* All IDs are null-terminated ANSI strings.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi const char** csmCallingConvention csmGetPartIds(const csmModel* model);
/**
* Gets read/write part opacities buffer.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi float* csmCallingConvention csmGetPartOpacities(csmModel* model);
/**
* Gets part's parent part indices.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi const int* csmCallingConvention csmGetPartParentPartIndices(const csmModel* model);
/* --------- *
* DRAWABLES *
* --------- */
/**
* Gets number of drawables.
*
* @param model Model to query.
*
* @return Valid count on success; '-1' otherwise.
*/
csmApi int csmCallingConvention csmGetDrawableCount(const csmModel* model);
/**
* Gets drawable IDs.
* All IDs are null-terminated ANSI strings.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi const char** csmCallingConvention csmGetDrawableIds(const csmModel* model);
/**
* Gets constant drawable flags.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi const csmFlags* csmCallingConvention csmGetDrawableConstantFlags(const csmModel* model);
/**
* Gets dynamic drawable flags.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi const csmFlags* csmCallingConvention csmGetDrawableDynamicFlags(const csmModel* model);
/**
* Gets drawable texture indices.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi const int* csmCallingConvention csmGetDrawableTextureIndices(const csmModel* model);
/**
* Gets drawable draw orders.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi const int* csmCallingConvention csmGetDrawableDrawOrders(const csmModel* model);
/**
* Gets drawable render orders.
* The higher the order, the more up front a drawable is.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0'otherwise.
*/
csmApi const int* csmCallingConvention csmGetDrawableRenderOrders(const csmModel* model);
/**
* Gets drawable opacities.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi const float* csmCallingConvention csmGetDrawableOpacities(const csmModel* model);
/**
* Gets numbers of masks of each drawable.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi const int* csmCallingConvention csmGetDrawableMaskCounts(const csmModel* model);
/**
* Gets mask indices of each drawable.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi const int** csmCallingConvention csmGetDrawableMasks(const csmModel* model);
/**
* Gets number of vertices of each drawable.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi const int* csmCallingConvention csmGetDrawableVertexCounts(const csmModel* model);
/**
* Gets vertex position data of each drawable.
*
* @param model Model to query.
*
* @return Valid pointer on success; a null pointer otherwise.
*/
csmApi const csmVector2** csmCallingConvention csmGetDrawableVertexPositions(const csmModel* model);
/**
* Gets texture coordinate data of each drawables.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi const csmVector2** csmCallingConvention csmGetDrawableVertexUvs(const csmModel* model);
/**
* Gets number of triangle indices for each drawable.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi const int* csmCallingConvention csmGetDrawableIndexCounts(const csmModel* model);
/**
* Gets triangle index data for each drawable.
*
* @param model Model to query.
*
* @return Valid pointer on success; '0' otherwise.
*/
csmApi const unsigned short** csmCallingConvention csmGetDrawableIndices(const csmModel* model);
/**
* Resets all dynamic drawable flags.
*
* @param model Model containing flags.
*/
csmApi void csmCallingConvention csmResetDrawableDynamicFlags(csmModel* model);
#if defined(__cplusplus)
}
#endif
#endif