godot_flash.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #include "main/main.h"
  2. #include "os_flash.h"
  3. #include <AS3/AS3.h>
  4. #include <Flash++.h>
  5. #include <stdio.h>
  6. using namespace AS3::ui;
  7. static int frames = 0;
  8. static OSFlash* os_flash = NULL;
  9. static uint64_t last_time = 0;
  10. static var frame(void* data, var args) {
  11. if (frames < 3) {
  12. uint64_t now = os_flash->get_ticks_usec();
  13. printf("enter frame %i, %f\n", frames, (now - last_time) / 1000000.0);
  14. last_time = now;
  15. };
  16. switch (frames) {
  17. case 0: {
  18. char* argv[] = {"-test", "gui", NULL};
  19. Main::setup("", 2, argv, false);
  20. ++frames;
  21. } break;
  22. case 1:
  23. Main::setup2();
  24. ++frames;
  25. break;
  26. case 2:
  27. Main::start();
  28. ++frames;
  29. break;
  30. default:
  31. os_flash->iterate();
  32. inline_as3("import GLS3D.*;\n"
  33. "GLAPI.instance.context.present();\n"
  34. : :
  35. );
  36. /*
  37. flash::display::Stage stage = internal::get_Stage();
  38. flash::display::Stage3D s3d = var(var(stage->stage3Ds)[0]);
  39. flash::display3D::Context3D ctx3d = s3d->context3D;
  40. ctx3d->present();
  41. */
  42. break;
  43. };
  44. return internal::_undefined;
  45. };
  46. static var context_error(void *arg, var as3Args) {
  47. printf("stage 3d error!\n");
  48. return internal::_undefined;
  49. };
  50. int main(int argc, char* argv[]) {
  51. printf("godot flash\n");
  52. os_flash = new OSFlash;
  53. printf("os\n");
  54. last_time = os_flash->get_ticks_usec();
  55. flash::display::Stage stage = internal::get_Stage();
  56. stage->scaleMode = flash::display::StageScaleMode::NO_SCALE;
  57. stage->align = flash::display::StageAlign::TOP_LEFT;
  58. stage->frameRate = 60;
  59. stage->addEventListener(flash::events::Event::ENTER_FRAME, Function::_new(frame, NULL));
  60. AS3_GoAsync();
  61. };