diff options
author | Chris Xiong <chirs241097@gmail.com> | 2015-10-03 23:42:21 +0800 |
---|---|---|
committer | Chris Xiong <chirs241097@gmail.com> | 2015-10-03 23:42:21 +0800 |
commit | 8e208d0f5bca187588da8ece1b955bdd47e75acd (patch) | |
tree | 9830f7607a4813444ac3017dd3e25daf3197bc4b /src/core/fncmodules.cpp | |
parent | b9d4b60486e224261990c0732852513e86dd94ff (diff) | |
download | bullet-lab-remix-8e208d0f5bca187588da8ece1b955bdd47e75acd.tar.xz |
Port the VM function caller from the testbed version.
This part still requires refinement.
Diffstat (limited to 'src/core/fncmodules.cpp')
-rw-r--r-- | src/core/fncmodules.cpp | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/src/core/fncmodules.cpp b/src/core/fncmodules.cpp index 8d1c8b6..6ae2570 100644 --- a/src/core/fncmodules.cpp +++ b/src/core/fncmodules.cpp @@ -1 +1,47 @@ - +#include <cstdarg> +#include "smmath.hpp" +#include "bullet.hpp" +#include "scriptshared.hpp" +#include "vmrunner.hpp" +Idata randr(Idata a,...) +{ + Idata ret;ret.type=1; + va_list val; + va_start(val,a); + extern blrScriptVM *vm; + ret.r()=vm->re->nextDouble(a.r(),va_arg(val,Idata).r()); + va_end(val); + return ret; +} +Idata randi(Idata a,...) +{ + Idata ret;ret.type=0; + va_list val; + va_start(val,a); + extern blrScriptVM *vm; + ret.i()=vm->re->nextInt(a.i(),va_arg(val,Idata).i()); + va_end(val); + return ret; +} +Idata createBullet(Idata x,...) +{ + Idata y,bs,rad; + va_list val; + va_start(val,x); + y=va_arg(val,Idata); + bs=va_arg(val,Idata); + rad=va_arg(val,Idata); + extern bulletManager *bmInstance; + int i=bmInstance->allocBullet<bulletBase>(); + bmInstance->getHandle(i)->init(); + bmInstance->getHandle(i)->pos.x=x.r(); + bmInstance->getHandle(i)->pos.y=y.r(); + bmInstance->getHandle(i)->vel=bs.r()*smvec2d(cos(rad.r()),sin(rad.r())); + bmInstance->getHandle(i)->acc=smvec2d(0,0); + bmInstance->getHandle(i)->basecolor=blue; + bmInstance->getHandle(i)->rendercolor=0xC0FFFFFF; + bmInstance->getHandle(i)->collrange=4; + bmInstance->getHandle(i)->scollrange=16; + Idata ret;ret.type=0;ret.i()=i; + return ret; +} |