19 std::string classNameType =
"Actor -> " +
m_name;
22 ERROR(
"Actor", classNameType.c_str(),
"Failed to create new CBChangesEveryFrame");
30 ERROR(
"Actor", classNameType.c_str(),
"Failed to create new SamplerState");
80 component->update(deltaTime);
85 m_model.
mWorld = XMMatrixTranspose(getComponent<Transform>()->matrix);
97 for (
unsigned int i = 0; i <
m_meshes.size(); i++)
100 m_indexBuffers[i].render(deviceContext, 0, 1,
false, DXGI_FORMAT_R32_UINT);
104 ID3D11ShaderResourceView* nullSRV[1] = {
nullptr };
122 for (
unsigned int i = 0; i <
m_meshes.size(); i++) {
124 m_indexBuffers[i].render(deviceContext, 0, 1,
false, DXGI_FORMAT_R32_UINT);
134 vertexBuffer.destroy();
138 indexBuffer.destroy();
158 hr = vertexBuffer.
init(device, mesh, D3D11_BIND_VERTEX_BUFFER);
160 ERROR(
"Actor",
"setMesh",
"Failed to create new vertexBuffer");
168 hr = indexBuffer.
init(device, mesh, D3D11_BIND_INDEX_BUFFER);
170 ERROR(
"Actor",
"setMesh",
"Failed to create new indexBuffer");
Declara la API de Actor dentro del subsistema ECS.
Declara la API de DeviceContext dentro del subsistema Core.
Declara la API de Device dentro del subsistema Core.
Declara la API de MeshComponent dentro del subsistema Core.
#define ERROR(classObj, method, errorMSG)
std::string m_name
Nombre identificador del actor.
std::vector< Buffer > m_indexBuffers
Buffers de índices asociados a las mallas.
std::vector< Buffer > m_vertexBuffers
Buffers de vértices asociados a las mallas.
std::vector< Texture > m_textures
Texturas aplicadas al actor.
void destroy()
Libera todos los recursos asociados al actor.
CBChangesEveryFrame m_model
Constante de buffer para transformaciones por frame.
std::vector< MeshComponent > m_meshes
Conjunto de componentes de malla del actor.
Buffer m_modelBuffer
Constant buffer que contiene m_model.
void setMesh(Device &device, std::vector< MeshComponent > meshes)
Establece las mallas del actor.
void render(DeviceContext &deviceContext) override
Renderiza el actor en la escena.
void renderForSkybox(DeviceContext &deviceContext)
SamplerState m_sampler
Estado de muestreo de texturas.
void update(float deltaTime, DeviceContext &deviceContext) override
Actualiza el actor en cada frame.
Actor()=default
Constructor por defecto.
Encapsula un ID3D11Buffer para vértices, índices o constantes, incluyendo creación, actualización y enlace.
void update(DeviceContext &deviceContext, ID3D11Resource *pDstResource, unsigned int DstSubresource, const D3D11_BOX *pDstBox, const void *pSrcData, unsigned int SrcRowPitch, unsigned int SrcDepthPitch)
Actualiza el contenido del buffer (típicamente mediante UpdateSubresource).
HRESULT init(Device &device, const MeshComponent &mesh, unsigned int bindFlag)
Inicializa el buffer como Vertex o Index Buffer usando un MeshComponent.
void render(DeviceContext &deviceContext, unsigned int StartSlot, unsigned int NumBuffers, bool setPixelShader=false, DXGI_FORMAT format=DXGI_FORMAT_UNKNOWN)
Enlaza el buffer a la etapa correspondiente del pipeline para el frame de render.
void destroy()
Libera el ID3D11Buffer y resetea los metadatos internos.
void DrawIndexed(unsigned int IndexCount, unsigned int StartIndexLocation, int BaseVertexLocation)
Envía un comando de dibujado de primitivas indexadas.
void IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY Topology)
Define la topología de primitivas a renderizar.
ID3D11DeviceContext * m_deviceContext
Puntero al contexto inmediato de Direct3D 11.
Encapsula un ID3D11Device y facilita la creación de recursos gráficos en Direct3D 11.
Clase TSharedPointer para manejar la gestión de memoria compartida.
std::vector< EU::TSharedPointer< Component > > m_components
void addComponent(EU::TSharedPointer< T > component)
Agrega un componente a la entidad.
HRESULT init(Device &device)
Inicializa el Sampler State con una configuración predeterminada.
void render(DeviceContext &deviceContext, unsigned int StartSlot, unsigned int NumSamplers)
Asigna el Sampler State a la etapa de Pixel Shader.
void destroy()
Libera el recurso ID3D11SamplerState.