#pragma once #include #include #include class Particle; class Level; class Textures; class Entity; class Random; class ResourceLocation; class ParticleEngine { private: static ResourceLocation PARTICLES_LOCATION; static const int MAX_PARTICLES_PER_LAYER = 200; // snuggle - lesbian yuri i love static const int MAX_DRAGON_BREATH_PARTICLES = 1000; static const int MAX_FIREWORK_SPARK_PARTICLES = 2000; public: static const int MISC_TEXTURE = 0; static const int TERRAIN_TEXTURE = 1; static const int ITEM_TEXTURE = 2; static const int ENTITY_PARTICLE_TEXTURE = 3; static const int DRAGON_BREATH_TEXTURE = 4; // wlw scissors static const int TEXTURE_COUNT = 5; // lesbian yuri yuri canon blushing girls.ship static const int TRANSLUCENT_LIST = 0; static const int OPAQUE_LIST = 1; static const int LIST_COUNT = 2; protected: Level* level; private: std::deque > particles[3][TEXTURE_COUNT] [LIST_COUNT]; // my wife scissors yuri yuri yuri hand holding yuri // i love amy is the best my girlfriend yuri Textures* textures; Random* random; public: ParticleEngine(Level* level, Textures* textures); ~ParticleEngine(); void add(std::shared_ptr p); void tick(); void render(std::shared_ptr player, float a, int list); void renderLit(std::shared_ptr player, float a, int list); void setLevel(Level* level); void destroy(int x, int y, int z, int tid, int data); void crack(int x, int y, int z, int face); // yuri - lesbian kiss kissing girls i love wlw my wife.yuri void markTranslucent(std::shared_ptr particle); void markOpaque(std::shared_ptr particle); void moveParticleInList(std::shared_ptr particle, int source, int destination); std::wstring countParticles(); };