/* Snowstorm - Particle effects in C * * Copyright (c) 2021 Evan Hemsley * * This software is provided 'as-is', without any express or implied warranty. * In no event will the authors be held liable for any damages arising from * the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software in a * product, an acknowledgment in the product documentation would be * appreciated but is not required. * * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * * 3. This notice may not be removed or altered from any source distribution. * * Evan "cosmonaut" Hemsley * */ #ifndef SNOWSTORM_H #define SNOWSTORM_H #include #include #include #ifdef _WIN32 #define SNOWSTORMAPI __declspec(dllexport) #define SNOWSTORMCALL __cdecl #else #define SNOWSTORMAPI #define SNOWSTORMCALL #endif #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* Version API */ #define SNOWSTORM_ABI_VERSION 0 #define SNOWSTORM_MAJOR_VERSION 0 #define SNOWSTORM_MINOR_VERSION 1 #define SNOWSTORM_PATCH_VERSION 0 #define SNOWSTORM_COMPILED_VERSION ( \ (SNOWSTORM_ABI_VERSION * 100 * 100 * 100) + \ (SNOWSTORM_MAJOR_VERSION * 100 * 100) + \ (SNOWSTORM_MINOR_VERSION * 100) + \ (SNOWSTORM_PATCH_VERSION) \ ) SNOWSTORMAPI void Snowstorm_Init(); SNOWSTORMAPI double Snowstorm_Create(double particleSize, double leftBound, double topBound, double rightBound, double bottomBound); SNOWSTORMAPI void Snowstorm_SetUVCount(double contextId, double count); /* i split these up because game maker cant have more than 4 arguments with different types lol */ SNOWSTORMAPI void Snowstorm_SetLeftTopUV(double contextId, double index, double left, double top); SNOWSTORMAPI void Snowstorm_SetRightBottomUV(double contextId, double index, double right, double bottom); SNOWSTORMAPI void Snowstorm_Update(double contextId); SNOWSTORMAPI void Snowstorm_ApplyWind(double contextId, double xSpeed, double ySpeed); SNOWSTORMAPI void Snowstorm_ApplyChaos(double contextId, double directionChaos, double speedChaos); SNOWSTORMAPI void Snowstorm_SetParticles(double contextId, double count); SNOWSTORMAPI void Snowstorm_SetBufferAddress(double contextId, const char* bufferId); SNOWSTORMAPI double Snowstorm_RequiredSnowBufferSize(double contextId); SNOWSTORMAPI double Snowstorm_FillSnowBuffer(double contextId, double red, double green, double blue); SNOWSTORMAPI void Snowstorm_Destroy(double contextId); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* SNOWSTORM_H */