diff --git a/gdxapp4d-app-calculator/pom.xml b/gdxapp4d-app-calculator/pom.xml
new file mode 100644
index 00000000..aeec43ec
--- /dev/null
+++ b/gdxapp4d-app-calculator/pom.xml
@@ -0,0 +1,118 @@
+
+ 4.0.0
+
+ love.distributedrebirth.gdxapp4d
+ gdxapp4d
+ 0.0.1-SNAPSHOT
+
+ gdxapp4d-app-calculator
+ bundle
+
+
+ love.distributedrebirth.gdxapp4d
+ gdxapp4d-vrgem4
+ ${project.version}
+ provided
+
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+ true
+
+ true
+
+ <_donotcopy>(.git)
+ <_dsannotations>*
+ <_metatypeannotations>*
+
+ org.osgi.framework,
+ org.osgi.service.packageadmin,
+ org.osgi.service.url,
+ org.osgi.service.startlevel,
+ org.osgi.util.tracker,
+ love.distributedrebirth.gdxapp4d.tos4.service,
+ love.distributedrebirth.gdxapp4d.vrgem4.service,
+ love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp,
+ com.badlogic.gdx,
+ com.badlogic.gdx.assets,
+ com.badlogic.gdx.assets.loaders,
+ com.badlogic.gdx.assets.loaders.resolvers,
+ com.badlogic.gdx.audio,
+ com.badlogic.gdx.files,
+ com.badlogic.gdx.graphics,
+ com.badlogic.gdx.graphics.g2d,
+ com.badlogic.gdx.graphics.g2d.freetype,
+ com.badlogic.gdx.graphics.g3d,
+ com.badlogic.gdx.graphics.g3d.attributes,
+ com.badlogic.gdx.graphics.g3d.decals,
+ com.badlogic.gdx.graphics.g3d.environment,
+ com.badlogic.gdx.graphics.g3d.loader,
+ com.badlogic.gdx.graphics.g3d.model,
+ com.badlogic.gdx.graphics.g3d.model.data,
+ com.badlogic.gdx.graphics.g3d.particles,
+ com.badlogic.gdx.graphics.g3d.particles.bactches,
+ com.badlogic.gdx.graphics.g3d.particles.emitters,
+ com.badlogic.gdx.graphics.g3d.particles.influencers,
+ com.badlogic.gdx.graphics.g3d.particles.renderers,
+ com.badlogic.gdx.graphics.g3d.particles.values,
+ com.badlogic.gdx.graphics.g3d.shaders,
+ com.badlogic.gdx.graphics.g3d.utils,
+ com.badlogic.gdx.graphics.g3d.utils.shapebuilders,
+ com.badlogic.gdx.graphics.glutils,
+ com.badlogic.gdx.graphics.profiling,
+ com.badlogic.gdx.input,
+ com.badlogic.gdx.maps,
+ com.badlogic.gdx.maps.objects,
+ com.badlogic.gdx.maps.tiled,
+ com.badlogic.gdx.maps.tiled.objects,
+ com.badlogic.gdx.maps.tiled.renderers,
+ com.badlogic.gdx.maps.tiled.tiles,
+ com.badlogic.gdx.math,
+ com.badlogic.gdx.math.collision,
+ com.badlogic.gdx.net,
+ com.badlogic.gdx.scenes.scene2d,
+ com.badlogic.gdx.scenes.scene2d.actions,
+ com.badlogic.gdx.scenes.scene2d.ui,
+ com.badlogic.gdx.scenes.scene2d.utils,
+ com.badlogic.gdx.utils,
+ com.badlogic.gdx.utils.async,
+ com.badlogic.gdx.utils.compression,
+ com.badlogic.gdx.utils.compression.lz,
+ com.badlogic.gdx.utils.compression.lzma,
+ com.badlogic.gdx.utils.compression.rangecoder,
+ com.badlogic.gdx.utils.reflect,
+ com.badlogic.gdx.utils.viewport,
+ imgui,
+ imgui.flag,
+ imgui.glfw,
+ imgui.gl3,
+ imgui.type,
+ net.spookygames.gdx.nativefilechooser,
+ love.distributedrebirth.bassboonyd,
+ love.distributedrebirth.bassboonyd.jmx,
+ love.distributedrebirth.numberxd,
+ love.distributedrebirth.numberxd.base2t,
+ love.distributedrebirth.numberxd.base2t.part,
+ love.distributedrebirth.numberxd.base2t.part.warp,
+ love.distributedrebirth.numberxd.base2t.type,
+ love.distributedrebirth.numberxd.base2t.typexl,
+ love.distributedrebirth.numberxd.glyph,
+ love.distributedrebirth.numberxd.x4o,
+ love.distributedrebirth.warpme,
+ love.distributedrebirth.warpme.core,
+ love.distributedrebirth.warpme.hash,
+ love.distributedrebirth.warpme.sea,
+ love.distributedrebirth.warpme.ship,
+ love.distributedrebirth.unicode4d,
+ love.distributedrebirth.unicode4d.atlas
+
+ distributedrebirth.love
+
+
+
+
+
+
\ No newline at end of file
diff --git a/gdxapp4d-app-calculator/src/chain/warp-sea.xml b/gdxapp4d-app-calculator/src/chain/warp-sea.xml
new file mode 100644
index 00000000..7ea6e2b4
--- /dev/null
+++ b/gdxapp4d-app-calculator/src/chain/warp-sea.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
diff --git a/gdxapp4d-app-hewallet/pom.xml b/gdxapp4d-app-hewallet/pom.xml
new file mode 100644
index 00000000..be17437e
--- /dev/null
+++ b/gdxapp4d-app-hewallet/pom.xml
@@ -0,0 +1,118 @@
+
+ 4.0.0
+
+ love.distributedrebirth.gdxapp4d
+ gdxapp4d
+ 0.0.1-SNAPSHOT
+
+ gdxapp4d-app-hewallet
+ bundle
+
+
+ love.distributedrebirth.gdxapp4d
+ gdxapp4d-vrgem4
+ ${project.version}
+ provided
+
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+ true
+
+ true
+
+ <_donotcopy>(.git)
+ <_dsannotations>*
+ <_metatypeannotations>*
+
+ org.osgi.framework,
+ org.osgi.service.packageadmin,
+ org.osgi.service.url,
+ org.osgi.service.startlevel,
+ org.osgi.util.tracker,
+ love.distributedrebirth.gdxapp4d.tos4.service,
+ love.distributedrebirth.gdxapp4d.vrgem4.service,
+ love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp,
+ com.badlogic.gdx,
+ com.badlogic.gdx.assets,
+ com.badlogic.gdx.assets.loaders,
+ com.badlogic.gdx.assets.loaders.resolvers,
+ com.badlogic.gdx.audio,
+ com.badlogic.gdx.files,
+ com.badlogic.gdx.graphics,
+ com.badlogic.gdx.graphics.g2d,
+ com.badlogic.gdx.graphics.g2d.freetype,
+ com.badlogic.gdx.graphics.g3d,
+ com.badlogic.gdx.graphics.g3d.attributes,
+ com.badlogic.gdx.graphics.g3d.decals,
+ com.badlogic.gdx.graphics.g3d.environment,
+ com.badlogic.gdx.graphics.g3d.loader,
+ com.badlogic.gdx.graphics.g3d.model,
+ com.badlogic.gdx.graphics.g3d.model.data,
+ com.badlogic.gdx.graphics.g3d.particles,
+ com.badlogic.gdx.graphics.g3d.particles.bactches,
+ com.badlogic.gdx.graphics.g3d.particles.emitters,
+ com.badlogic.gdx.graphics.g3d.particles.influencers,
+ com.badlogic.gdx.graphics.g3d.particles.renderers,
+ com.badlogic.gdx.graphics.g3d.particles.values,
+ com.badlogic.gdx.graphics.g3d.shaders,
+ com.badlogic.gdx.graphics.g3d.utils,
+ com.badlogic.gdx.graphics.g3d.utils.shapebuilders,
+ com.badlogic.gdx.graphics.glutils,
+ com.badlogic.gdx.graphics.profiling,
+ com.badlogic.gdx.input,
+ com.badlogic.gdx.maps,
+ com.badlogic.gdx.maps.objects,
+ com.badlogic.gdx.maps.tiled,
+ com.badlogic.gdx.maps.tiled.objects,
+ com.badlogic.gdx.maps.tiled.renderers,
+ com.badlogic.gdx.maps.tiled.tiles,
+ com.badlogic.gdx.math,
+ com.badlogic.gdx.math.collision,
+ com.badlogic.gdx.net,
+ com.badlogic.gdx.scenes.scene2d,
+ com.badlogic.gdx.scenes.scene2d.actions,
+ com.badlogic.gdx.scenes.scene2d.ui,
+ com.badlogic.gdx.scenes.scene2d.utils,
+ com.badlogic.gdx.utils,
+ com.badlogic.gdx.utils.async,
+ com.badlogic.gdx.utils.compression,
+ com.badlogic.gdx.utils.compression.lz,
+ com.badlogic.gdx.utils.compression.lzma,
+ com.badlogic.gdx.utils.compression.rangecoder,
+ com.badlogic.gdx.utils.reflect,
+ com.badlogic.gdx.utils.viewport,
+ imgui,
+ imgui.flag,
+ imgui.glfw,
+ imgui.gl3,
+ imgui.type,
+ net.spookygames.gdx.nativefilechooser,
+ love.distributedrebirth.bassboonyd,
+ love.distributedrebirth.bassboonyd.jmx,
+ love.distributedrebirth.numberxd,
+ love.distributedrebirth.numberxd.base2t,
+ love.distributedrebirth.numberxd.base2t.part,
+ love.distributedrebirth.numberxd.base2t.part.warp,
+ love.distributedrebirth.numberxd.base2t.type,
+ love.distributedrebirth.numberxd.base2t.typexl,
+ love.distributedrebirth.numberxd.glyph,
+ love.distributedrebirth.numberxd.x4o,
+ love.distributedrebirth.warpme,
+ love.distributedrebirth.warpme.core,
+ love.distributedrebirth.warpme.hash,
+ love.distributedrebirth.warpme.sea,
+ love.distributedrebirth.warpme.ship,
+ love.distributedrebirth.unicode4d,
+ love.distributedrebirth.unicode4d.atlas
+
+ distributedrebirth.love
+
+
+
+
+
+
\ No newline at end of file
diff --git a/gdxapp4d-app-hewallet/src/chain/warp-sea.xml b/gdxapp4d-app-hewallet/src/chain/warp-sea.xml
new file mode 100644
index 00000000..55ae2081
--- /dev/null
+++ b/gdxapp4d-app-hewallet/src/chain/warp-sea.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
diff --git a/gdxapp4d-app-hewallet/src/main/java/love/distributedrebirth/gdxapp4d/app/hewallet/HeWalletComponent.java b/gdxapp4d-app-hewallet/src/main/java/love/distributedrebirth/gdxapp4d/app/hewallet/HeWalletComponent.java
new file mode 100644
index 00000000..6804b951
--- /dev/null
+++ b/gdxapp4d-app-hewallet/src/main/java/love/distributedrebirth/gdxapp4d/app/hewallet/HeWalletComponent.java
@@ -0,0 +1,30 @@
+package love.distributedrebirth.gdxapp4d.app.hewallet;
+
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+
+import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxLog;
+import love.distributedrebirth.gdxapp4d.vrgem4.service.VrGem4DeskAppService;
+import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppLauncher;
+
+@Component
+public class HeWalletComponent {
+
+ @Reference
+ private SystemGdxLog log;
+
+ @Reference
+ private VrGem4DeskAppService deskAppService;
+
+ @Activate
+ void open() {
+ log.info(this, "Activated HeWalletComponent");
+ deskAppService.registrateDeskApp(new DeskAppLauncher("Hebrew Wallet", () -> new HeWalletDeskApp()));
+ }
+
+ @Deactivate
+ void close() {
+ }
+}
diff --git a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/HebrewWalletApp.java b/gdxapp4d-app-hewallet/src/main/java/love/distributedrebirth/gdxapp4d/app/hewallet/HeWalletDeskApp.java
similarity index 77%
rename from gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/HebrewWalletApp.java
rename to gdxapp4d-app-hewallet/src/main/java/love/distributedrebirth/gdxapp4d/app/hewallet/HeWalletDeskApp.java
index 2468448f..bc593b9e 100644
--- a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/HebrewWalletApp.java
+++ b/gdxapp4d-app-hewallet/src/main/java/love/distributedrebirth/gdxapp4d/app/hewallet/HeWalletDeskApp.java
@@ -1,18 +1,18 @@
-package love.distributedrebirth.gdxapp4d.vrgem4.desktop.apps;
+package love.distributedrebirth.gdxapp4d.app.hewallet;
import imgui.ImGui;
import imgui.flag.ImGuiTableFlags;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
-import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DefaultDeskApp;
-import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppContourSection;
-import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppRenderer;
+import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.AbstractDeskApp;
+import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppContourSection;
+import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppRenderer;
import love.distributedrebirth.numberxd.Gê̄ldGetậl;
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
-public class HebrewWalletApp extends DefaultDeskApp implements DeskAppRenderer {
+public class HeWalletDeskApp extends AbstractDeskApp implements DeskAppRenderer {
- public HebrewWalletApp() {
- setTitle("Hebrew Wallet");
+ public void create() {
+ getContours().setTitle("Hebrew Wallet");
getContours().registrateContour(DeskAppContourSection.MAIN, this);
}
diff --git a/gdxapp4d-app-notepad/pom.xml b/gdxapp4d-app-notepad/pom.xml
index e06631fe..97f1ac95 100644
--- a/gdxapp4d-app-notepad/pom.xml
+++ b/gdxapp4d-app-notepad/pom.xml
@@ -1,9 +1,118 @@
- 4.0.0
-
- love.distributedrebirth.gdxapp4d
- gdxapp4d
- 0.0.1-SNAPSHOT
-
- gdxapp4d-app-notepad
+ 4.0.0
+
+ love.distributedrebirth.gdxapp4d
+ gdxapp4d
+ 0.0.1-SNAPSHOT
+
+ gdxapp4d-app-notepad
+ bundle
+
+
+ love.distributedrebirth.gdxapp4d
+ gdxapp4d-vrgem4
+ ${project.version}
+ provided
+
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+ true
+
+ true
+
+ <_donotcopy>(.git)
+ <_dsannotations>*
+ <_metatypeannotations>*
+
+ org.osgi.framework,
+ org.osgi.service.packageadmin,
+ org.osgi.service.url,
+ org.osgi.service.startlevel,
+ org.osgi.util.tracker,
+ love.distributedrebirth.gdxapp4d.tos4.service,
+ love.distributedrebirth.gdxapp4d.vrgem4.service,
+ love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp,
+ com.badlogic.gdx,
+ com.badlogic.gdx.assets,
+ com.badlogic.gdx.assets.loaders,
+ com.badlogic.gdx.assets.loaders.resolvers,
+ com.badlogic.gdx.audio,
+ com.badlogic.gdx.files,
+ com.badlogic.gdx.graphics,
+ com.badlogic.gdx.graphics.g2d,
+ com.badlogic.gdx.graphics.g2d.freetype,
+ com.badlogic.gdx.graphics.g3d,
+ com.badlogic.gdx.graphics.g3d.attributes,
+ com.badlogic.gdx.graphics.g3d.decals,
+ com.badlogic.gdx.graphics.g3d.environment,
+ com.badlogic.gdx.graphics.g3d.loader,
+ com.badlogic.gdx.graphics.g3d.model,
+ com.badlogic.gdx.graphics.g3d.model.data,
+ com.badlogic.gdx.graphics.g3d.particles,
+ com.badlogic.gdx.graphics.g3d.particles.bactches,
+ com.badlogic.gdx.graphics.g3d.particles.emitters,
+ com.badlogic.gdx.graphics.g3d.particles.influencers,
+ com.badlogic.gdx.graphics.g3d.particles.renderers,
+ com.badlogic.gdx.graphics.g3d.particles.values,
+ com.badlogic.gdx.graphics.g3d.shaders,
+ com.badlogic.gdx.graphics.g3d.utils,
+ com.badlogic.gdx.graphics.g3d.utils.shapebuilders,
+ com.badlogic.gdx.graphics.glutils,
+ com.badlogic.gdx.graphics.profiling,
+ com.badlogic.gdx.input,
+ com.badlogic.gdx.maps,
+ com.badlogic.gdx.maps.objects,
+ com.badlogic.gdx.maps.tiled,
+ com.badlogic.gdx.maps.tiled.objects,
+ com.badlogic.gdx.maps.tiled.renderers,
+ com.badlogic.gdx.maps.tiled.tiles,
+ com.badlogic.gdx.math,
+ com.badlogic.gdx.math.collision,
+ com.badlogic.gdx.net,
+ com.badlogic.gdx.scenes.scene2d,
+ com.badlogic.gdx.scenes.scene2d.actions,
+ com.badlogic.gdx.scenes.scene2d.ui,
+ com.badlogic.gdx.scenes.scene2d.utils,
+ com.badlogic.gdx.utils,
+ com.badlogic.gdx.utils.async,
+ com.badlogic.gdx.utils.compression,
+ com.badlogic.gdx.utils.compression.lz,
+ com.badlogic.gdx.utils.compression.lzma,
+ com.badlogic.gdx.utils.compression.rangecoder,
+ com.badlogic.gdx.utils.reflect,
+ com.badlogic.gdx.utils.viewport,
+ imgui,
+ imgui.flag,
+ imgui.glfw,
+ imgui.gl3,
+ imgui.type,
+ net.spookygames.gdx.nativefilechooser,
+ love.distributedrebirth.bassboonyd,
+ love.distributedrebirth.bassboonyd.jmx,
+ love.distributedrebirth.numberxd,
+ love.distributedrebirth.numberxd.base2t,
+ love.distributedrebirth.numberxd.base2t.part,
+ love.distributedrebirth.numberxd.base2t.part.warp,
+ love.distributedrebirth.numberxd.base2t.type,
+ love.distributedrebirth.numberxd.base2t.typexl,
+ love.distributedrebirth.numberxd.glyph,
+ love.distributedrebirth.numberxd.x4o,
+ love.distributedrebirth.warpme,
+ love.distributedrebirth.warpme.core,
+ love.distributedrebirth.warpme.hash,
+ love.distributedrebirth.warpme.sea,
+ love.distributedrebirth.warpme.ship,
+ love.distributedrebirth.unicode4d,
+ love.distributedrebirth.unicode4d.atlas
+
+ distributedrebirth.love
+
+
+
+
+
\ No newline at end of file
diff --git a/gdxapp4d-app-notepad/src/chain/warp-sea.xml b/gdxapp4d-app-notepad/src/chain/warp-sea.xml
new file mode 100644
index 00000000..11b29c2f
--- /dev/null
+++ b/gdxapp4d-app-notepad/src/chain/warp-sea.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
diff --git a/gdxapp4d-app-tosamp/pom.xml b/gdxapp4d-app-tosamp/pom.xml
index 36e5c4b1..e5dae40f 100644
--- a/gdxapp4d-app-tosamp/pom.xml
+++ b/gdxapp4d-app-tosamp/pom.xml
@@ -1,9 +1,118 @@
- 4.0.0
-
- love.distributedrebirth.gdxapp4d
- gdxapp4d
- 0.0.1-SNAPSHOT
-
- gdxapp4d-app-tosamp
+ 4.0.0
+
+ love.distributedrebirth.gdxapp4d
+ gdxapp4d
+ 0.0.1-SNAPSHOT
+
+ gdxapp4d-app-tosamp
+ bundle
+
+
+ love.distributedrebirth.gdxapp4d
+ gdxapp4d-vrgem4
+ ${project.version}
+ provided
+
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+ true
+
+ true
+
+ <_donotcopy>(.git)
+ <_dsannotations>*
+ <_metatypeannotations>*
+
+ org.osgi.framework,
+ org.osgi.service.packageadmin,
+ org.osgi.service.url,
+ org.osgi.service.startlevel,
+ org.osgi.util.tracker,
+ love.distributedrebirth.gdxapp4d.tos4.service,
+ love.distributedrebirth.gdxapp4d.vrgem4.service,
+ love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp,
+ com.badlogic.gdx,
+ com.badlogic.gdx.assets,
+ com.badlogic.gdx.assets.loaders,
+ com.badlogic.gdx.assets.loaders.resolvers,
+ com.badlogic.gdx.audio,
+ com.badlogic.gdx.files,
+ com.badlogic.gdx.graphics,
+ com.badlogic.gdx.graphics.g2d,
+ com.badlogic.gdx.graphics.g2d.freetype,
+ com.badlogic.gdx.graphics.g3d,
+ com.badlogic.gdx.graphics.g3d.attributes,
+ com.badlogic.gdx.graphics.g3d.decals,
+ com.badlogic.gdx.graphics.g3d.environment,
+ com.badlogic.gdx.graphics.g3d.loader,
+ com.badlogic.gdx.graphics.g3d.model,
+ com.badlogic.gdx.graphics.g3d.model.data,
+ com.badlogic.gdx.graphics.g3d.particles,
+ com.badlogic.gdx.graphics.g3d.particles.bactches,
+ com.badlogic.gdx.graphics.g3d.particles.emitters,
+ com.badlogic.gdx.graphics.g3d.particles.influencers,
+ com.badlogic.gdx.graphics.g3d.particles.renderers,
+ com.badlogic.gdx.graphics.g3d.particles.values,
+ com.badlogic.gdx.graphics.g3d.shaders,
+ com.badlogic.gdx.graphics.g3d.utils,
+ com.badlogic.gdx.graphics.g3d.utils.shapebuilders,
+ com.badlogic.gdx.graphics.glutils,
+ com.badlogic.gdx.graphics.profiling,
+ com.badlogic.gdx.input,
+ com.badlogic.gdx.maps,
+ com.badlogic.gdx.maps.objects,
+ com.badlogic.gdx.maps.tiled,
+ com.badlogic.gdx.maps.tiled.objects,
+ com.badlogic.gdx.maps.tiled.renderers,
+ com.badlogic.gdx.maps.tiled.tiles,
+ com.badlogic.gdx.math,
+ com.badlogic.gdx.math.collision,
+ com.badlogic.gdx.net,
+ com.badlogic.gdx.scenes.scene2d,
+ com.badlogic.gdx.scenes.scene2d.actions,
+ com.badlogic.gdx.scenes.scene2d.ui,
+ com.badlogic.gdx.scenes.scene2d.utils,
+ com.badlogic.gdx.utils,
+ com.badlogic.gdx.utils.async,
+ com.badlogic.gdx.utils.compression,
+ com.badlogic.gdx.utils.compression.lz,
+ com.badlogic.gdx.utils.compression.lzma,
+ com.badlogic.gdx.utils.compression.rangecoder,
+ com.badlogic.gdx.utils.reflect,
+ com.badlogic.gdx.utils.viewport,
+ imgui,
+ imgui.flag,
+ imgui.glfw,
+ imgui.gl3,
+ imgui.type,
+ net.spookygames.gdx.nativefilechooser,
+ love.distributedrebirth.bassboonyd,
+ love.distributedrebirth.bassboonyd.jmx,
+ love.distributedrebirth.numberxd,
+ love.distributedrebirth.numberxd.base2t,
+ love.distributedrebirth.numberxd.base2t.part,
+ love.distributedrebirth.numberxd.base2t.part.warp,
+ love.distributedrebirth.numberxd.base2t.type,
+ love.distributedrebirth.numberxd.base2t.typexl,
+ love.distributedrebirth.numberxd.glyph,
+ love.distributedrebirth.numberxd.x4o,
+ love.distributedrebirth.warpme,
+ love.distributedrebirth.warpme.core,
+ love.distributedrebirth.warpme.hash,
+ love.distributedrebirth.warpme.sea,
+ love.distributedrebirth.warpme.ship,
+ love.distributedrebirth.unicode4d,
+ love.distributedrebirth.unicode4d.atlas
+
+ distributedrebirth.love
+
+
+
+
+
\ No newline at end of file
diff --git a/gdxapp4d-app-tosamp/src/chain/warp-sea.xml b/gdxapp4d-app-tosamp/src/chain/warp-sea.xml
new file mode 100644
index 00000000..43ccb91b
--- /dev/null
+++ b/gdxapp4d-app-tosamp/src/chain/warp-sea.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
diff --git a/gdxapp4d-app-tosamp/src/main/java/love/distributedrebirth/gdxapp4d/app/tosamp/TosAmpComponent.java b/gdxapp4d-app-tosamp/src/main/java/love/distributedrebirth/gdxapp4d/app/tosamp/TosAmpComponent.java
new file mode 100644
index 00000000..f8e06559
--- /dev/null
+++ b/gdxapp4d-app-tosamp/src/main/java/love/distributedrebirth/gdxapp4d/app/tosamp/TosAmpComponent.java
@@ -0,0 +1,34 @@
+package love.distributedrebirth.gdxapp4d.app.tosamp;
+
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+
+import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxBootArgs;
+import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxLog;
+import love.distributedrebirth.gdxapp4d.vrgem4.service.VrGem4DeskAppService;
+import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppLauncher;
+
+@Component
+public class TosAmpComponent {
+
+ @Reference
+ private SystemGdxLog log;
+
+ @Reference
+ private VrGem4DeskAppService deskAppService;
+
+ @Reference
+ private SystemGdxBootArgs bootArgs;
+
+ @Activate
+ void open() {
+ log.info(this, "Activated TosAmpComponent");
+ deskAppService.registrateDeskApp(new DeskAppLauncher("TosAmp", () -> new TosAmpDeskApp(bootArgs.getFileChooser())));
+ }
+
+ @Deactivate
+ void close() {
+ }
+}
diff --git a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/MusicPlayerApp.java b/gdxapp4d-app-tosamp/src/main/java/love/distributedrebirth/gdxapp4d/app/tosamp/TosAmpDeskApp.java
similarity index 69%
rename from gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/MusicPlayerApp.java
rename to gdxapp4d-app-tosamp/src/main/java/love/distributedrebirth/gdxapp4d/app/tosamp/TosAmpDeskApp.java
index c3905f97..9ff73b76 100644
--- a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/MusicPlayerApp.java
+++ b/gdxapp4d-app-tosamp/src/main/java/love/distributedrebirth/gdxapp4d/app/tosamp/TosAmpDeskApp.java
@@ -1,4 +1,4 @@
-package love.distributedrebirth.gdxapp4d.vrgem4.desktop.apps;
+package love.distributedrebirth.gdxapp4d.app.tosamp;
import java.util.function.Consumer;
@@ -10,34 +10,38 @@ import imgui.flag.ImGuiSelectableFlags;
import imgui.flag.ImGuiTableColumnFlags;
import imgui.flag.ImGuiTableFlags;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
-import love.distributedrebirth.gdxapp4d.tos4.GDXAppTos4;
+import love.distributedrebirth.gdxapp4d.app.tosamp.music.MusicManager;
+import love.distributedrebirth.gdxapp4d.app.tosamp.music.MusicSong;
import love.distributedrebirth.gdxapp4d.vrgem4.FontAwesomeIcons;
-import love.distributedrebirth.gdxapp4d.vrgem4.GDXAppVrGem4;
-import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DefaultDeskApp;
-import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppContourSection;
-import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppRenderer;
-import love.distributedrebirth.gdxapp4d.vrgem4.music.MusicSong;
+import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.AbstractDeskApp;
+import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppContourSection;
+import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppRenderer;
+import net.spookygames.gdx.nativefilechooser.NativeFileChooser;
import net.spookygames.gdx.nativefilechooser.NativeFileChooserCallback;
import net.spookygames.gdx.nativefilechooser.NativeFileChooserConfiguration;
-/**
- * The music player ui.
- */
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
-public class MusicPlayerApp extends DefaultDeskApp implements DeskAppRenderer {
+public class TosAmpDeskApp extends AbstractDeskApp implements DeskAppRenderer {
- private final NativeFileChooserConfiguration fileChooserConfig;
+ private final MusicManager music;
+ private final NativeFileChooser fileChooser;
+ private NativeFileChooserConfiguration fileChooserConfig;
- public MusicPlayerApp() {
- setTitle(FontAwesomeIcons.Music + " Music Player");
+ public TosAmpDeskApp(NativeFileChooser fileChooser) {
+ this.fileChooser = fileChooser;
+ this.music = new MusicManager();
+ }
+
+ public void create() {
+ getContours().setTitle("\uf001 TosAmp");
getContours().registrateContour(DeskAppContourSection.MAIN, this);
getContours().registrateContour(DeskAppContourSection.FILE_NEW, new DeskAppRenderer() {
@Override
public void render() {
if (ImGui.menuItem(FontAwesomeIcons.Plus + " Add")) {
-// GDXAppVrGem4.INSTANCE.terminal.getFileChooser().chooseFile(fileChooserConfig,
-// NativeFileChooserCallbackAdapter.onFileChosen(v -> GDXAppVrGem4.INSTANCE.music.addBackgroundMusic(v)));
+ fileChooser.chooseFile(fileChooserConfig,
+ NativeFileChooserCallbackAdapter.onFileChosen(v -> music.addBackgroundMusic(v)));
}
}
@@ -47,11 +51,11 @@ public class MusicPlayerApp extends DefaultDeskApp implements DeskAppRenderer {
fileChooserConfig.mimeFilter = "audio/*";
fileChooserConfig.title = "Choose audio file";
}
-
+
@Override
public void render() {
ImGui.text("Current Song:");
- MusicSong currentSong = GDXAppVrGem4.INSTANCE.music.getCurrentSong();
+ MusicSong currentSong = music.getCurrentSong();
if (currentSong != null) {
ImGui.sameLine();
ImGui.text(currentSong.getName());
@@ -59,22 +63,22 @@ public class MusicPlayerApp extends DefaultDeskApp implements DeskAppRenderer {
ImGui.separator();
if (currentSong != null) {
if (ImGui.button("Play")) {
- GDXAppVrGem4.INSTANCE.music.play(currentSong);
+ music.play(currentSong);
}
} else {
ImGui.text("Play");
}
ImGui.sameLine();
if (ImGui.button("<")) {
- GDXAppVrGem4.INSTANCE.music.prev();
+ music.prev();
}
ImGui.sameLine();
if (ImGui.button(">")) {
- GDXAppVrGem4.INSTANCE.music.next();
+ music.next();
}
ImGui.sameLine();
if (ImGui.button("Stop")) {
- GDXAppVrGem4.INSTANCE.music.stop();
+ music.stop();
}
int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV;
ImGui.beginTable("playlist", 3, flags);
@@ -83,14 +87,14 @@ public class MusicPlayerApp extends DefaultDeskApp implements DeskAppRenderer {
ImGui.tableSetupColumn("Name");
ImGui.tableHeadersRow();
int i=1;
- for (MusicSong song:GDXAppVrGem4.INSTANCE.music.getBackgroundSongs()) {
+ for (MusicSong song:music.getBackgroundSongs()) {
ImGui.pushID(i);
ImGui.tableNextRow();
ImGui.tableNextColumn();
ImGui.selectable(""+i, song.isPlaying(), ImGuiSelectableFlags.None);
ImGui.tableNextColumn();
if (ImGui.smallButton(">")) {
- GDXAppVrGem4.INSTANCE.music.play(song);
+ music.play(song);
}
ImGui.tableNextColumn();
ImGui.selectable(song.getName(), song.isPlaying(), ImGuiSelectableFlags.None);
diff --git a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/M3UParser.java b/gdxapp4d-app-tosamp/src/main/java/love/distributedrebirth/gdxapp4d/app/tosamp/music/M3UParser.java
similarity index 92%
rename from gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/M3UParser.java
rename to gdxapp4d-app-tosamp/src/main/java/love/distributedrebirth/gdxapp4d/app/tosamp/music/M3UParser.java
index b10d962f..df0bba1c 100644
--- a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/M3UParser.java
+++ b/gdxapp4d-app-tosamp/src/main/java/love/distributedrebirth/gdxapp4d/app/tosamp/music/M3UParser.java
@@ -1,4 +1,4 @@
-package love.distributedrebirth.gdxapp4d.vrgem4.music;
+package love.distributedrebirth.gdxapp4d.app.tosamp.music;
import java.io.BufferedReader;
import java.io.IOException;
diff --git a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/MusicManager.java b/gdxapp4d-app-tosamp/src/main/java/love/distributedrebirth/gdxapp4d/app/tosamp/music/MusicManager.java
similarity index 98%
rename from gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/MusicManager.java
rename to gdxapp4d-app-tosamp/src/main/java/love/distributedrebirth/gdxapp4d/app/tosamp/music/MusicManager.java
index c5b8b496..11736868 100644
--- a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/MusicManager.java
+++ b/gdxapp4d-app-tosamp/src/main/java/love/distributedrebirth/gdxapp4d/app/tosamp/music/MusicManager.java
@@ -1,4 +1,4 @@
-package love.distributedrebirth.gdxapp4d.vrgem4.music;
+package love.distributedrebirth.gdxapp4d.app.tosamp.music;
import java.util.ArrayList;
import java.util.List;
diff --git a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/MusicSong.java b/gdxapp4d-app-tosamp/src/main/java/love/distributedrebirth/gdxapp4d/app/tosamp/music/MusicSong.java
similarity index 89%
rename from gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/MusicSong.java
rename to gdxapp4d-app-tosamp/src/main/java/love/distributedrebirth/gdxapp4d/app/tosamp/music/MusicSong.java
index 7e7b6eab..307d93a8 100644
--- a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/MusicSong.java
+++ b/gdxapp4d-app-tosamp/src/main/java/love/distributedrebirth/gdxapp4d/app/tosamp/music/MusicSong.java
@@ -1,4 +1,4 @@
-package love.distributedrebirth.gdxapp4d.vrgem4.music;
+package love.distributedrebirth.gdxapp4d.app.tosamp.music;
import com.badlogic.gdx.audio.Music;
diff --git a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/MusicSongType.java b/gdxapp4d-app-tosamp/src/main/java/love/distributedrebirth/gdxapp4d/app/tosamp/music/MusicSongType.java
similarity index 80%
rename from gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/MusicSongType.java
rename to gdxapp4d-app-tosamp/src/main/java/love/distributedrebirth/gdxapp4d/app/tosamp/music/MusicSongType.java
index 28ed2aad..04a562e6 100644
--- a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/MusicSongType.java
+++ b/gdxapp4d-app-tosamp/src/main/java/love/distributedrebirth/gdxapp4d/app/tosamp/music/MusicSongType.java
@@ -1,4 +1,4 @@
-package love.distributedrebirth.gdxapp4d.vrgem4.music;
+package love.distributedrebirth.gdxapp4d.app.tosamp.music;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
diff --git a/gdxapp4d-boot-desktop/local-override.xml b/gdxapp4d-boot-desktop/local-override.xml
index 602ce5af..51fec6e5 100644
--- a/gdxapp4d-boot-desktop/local-override.xml
+++ b/gdxapp4d-boot-desktop/local-override.xml
@@ -4,6 +4,13 @@
../gdxapp4d-chain-sys-engine/src/chain
../gdxapp4d-chain-sys-ocean/src/chain
../gdxapp4d-chain-dep-osgi-scr/src/chain
+
+ ../gdxapp4d-app-hewallet/src/chain
+ ../gdxapp4d-app-hewallet/target/classes
+
+ ../gdxapp4d-app-tosamp/src/chain
+ ../gdxapp4d-app-tosamp/target/classes
+
../gdxapp4d-vrgem4/src/chain
../gdxapp4d-vrgem4/target/classes
diff --git a/gdxapp4d-chain-sys-ocean/src/chain/warp-sea.xml b/gdxapp4d-chain-sys-ocean/src/chain/warp-sea.xml
index 9bb29992..684cd92a 100644
--- a/gdxapp4d-chain-sys-ocean/src/chain/warp-sea.xml
+++ b/gdxapp4d-chain-sys-ocean/src/chain/warp-sea.xml
@@ -4,5 +4,9 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://wrap-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-root http://warp-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-root-1.0.xsd">
+
+
+
+
diff --git a/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4Activator.java b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4Activator.java
index c96e72a1..ef417e79 100644
--- a/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4Activator.java
+++ b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4Activator.java
@@ -28,6 +28,7 @@ import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeFont
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
import love.distributedrebirth.gdxapp4d.tos4.service.SystemWarpBase;
+import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxBootFactory;
import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxBootArgs;
import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxFont;
import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxLog;
@@ -53,6 +54,7 @@ public class GDXAppTos4Activator implements BundleActivator {
private NativeFileChooser fileChooser;
private File hyperdriveHome;
private File warpshipHome;
+ private boolean startError;
private BitmapFont gdxFont;
private Properties localOverrides;
private WaterDevice warpshipDevice;
@@ -64,6 +66,7 @@ public class GDXAppTos4Activator implements BundleActivator {
private static final String WARPSHIP_HOME = "Warpship";
public GDXAppTos4Activator() {
+ startError = false;
}
public void BãßInit(List args, int viewWidth, int viewHeight,NativeFileChooser fileChooser, SystemGdxTerminal systemGdxTerminal) {
@@ -88,6 +91,10 @@ public class GDXAppTos4Activator implements BundleActivator {
listeners.remove(listener);
}
+ public boolean hasStartError() {
+ return startError;
+ }
+
@Override
public void stop(final BundleContext context) {
gdxFont.dispose();
@@ -106,6 +113,7 @@ public class GDXAppTos4Activator implements BundleActivator {
hyperdriveHome = new File(userHome, HYPERDRIVE_HOME);
if (!hyperdriveHome.exists()) {
fireMessageEvent("ERROR: No Hyperdrive home.");
+ startError = true;
return;
}
warpshipHome = new File(hyperdriveHome, WARPSHIP_HOME);
@@ -114,6 +122,7 @@ public class GDXAppTos4Activator implements BundleActivator {
}
if (!warpshipHome.exists()) {
fireMessageEvent("ERROR: No Warpship home.");
+ startError = true;
return;
}
File warpShip = new File(warpshipHome, Warpᵐᵉ.WARP_SHIP);
@@ -123,6 +132,7 @@ public class GDXAppTos4Activator implements BundleActivator {
fireMessageEvent("warp-ship: "+warpShip);
if (!warpShip.exists()) {
fireMessageEvent("ERROR: No warp-ship.xml found.");
+ startError = true;
return;
}
try {
@@ -130,6 +140,7 @@ public class GDXAppTos4Activator implements BundleActivator {
} catch (Exception e) {
e.printStackTrace();
fireMessageEvent("ERROR: "+e.getMessage());
+ startError = true;
return;
}
fireMessageEvent("warp-engine: "+warpshipDevice.theShip().getName());
@@ -188,13 +199,16 @@ public class GDXAppTos4Activator implements BundleActivator {
} catch (Exception e) {
e.printStackTrace();
fireMessageEvent("ERROR: "+e.getMessage());
+ startError = true;
return;
}
if (result > 0) {
fireMessageEvent("tos4: FAILURE BOOT ABORTED");
- } else {
- fireMessageEvent("tos4: chains resolved.");
+ startError = true;
+ return;
}
+
+ fireMessageEvent("tos4: chains resolved.");
try {
ServiceReference>[] refs = context.getServiceReferences( SystemWarpSea.class.getName(), "(warp.sea.name=*)" );
for (int i=0;i {
- LOG.debug("Release boot-screen");
- systemActivator.removeBootListener(bootScreen);
- tos4.disposeScreen(bootScreen);
- });
+ if (!systemActivator.hasStartError()) {
+ Gdx.app.postRunnable(() -> {
+ LOG.debug("Release boot-screen");
+ systemActivator.removeBootListener(bootScreen);
+ tos4.disposeScreen(bootScreen);
+ });
+ }
} catch (Exception e) {
throw new RuntimeException(e);
}
diff --git a/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemGdxBootArgs.java b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemGdxBootArgs.java
index 73c058bc..01388375 100644
--- a/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemGdxBootArgs.java
+++ b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemGdxBootArgs.java
@@ -1,5 +1,7 @@
package love.distributedrebirth.gdxapp4d.tos4.service;
+import java.util.Properties;
+
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
import net.spookygames.gdx.nativefilechooser.NativeFileChooser;
@@ -13,4 +15,6 @@ public interface SystemGdxBootArgs {
int getWindowHeight();
NativeFileChooser getFileChooser();
+
+ Properties getLocalOverrides();
}
diff --git a/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4BootFactory.java b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemGdxBootFactory.java
similarity index 98%
rename from gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4BootFactory.java
rename to gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemGdxBootFactory.java
index fef73161..3efdcb11 100644
--- a/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4BootFactory.java
+++ b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemGdxBootFactory.java
@@ -1,4 +1,4 @@
-package love.distributedrebirth.gdxapp4d.tos4;
+package love.distributedrebirth.gdxapp4d.tos4.service;
import java.io.File;
import java.io.IOException;
@@ -16,7 +16,7 @@ import org.osgi.framework.launch.FrameworkFactory;
import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ;
@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天")
-public class GDXAppTos4BootFactory {
+public class SystemGdxBootFactory {
public static void installAndStartBundles(BundleContext bundleContext, String... bundleLocations) throws BundleException {
for (String location : bundleLocations) {
diff --git a/gdxapp4d-vrgem4/pom.xml b/gdxapp4d-vrgem4/pom.xml
index abbe1298..b057685b 100644
--- a/gdxapp4d-vrgem4/pom.xml
+++ b/gdxapp4d-vrgem4/pom.xml
@@ -12,7 +12,6 @@
love.distributedrebirth.gdxapp4d
gdxapp4d-tos4
${project.version}
- provided
@@ -25,9 +24,7 @@
true
<_donotcopy>(.git)
-
<_dsannotations>*
-
<_metatypeannotations>*
org.osgi.framework,
@@ -109,7 +106,10 @@
love.distributedrebirth.unicode4d,
love.distributedrebirth.unicode4d.atlas
- love.distributedrebirth.gdxapp4d.vrgem4.service
+
+ love.distributedrebirth.gdxapp4d.vrgem4.service,
+ love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp
+
love.distributedrebirth.gdxapp4d.vrgem4.*