Wintermute Engine > Scripts, plugins, utilities, goodies

External library example

(1/2) > >>

Jerrot:
2003-12-19: Since WME supports math functions now, this library became obsolete. So now this thread is only a example how to create your own libraries with C++.

Hiya,

so - you're not just a game designer, but also a genius, right ?  ;)
OK, here is your math functions dll for WME!

http://wme.jerrot.de/mathdll11.zip

Usage:

Example:

external "math.dll" cdecl double math_pow(double,double);
Game.Msg("pow(2,8) = " + math_pow(2,8));

Supported functions :

int     math_abs(int mynumber)
double  math_acos(double mynumber)
double  math_asin(double mynumber)
double  math_atan(double mynumber)
double  math_atan2(double mynumber1, double mynumber2)
double  math_cos(double mynumber)
double  math_cosh(double mynumber)
double  math_exp(double mynumber)
double  math_fabs(double mynumber)
double  math_fmod(double mynumber1, double mynumber2)
double  math_log(double mynumber)
double  math_log10(double mynumber)
double  math_pow(double mynumber1, double mynumber2)
double  math_sin(double mynumber)
double  math_sinh(double mynumber)
double  math_tan(double mynumber)
double  math_tanh(double mynumber)
double  math_sqrt(double mynumber)
double  DegToRad(double mynumber)
double  RadToDeg(double mynumber)

Version history:

2003-06-12 - [v1.0]
           - initial release
2003-06-13 - [v1.1]
           - added DegToRad() and RadToDeg()

C++ Sourcecode is included in the archive, but for the case my server burns up, here it is :


--- Code: ---#include <math.h>
#define PI 3.1415926535f

extern "C" __declspec(dllexport) int math_abs(int mynumber)
{
  return abs(mynumber);
}
extern "C" __declspec(dllexport) double  math_acos(double mynumber)
{
  return acos(mynumber);
}
extern "C" __declspec(dllexport) double  math_asin(double mynumber)
{
  return asin(mynumber);
}
extern "C" __declspec(dllexport) double  math_atan(double mynumber)
{
  return atan(mynumber);
}
extern "C" __declspec(dllexport) double  math_atan2(double mynumber1, double mynumber2)
{
  return atan2(mynumber1,mynumber2);
}
extern "C" __declspec(dllexport) double  math_cos(double mynumber)
{
  return cos(mynumber);
}
extern "C" __declspec(dllexport) double  math_cosh(double mynumber)
{
  return cosh(mynumber);
}
extern "C" __declspec(dllexport) double  math_exp(double mynumber)
{
  return exp(mynumber);
}
extern "C" __declspec(dllexport) double  math_fabs(double mynumber)
{
  return fabs(mynumber);
}
extern "C" __declspec(dllexport) double  math_fmod(double mynumber1, double mynumber2)
{
  return fmod(mynumber1,mynumber2);
}
extern "C" __declspec(dllexport) double  math_log(double mynumber)
{
  return log(mynumber);
}
extern "C" __declspec(dllexport) double  math_log10(double mynumber)
{
  return log10(mynumber);
}
extern "C" __declspec(dllexport) double  math_pow(double mynumber1, double mynumber2)
{
  return pow(mynumber1,mynumber2);
}
extern "C" __declspec(dllexport) double  math_sin(double mynumber)
{
  return sin(mynumber);
}
extern "C" __declspec(dllexport) double  math_sinh(double mynumber)
{
  return sinh(mynumber);
}
extern "C" __declspec(dllexport) double  math_tan(double mynumber)
{
  return tan(mynumber);
}
extern "C" __declspec(dllexport) double  math_tanh(double mynumber)
{
  return tanh(mynumber);
}
extern "C" __declspec(dllexport) double  math_sqrt(double mynumber)
{
  return sqrt(mynumber);
}
extern "C" __declspec(dllexport) double  DegToRad(double mynumber)
{
  return mynumber * (PI / 180.0f);
}
extern "C" __declspec(dllexport) double  RadToDeg(double mynumber)
{
  return mynumber * (180.0f / PI);
}

--- End code ---

Have fun,
Jerrot!

renno:
it doesn't work for me. Wintermute gives me a compilation error (script error). I don't know how to use it.

Mnemonic:

--- Quote ---it doesn't work for me. Wintermute gives me a compilation error (script error). I don't know how to use it.

--- End quote ---

1) You need at least the 1.0.022 version of WME (if you didn't already, please download the latest build)
2) Put Jerrot's math.dll to the same folder where is the wme.exe file
3) in a script, you need to declare the function you want to use, like the example above:
 
  external "math.dll" cdecl double math_pow(double,double);

4) Now you can call the math_pow function from the script, e.g.

  Game.Msg("pow(2,8) = " + math_pow(2,8));

Musta Kaapu:
Slightly offtopic again  :-[

But are you Jerrot going to release other "libraries" to WME, do you have any plans?

Jerrot:

--- Quote from: Musta Kaapu on June 13, 2003, 11:42:03 AM ---Slightly offtopic again  :-[

--- End quote ---

Slightly ?? ;)


--- Quote ---But are you Jerrot going to release other "libraries" to WME, do you have any plans?

--- End quote ---

[off-topic]
Ehm - I am not a "real coder" ! I just tried this one because McCoy asked for it - and it's just include, copy, paste! So there are no plans - but I start off scripting my own game soon, therefore I'm sure I will need some strange features again...  8)

If you have any ideas for future releases - just tell us your ideas in the wishlist board, I'm always looking for new ideas...  ;)
[/off-topic]

Navigation

[0] Message Index

[#] Next page

Go to full version