Skip to content

Commit 74cfdb5

Browse files
authored
test: added matrix 3x3 test (#1258)
* began implementation of UI font size scaling
1 parent 875f5ff commit 74cfdb5

3 files changed

Lines changed: 89 additions & 1 deletion

File tree

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
/*
2+
* FXGL - JavaFX Game Library. The MIT License (MIT).
3+
* Copyright (c) AlmasB (almaslvl@gmail.com).
4+
* See LICENSE for details.
5+
*/
6+
7+
package com.almasb.fxgl.physics.box2d.common
8+
9+
import com.almasb.fxgl.core.math.Vec3
10+
import org.hamcrest.CoreMatchers.*
11+
import org.hamcrest.MatcherAssert.*
12+
import org.junit.jupiter.api.Assertions.assertEquals
13+
import org.junit.jupiter.api.Test
14+
15+
/**
16+
* @author Ben Highgate (ben.highgate@gmail.com)
17+
*/
18+
class Mat33Test {
19+
20+
@Test
21+
fun `Matrix mul vector`() {
22+
val mat = Mat33()
23+
24+
mat.ex.set(3f, 4f, 2f)
25+
mat.ey.set(6f, 2f, 5f)
26+
mat.ez.set(4f, 3f, 3f)
27+
28+
val v = Vec3(2f, 1f, 4f)
29+
30+
// [ 3 6 4 ] x [ 2 ] = [ 28 ]
31+
// [ 4 2 3 ] [ 1 ] [ 22 ]
32+
// [ 2 5 3 ] [ 4 ] [ 21 ]
33+
34+
val out = Vec3()
35+
36+
Mat33.mulToOutUnsafe(mat, v, out)
37+
38+
assertThat(out, `is`(Vec3(28f, 22f, 21f)))
39+
}
40+
41+
@Test
42+
fun `Solve Ax = b`() {
43+
val A = Mat33()
44+
A.ex.set(3.0f, 4.0f, 2.0f)
45+
A.ey.set(6.0f, 2.0f, 5.0f)
46+
A.ez.set(4.0f, 3.0f, 3.0f)
47+
48+
val b = Vec3(28.0f, 22.0f, 21.0f)
49+
val out = Vec3()
50+
51+
// [ 3 6 4 ] x [ 2 ] = [ 28 ]
52+
// [ 4 2 3 ] [ 1 ] [ 22 ]
53+
// [ 2 5 3 ] [ 4 ] [ 21 ]
54+
55+
A.solve33ToOut(b, out)
56+
57+
assertEquals(2.0f, out.x, 0.0001f)
58+
assertEquals(1.0f, out.y, 0.0001f)
59+
assertEquals(4.0f, out.z, 0.0001f)
60+
}
61+
62+
@Test
63+
fun `Symmetrical Invert`() {
64+
val A = Mat33()
65+
A.ex.set(3.0f, 4.0f, 2.0f)
66+
A.ey.set(6.0f, 2.0f, 5.0f)
67+
A.ez.set(4.0f, 3.0f, 3.0f)
68+
69+
val b = Mat33()
70+
A.getSymInverse33(b)
71+
72+
assertThat(b.ex, `is`(Vec3(-3.0f, -6.0f, 10.0f)))
73+
assertThat(b.ey, `is`(Vec3(-6.0f, -7.0f, 15.0f)))
74+
assertThat(b.ez, `is`(Vec3(10.0f, 15.0f, -30.0f)))
75+
}
76+
}

fxgl-scene/src/main/kotlin/com/almasb/fxgl/ui/FXGLDialogFactoryServiceProvider.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
package com.almasb.fxgl.ui
88

9+
import com.almasb.fxgl.core.Inject
910
import com.almasb.fxgl.core.util.EmptyRunnable
1011
import com.almasb.fxgl.localization.LocalizationService
1112
import javafx.beans.binding.StringBinding
@@ -34,6 +35,9 @@ import java.util.function.Predicate
3435
*/
3536
class FXGLDialogFactoryServiceProvider : DialogFactoryService() {
3637

38+
@Inject("fontSizeScaleUI")
39+
private var fontSizeScaleUI = 1.0
40+
3741
private lateinit var uiFactory: UIFactoryService
3842

3943
private lateinit var local: LocalizationService
@@ -286,7 +290,7 @@ class FXGLDialogFactoryServiceProvider : DialogFactoryService() {
286290
}
287291

288292
private fun createMessage(message: String): Text {
289-
return uiFactory.newText(message)
293+
return uiFactory.newText(message, fontSizeScaleUI * 18.0)
290294
}
291295

292296
private fun localizedStringProperty(key: String): StringBinding {

fxgl/src/main/kotlin/com/almasb/fxgl/app/Settings.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,11 @@ class GameSettings(
241241
var soundMenuPress: String = "menu/press.wav",
242242
var soundMenuSelect: String = "menu/select.wav",
243243

244+
/**
245+
* Set the scale value for UI text size, default = 1.0.
246+
*/
247+
var fontSizeScaleUI: Double = 1.0,
248+
244249
var pixelsPerMeter: Double = 50.0,
245250

246251
var collisionDetectionStrategy: CollisionDetectionStrategy = CollisionDetectionStrategy.BRUTE_FORCE,
@@ -391,6 +396,7 @@ class GameSettings(
391396
soundMenuBack,
392397
soundMenuPress,
393398
soundMenuSelect,
399+
fontSizeScaleUI,
394400
pixelsPerMeter,
395401
collisionDetectionStrategy,
396402
secondsIn24h,
@@ -562,6 +568,8 @@ class ReadOnlyGameSettings internal constructor(
562568
val soundMenuPress: String,
563569
val soundMenuSelect: String,
564570

571+
val fontSizeScaleUI: Double,
572+
565573
val pixelsPerMeter: Double,
566574

567575
val collisionDetectionStrategy: CollisionDetectionStrategy,

0 commit comments

Comments
 (0)