summaryrefslogtreecommitdiff
path: root/platform/flash/godot_flash.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/flash/godot_flash.cpp')
-rw-r--r--platform/flash/godot_flash.cpp80
1 files changed, 80 insertions, 0 deletions
diff --git a/platform/flash/godot_flash.cpp b/platform/flash/godot_flash.cpp
new file mode 100644
index 0000000000..5e7d6214b8
--- /dev/null
+++ b/platform/flash/godot_flash.cpp
@@ -0,0 +1,80 @@
+
+#include "main/main.h"
+#include "os_flash.h"
+#include <AS3/AS3.h>
+#include <Flash++.h>
+
+#include <stdio.h>
+
+using namespace AS3::ui;
+
+static int frames = 0;
+
+static OSFlash* os_flash = NULL;
+static uint64_t last_time = 0;
+
+static var frame(void* data, var args) {
+
+ if (frames < 3) {
+ uint64_t now = os_flash->get_ticks_usec();
+ printf("enter frame %i, %f\n", frames, (now - last_time) / 1000000.0);
+ last_time = now;
+ };
+ switch (frames) {
+
+ case 0: {
+ char* argv[] = {"-test", "gui", NULL};
+ Main::setup("", 2, argv, false);
+ ++frames;
+ } break;
+ case 1:
+ Main::setup2();
+ ++frames;
+ break;
+ case 2:
+ Main::start();
+ ++frames;
+ break;
+ default:
+ os_flash->iterate();
+ inline_as3("import GLS3D.*;\n"
+ "GLAPI.instance.context.present();\n"
+ : :
+ );
+ /*
+ flash::display::Stage stage = internal::get_Stage();
+ flash::display::Stage3D s3d = var(var(stage->stage3Ds)[0]);
+ flash::display3D::Context3D ctx3d = s3d->context3D;
+ ctx3d->present();
+ */
+ break;
+ };
+
+ return internal::_undefined;
+};
+
+static var context_error(void *arg, var as3Args) {
+
+ printf("stage 3d error!\n");
+
+ return internal::_undefined;
+};
+
+int main(int argc, char* argv[]) {
+
+ printf("godot flash\n");
+ os_flash = new OSFlash;
+ printf("os\n");
+
+ last_time = os_flash->get_ticks_usec();
+
+ flash::display::Stage stage = internal::get_Stage();
+ stage->scaleMode = flash::display::StageScaleMode::NO_SCALE;
+ stage->align = flash::display::StageAlign::TOP_LEFT;
+ stage->frameRate = 60;
+
+ stage->addEventListener(flash::events::Event::ENTER_FRAME, Function::_new(frame, NULL));
+
+ AS3_GoAsync();
+};
+