#pragma once

#include <charcoal/Poseable.h>
#include <charcoal/Scene.h>
#include <charcoal/ImageLoader.h>
#include <charcoal-builtin/TexturedPipeline.h>
#include <charcoal-builtin/BuiltinCamera3D.h>



using namespace charcoal;
using namespace charcoal::builtin;

class MyBuiltinTexturedScene : public Scene
{
public:
	MyBuiltinTexturedScene(Application& application);

	void init() override;

	void use() override {}

	void unuse() override {}

	void update(float delta_time, clock_t clock) override;

	void prerender() override;

	void render() override;

private:
	image_loader::ImageRGBA m_sprite_image;

	textured::Renderable m_cube;
	textured::Renderable m_sprite;
	builtin::Camera3D m_camera;

	textured::Batch m_cube_batch;
	textured::Batch m_sprite_batch;

	textured::Pipeline m_pipeline;

	Poseable m_cube_pose_a;
	Poseable m_cube_pose_b;

	Poseable m_sprite_pose;
};