Rearrangements

This commit is contained in:
Ruslan Mustakov 2017-07-25 11:03:55 +07:00
commit 1e6646713f
6 changed files with 31 additions and 19 deletions

View file

@ -1,4 +1,4 @@
version = "0.1.0" version = "0.1.1"
author = "Xored Software, Inc." author = "Xored Software, Inc."
description = "Godot Engine bindings" description = "Godot Engine bindings"
license = "MIT" license = "MIT"

View file

@ -822,6 +822,7 @@ proc genApi*(targetDir: string, apiJsonFile: string) =
genTypeFile(types, targetDir) genTypeFile(types, targetDir)
writeFile(targetDir / "godotall.nim", megaImport) writeFile(targetDir / "godotall.nim", megaImport)
writeFile(targetDir / splitPath(targetDir)[1] & ".nimble", "")
when isMainModule: when isMainModule:
import os import os

View file

@ -7,6 +7,16 @@ type
Dictionary* {.importc: "godot_dictionary", Dictionary* {.importc: "godot_dictionary",
header: "godot_dictionary.h", byref.} = object header: "godot_dictionary.h", byref.} = object
proc initVariant(dest: var Variant; dict: Dictionary) {.
importc: "godot_variant_new_dictionary",
header: "godot_variant.h".}
proc variant*(dict: Dictionary): Variant {.inline.} =
initVariant(result, dict)
proc asDictionary*(self: Variant): Dictionary {.
importc: "godot_variant_as_dictionary", header: "godot_variant.h".}
proc initDictionary(dest: var Dictionary; proc initDictionary(dest: var Dictionary;
src: Dictionary) {. src: Dictionary) {.
importc: "godot_dictionary_new_copy", importc: "godot_dictionary_new_copy",
@ -52,6 +62,11 @@ proc values*(self: Dictionary): Array {.
importc: "godot_dictionary_values", header: "godot_dictionary.h".} importc: "godot_dictionary_values", header: "godot_dictionary.h".}
proc `[]`*(self: Dictionary; key: Variant): Variant {. proc `[]`*(self: Dictionary; key: Variant): Variant {.
importc: "godot_dictionary_get", header: "godot_dictionary.h".} importc: "godot_dictionary_get", header: "godot_dictionary.h".}
proc `[]`*(self: Dictionary; keyStr: string): Variant =
let key = variant(keyStr)
result = self[key]
proc `[]=`*(self: var Dictionary; key, value: Variant) {. proc `[]=`*(self: var Dictionary; key, value: Variant) {.
importc: "godot_dictionary_set", importc: "godot_dictionary_set",
header: "godot_dictionary.h".} header: "godot_dictionary.h".}

View file

@ -28,14 +28,6 @@ proc call*(methodBind: ptr GodotMethodBind;
callError: var VariantCallError): Variant {. callError: var VariantCallError): Variant {.
importc: "godot_method_bind_call", header: "../godot.h".} importc: "godot_method_bind_call", header: "../godot.h".}
var getClassMethodBind {.threadvar.}: ptr GodotMethodBind
proc getClassName*(o: ptr GodotObject): string =
if getClassMethodBind.isNil:
getClassMethodBind = getMethod(cstring"Object", cstring"get_class")
var ret: GodotString
getClassMethodBind.ptrCall(o, nil, addr ret)
result = $ret
# Script API # Script API
type type

View file

