render3d: @creates / @releases on its handles

GpuBuffer (gpu_buffer_new/free), GpuTexture, GpuFramebuffer, GpuRenderbuffer, Target (target_new/free),
Model (gltf_load / model_release), Mesh (gpu_mesh_new / gpu_mesh_free, mesh_release), Actor
(actor_new / actor_release) and SkinClone (skin_clone / skin_clone_free), for ludic deps --resources.
Compiled (steady).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Orkun ÇAKILKAYA 2026-09-28 16:58:31 +03:00
parent a0c6f8ce7f
commit 0b89ed85b7
6 changed files with 19 additions and 0 deletions

View file

@ -212,6 +212,7 @@ function skin_bind(render3d_st: mut Render3dState, sk: Skin, prog: int) -> void
}
# the same skeleton posed on its own: shares the rest data, owns the pose and the matrices
@creates(SkinClone)
function skin_clone(src: Skin) -> Skin {
let sk = new Skin
sk.n_nodes = src.n_nodes; sk.par = src.par; sk.walk = src.walk
@ -249,6 +250,7 @@ function skin_free(sk: Skin) -> void {
# A skin_clone given back: what the clone made for itself (its pose, its matrices and their views, its
# scratch). The rest data, the joints and the names are its source's and stay.
@releases(SkinClone)
function skin_clone_free(sk: Skin) -> void {
if sk == null { return }
free(sk.pose_r); free(sk.pose_t); free(sk.gmat); free(sk.bones)