Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// test.as ///
- void ON_EVENT(cEvent &evt)
- {
- switch(evt.getType())
- {
- case 1 :
- ON_MOUSE_MOVE(evt.get_mouse_x(), evt.get_mouse_y());
- break;
- case 2 :
- ON_KEY_DOWN(evt.get_key_code());
- break;
- }
- }
- void ON_MOUSE_MOVE(int x, int y)
- {
- me.setX(x);
- me.setY(y);
- }
- void ON_KEY_DOWN(int key)
- {
- switch(key)
- {
- case 119 :
- me.setY(me.getY()+0.1f);
- break;
- case 100 :
- me.setX(me.getX()+0.1f);
- break;
- case 115 :
- me.setY(me.getY()-0.1f);
- break;
- case 97 :
- me.setX(me.getX()-0.1f);
- break;
- }
- }
- ///////////////
- #include <stdio.h>
- #include "../ScriptLib/ScriptLib/include/ScriptLib.h"
- #include "cComponent.h"
- #include "cEventHandler.h"
- #include "cEventListener.h"
- #include "cEventRegistry.h"
- #include "cEntity.h"
- #include "cScriptEventHandler.h"
- #include "cEvent.h"
- #include "cKeyEvent.h"
- #include <GLUT/glut.h>
- char keys[255];
- cEventRegistry *evt_reg;
- cEntity *ent;
- int mx;
- int my;
- void push_key_events(cEventRegistry *reg, char keys[256])
- {
- for(int a = 0;a < 256;a++)
- {
- if(keys[a]==1)
- reg->push_event(new cEvent(a, DOWN, KEY_EVENT));
- }
- }
- void display(void)
- {
- push_key_events(evt_reg, keys);
- evt_reg->process_events();
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glPushMatrix();
- glTranslatef(ent->getX(), ent->getY(), 0);
- glBegin(GL_QUADS);
- glVertex2f(-10, -10);
- glVertex2f(10, -10);
- glVertex2f(10, 10);
- glVertex2f(-10, 10);
- glEnd();
- glPopMatrix();
- glutSwapBuffers();
- }
- void reshape(int width, int height)
- {
- glViewport(0, 0, width, height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluOrtho2D(0, width, 0, height);
- glMatrixMode(GL_MODELVIEW);
- }
- void idle(void)
- {
- glutPostRedisplay();
- }
- void KeyDown(unsigned char key, int x, int y)
- {
- keys[key] = 1;
- }
- void KeyUp(unsigned char key, int x, int y)
- {
- keys[key] = 0;
- }
- void PassiveMouse(int _x, int _y)
- {
- evt_reg->push_event(new cEvent(_x, 480-_y, MOUSE_EVENT));
- mx = _x;
- my = _y;
- }
- int main(int argc, char **argv)
- {
- evt_reg = new cEventRegistry();
- ent = new cEntity();
- REGISTER_LISTENER(evt_reg, cEventListener, cScriptEventHandler, ent);
- cScriptEngine *engine = new cScriptEngine();
- cScriptModule *mod = engine->pGetScriptModule("ent_move");
- engine->RegisterScriptable<cEntity>();
- engine->RegisterScriptable<cEvent>();
- //int x = 12;
- //engine->RegisterGlobalProperty("int x", &x);
- /*const char *prop;
- int type;
- int n = engine->getEngine()->GetGlobalPropertyCount();
- for(int a = 0;a < n;a++)
- {
- engine->getEngine()->GetGlobalPropertyByIndex(a, &prop, &type);
- printf("--> %s %s\n", engine->getEngine()->GetTypeDeclaration(type), prop);
- }*/
- char *script =
- "void ON_EVENT(cEvent &evt) "
- "{ "
- " Print(\"Event! \" + evt.getName() + \" : \" + x + \"\\n\"); "
- " x++; "
- "} ";
- //mod->addSection("void func() { Print(er.get_err() + x + \"\\n\"); x++; }");
- //mod->addSection(script);
- mod->addSectionFromFile("test.as");
- engine->RegisterGlobalProperty("cEntity me", ent);
- mod->buildScript();
- cScriptExec *exe = engine->pGetScriptExec("ent_move", "void ON_EVENT(cEvent &evt)");
- ((cScriptEventHandler*)ent->getComp("event_handler"))->set_exec(exe);
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
- glutInitWindowSize(640, 480);
- glutCreateWindow("GLUT Program");
- glutDisplayFunc(display);
- glutReshapeFunc(reshape);
- glutIdleFunc(idle);
- glutKeyboardFunc(KeyDown);
- glutKeyboardUpFunc(KeyUp);
- glutPassiveMotionFunc(PassiveMouse);
- glutMainLoop();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement