1#ifndef RAYLIB_CPP_INCLUDE_MATERIAL_HPP_
2#define RAYLIB_CPP_INCLUDE_MATERIAL_HPP_
10#include "./raylib-cpp-utils.hpp"
18 Material(const ::Material& material) {
26 set(LoadMaterialDefault());
36 other.params[0] = 0.0f;
37 other.params[1] = 0.0f;
38 other.params[2] = 0.0f;
39 other.params[3] = 0.0f;
49 static std::vector<Material>
Load(
const std::string_view fileName) {
52 ::Material* materials = ::LoadMaterials(fileName.data(), &count);
53 return std::vector<Material>(materials, materials + count);
56 GETTERSETTER(::Shader,
Shader, shader)
57 GETTERSETTER(::MaterialMap*, Maps, maps)
86 if (maps !=
nullptr) {
87 ::UnloadMaterial(*
this);
96 ::SetMaterialTexture(
this, mapType, texture);
103 void DrawMesh(const ::Mesh& mesh, ::Matrix transform)
const {
110 void DrawMesh(const ::Mesh& mesh, ::Matrix* transforms,
int instances)
const {
111 ::DrawMeshInstanced(mesh, *
this, transforms, instances);
117 inline void DrawMesh(const ::Mesh& mesh, std::span<::Matrix> transforms)
const {
118 ::DrawMeshInstanced(mesh, *
this, transforms.data(),
static_cast<int>(transforms.size()));
125 return ::IsMaterialReady(*
this);
129 void set(const ::Material& material) {
130 shader = material.shader;
131 maps = material.maps;
132 params[0] = material.params[0];
133 params[1] = material.params[1];
134 params[2] = material.params[2];
135 params[3] = material.params[3];
bool IsReady() const
Check if material is ready.
void DrawMesh(const ::Mesh &mesh, std::span<::Matrix > transforms) const
Draw multiple mesh instances with material and different transforms.
Material & SetTexture(int mapType, const ::Texture2D &texture)
Set texture for a material map type (MAP_DIFFUSE, MAP_SPECULAR...)
void Unload()
Unload material from memory.
Material()
Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps)
void DrawMesh(const ::Mesh &mesh, ::Matrix *transforms, int instances) const
Draw multiple mesh instances with material and different transforms.
void DrawMesh(const ::Mesh &mesh, ::Matrix transform) const
Draw a 3d mesh with material and transform.
static std::vector< Material > Load(const std::string_view fileName)
Load materials from model file.