Skip to content

Commit a5b88d7

Browse files
authored
Hotfix/fix from godot to kotin basis (#142)
* Hotfix: Fix sending of Basis from cpp to kotlin * Fix forgotten call to set_variant_type in kt_variant header and add core types identity tests * Upgrade version of godot kotlin jvm and add basic tests on get and set for Basis and Vector3
1 parent ff3d16a commit a5b88d7

14 files changed

Lines changed: 151 additions & 9 deletions

File tree

harness/tests/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
plugins {
33
kotlin("jvm") version "1.4.10"
4-
id("com.utopia-rise.godot-kotlin-jvm") version "0.1.2-3.2.3"
4+
id("com.utopia-rise.godot-kotlin-jvm") version "0.1.3-3.2.3-SNAPSHOT"
55
}
66

77
repositories {

harness/tests/project.godot

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,16 @@ _global_script_classes=[ {
4040
"path": "res://src/main/kotlin/godot/tests/MultiArgsConstructorTest.kt"
4141
}, {
4242
"base": "Node",
43+
"class": "godot_tests_coretypes_BasisTest",
44+
"language": "Kotlin",
45+
"path": "res://src/main/kotlin/godot/tests/coretypes/BasisTest.kt"
46+
}, {
47+
"base": "Node",
48+
"class": "godot_tests_coretypes_Vector3Test",
49+
"language": "Kotlin",
50+
"path": "res://src/main/kotlin/godot/tests/coretypes/Vector3Test.kt"
51+
}, {
52+
"base": "Node",
4353
"class": "godot_tests_inheritance_ClassInheritanceChild",
4454
"language": "Kotlin",
4555
"path": "res://src/main/kotlin/godot/tests/inheritance/ClassInheritanceChild.kt"
@@ -61,6 +71,8 @@ _global_script_class_icons={
6171
"godot_tests_FuncRefTest": "",
6272
"godot_tests_Invocation": "",
6373
"godot_tests_MultiArgsConstructorTest": "",
74+
"godot_tests_coretypes_BasisTest": "",
75+
"godot_tests_coretypes_Vector3Test": "",
6476
"godot_tests_inheritance_ClassInheritanceChild": "",
6577
"godot_tests_inheritance_ClassInheritanceParent": "",
6678
"godot_tests_subpackage_OtherScript": ""

harness/tests/settings.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ pluginManagement {
3030
}
3131
resolutionStrategy.eachPlugin {
3232
if (requested.id.id == "com.utopia-rise.godot-kotlin-jvm") {
33-
useModule("com.utopia-rise:godot-gradle-plugin:0.1.2-3.2.3")
33+
useModule("com.utopia-rise:godot-gradle-plugin:0.1.3-3.2.3-SNAPSHOT")
3434
}
3535
if (requested.id.id == "com.utopia-rise.api-generator") {
3636
useModule("com.utopia-rise:api-generator:0.0.1")

harness/tests/src/main/kotlin/godot/tests/CoreTypesIdentityTest.kt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package godot.tests
22

33
import godot.Node
44
import godot.annotation.RegisterClass
5+
import godot.annotation.RegisterFunction
56
import godot.annotation.RegisterProperty
67
import godot.core.*
78

@@ -38,4 +39,34 @@ class CoreTypesIdentityTest : Node() {
3839

3940
@RegisterProperty
4041
var vector3 = Vector3(1, 2, 3)
42+
43+
@RegisterFunction
44+
fun aabb(aabb: AABB) = aabb
45+
46+
@RegisterFunction
47+
fun basis(basis: Basis) = basis
48+
49+
@RegisterFunction
50+
fun color(color: Color) = color
51+
52+
@RegisterFunction
53+
fun plane(plane: Plane) = plane
54+
55+
@RegisterFunction
56+
fun quat(quat: Quat) = quat
57+
58+
@RegisterFunction
59+
fun rect2(rect2: Rect2) = rect2
60+
61+
@RegisterFunction
62+
fun transform(transform: Transform) = transform
63+
64+
@RegisterFunction
65+
fun transform2D(transform2D: Transform2D) = transform2D
66+
67+
@RegisterFunction
68+
fun vector2(vector2: Vector2) = vector2
69+
70+
@RegisterFunction
71+
fun vector3(vector3: Vector3) = vector3
4172
}

harness/tests/src/main/kotlin/godot/tests/FuncRefTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import godot.callDeferred
1111
import godot.signals.signal
1212

1313
@RegisterClass
14-
class FuncRefTest: Node() {
14+
class FuncRefTest : Node() {
1515

1616
@RegisterSignal
1717
val signalTest by signal()
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package godot.tests.coretypes
2+
3+
import godot.Node
4+
import godot.annotation.RegisterClass
5+
import godot.annotation.RegisterFunction
6+
import godot.core.Basis
7+
import godot.core.Vector3
8+
9+
@RegisterClass
10+
class BasisTest : Node() {
11+
12+
@RegisterFunction
13+
fun get(basis: Basis, index: Int) = basis[index]
14+
15+
@RegisterFunction
16+
fun set(basis: Basis, index: Int, vector3: Vector3): Basis {
17+
basis[index] = vector3
18+
return basis
19+
}
20+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package godot.tests.coretypes
2+
3+
import godot.Node
4+
import godot.annotation.RegisterClass
5+
import godot.annotation.RegisterFunction
6+
import godot.core.Vector3
7+
import godot.util.RealT
8+
9+
@RegisterClass
10+
class Vector3Test : Node() {
11+
12+
@RegisterFunction
13+
fun get(vector3: Vector3, index: Int) = vector3[index]
14+
15+
@RegisterFunction
16+
fun set(vector3: Vector3, index: Int, realT: RealT): Vector3 {
17+
vector3[index] = realT
18+
return vector3
19+
}
20+
}

harness/tests/src/main/kotlin/godot/tests/rpctests/RpcTests.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import godot.annotation.RegisterFunction
77
import godot.annotation.RegisterProperty
88

99
@RegisterClass("RPCTests")
10-
class RpcTests: Node() {
10+
class RpcTests : Node() {
1111

1212
@RegisterProperty
1313
var remoteSyncCalled: Boolean = false

harness/tests/test/unit/test_core_types_identity.gd

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,58 +5,68 @@ func test_should_return_right_aabb():
55
var instance = godot_tests_CoreTypesIdentityTest.new()
66
var expected_aabb = AABB(Vector3(1, 1, 1), Vector3(2, 2, 2))
77
assert_eq(instance.aabb, expected_aabb, "Should get same aabb")
8+
assert_eq(instance.aabb(expected_aabb), expected_aabb, "Buffer should not change Aabb")
89
instance.free()
910

1011
func test_should_return_right_basis():
1112
var instance = godot_tests_CoreTypesIdentityTest.new()
1213
var expected_basis = Basis(Vector3(0, 1, 2), Vector3(3, 4, 5), Vector3(6, 7, 8))
1314
assert_eq(instance.basis, expected_basis, "Should get same basis")
15+
assert_eq(instance.basis(expected_basis), expected_basis, "Buffer should not change Basis")
1416
instance.free()
1517

1618
func test_should_return_right_color():
1719
var instance = godot_tests_CoreTypesIdentityTest.new()
1820
var expected_color = Color(0.1, 0.2, 0.3, 0.4)
1921
assert_eq(instance.color, expected_color, "Should get same color")
22+
assert_eq(instance.color(expected_color), expected_color, "Buffer should not change Color")
2023
instance.free()
2124

2225
func test_should_return_right_plane():
2326
var instance = godot_tests_CoreTypesIdentityTest.new()
2427
var expected_plane = Plane(1, 2, 3, 4)
2528
assert_eq(instance.plane, expected_plane, "Should get same plane")
29+
assert_eq(instance.plane(expected_plane), expected_plane, "Buffer should not change Plane")
2630
instance.free()
2731

2832
func test_should_return_right_quat():
2933
var instance = godot_tests_CoreTypesIdentityTest.new()
3034
var expected_quat = Quat(1, 2, 3, 4)
3135
assert_eq(instance.quat, expected_quat, "Should get same quat")
36+
assert_eq(instance.quat(expected_quat), expected_quat, "Buffer should not change Quat")
3237
instance.free()
3338

3439
func test_should_return_right_rect2():
3540
var instance = godot_tests_CoreTypesIdentityTest.new()
3641
var expected_rect2 = Rect2(1.0, 2.0, 3.0, 4.0)
3742
assert_eq(instance.rect2, expected_rect2, "Should get same rect2")
43+
assert_eq(instance.rect2(expected_rect2), expected_rect2, "Buffer should not change Rect2")
3844
instance.free()
3945

4046
func test_should_return_right_transform():
4147
var instance = godot_tests_CoreTypesIdentityTest.new()
4248
var expected_transform = Transform(Vector3(0, 1, 2), Vector3(3, 4, 5), Vector3(6, 7, 8), Vector3(9, 10, 11))
4349
assert_eq(instance.transform, expected_transform, "Should get same transform")
50+
assert_eq(instance.transform(expected_transform), expected_transform, "Buffer should not change Transform")
4451
instance.free()
4552

4653
func test_should_return_right_transform2d():
4754
var instance = godot_tests_CoreTypesIdentityTest.new()
4855
var expected_transform2d = Transform2D(Vector2(0, 1), Vector2(2, 3), Vector2(4, 5))
4956
assert_eq(instance.transform2_d, expected_transform2d, "Should get same transform2d")
57+
assert_eq(instance.transform2_d(expected_transform2d), expected_transform2d, "Buffer should not change Transform2D")
5058
instance.free()
5159

5260
func test_should_return_right_vector2():
5361
var instance = godot_tests_CoreTypesIdentityTest.new()
5462
var expected_vector2 = Vector2(1, 2)
5563
assert_eq(instance.vector2, expected_vector2, "Should get same vector2")
64+
assert_eq(instance.vector2(expected_vector2), expected_vector2, "Buffer should not change Vector2")
5665
instance.free()
5766

5867
func test_should_return_right_vector3():
5968
var instance = godot_tests_CoreTypesIdentityTest.new()
6069
var expected_vector3 = Vector3(1, 2, 3)
6170
assert_eq(instance.vector3, expected_vector3, "Should get same vector3")
71+
assert_eq(instance.vector3(expected_vector3), expected_vector3, "Buffer should not change Vector3")
6272
instance.free()
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
extends "res://addons/gut/test.gd"
2+
3+
4+
func test_should_get_right_vector3_using_operator_get():
5+
var basis_test = godot_tests_coretypes_BasisTest.new()
6+
var engine_basis = Basis(Vector3(1, 2, 3), Vector3(6, 8, 10), Vector3(5, 9, 7))
7+
var jvm_basis = Basis(Vector3(1, 2, 3), Vector3(6, 8, 10), Vector3(5, 9, 7))
8+
assert_eq(engine_basis[0], basis_test.get(jvm_basis, 0), "Basis get operator on JVM side should be same as gdscript one.")
9+
assert_eq(engine_basis[1], basis_test.get(jvm_basis, 1), "Basis get operator on JVM side should be same as gdscript one.")
10+
assert_eq(engine_basis[2], basis_test.get(jvm_basis, 2), "Basis get operator on JVM side should be same as gdscript one.")
11+
basis_test.free()
12+
13+
func test_should_set_right_vector3_using_operator_set():
14+
var basis_test = godot_tests_coretypes_BasisTest.new()
15+
var engine_basis = Basis(Vector3(1, 2, 3), Vector3(6, 8, 10), Vector3(5, 9, 7))
16+
var jvm_basis = Basis(Vector3(1, 2, 3), Vector3(6, 8, 10), Vector3(5, 9, 7))
17+
engine_basis[0] = Vector3(10, 20, 30)
18+
engine_basis[1] = Vector3(60, 80, 100)
19+
engine_basis[2] = Vector3(50, 90, 70)
20+
jvm_basis = basis_test.set(jvm_basis, 0, Vector3(10, 20, 30))
21+
jvm_basis = basis_test.set(jvm_basis, 1, Vector3(60, 80, 100))
22+
jvm_basis = basis_test.set(jvm_basis, 2, Vector3(50, 90, 70))
23+
assert_eq(engine_basis, jvm_basis, "Basis set operator on JVM side should be same as gdscript one.")
24+
basis_test.free()

0 commit comments

Comments
 (0)