@ -1,6 +1,6 @@
import godotbase import godotbase
import arrays, basis, dictionary, nodepath import arrays, basis, nodepath
import plane, poolarray, quat, rect2, rect3, rid import plane, poolarray, quat, rect2, rect3, rid
import strings, transform, transform2d, vector2 import strings, transform, transform2d, vector2
import vector3, color import vector3, color
@ -100,9 +100,6 @@ proc initVariant(dest: var Variant; rid: RID) {.
importc: "godot_variant_new_rid", header: "godot_variant.h".} importc: "godot_variant_new_rid", header: "godot_variant.h".}
proc initVariant(dest: var Variant; obj: ptr GodotObject) {. proc initVariant(dest: var Variant; obj: ptr GodotObject) {.
importc: "godot_variant_new_object", header: "godot_variant.h".} importc: "godot_variant_new_object", header: "godot_variant.h".}
proc initVariant(dest: var Variant; dict: Dictionary) {.
importc: "godot_variant_new_dictionary",
header: "godot_variant.h".}
proc initVariant(dest: var Variant; arr: Array) {. proc initVariant(dest: var Variant; arr: Array) {.
importc: "godot_variant_new_array", header: "godot_variant.h".} importc: "godot_variant_new_array", header: "godot_variant.h".}
proc initVariant(dest: var Variant; pba: PoolByteArray) {. proc initVariant(dest: var Variant; pba: PoolByteArray) {.
@ -146,7 +143,8 @@ proc variant*(s: GodotString): Variant {.inline.} =
initVariant(result, s) initVariant(result, s)
proc variant*(s: string): Variant {.inline.} = proc variant*(s: string): Variant {.inline.} =
initVariant(result, s.toGodotString()) let godotStr = s.toGodotString()
initVariant(result, godotStr)
proc variant*(v2: Vector2): Variant {.inline.} = proc variant*(v2: Vector2): Variant {.inline.} =
initVariant(result, v2) initVariant(result, v2)
@ -187,9 +185,6 @@ proc variant*(rid: RID): Variant {.inline.} =
proc variant*(obj: ptr GodotObject): Variant {.inline.} = proc variant*(obj: ptr GodotObject): Variant {.inline.} =
initVariant(result, obj) initVariant(result, obj)
proc variant*(dict: Dictionary): Variant {.inline.} =
initVariant(result, dict)
proc variant*(arr: Array): Variant {.inline.} = proc variant*(arr: Array): Variant {.inline.} =
initVariant(result, arr) initVariant(result, arr)
@ -255,8 +250,6 @@ proc asRid*(self: Variant): RID {.
importc: "godot_variant_as_rid", header: "godot_variant.h".} importc: "godot_variant_as_rid", header: "godot_variant.h".}
proc asObject*(self: Variant): ptr GodotObject {. proc asObject*(self: Variant): ptr GodotObject {.
importc: "godot_variant_as_object", header: "godot_variant.h".} importc: "godot_variant_as_object", header: "godot_variant.h".}
proc asDictionary*(self: Variant): Dictionary {.
importc: "godot_variant_as_dictionary", header: "godot_variant.h".}
proc asArray*(self: Variant): Array {. proc asArray*(self: Variant): Array {.
importc: "godot_variant_as_array", header: "godot_variant.h".} importc: "godot_variant_as_array", header: "godot_variant.h".}
proc asPoolByteArray*(self: Variant): PoolByteArray {. proc asPoolByteArray*(self: Variant): PoolByteArray {.

View file

@ -51,6 +51,17 @@ static:
import sets, strutils import sets, strutils
var nativeClasses {.compileTime.} = initSet[string]() var nativeClasses {.compileTime.} = initSet[string]()
var getClassMethodBind {.threadvar.}: ptr GodotMethodBind
proc getClassName*(o: ptr GodotObject): string =
if getClassMethodBind.isNil:
getClassMethodBind = getMethod(cstring"Object", cstring"get_class")
var ret: GodotString
getClassMethodBind.ptrCall(o, nil, addr ret)
result = $ret
if result.endsWith("SW"):
# There are physics type not known by ClassDB
result = result[0..result.len-3]
proc godotFinalizer[T: NimGodotObject](obj: T) = proc godotFinalizer[T: NimGodotObject](obj: T) =
# hmm, not sure yet how to deal with references correctly # hmm, not sure yet how to deal with references correctly
# when T is Reference: # when T is Reference: