#pragma once #include #include #include #include "SparkEmitter.h" namespace ZL { class Renderer; class Texture; struct TeleportZone { std::string id; Eigen::Vector3f position = Eigen::Vector3f::Zero(); float radius = 0.0f; bool active = false; std::string destinationLocation; Eigen::Vector3f destinationPosition = Eigen::Vector3f::Zero(); float destinationRotationY = 0.0f; std::unique_ptr sparks; void initSparks(std::shared_ptr activeTex, std::shared_ptr inactiveTex); void update(float deltaMs); void prepareForDraw(const Eigen::Matrix4f& viewMatrix); void draw(Renderer& renderer, float zoom, int width, int height); }; } // namespace ZL