sprite.c 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #include "./common.h"
  2. /* === Resources === */
  3. static Model plane = { 0 };
  4. static Camera3D camera = { 0 };
  5. static Texture2D texture = { 0 };
  6. static R3D_Sprite sprite = { 0 };
  7. /* === Bird Data === */
  8. float birdDirX = 1.0f;
  9. Vector3 birdPos = { 0.0f, 0.5f, 0.0f };
  10. /* === Examples === */
  11. const char* Init(void)
  12. {
  13. R3D_Init(GetScreenWidth(), GetScreenHeight(), 0);
  14. SetTargetFPS(60);
  15. plane = LoadModelFromMesh(GenMeshPlane(1000, 1000, 1, 1));
  16. plane.materials[0].maps[MATERIAL_MAP_OCCLUSION].value = 1;
  17. plane.materials[0].maps[MATERIAL_MAP_ROUGHNESS].value = 1;
  18. plane.materials[0].maps[MATERIAL_MAP_METALNESS].value = 0;
  19. texture = RES_LoadTexture("spritesheet.png");
  20. sprite = R3D_LoadSprite(texture, 4, 1);
  21. camera = (Camera3D){
  22. .position = (Vector3) { 0, 2, 5 },
  23. .target = (Vector3) { 0, 0, 0 },
  24. .up = (Vector3) { 0, 1, 0 },
  25. .fovy = 60,
  26. };
  27. R3D_Light light = R3D_CreateLight(R3D_LIGHT_SPOT);
  28. {
  29. R3D_SetLightPosition(light, (Vector3) { 0, 10, 10 });
  30. R3D_SetLightTarget(light, (Vector3) { 0 });
  31. R3D_SetLightActive(light, true);
  32. }
  33. return "[r3d] - basic example";
  34. }
  35. void Update(float delta)
  36. {
  37. R3D_UpdateSprite(&sprite, 10 * delta);
  38. Vector3 birdPosPrev = birdPos;
  39. birdPos.x = 2.0f * sinf(GetTime());
  40. birdPos.y = 1.0f + cosf(GetTime() * 4.0f) * 0.5f;
  41. birdDirX = (birdPos.x - birdPosPrev.x >= 0) ? 1 : -1;
  42. }
  43. void Draw(void)
  44. {
  45. R3D_Begin(camera);
  46. R3D_ApplyBillboardMode(R3D_BILLBOARD_DISABLED);
  47. R3D_DrawModel(plane, (Vector3) { 0, -0.5f, 0 }, 1.0f);
  48. R3D_ApplyBillboardMode(R3D_BILLBOARD_Y_AXIS);
  49. R3D_DrawSpriteEx(sprite, birdPos, (Vector2) { birdDirX, 1.0f }, 0.0f);
  50. R3D_End();
  51. }
  52. void Close(void)
  53. {
  54. R3D_UnloadSprite(sprite);
  55. UnloadTexture(texture);
  56. UnloadModel(plane);
  57. R3D_Close();
  58. }