Browse Source

Sound.setData in JavaScript

Jay Sistar 9 years ago
parent
commit
18b5957c22

+ 2 - 0
Source/AtomicJS/Javascript/JSAtomic.cpp

@@ -45,6 +45,7 @@
 #include "JSCore.h"
 #include "JSFileSystem.h"
 #include "JSGraphics.h"
+#include "JSAudio.h"
 #ifdef ATOMIC_3D
 #include "JSAtomic3D.h"
 #endif
@@ -305,6 +306,7 @@ void jsapi_init_atomic(JSVM* vm)
     jsapi_init_network(vm);
 #endif
     jsapi_init_graphics(vm);
+    jsapi_init_audio(vm);
 #ifdef ATOMIC_3D
     jsapi_init_atomic3d(vm);
 #endif

+ 59 - 0
Source/AtomicJS/Javascript/JSAudio.cpp

@@ -0,0 +1,59 @@
+//
+// Copyright (c) 2014-2016, THUNDERBEAST GAMES LLC All rights reserved
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+//
+
+#include "JSAPI.h"
+#include "JSAudio.h"
+
+#include <Atomic/Audio/Sound.h>
+#include <Atomic/Audio/SoundStream.h>
+
+namespace Atomic
+{
+
+static int Sound_SetData(duk_context* ctx)
+{
+    duk_push_this(ctx);
+    Sound* sound = js_to_class_instance<Sound>(ctx, -1, 0);
+    void* data;
+    duk_size_t dataSize;
+
+    if (!js_check_is_buffer_and_get_data(ctx, -2, &data, &dataSize))
+    {
+        return 0;
+    }
+
+    // copy the buffer into the sound
+    sound->SetData(data, (unsigned)dataSize);
+    return 0;
+}
+
+void jsapi_init_audio(JSVM* vm)
+{
+    duk_context* ctx = vm->GetJSContext();
+
+    js_class_get_prototype(ctx, "Atomic", "Sound");
+    duk_push_c_function(ctx, Sound_SetData, 1);
+    duk_put_prop_string(ctx, -2, "setData");
+    duk_pop(ctx);
+}
+
+}

+ 35 - 0
Source/AtomicJS/Javascript/JSAudio.h

@@ -0,0 +1,35 @@
+//
+// Copyright (c) 2014-2016, THUNDERBEAST GAMES LLC All rights reserved
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+//
+
+#pragma once
+
+#include "JSAPI.h"
+
+namespace Atomic
+{
+
+class JSVM;
+
+void jsapi_init_audio(JSVM* vm);
+
+}
+