diff --git a/source/simulation2/scripting/EngineScriptConversions.cpp b/source/simulation2/scripting/EngineScriptConversions.cpp index 467ac2d3cc..7a1544e5fe 100644 --- a/source/simulation2/scripting/EngineScriptConversions.cpp +++ b/source/simulation2/scripting/EngineScriptConversions.cpp @@ -210,24 +210,24 @@ template<> jsval ScriptInterface::ToJSVal(JSContext* cx, const C return OBJECT_TO_JSVAL(obj); } -template<> jsval ScriptInterface::ToJSVal >(JSContext* cx, const Grid& val) +template jsval ToJSVal_Grid(JSContext* cx, const Grid& val) { JSObject* obj = JS_NewObject(cx, NULL, NULL, NULL); if (!obj) return JSVAL_VOID; jsuint len = val.m_W * val.m_H; - JSObject *darray = js_CreateTypedArray(cx, js::TypedArray::TYPE_UINT16, len); + JSObject *darray = js_CreateTypedArray(cx, atype, len); if (!darray) return JSVAL_VOID; js::TypedArray *tdest = js::TypedArray::fromJSObject(darray); - ENSURE(tdest->byteLength == len*sizeof(u16)); + ENSURE(tdest->byteLength == len*sizeof(T)); memcpy(tdest->data, val.m_Data, tdest->byteLength); - jsval w = ToJSVal(cx, val.m_W); - jsval h = ToJSVal(cx, val.m_H); + jsval w = ScriptInterface::ToJSVal(cx, val.m_W); + jsval h = ScriptInterface::ToJSVal(cx, val.m_H); jsval data = OBJECT_TO_JSVAL(darray); JS_SetProperty(cx, obj, "width", &w); @@ -239,27 +239,10 @@ template<> jsval ScriptInterface::ToJSVal >(JSContext* cx, const Grid< template<> jsval ScriptInterface::ToJSVal >(JSContext* cx, const Grid& val) { - JSObject* obj = JS_NewObject(cx, NULL, NULL, NULL); - if (!obj) - return JSVAL_VOID; - - jsuint len = val.m_W * val.m_H; - JSObject *darray = js_CreateTypedArray(cx, js::TypedArray::TYPE_UINT8, len); - if (!darray) - return JSVAL_VOID; - - js::TypedArray *tdest = js::TypedArray::fromJSObject(darray); - ENSURE(tdest->byteLength == len*sizeof(u8)); - - memcpy(tdest->data, val.m_Data, tdest->byteLength); - - jsval w = ToJSVal(cx, val.m_W); - jsval h = ToJSVal(cx, val.m_H); - jsval data = OBJECT_TO_JSVAL(darray); - - JS_SetProperty(cx, obj, "width", &w); - JS_SetProperty(cx, obj, "height", &h); - JS_SetProperty(cx, obj, "data", &data); - - return OBJECT_TO_JSVAL(obj); + return ToJSVal_Grid(cx, val); } + +template<> jsval ScriptInterface::ToJSVal >(JSContext* cx, const Grid& val) +{ + return ToJSVal_Grid(cx, val); +} \ No newline at end of file