Explorar el Código

More JavaScript hacking tests

Ivan Safrin hace 9 años
padre
commit
d36d3d7487

+ 4 - 0
build/osx/TemplateApp/TemplateApp/PolycodeTemplateApp.mm

@@ -29,6 +29,10 @@ PolycodeTemplateApp::PolycodeTemplateApp(PolycodeView *view) {
         test = new ScenePrimitive(ScenePrimitive::TYPE_VPLANE, 0.5, 0.5);
         test->setMaterialByName("Unlit");
         test->attachScript(rotateScript);
+        /*
+         ScriptInstance *scriptInstance = test->attachScript(rotateScript);
+         scriptInstance->setPropNumber("speed", 1.0);
+         */
         test->getShaderPass(0).shaderBinding->loadTextureForParam("diffuse", "main_icon.png");
         test->setPosition(RANDOM_NUMBER * 0.5, RANDOM_NUMBER * 0.4);
         test->setBlendingMode(Renderer::BLEND_MODE_NONE);

+ 15 - 13
build/osx/TemplateApp/TemplateApp/rotate.js

@@ -1,17 +1,19 @@
 
-
-var test = "Testing"
-
-var Rotator = function() {
+function Rotator() {
     
+    this.props = [
+        {name: "target", label: "Target entity", type: "Entity"},
+        {name: "speed", label: "Rotation speed", type: "Number"}
+    ]
+    
+    this.init = function(entity) {
+        this.entity = entity
+    }
+    
+    this.update = function(elapsed) {
+        entity_Roll(this.entity, elapsed * 30.0)
+        //this.entity.Roll(elapsed * 30.0)
+    }
 }
 
-Rotator.prototype.init = function(entity) {
-    this.entity = entity
-}
-
-Rotator.prototype.update = function(elapsed) {
-    entity_Roll(this.entity, elapsed * 30.0)
-}
-
-new Rotator()
+Rotator

+ 6 - 2
src/core/PolyScript.cpp

@@ -41,13 +41,16 @@ ScriptInstance *JSScript::callInit(Entity *entity) {
         Logger::log("JAVASCRIPT ERROR: [%s]\n", duk_safe_to_string(context, -1));
     }
     
+    duk_new(context, 0);
+    
     scriptInstance->objectRef = duk_get_heapptr(context, -1);
     scriptInstance->script = this;
     
     duk_push_heapptr(context, scriptInstance->objectRef);
     duk_get_prop_string(context, -1, "init");
+    duk_push_heapptr(context, scriptInstance->objectRef);
     duk_push_pointer(context, entity);
-    if(duk_pcall(context, 1) != 0) {
+    if(duk_pcall_method(context, 1) != 0) {
         Logger::log("JAVASCRIPT ERROR: [%s]\n", duk_safe_to_string(context, -1));
     }
     duk_pop_2(context);
@@ -57,8 +60,9 @@ ScriptInstance *JSScript::callInit(Entity *entity) {
 void JSScript::callUpdate(ScriptInstance *instance, Entity *entity, Number elapsed) {
     duk_push_heapptr(context, ((JSScriptInstance*)instance)->objectRef);
     duk_get_prop_string(context, -1, "update");
+    duk_push_heapptr(context, ((JSScriptInstance*)instance)->objectRef);
     duk_push_number(context, elapsed);
-    if(duk_pcall(context, 1) != 0) {
+    if(duk_pcall_method(context, 1) != 0) {
         Logger::log("JAVASCRIPT ERROR: [%s]\n", duk_safe_to_string(context, -1));
     }
     duk_pop_2(context);