mirror of
https://github.com/raysan5/raylib.git
synced 2026-02-20 20:49:17 -05:00
[rmodels] Added implementation of UpdateModelAnimationBonesWithBlending() function (#4578)
* [rmodels] Added implementation of `UpdateModelAnimationBonesWithBlending()` function Signed-off-by: Kirandeep-Singh-Khehra <kirandeepsinghkhehra@gmail.com> * [rmodels] Added example for animation blending and fixed wrap issue for blend factor Signed-off-by: Kirandeep-Singh-Khehra <kirandeepsinghkhehra@gmail.com> * [rmodels] Updated build information for animation blending example Signed-off-by: Kirandeep-Singh-Khehra <kirandeepsinghkhehra@gmail.com> * [rmodels] Fixed typos in anmation blending example Signed-off-by: Kirandeep-Singh-Khehra <kirandeepsinghkhehra@gmail.com> * [rmodels] Updated blend function signature and added function to update verts from bones Signed-off-by: Kirandeep-Singh-Khehra <kirandeepsinghkhehra@gmail.com> * [rmodels] Updated documentation Signed-off-by: Kirandeep-Singh-Khehra <kirandeepsinghkhehra@gmail.com> * rlparser: update raylib_api.* by CI * rlparser: update raylib_api.* by CI --------- Signed-off-by: Kirandeep-Singh-Khehra <kirandeepsinghkhehra@gmail.com> Co-authored-by: Ray <raysan5@gmail.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
97023def48
commit
0e6cb0993d
152
examples/models/models_animation_blending.c
Normal file
152
examples/models/models_animation_blending.c
Normal file
@ -0,0 +1,152 @@
|
||||
/*******************************************************************************************
|
||||
*
|
||||
* raylib [core] example - Model animation blending
|
||||
*
|
||||
* Example originally created with raylib 5.5
|
||||
*
|
||||
* Example contributed by Kirandeep (@Kirandeep-Singh-Khehra)
|
||||
*
|
||||
* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified,
|
||||
* BSD-like license that allows static linking with closed source software
|
||||
*
|
||||
* Copyright (c) 2024 Kirandeep (@Kirandeep-Singh-Khehra)
|
||||
*
|
||||
* Note: Due to limitations in the Apple OpenGL driver, this feature does not work on MacOS
|
||||
* Note: This example uses CPU for updating meshes.
|
||||
* For GPU skinning see comments with 'INFO:'.
|
||||
*
|
||||
********************************************************************************************/
|
||||
|
||||
#include "raylib.h"
|
||||
|
||||
#define clamp(x,a,b) ((x < a)? a : (x > b)? b : x)
|
||||
|
||||
#if defined(PLATFORM_DESKTOP)
|
||||
#define GLSL_VERSION 330
|
||||
#else // PLATFORM_ANDROID, PLATFORM_WEB
|
||||
#define GLSL_VERSION 100
|
||||
#endif
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
// Program main entry point
|
||||
//------------------------------------------------------------------------------------
|
||||
int main(void)
|
||||
{
|
||||
// Initialization
|
||||
//--------------------------------------------------------------------------------------
|
||||
const int screenWidth = 800;
|
||||
const int screenHeight = 450;
|
||||
|
||||
InitWindow(screenWidth, screenHeight, "raylib [models] example - Model Animation Blending");
|
||||
|
||||
// Define the camera to look into our 3d world
|
||||
Camera camera = { 0 };
|
||||
camera.position = (Vector3){ 8.0f, 8.0f, 8.0f }; // Camera position
|
||||
camera.target = (Vector3){ 0.0f, 2.0f, 0.0f }; // Camera looking at point
|
||||
camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target)
|
||||
camera.fovy = 45.0f; // Camera field-of-view Y
|
||||
camera.projection = CAMERA_PERSPECTIVE; // Camera projection type
|
||||
|
||||
// Load gltf model
|
||||
Model characterModel = LoadModel("resources/models/gltf/robot.glb"); // Load character model
|
||||
|
||||
/* INFO: Uncomment this to use GPU skinning
|
||||
// Load skinning shader
|
||||
Shader skinningShader = LoadShader(TextFormat("resources/shaders/glsl%i/skinning.vs", GLSL_VERSION),
|
||||
TextFormat("resources/shaders/glsl%i/skinning.fs", GLSL_VERSION));
|
||||
|
||||
for (int i = 0; i < characterModel.materialCount; i++)
|
||||
{
|
||||
characterModel.materials[i].shader = skinningShader;
|
||||
}
|
||||
*/
|
||||
|
||||
// Load gltf model animations
|
||||
int animsCount = 0;
|
||||
unsigned int animIndex0 = 0;
|
||||
unsigned int animIndex1 = 0;
|
||||
unsigned int animCurrentFrame = 0;
|
||||
ModelAnimation *modelAnimations = LoadModelAnimations("resources/models/gltf/robot.glb", &animsCount);
|
||||
|
||||
float blendFactor = 0.5f;
|
||||
|
||||
DisableCursor(); // Limit cursor to relative movement inside the window
|
||||
|
||||
SetTargetFPS(60); // Set our game to run at 60 frames-per-second
|
||||
//--------------------------------------------------------------------------------------
|
||||
|
||||
// Main game loop
|
||||
while (!WindowShouldClose()) // Detect window close button or ESC key
|
||||
{
|
||||
// Update
|
||||
//----------------------------------------------------------------------------------
|
||||
UpdateCamera(&camera, CAMERA_THIRD_PERSON);
|
||||
|
||||
// Select current animation
|
||||
if (IsKeyPressed(KEY_T)) animIndex0 = (animIndex0 + 1)%animsCount;
|
||||
else if (IsKeyPressed(KEY_G)) animIndex0 = (animIndex0 + animsCount - 1)%animsCount;
|
||||
if (IsKeyPressed(KEY_Y)) animIndex1 = (animIndex1 + 1)%animsCount;
|
||||
else if (IsKeyPressed(KEY_H)) animIndex1 = (animIndex1 + animsCount - 1)%animsCount;
|
||||
|
||||
// Select blend factor
|
||||
if (IsKeyPressed(KEY_U)) blendFactor = clamp(blendFactor - 0.1, 0.0f, 1.0f);
|
||||
else if (IsKeyPressed(KEY_J)) blendFactor = clamp(blendFactor + 0.1, 0.0f, 1.0f);
|
||||
|
||||
// Update animation
|
||||
animCurrentFrame++;
|
||||
|
||||
// Update bones
|
||||
// Note: Same animation frame index is used below. By default it loops both animations
|
||||
UpdateModelAnimationBonesLerp(characterModel, modelAnimations[animIndex0], animCurrentFrame, modelAnimations[animIndex1], animCurrentFrame, blendFactor);
|
||||
|
||||
// INFO: Comment the following line to use GPU skinning
|
||||
UpdateModelVertsToCurrentBones(characterModel);
|
||||
//----------------------------------------------------------------------------------
|
||||
|
||||
// Draw
|
||||
//----------------------------------------------------------------------------------
|
||||
BeginDrawing();
|
||||
|
||||
ClearBackground(RAYWHITE);
|
||||
|
||||
BeginMode3D(camera);
|
||||
|
||||
/* INFO: Uncomment this to use GPU skinning
|
||||
// Draw character mesh, pose calculation is done in shader (GPU skinning)
|
||||
for (int i = 0; i < characterModel.meshCount; i++)
|
||||
{
|
||||
DrawMesh(characterModel.meshes[i], characterModel.materials[characterModel.meshMaterial[i]], characterModel.transform);
|
||||
}
|
||||
*/
|
||||
|
||||
// INFO: Comment the following line to use GPU skinning
|
||||
DrawModel(characterModel, (Vector3){0.0f, 0.0f, 0.0f}, 1.0f, WHITE);
|
||||
|
||||
|
||||
DrawGrid(10, 1.0f);
|
||||
|
||||
EndMode3D();
|
||||
|
||||
DrawText("Use the U/J to adjust blend factor", 10, 10, 20, GRAY);
|
||||
DrawText("Use the T/G to switch first animation", 10, 30, 20, GRAY);
|
||||
DrawText("Use the Y/H to switch second animation", 10, 50, 20, GRAY);
|
||||
DrawText(TextFormat("Animations: %s, %s", modelAnimations[animIndex0].name, modelAnimations[animIndex1].name), 10, 70, 20, BLACK);
|
||||
DrawText(TextFormat("Blend Factor: %f", blendFactor), 10, 86, 20, BLACK);
|
||||
|
||||
EndDrawing();
|
||||
//----------------------------------------------------------------------------------
|
||||
}
|
||||
|
||||
// De-Initialization
|
||||
//--------------------------------------------------------------------------------------
|
||||
UnloadModelAnimations(modelAnimations, animsCount); // Unload model animation
|
||||
UnloadModel(characterModel); // Unload model and meshes/material
|
||||
|
||||
// INFO: Uncomment the following line to use GPU skinning
|
||||
// UnloadShader(skinningShader); // Unload GPU skinning shader
|
||||
|
||||
CloseWindow(); // Close window and OpenGL context
|
||||
//--------------------------------------------------------------------------------------
|
||||
|
||||
return 0;
|
||||
}
|
||||
BIN
examples/models/models_animation_blending.png
Normal file
BIN
examples/models/models_animation_blending.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
387
projects/VS2022/examples/models_animation_blending.vcxproj
Normal file
387
projects/VS2022/examples/models_animation_blending.vcxproj
Normal file
@ -0,0 +1,387 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug.DLL|Win32">
|
||||
<Configuration>Debug.DLL</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug.DLL|x64">
|
||||
<Configuration>Debug.DLL</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release.DLL|Win32">
|
||||
<Configuration>Release.DLL</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release.DLL|x64">
|
||||
<Configuration>Release.DLL</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{AFDDE100-2D36-4749-817D-12E54C56312F}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>models_animation_blending</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>models_animation_blending</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|Win32'">
|
||||
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\models</LocalDebuggerWorkingDirectory>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|x64'">
|
||||
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\models</LocalDebuggerWorkingDirectory>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\models</LocalDebuggerWorkingDirectory>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\models</LocalDebuggerWorkingDirectory>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|Win32'">
|
||||
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\models</LocalDebuggerWorkingDirectory>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\models</LocalDebuggerWorkingDirectory>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\models</LocalDebuggerWorkingDirectory>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|x64'">
|
||||
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\models</LocalDebuggerWorkingDirectory>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalOptions>/FS %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"</Command>
|
||||
<Message>Copy Debug DLL to output directory</Message>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"</Command>
|
||||
<Message>Copy Debug DLL to output directory</Message>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<RemoveUnreferencedCodeData>true</RemoveUnreferencedCodeData>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<RemoveUnreferencedCodeData>true</RemoveUnreferencedCodeData>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<RemoveUnreferencedCodeData>true</RemoveUnreferencedCodeData>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"</Command>
|
||||
</PostBuildEvent>
|
||||
<PostBuildEvent>
|
||||
<Message>Copy Release DLL to output directory</Message>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<RemoveUnreferencedCodeData>true</RemoveUnreferencedCodeData>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"</Command>
|
||||
</PostBuildEvent>
|
||||
<PostBuildEvent>
|
||||
<Message>Copy Release DLL to output directory</Message>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\..\examples\models\models_animation_blending.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\raylib\raylib.vcxproj">
|
||||
<Project>{e89d61ac-55de-4482-afd4-df7242ebc859}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@ -1621,6 +1621,8 @@ RLAPI void SetModelMeshMaterial(Model *model, int meshId, int materialId);
|
||||
RLAPI ModelAnimation *LoadModelAnimations(const char *fileName, int *animCount); // Load model animations from file
|
||||
RLAPI void UpdateModelAnimation(Model model, ModelAnimation anim, int frame); // Update model animation pose (CPU)
|
||||
RLAPI void UpdateModelAnimationBones(Model model, ModelAnimation anim, int frame); // Update model animation mesh bone matrices (GPU skinning)
|
||||
RLAPI void UpdateModelAnimationBonesLerp(Model model, ModelAnimation animA, int frameA, ModelAnimation animB, int frameB, float value); // Update model animation mesh bone matrices with interpolation between two poses(GPU skinning)
|
||||
RLAPI void UpdateModelVertsToCurrentBones(Model model); // Update model vertices according to mesh bone matrices (CPU)
|
||||
RLAPI void UnloadModelAnimation(ModelAnimation anim); // Unload animation data
|
||||
RLAPI void UnloadModelAnimations(ModelAnimation *animations, int animCount); // Unload animation array data
|
||||
RLAPI bool IsModelAnimationValid(Model model, ModelAnimation anim); // Check model animation skeleton match
|
||||
|
||||
@ -2346,12 +2346,70 @@ void UpdateModelAnimationBones(Model model, ModelAnimation anim, int frame)
|
||||
}
|
||||
}
|
||||
|
||||
// at least 2x speed up vs the old method
|
||||
// Update model animated vertex data (positions and normals) for a given frame
|
||||
// NOTE: Updated data is uploaded to GPU
|
||||
void UpdateModelAnimation(Model model, ModelAnimation anim, int frame)
|
||||
// Update model animated bones transform matrices by interpolating between two different given frames of different ModelAnimation(could be same too)
|
||||
// NOTE: Updated data is not uploaded to GPU but kept at model.meshes[i].boneMatrices[boneId],
|
||||
// to be uploaded to shader at drawing, in case GPU skinning is enabled
|
||||
void UpdateModelAnimationBonesLerp(Model model, ModelAnimation animA, int frameA, ModelAnimation animB, int frameB, float value)
|
||||
{
|
||||
UpdateModelAnimationBones(model,anim,frame);
|
||||
if ((animA.frameCount > 0) && (animA.bones != NULL) && (animA.framePoses != NULL) &&
|
||||
(animB.frameCount > 0) && (animB.bones != NULL) && (animB.framePoses != NULL) &&
|
||||
(value >= 0.0f) && (value <= 1.0f))
|
||||
{
|
||||
frameA = frameA % animA.frameCount;
|
||||
frameB = frameB % animB.frameCount;
|
||||
|
||||
for (int i = 0; i < model.meshCount; i++)
|
||||
{
|
||||
if (model.meshes[i].boneMatrices)
|
||||
{
|
||||
assert(model.meshes[i].boneCount == animA.boneCount);
|
||||
assert(model.meshes[i].boneCount == animB.boneCount);
|
||||
|
||||
for (int boneId = 0; boneId < model.meshes[i].boneCount; boneId++)
|
||||
{
|
||||
Vector3 inTranslation = model.bindPose[boneId].translation;
|
||||
Quaternion inRotation = model.bindPose[boneId].rotation;
|
||||
Vector3 inScale = model.bindPose[boneId].scale;
|
||||
|
||||
Vector3 outATranslation = animA.framePoses[frameA][boneId].translation;
|
||||
Quaternion outARotation = animA.framePoses[frameA][boneId].rotation;
|
||||
Vector3 outAScale = animA.framePoses[frameA][boneId].scale;
|
||||
|
||||
Vector3 outBTranslation = animB.framePoses[frameB][boneId].translation;
|
||||
Quaternion outBRotation = animB.framePoses[frameB][boneId].rotation;
|
||||
Vector3 outBScale = animB.framePoses[frameB][boneId].scale;
|
||||
|
||||
Vector3 outTranslation = Vector3Lerp(outATranslation, outBTranslation, value);
|
||||
Quaternion outRotation = QuaternionSlerp(outARotation, outBRotation, value);
|
||||
Vector3 outScale = Vector3Lerp(outAScale, outBScale, value);
|
||||
|
||||
Vector3 invTranslation = Vector3RotateByQuaternion(Vector3Negate(inTranslation), QuaternionInvert(inRotation));
|
||||
Quaternion invRotation = QuaternionInvert(inRotation);
|
||||
Vector3 invScale = Vector3Divide((Vector3){ 1.0f, 1.0f, 1.0f }, inScale);
|
||||
|
||||
Vector3 boneTranslation = Vector3Add(
|
||||
Vector3RotateByQuaternion(Vector3Multiply(outScale, invTranslation),
|
||||
outRotation), outTranslation);
|
||||
Quaternion boneRotation = QuaternionMultiply(outRotation, invRotation);
|
||||
Vector3 boneScale = Vector3Multiply(outScale, invScale);
|
||||
|
||||
Matrix boneMatrix = MatrixMultiply(MatrixMultiply(
|
||||
QuaternionToMatrix(boneRotation),
|
||||
MatrixTranslate(boneTranslation.x, boneTranslation.y, boneTranslation.z)),
|
||||
MatrixScale(boneScale.x, boneScale.y, boneScale.z));
|
||||
|
||||
model.meshes[i].boneMatrices[boneId] = boneMatrix;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Update model vertex data (positions and normals) from mesh bone data
|
||||
// NOTE: Updated data is uploaded to GPU
|
||||
void UpdateModelVertsToCurrentBones(Model model)
|
||||
{
|
||||
//UpdateModelAnimationBones(model, anim, frame); // TODO: Review
|
||||
|
||||
for (int m = 0; m < model.meshCount; m++)
|
||||
{
|
||||
@ -2416,6 +2474,15 @@ void UpdateModelAnimation(Model model, ModelAnimation anim, int frame)
|
||||
}
|
||||
}
|
||||
|
||||
// at least 2x speed up vs the old method
|
||||
// Update model animated vertex data (positions and normals) for a given frame
|
||||
// NOTE: Updated data is uploaded to GPU
|
||||
void UpdateModelAnimation(Model model, ModelAnimation anim, int frame)
|
||||
{
|
||||
UpdateModelAnimationBones(model,anim,frame);
|
||||
UpdateModelVertsToCurrentBones(model);
|
||||
}
|
||||
|
||||
// Unload animation array data
|
||||
void UnloadModelAnimations(ModelAnimation *animations, int animCount)
|
||||
{
|
||||
|
||||
@ -11436,6 +11436,48 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "UpdateModelAnimationBonesLerp",
|
||||
"description": "Update model animation mesh bone matrices with interpolation between two poses(GPU skinning)",
|
||||
"returnType": "void",
|
||||
"params": [
|
||||
{
|
||||
"type": "Model",
|
||||
"name": "model"
|
||||
},
|
||||
{
|
||||
"type": "ModelAnimation",
|
||||
"name": "animA"
|
||||
},
|
||||
{
|
||||
"type": "int",
|
||||
"name": "frameA"
|
||||
},
|
||||
{
|
||||
"type": "ModelAnimation",
|
||||
"name": "animB"
|
||||
},
|
||||
{
|
||||
"type": "int",
|
||||
"name": "frameB"
|
||||
},
|
||||
{
|
||||
"type": "float",
|
||||
"name": "value"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "UpdateModelVertsToCurrentBones",
|
||||
"description": "Update model vertices according to mesh bone matrices (CPU)",
|
||||
"returnType": "void",
|
||||
"params": [
|
||||
{
|
||||
"type": "Model",
|
||||
"name": "model"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "UnloadModelAnimation",
|
||||
"description": "Unload animation data",
|
||||
|
||||
@ -7812,6 +7812,27 @@ return {
|
||||
{type = "int", name = "frame"}
|
||||
}
|
||||
},
|
||||
{
|
||||
name = "UpdateModelAnimationBonesLerp",
|
||||
description = "Update model animation mesh bone matrices with interpolation between two poses(GPU skinning)",
|
||||
returnType = "void",
|
||||
params = {
|
||||
{type = "Model", name = "model"},
|
||||
{type = "ModelAnimation", name = "animA"},
|
||||
{type = "int", name = "frameA"},
|
||||
{type = "ModelAnimation", name = "animB"},
|
||||
{type = "int", name = "frameB"},
|
||||
{type = "float", name = "value"}
|
||||
}
|
||||
},
|
||||
{
|
||||
name = "UpdateModelVertsToCurrentBones",
|
||||
description = "Update model vertices according to mesh bone matrices (CPU)",
|
||||
returnType = "void",
|
||||
params = {
|
||||
{type = "Model", name = "model"}
|
||||
}
|
||||
},
|
||||
{
|
||||
name = "UnloadModelAnimation",
|
||||
description = "Unload animation data",
|
||||
|
||||
@ -992,7 +992,7 @@ Callback 006: AudioCallback() (2 input parameters)
|
||||
Param[1]: bufferData (type: void *)
|
||||
Param[2]: frames (type: unsigned int)
|
||||
|
||||
Functions found: 599
|
||||
Functions found: 601
|
||||
|
||||
Function 001: InitWindow() (3 input parameters)
|
||||
Name: InitWindow
|
||||
@ -4354,24 +4354,39 @@ Function 522: UpdateModelAnimationBones() (3 input parameters)
|
||||
Param[1]: model (type: Model)
|
||||
Param[2]: anim (type: ModelAnimation)
|
||||
Param[3]: frame (type: int)
|
||||
Function 523: UnloadModelAnimation() (1 input parameters)
|
||||
Function 523: UpdateModelAnimationBonesLerp() (6 input parameters)
|
||||
Name: UpdateModelAnimationBonesLerp
|
||||
Return type: void
|
||||
Description: Update model animation mesh bone matrices with interpolation between two poses(GPU skinning)
|
||||
Param[1]: model (type: Model)
|
||||
Param[2]: animA (type: ModelAnimation)
|
||||
Param[3]: frameA (type: int)
|
||||
Param[4]: animB (type: ModelAnimation)
|
||||
Param[5]: frameB (type: int)
|
||||
Param[6]: value (type: float)
|
||||
Function 524: UpdateModelVertsToCurrentBones() (1 input parameters)
|
||||
Name: UpdateModelVertsToCurrentBones
|
||||
Return type: void
|
||||
Description: Update model vertices according to mesh bone matrices (CPU)
|
||||
Param[1]: model (type: Model)
|
||||
Function 525: UnloadModelAnimation() (1 input parameters)
|
||||
Name: UnloadModelAnimation
|
||||
Return type: void
|
||||
Description: Unload animation data
|
||||
Param[1]: anim (type: ModelAnimation)
|
||||
Function 524: UnloadModelAnimations() (2 input parameters)
|
||||
Function 526: UnloadModelAnimations() (2 input parameters)
|
||||
Name: UnloadModelAnimations
|
||||
Return type: void
|
||||
Description: Unload animation array data
|
||||
Param[1]: animations (type: ModelAnimation *)
|
||||
Param[2]: animCount (type: int)
|
||||
Function 525: IsModelAnimationValid() (2 input parameters)
|
||||
Function 527: IsModelAnimationValid() (2 input parameters)
|
||||
Name: IsModelAnimationValid
|
||||
Return type: bool
|
||||
Description: Check model animation skeleton match
|
||||
Param[1]: model (type: Model)
|
||||
Param[2]: anim (type: ModelAnimation)
|
||||
Function 526: CheckCollisionSpheres() (4 input parameters)
|
||||
Function 528: CheckCollisionSpheres() (4 input parameters)
|
||||
Name: CheckCollisionSpheres
|
||||
Return type: bool
|
||||
Description: Check collision between two spheres
|
||||
@ -4379,40 +4394,40 @@ Function 526: CheckCollisionSpheres() (4 input parameters)
|
||||
Param[2]: radius1 (type: float)
|
||||
Param[3]: center2 (type: Vector3)
|
||||
Param[4]: radius2 (type: float)
|
||||
Function 527: CheckCollisionBoxes() (2 input parameters)
|
||||
Function 529: CheckCollisionBoxes() (2 input parameters)
|
||||
Name: CheckCollisionBoxes
|
||||
Return type: bool
|
||||
Description: Check collision between two bounding boxes
|
||||
Param[1]: box1 (type: BoundingBox)
|
||||
Param[2]: box2 (type: BoundingBox)
|
||||
Function 528: CheckCollisionBoxSphere() (3 input parameters)
|
||||
Function 530: CheckCollisionBoxSphere() (3 input parameters)
|
||||
Name: CheckCollisionBoxSphere
|
||||
Return type: bool
|
||||
Description: Check collision between box and sphere
|
||||
Param[1]: box (type: BoundingBox)
|
||||
Param[2]: center (type: Vector3)
|
||||
Param[3]: radius (type: float)
|
||||
Function 529: GetRayCollisionSphere() (3 input parameters)
|
||||
Function 531: GetRayCollisionSphere() (3 input parameters)
|
||||
Name: GetRayCollisionSphere
|
||||
Return type: RayCollision
|
||||
Description: Get collision info between ray and sphere
|
||||
Param[1]: ray (type: Ray)
|
||||
Param[2]: center (type: Vector3)
|
||||
Param[3]: radius (type: float)
|
||||
Function 530: GetRayCollisionBox() (2 input parameters)
|
||||
Function 532: GetRayCollisionBox() (2 input parameters)
|
||||
Name: GetRayCollisionBox
|
||||
Return type: RayCollision
|
||||
Description: Get collision info between ray and box
|
||||
Param[1]: ray (type: Ray)
|
||||
Param[2]: box (type: BoundingBox)
|
||||
Function 531: GetRayCollisionMesh() (3 input parameters)
|
||||
Function 533: GetRayCollisionMesh() (3 input parameters)
|
||||
Name: GetRayCollisionMesh
|
||||
Return type: RayCollision
|
||||
Description: Get collision info between ray and mesh
|
||||
Param[1]: ray (type: Ray)
|
||||
Param[2]: mesh (type: Mesh)
|
||||
Param[3]: transform (type: Matrix)
|
||||
Function 532: GetRayCollisionTriangle() (4 input parameters)
|
||||
Function 534: GetRayCollisionTriangle() (4 input parameters)
|
||||
Name: GetRayCollisionTriangle
|
||||
Return type: RayCollision
|
||||
Description: Get collision info between ray and triangle
|
||||
@ -4420,7 +4435,7 @@ Function 532: GetRayCollisionTriangle() (4 input parameters)
|
||||
Param[2]: p1 (type: Vector3)
|
||||
Param[3]: p2 (type: Vector3)
|
||||
Param[4]: p3 (type: Vector3)
|
||||
Function 533: GetRayCollisionQuad() (5 input parameters)
|
||||
Function 535: GetRayCollisionQuad() (5 input parameters)
|
||||
Name: GetRayCollisionQuad
|
||||
Return type: RayCollision
|
||||
Description: Get collision info between ray and quad
|
||||
@ -4429,158 +4444,158 @@ Function 533: GetRayCollisionQuad() (5 input parameters)
|
||||
Param[3]: p2 (type: Vector3)
|
||||
Param[4]: p3 (type: Vector3)
|
||||
Param[5]: p4 (type: Vector3)
|
||||
Function 534: InitAudioDevice() (0 input parameters)
|
||||
Function 536: InitAudioDevice() (0 input parameters)
|
||||
Name: InitAudioDevice
|
||||
Return type: void
|
||||
Description: Initialize audio device and context
|
||||
No input parameters
|
||||
Function 535: CloseAudioDevice() (0 input parameters)
|
||||
Function 537: CloseAudioDevice() (0 input parameters)
|
||||
Name: CloseAudioDevice
|
||||
Return type: void
|
||||
Description: Close the audio device and context
|
||||
No input parameters
|
||||
Function 536: IsAudioDeviceReady() (0 input parameters)
|
||||
Function 538: IsAudioDeviceReady() (0 input parameters)
|
||||
Name: IsAudioDeviceReady
|
||||
Return type: bool
|
||||
Description: Check if audio device has been initialized successfully
|
||||
No input parameters
|
||||
Function 537: SetMasterVolume() (1 input parameters)
|
||||
Function 539: SetMasterVolume() (1 input parameters)
|
||||
Name: SetMasterVolume
|
||||
Return type: void
|
||||
Description: Set master volume (listener)
|
||||
Param[1]: volume (type: float)
|
||||
Function 538: GetMasterVolume() (0 input parameters)
|
||||
Function 540: GetMasterVolume() (0 input parameters)
|
||||
Name: GetMasterVolume
|
||||
Return type: float
|
||||
Description: Get master volume (listener)
|
||||
No input parameters
|
||||
Function 539: LoadWave() (1 input parameters)
|
||||
Function 541: LoadWave() (1 input parameters)
|
||||
Name: LoadWave
|
||||
Return type: Wave
|
||||
Description: Load wave data from file
|
||||
Param[1]: fileName (type: const char *)
|
||||
Function 540: LoadWaveFromMemory() (3 input parameters)
|
||||
Function 542: LoadWaveFromMemory() (3 input parameters)
|
||||
Name: LoadWaveFromMemory
|
||||
Return type: Wave
|
||||
Description: Load wave from memory buffer, fileType refers to extension: i.e. '.wav'
|
||||
Param[1]: fileType (type: const char *)
|
||||
Param[2]: fileData (type: const unsigned char *)
|
||||
Param[3]: dataSize (type: int)
|
||||
Function 541: IsWaveValid() (1 input parameters)
|
||||
Function 543: IsWaveValid() (1 input parameters)
|
||||
Name: IsWaveValid
|
||||
Return type: bool
|
||||
Description: Checks if wave data is valid (data loaded and parameters)
|
||||
Param[1]: wave (type: Wave)
|
||||
Function 542: LoadSound() (1 input parameters)
|
||||
Function 544: LoadSound() (1 input parameters)
|
||||
Name: LoadSound
|
||||
Return type: Sound
|
||||
Description: Load sound from file
|
||||
Param[1]: fileName (type: const char *)
|
||||
Function 543: LoadSoundFromWave() (1 input parameters)
|
||||
Function 545: LoadSoundFromWave() (1 input parameters)
|
||||
Name: LoadSoundFromWave
|
||||
Return type: Sound
|
||||
Description: Load sound from wave data
|
||||
Param[1]: wave (type: Wave)
|
||||
Function 544: LoadSoundAlias() (1 input parameters)
|
||||
Function 546: LoadSoundAlias() (1 input parameters)
|
||||
Name: LoadSoundAlias
|
||||
Return type: Sound
|
||||
Description: Create a new sound that shares the same sample data as the source sound, does not own the sound data
|
||||
Param[1]: source (type: Sound)
|
||||
Function 545: IsSoundValid() (1 input parameters)
|
||||
Function 547: IsSoundValid() (1 input parameters)
|
||||
Name: IsSoundValid
|
||||
Return type: bool
|
||||
Description: Checks if a sound is valid (data loaded and buffers initialized)
|
||||
Param[1]: sound (type: Sound)
|
||||
Function 546: UpdateSound() (3 input parameters)
|
||||
Function 548: UpdateSound() (3 input parameters)
|
||||
Name: UpdateSound
|
||||
Return type: void
|
||||
Description: Update sound buffer with new data (default data format: 32 bit float, stereo)
|
||||
Param[1]: sound (type: Sound)
|
||||
Param[2]: data (type: const void *)
|
||||
Param[3]: sampleCount (type: int)
|
||||
Function 547: UnloadWave() (1 input parameters)
|
||||
Function 549: UnloadWave() (1 input parameters)
|
||||
Name: UnloadWave
|
||||
Return type: void
|
||||
Description: Unload wave data
|
||||
Param[1]: wave (type: Wave)
|
||||
Function 548: UnloadSound() (1 input parameters)
|
||||
Function 550: UnloadSound() (1 input parameters)
|
||||
Name: UnloadSound
|
||||
Return type: void
|
||||
Description: Unload sound
|
||||
Param[1]: sound (type: Sound)
|
||||
Function 549: UnloadSoundAlias() (1 input parameters)
|
||||
Function 551: UnloadSoundAlias() (1 input parameters)
|
||||
Name: UnloadSoundAlias
|
||||
Return type: void
|
||||
Description: Unload a sound alias (does not deallocate sample data)
|
||||
Param[1]: alias (type: Sound)
|
||||
Function 550: ExportWave() (2 input parameters)
|
||||
Function 552: ExportWave() (2 input parameters)
|
||||
Name: ExportWave
|
||||
Return type: bool
|
||||
Description: Export wave data to file, returns true on success
|
||||
Param[1]: wave (type: Wave)
|
||||
Param[2]: fileName (type: const char *)
|
||||
Function 551: ExportWaveAsCode() (2 input parameters)
|
||||
Function 553: ExportWaveAsCode() (2 input parameters)
|
||||
Name: ExportWaveAsCode
|
||||
Return type: bool
|
||||
Description: Export wave sample data to code (.h), returns true on success
|
||||
Param[1]: wave (type: Wave)
|
||||
Param[2]: fileName (type: const char *)
|
||||
Function 552: PlaySound() (1 input parameters)
|
||||
Function 554: PlaySound() (1 input parameters)
|
||||
Name: PlaySound
|
||||
Return type: void
|
||||
Description: Play a sound
|
||||
Param[1]: sound (type: Sound)
|
||||
Function 553: StopSound() (1 input parameters)
|
||||
Function 555: StopSound() (1 input parameters)
|
||||
Name: StopSound
|
||||
Return type: void
|
||||
Description: Stop playing a sound
|
||||
Param[1]: sound (type: Sound)
|
||||
Function 554: PauseSound() (1 input parameters)
|
||||
Function 556: PauseSound() (1 input parameters)
|
||||
Name: PauseSound
|
||||
Return type: void
|
||||
Description: Pause a sound
|
||||
Param[1]: sound (type: Sound)
|
||||
Function 555: ResumeSound() (1 input parameters)
|
||||
Function 557: ResumeSound() (1 input parameters)
|
||||
Name: ResumeSound
|
||||
Return type: void
|
||||
Description: Resume a paused sound
|
||||
Param[1]: sound (type: Sound)
|
||||
Function 556: IsSoundPlaying() (1 input parameters)
|
||||
Function 558: IsSoundPlaying() (1 input parameters)
|
||||
Name: IsSoundPlaying
|
||||
Return type: bool
|
||||
Description: Check if a sound is currently playing
|
||||
Param[1]: sound (type: Sound)
|
||||
Function 557: SetSoundVolume() (2 input parameters)
|
||||
Function 559: SetSoundVolume() (2 input parameters)
|
||||
Name: SetSoundVolume
|
||||
Return type: void
|
||||
Description: Set volume for a sound (1.0 is max level)
|
||||
Param[1]: sound (type: Sound)
|
||||
Param[2]: volume (type: float)
|
||||
Function 558: SetSoundPitch() (2 input parameters)
|
||||
Function 560: SetSoundPitch() (2 input parameters)
|
||||
Name: SetSoundPitch
|
||||
Return type: void
|
||||
Description: Set pitch for a sound (1.0 is base level)
|
||||
Param[1]: sound (type: Sound)
|
||||
Param[2]: pitch (type: float)
|
||||
Function 559: SetSoundPan() (2 input parameters)
|
||||
Function 561: SetSoundPan() (2 input parameters)
|
||||
Name: SetSoundPan
|
||||
Return type: void
|
||||
Description: Set pan for a sound (-1.0 left, 0.0 center, 1.0 right)
|
||||
Param[1]: sound (type: Sound)
|
||||
Param[2]: pan (type: float)
|
||||
Function 560: WaveCopy() (1 input parameters)
|
||||
Function 562: WaveCopy() (1 input parameters)
|
||||
Name: WaveCopy
|
||||
Return type: Wave
|
||||
Description: Copy a wave to a new wave
|
||||
Param[1]: wave (type: Wave)
|
||||
Function 561: WaveCrop() (3 input parameters)
|
||||
Function 563: WaveCrop() (3 input parameters)
|
||||
Name: WaveCrop
|
||||
Return type: void
|
||||
Description: Crop a wave to defined frames range
|
||||
Param[1]: wave (type: Wave *)
|
||||
Param[2]: initFrame (type: int)
|
||||
Param[3]: finalFrame (type: int)
|
||||
Function 562: WaveFormat() (4 input parameters)
|
||||
Function 564: WaveFormat() (4 input parameters)
|
||||
Name: WaveFormat
|
||||
Return type: void
|
||||
Description: Convert wave data to desired format
|
||||
@ -4588,203 +4603,203 @@ Function 562: WaveFormat() (4 input parameters)
|
||||
Param[2]: sampleRate (type: int)
|
||||
Param[3]: sampleSize (type: int)
|
||||
Param[4]: channels (type: int)
|
||||
Function 563: LoadWaveSamples() (1 input parameters)
|
||||
Function 565: LoadWaveSamples() (1 input parameters)
|
||||
Name: LoadWaveSamples
|
||||
Return type: float *
|
||||
Description: Load samples data from wave as a 32bit float data array
|
||||
Param[1]: wave (type: Wave)
|
||||
Function 564: UnloadWaveSamples() (1 input parameters)
|
||||
Function 566: UnloadWaveSamples() (1 input parameters)
|
||||
Name: UnloadWaveSamples
|
||||
Return type: void
|
||||
Description: Unload samples data loaded with LoadWaveSamples()
|
||||
Param[1]: samples (type: float *)
|
||||
Function 565: LoadMusicStream() (1 input parameters)
|
||||
Function 567: LoadMusicStream() (1 input parameters)
|
||||
Name: LoadMusicStream
|
||||
Return type: Music
|
||||
Description: Load music stream from file
|
||||
Param[1]: fileName (type: const char *)
|
||||
Function 566: LoadMusicStreamFromMemory() (3 input parameters)
|
||||
Function 568: LoadMusicStreamFromMemory() (3 input parameters)
|
||||
Name: LoadMusicStreamFromMemory
|
||||
Return type: Music
|
||||
Description: Load music stream from data
|
||||
Param[1]: fileType (type: const char *)
|
||||
Param[2]: data (type: const unsigned char *)
|
||||
Param[3]: dataSize (type: int)
|
||||
Function 567: IsMusicValid() (1 input parameters)
|
||||
Function 569: IsMusicValid() (1 input parameters)
|
||||
Name: IsMusicValid
|
||||
Return type: bool
|
||||
Description: Checks if a music stream is valid (context and buffers initialized)
|
||||
Param[1]: music (type: Music)
|
||||
Function 568: UnloadMusicStream() (1 input parameters)
|
||||
Function 570: UnloadMusicStream() (1 input parameters)
|
||||
Name: UnloadMusicStream
|
||||
Return type: void
|
||||
Description: Unload music stream
|
||||
Param[1]: music (type: Music)
|
||||
Function 569: PlayMusicStream() (1 input parameters)
|
||||
Function 571: PlayMusicStream() (1 input parameters)
|
||||
Name: PlayMusicStream
|
||||
Return type: void
|
||||
Description: Start music playing
|
||||
Param[1]: music (type: Music)
|
||||
Function 570: IsMusicStreamPlaying() (1 input parameters)
|
||||
Function 572: IsMusicStreamPlaying() (1 input parameters)
|
||||
Name: IsMusicStreamPlaying
|
||||
Return type: bool
|
||||
Description: Check if music is playing
|
||||
Param[1]: music (type: Music)
|
||||
Function 571: UpdateMusicStream() (1 input parameters)
|
||||
Function 573: UpdateMusicStream() (1 input parameters)
|
||||
Name: UpdateMusicStream
|
||||
Return type: void
|
||||
Description: Updates buffers for music streaming
|
||||
Param[1]: music (type: Music)
|
||||
Function 572: StopMusicStream() (1 input parameters)
|
||||
Function 574: StopMusicStream() (1 input parameters)
|
||||
Name: StopMusicStream
|
||||
Return type: void
|
||||
Description: Stop music playing
|
||||
Param[1]: music (type: Music)
|
||||
Function 573: PauseMusicStream() (1 input parameters)
|
||||
Function 575: PauseMusicStream() (1 input parameters)
|
||||
Name: PauseMusicStream
|
||||
Return type: void
|
||||
Description: Pause music playing
|
||||
Param[1]: music (type: Music)
|
||||
Function 574: ResumeMusicStream() (1 input parameters)
|
||||
Function 576: ResumeMusicStream() (1 input parameters)
|
||||
Name: ResumeMusicStream
|
||||
Return type: void
|
||||
Description: Resume playing paused music
|
||||
Param[1]: music (type: Music)
|
||||
Function 575: SeekMusicStream() (2 input parameters)
|
||||
Function 577: SeekMusicStream() (2 input parameters)
|
||||
Name: SeekMusicStream
|
||||
Return type: void
|
||||
Description: Seek music to a position (in seconds)
|
||||
Param[1]: music (type: Music)
|
||||
Param[2]: position (type: float)
|
||||
Function 576: SetMusicVolume() (2 input parameters)
|
||||
Function 578: SetMusicVolume() (2 input parameters)
|
||||
Name: SetMusicVolume
|
||||
Return type: void
|
||||
Description: Set volume for music (1.0 is max level)
|
||||
Param[1]: music (type: Music)
|
||||
Param[2]: volume (type: float)
|
||||
Function 577: SetMusicPitch() (2 input parameters)
|
||||
Function 579: SetMusicPitch() (2 input parameters)
|
||||
Name: SetMusicPitch
|
||||
Return type: void
|
||||
Description: Set pitch for a music (1.0 is base level)
|
||||
Param[1]: music (type: Music)
|
||||
Param[2]: pitch (type: float)
|
||||
Function 578: SetMusicPan() (2 input parameters)
|
||||
Function 580: SetMusicPan() (2 input parameters)
|
||||
Name: SetMusicPan
|
||||
Return type: void
|
||||
Description: Set pan for a music (-1.0 left, 0.0 center, 1.0 right)
|
||||
Param[1]: music (type: Music)
|
||||
Param[2]: pan (type: float)
|
||||
Function 579: GetMusicTimeLength() (1 input parameters)
|
||||
Function 581: GetMusicTimeLength() (1 input parameters)
|
||||
Name: GetMusicTimeLength
|
||||
Return type: float
|
||||
Description: Get music time length (in seconds)
|
||||
Param[1]: music (type: Music)
|
||||
Function 580: GetMusicTimePlayed() (1 input parameters)
|
||||
Function 582: GetMusicTimePlayed() (1 input parameters)
|
||||
Name: GetMusicTimePlayed
|
||||
Return type: float
|
||||
Description: Get current music time played (in seconds)
|
||||
Param[1]: music (type: Music)
|
||||
Function 581: LoadAudioStream() (3 input parameters)
|
||||
Function 583: LoadAudioStream() (3 input parameters)
|
||||
Name: LoadAudioStream
|
||||
Return type: AudioStream
|
||||
Description: Load audio stream (to stream raw audio pcm data)
|
||||
Param[1]: sampleRate (type: unsigned int)
|
||||
Param[2]: sampleSize (type: unsigned int)
|
||||
Param[3]: channels (type: unsigned int)
|
||||
Function 582: IsAudioStreamValid() (1 input parameters)
|
||||
Function 584: IsAudioStreamValid() (1 input parameters)
|
||||
Name: IsAudioStreamValid
|
||||
Return type: bool
|
||||
Description: Checks if an audio stream is valid (buffers initialized)
|
||||
Param[1]: stream (type: AudioStream)
|
||||
Function 583: UnloadAudioStream() (1 input parameters)
|
||||
Function 585: UnloadAudioStream() (1 input parameters)
|
||||
Name: UnloadAudioStream
|
||||
Return type: void
|
||||
Description: Unload audio stream and free memory
|
||||
Param[1]: stream (type: AudioStream)
|
||||
Function 584: UpdateAudioStream() (3 input parameters)
|
||||
Function 586: UpdateAudioStream() (3 input parameters)
|
||||
Name: UpdateAudioStream
|
||||
Return type: void
|
||||
Description: Update audio stream buffers with data
|
||||
Param[1]: stream (type: AudioStream)
|
||||
Param[2]: data (type: const void *)
|
||||
Param[3]: frameCount (type: int)
|
||||
Function 585: IsAudioStreamProcessed() (1 input parameters)
|
||||
Function 587: IsAudioStreamProcessed() (1 input parameters)
|
||||
Name: IsAudioStreamProcessed
|
||||
Return type: bool
|
||||
Description: Check if any audio stream buffers requires refill
|
||||
Param[1]: stream (type: AudioStream)
|
||||
Function 586: PlayAudioStream() (1 input parameters)
|
||||
Function 588: PlayAudioStream() (1 input parameters)
|
||||
Name: PlayAudioStream
|
||||
Return type: void
|
||||
Description: Play audio stream
|
||||
Param[1]: stream (type: AudioStream)
|
||||
Function 587: PauseAudioStream() (1 input parameters)
|
||||
Function 589: PauseAudioStream() (1 input parameters)
|
||||
Name: PauseAudioStream
|
||||
Return type: void
|
||||
Description: Pause audio stream
|
||||
Param[1]: stream (type: AudioStream)
|
||||
Function 588: ResumeAudioStream() (1 input parameters)
|
||||
Function 590: ResumeAudioStream() (1 input parameters)
|
||||
Name: ResumeAudioStream
|
||||
Return type: void
|
||||
Description: Resume audio stream
|
||||
Param[1]: stream (type: AudioStream)
|
||||
Function 589: IsAudioStreamPlaying() (1 input parameters)
|
||||
Function 591: IsAudioStreamPlaying() (1 input parameters)
|
||||
Name: IsAudioStreamPlaying
|
||||
Return type: bool
|
||||
Description: Check if audio stream is playing
|
||||
Param[1]: stream (type: AudioStream)
|
||||
Function 590: StopAudioStream() (1 input parameters)
|
||||
Function 592: StopAudioStream() (1 input parameters)
|
||||
Name: StopAudioStream
|
||||
Return type: void
|
||||
Description: Stop audio stream
|
||||
Param[1]: stream (type: AudioStream)
|
||||
Function 591: SetAudioStreamVolume() (2 input parameters)
|
||||
Function 593: SetAudioStreamVolume() (2 input parameters)
|
||||
Name: SetAudioStreamVolume
|
||||
Return type: void
|
||||
Description: Set volume for audio stream (1.0 is max level)
|
||||
Param[1]: stream (type: AudioStream)
|
||||
Param[2]: volume (type: float)
|
||||
Function 592: SetAudioStreamPitch() (2 input parameters)
|
||||
Function 594: SetAudioStreamPitch() (2 input parameters)
|
||||
Name: SetAudioStreamPitch
|
||||
Return type: void
|
||||
Description: Set pitch for audio stream (1.0 is base level)
|
||||
Param[1]: stream (type: AudioStream)
|
||||
Param[2]: pitch (type: float)
|
||||
Function 593: SetAudioStreamPan() (2 input parameters)
|
||||
Function 595: SetAudioStreamPan() (2 input parameters)
|
||||
Name: SetAudioStreamPan
|
||||
Return type: void
|
||||
Description: Set pan for audio stream (0.5 is centered)
|
||||
Param[1]: stream (type: AudioStream)
|
||||
Param[2]: pan (type: float)
|
||||
Function 594: SetAudioStreamBufferSizeDefault() (1 input parameters)
|
||||
Function 596: SetAudioStreamBufferSizeDefault() (1 input parameters)
|
||||
Name: SetAudioStreamBufferSizeDefault
|
||||
Return type: void
|
||||
Description: Default size for new audio streams
|
||||
Param[1]: size (type: int)
|
||||
Function 595: SetAudioStreamCallback() (2 input parameters)
|
||||
Function 597: SetAudioStreamCallback() (2 input parameters)
|
||||
Name: SetAudioStreamCallback
|
||||
Return type: void
|
||||
Description: Audio thread callback to request new data
|
||||
Param[1]: stream (type: AudioStream)
|
||||
Param[2]: callback (type: AudioCallback)
|
||||
Function 596: AttachAudioStreamProcessor() (2 input parameters)
|
||||
Function 598: AttachAudioStreamProcessor() (2 input parameters)
|
||||
Name: AttachAudioStreamProcessor
|
||||
Return type: void
|
||||
Description: Attach audio stream processor to stream, receives frames x 2 samples as 'float' (stereo)
|
||||
Param[1]: stream (type: AudioStream)
|
||||
Param[2]: processor (type: AudioCallback)
|
||||
Function 597: DetachAudioStreamProcessor() (2 input parameters)
|
||||
Function 599: DetachAudioStreamProcessor() (2 input parameters)
|
||||
Name: DetachAudioStreamProcessor
|
||||
Return type: void
|
||||
Description: Detach audio stream processor from stream
|
||||
Param[1]: stream (type: AudioStream)
|
||||
Param[2]: processor (type: AudioCallback)
|
||||
Function 598: AttachAudioMixedProcessor() (1 input parameters)
|
||||
Function 600: AttachAudioMixedProcessor() (1 input parameters)
|
||||
Name: AttachAudioMixedProcessor
|
||||
Return type: void
|
||||
Description: Attach audio stream processor to the entire audio pipeline, receives frames x 2 samples as 'float' (stereo)
|
||||
Param[1]: processor (type: AudioCallback)
|
||||
Function 599: DetachAudioMixedProcessor() (1 input parameters)
|
||||
Function 601: DetachAudioMixedProcessor() (1 input parameters)
|
||||
Name: DetachAudioMixedProcessor
|
||||
Return type: void
|
||||
Description: Detach audio stream processor from the entire audio pipeline
|
||||
|
||||
@ -678,7 +678,7 @@
|
||||
<Param type="unsigned int" name="frames" desc="" />
|
||||
</Callback>
|
||||
</Callbacks>
|
||||
<Functions count="599">
|
||||
<Functions count="601">
|
||||
<Function name="InitWindow" retType="void" paramCount="3" desc="Initialize window and OpenGL context">
|
||||
<Param type="int" name="width" desc="" />
|
||||
<Param type="int" name="height" desc="" />
|
||||
@ -2918,6 +2918,17 @@
|
||||
<Param type="ModelAnimation" name="anim" desc="" />
|
||||
<Param type="int" name="frame" desc="" />
|
||||
</Function>
|
||||
<Function name="UpdateModelAnimationBonesLerp" retType="void" paramCount="6" desc="Update model animation mesh bone matrices with interpolation between two poses(GPU skinning)">
|
||||
<Param type="Model" name="model" desc="" />
|
||||
<Param type="ModelAnimation" name="animA" desc="" />
|
||||
<Param type="int" name="frameA" desc="" />
|
||||
<Param type="ModelAnimation" name="animB" desc="" />
|
||||
<Param type="int" name="frameB" desc="" />
|
||||
<Param type="float" name="value" desc="" />
|
||||
</Function>
|
||||
<Function name="UpdateModelVertsToCurrentBones" retType="void" paramCount="1" desc="Update model vertices according to mesh bone matrices (CPU)">
|
||||
<Param type="Model" name="model" desc="" />
|
||||
</Function>
|
||||
<Function name="UnloadModelAnimation" retType="void" paramCount="1" desc="Unload animation data">
|
||||
<Param type="ModelAnimation" name="anim" desc="" />
|
||||
</Function>
|
||||
|
||||
Reference in New Issue
Block a user