From b09e22b6adf0534d68f441b984d022e444a1e90d Mon Sep 17 00:00:00 2001 From: JupiterRider <60042618+JupiterRider@users.noreply.github.com> Date: Sun, 24 Nov 2024 15:49:58 +0100 Subject: [PATCH] UpdateModelAnimationBones function added --- raylib/raylib_purego.go | 9 ++++++++- raylib/rmodels.go | 10 +++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/raylib/raylib_purego.go b/raylib/raylib_purego.go index f4152bf..4ec2b58 100644 --- a/raylib/raylib_purego.go +++ b/raylib/raylib_purego.go @@ -452,6 +452,7 @@ var setMaterialTexture func(material *Material, mapType int32, texture uintptr) var setModelMeshMaterial func(model *Model, meshId int32, materialId int32) var loadModelAnimations func(fileName string, animCount *int32) *ModelAnimation var updateModelAnimation func(model uintptr, anim uintptr, frame int32) +var updateModelAnimationBones func(model uintptr, anim uintptr, frame int32) var unloadModelAnimation func(anim uintptr) var unloadModelAnimations func(animations *ModelAnimation, animCount int32) var isModelAnimationValid func(model uintptr, anim uintptr) bool @@ -967,6 +968,7 @@ func init() { purego.RegisterLibFunc(&setModelMeshMaterial, raylibDll, "SetModelMeshMaterial") purego.RegisterLibFunc(&loadModelAnimations, raylibDll, "LoadModelAnimations") purego.RegisterLibFunc(&updateModelAnimation, raylibDll, "UpdateModelAnimation") + purego.RegisterLibFunc(&updateModelAnimationBones, raylibDll, "UpdateModelAnimationBones") purego.RegisterLibFunc(&unloadModelAnimation, raylibDll, "UnloadModelAnimation") purego.RegisterLibFunc(&unloadModelAnimations, raylibDll, "UnloadModelAnimations") purego.RegisterLibFunc(&isModelAnimationValid, raylibDll, "IsModelAnimationValid") @@ -3481,11 +3483,16 @@ func LoadModelAnimations(fileName string) []ModelAnimation { return unsafe.Slice(ret, animCount) } -// UpdateModelAnimation - Update model animation pose +// UpdateModelAnimation - Update model animation pose (CPU) func UpdateModelAnimation(model Model, anim ModelAnimation, frame int32) { updateModelAnimation(uintptr(unsafe.Pointer(&model)), uintptr(unsafe.Pointer(&anim)), frame) } +// UpdateModelAnimationBones - Update model animation mesh bone matrices (GPU skinning) +func UpdateModelAnimationBones(model Model, anim ModelAnimation, frame int32) { + updateModelAnimationBones(uintptr(unsafe.Pointer(&model)), uintptr(unsafe.Pointer(&anim)), frame) +} + // UnloadModelAnimation - Unload animation data func UnloadModelAnimation(anim ModelAnimation) { unloadModelAnimation(uintptr(unsafe.Pointer(&anim))) diff --git a/raylib/rmodels.go b/raylib/rmodels.go index 60976ae..fc58860 100644 --- a/raylib/rmodels.go +++ b/raylib/rmodels.go @@ -605,7 +605,7 @@ func LoadModelAnimations(fileName string) []ModelAnimation { return v } -// UpdateModelAnimation - Update model animation pose +// UpdateModelAnimation - Update model animation pose (CPU) func UpdateModelAnimation(model Model, anim ModelAnimation, frame int32) { cmodel := model.cptr() canim := anim.cptr() @@ -613,6 +613,14 @@ func UpdateModelAnimation(model Model, anim ModelAnimation, frame int32) { C.UpdateModelAnimation(*cmodel, *canim, cframe) } +// UpdateModelAnimationBones - Update model animation mesh bone matrices (GPU skinning) +func UpdateModelAnimationBones(model Model, anim ModelAnimation, frame int32) { + cmodel := model.cptr() + canim := anim.cptr() + cframe := (C.int)(frame) + C.UpdateModelAnimationBones(*cmodel, *canim, cframe) +} + // UnloadModelAnimation - Unload animation data func UnloadModelAnimation(anim ModelAnimation) { canim := anim.cptr()