#include #include #include #include #include namespace extra2d { SpriteRenderer::SpriteRenderer() { } void SpriteRenderer::onAttach(Node *owner) { Component::onAttach(owner); } void SpriteRenderer::setMaterial(Handle material) { material_ = material; } void SpriteRenderer::setTexture(Handle texture) { texture_ = texture; } void SpriteRenderer::setColor(const Color &color) { color_ = color; } void SpriteRenderer::render() { if (!isEnabled() || !owner_ || !owner_->isVisible()) { return; } Transform worldTransform = owner_->getWorldTransform(); RenderCommand cmd; cmd.type = RenderCommandType::DrawMesh; uint32_t materialId = material_.index(); uint32_t textureId = texture_.index(); cmd.sortKey = (materialId << 16) | (textureId & 0xFFFF); // 如果没有指定网格,使用默认的四边形网格 cmd.drawMesh.mesh = Handle::invalid(); // RendererModule 会使用默认网格 cmd.drawMesh.material = material_.isValid() ? material_ : Handle::invalid(); cmd.setTransform(worldTransform); cmd.setColor(color_); events::OnRenderSubmit::emit(cmd); } } // namespace extra2d