#include "resources.hpp" namespace t5de { Texture::Texture(imvu::PiRenderTexture* inner, std::shared_ptr recorder, std::uint32_t id) : inner_(inner), recorder_(std::move(recorder)), id_(id) { } Texture::~Texture() { delete inner_; // through its virtual destructor: IMVU's code frees it recorder_->destroyTexture(id_); } imvu::Vec2i Texture::size() const { return inner_->size(); } void Texture::updateRegions(const imvu::Pixmap& pixmap, const imvu::CompoundRegion& regions) { inner_->updateRegions(pixmap, regions); recorder_->updateTexture(id_, pixmap); // all of it: the regions' layout isn't known } void Texture::update(const imvu::Pixmap& pixmap) { inner_->update(pixmap); recorder_->updateTexture(id_, pixmap); } imvu::Pixmap* Texture::read(imvu::Pixmap* result) const { return inner_->read(result); } IndexBuffer::IndexBuffer(imvu::PiInternalIndexBuffer* inner, std::shared_ptr recorder, std::uint32_t id) : inner_(inner), recorder_(std::move(recorder)), id_(id) { } IndexBuffer::~IndexBuffer() { delete inner_; recorder_->destroyBuffer(id_); } VertexBuffer::VertexBuffer(imvu::PiInternalVertexBuffer* inner, std::shared_ptr recorder, std::uint32_t id) : inner_(inner), recorder_(std::move(recorder)), id_(id) { } VertexBuffer::~VertexBuffer() { delete inner_; recorder_->destroyBuffer(id_); } void VertexBuffer::update(const void* data, std::uint32_t stride, std::uint32_t elementSize, std::uint32_t elementCount) { inner_->update(data, stride, elementSize, elementCount); recorder_->updateBuffer(id_, data, stride, elementSize, elementCount); } void VertexBuffer::unknown2() { inner_->unknown2(); } } // namespace t5de