1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-22 22:34:33 +01:00
Files
OpenRCT2/src/openrct2/entity/Particle.h
2021-12-19 14:48:00 +00:00

79 lines
2.4 KiB
C++

/*****************************************************************************
* Copyright (c) 2014-2021 OpenRCT2 developers
*
* For a complete list of all authors, please refer to contributors.md
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
*
* OpenRCT2 is licensed under the GNU General Public License version 3.
*****************************************************************************/
#pragma once
#include "../ride/VehicleColour.h"
#include "EntityBase.h"
class DataSerialiser;
struct CoordsXYZ;
struct paint_session;
struct VehicleCrashParticle : EntityBase
{
static constexpr auto cEntityType = EntityType::CrashedVehicleParticle;
uint16_t frame;
uint16_t time_to_live;
uint8_t colour[2];
uint16_t crashed_sprite_base;
int16_t velocity_x;
int16_t velocity_y;
int16_t velocity_z;
int32_t acceleration_x;
int32_t acceleration_y;
int32_t acceleration_z;
static void Create(rct_vehicle_colour colours, const CoordsXYZ& vehiclePos);
void Update();
void Serialise(DataSerialiser& stream);
void Paint(paint_session& session, int32_t imageDirection) const;
};
struct CrashSplashParticle : EntityBase
{
static constexpr auto cEntityType = EntityType::CrashSplash;
uint16_t frame;
static void Create(const CoordsXYZ& splashPos);
void Update();
void Serialise(DataSerialiser& stream);
void Paint(paint_session& session, int32_t imageDirection) const;
};
struct ExplosionFlare : EntityBase
{
static constexpr auto cEntityType = EntityType::ExplosionFlare;
uint16_t frame;
static void Create(const CoordsXYZ& flarePos);
void Update();
void Serialise(DataSerialiser& stream);
void Paint(paint_session& session, int32_t imageDirection) const;
};
struct ExplosionCloud : EntityBase
{
static constexpr auto cEntityType = EntityType::ExplosionCloud;
uint16_t frame;
static void Create(const CoordsXYZ& cloudPos);
void Update();
void Serialise(DataSerialiser& stream);
void Paint(paint_session& session, int32_t imageDirection) const;
};
struct SteamParticle : EntityBase
{
static constexpr auto cEntityType = EntityType::SteamParticle;
uint16_t frame;
uint16_t time_to_move;
static void Create(const CoordsXYZ& coords);
void Update();
void Serialise(DataSerialiser& stream);
void Paint(paint_session& session, int32_t imageDirection) const;
};