@@ -9,7 +9,9 @@ import org.gradle.api.model.ObjectFactory
99import org.gradle.api.plugins.JavaPlugin
1010import org.gradle.api.plugins.JavaPluginExtension
1111import org.jetbrains.compose.ComposeExtension
12+ import org.jetbrains.compose.ComposePlugin
1213import org.jetbrains.compose.desktop.DesktopExtension
14+ import org.jetbrains.kotlin.konan.properties.saveToFile
1315import java.io.File
1416import java.util.*
1517import javax.inject.Inject
@@ -23,8 +25,9 @@ class ProcessingPlugin @Inject constructor(private val objectFactory: ObjectFact
2325
2426 project.plugins.apply (" org.jetbrains.compose" )
2527 project.plugins.apply (" org.jetbrains.kotlin.jvm" )
28+ project.plugins.apply (" org.jetbrains.kotlin.plugin.compose" )
2629
27- project.dependencies.add(" implementation" , " org.processing:core:4.3.1 " )
30+ project.dependencies.add(" implementation" , " org.processing:core:4.4.0 " )
2831 project.dependencies.add(" implementation" , project.fileTree(" src" ).apply { include(" **/code/*.jar" ) })
2932
3033 // Base JOGL and Gluegen dependencies
@@ -53,6 +56,7 @@ class ProcessingPlugin @Inject constructor(private val objectFactory: ObjectFact
5356
5457 project.repositories.add(project.repositories.maven { it.setUrl(" https://jogamp.org/deployment/maven" ) })
5558 project.repositories.add(project.repositories.mavenCentral())
59+ project.repositories.add(project.repositories.mavenLocal())
5660
5761 project.extensions.configure(ComposeExtension ::class .java) { extension ->
5862 extension.extensions.getByType(DesktopExtension ::class .java).application { application ->
@@ -72,15 +76,22 @@ class ProcessingPlugin @Inject constructor(private val objectFactory: ObjectFact
7276 dependsOn(" run" )
7377 }
7478 project.tasks.create(" present" ).apply {
75- // TODO: Implement dynamic fullscreen by setting the properties and recompiling the sketch every run
79+ // TODO: Implement dynamic fullscreen by adding an argument to the task. This will require a change to core
7680 group = " processing"
7781 description = " Presents the Processing sketch"
7882 dependsOn(" run" )
7983 }
8084 project.tasks.create(" export" ).apply {
8185 group = " processing"
8286 description = " Creates a distributable version of the Processing sketch"
87+
8388 dependsOn(" createDistributable" )
89+ doLast{
90+ project.copy {
91+ it.from(project.tasks.named(" createDistributable" ).get().outputs.files)
92+ it.into(project.layout.projectDirectory)
93+ }
94+ }
8495 }
8596
8697 project.extensions.getByType(JavaPluginExtension ::class .java).sourceSets.all { sourceSet ->
@@ -127,6 +138,10 @@ class ProcessingPlugin @Inject constructor(private val objectFactory: ObjectFact
127138 val preferences = File (settingsFolder, " preferences.txt" )
128139 val prefs = Properties ()
129140 prefs.load(preferences.inputStream())
141+ prefs.setProperty(" export.application.fullscreen" , " false" )
142+ prefs.setProperty(" export.application.present" , " false" )
143+ prefs.setProperty(" export.application.stop" , " false" )
144+ prefs.store(preferences.outputStream(), null )
130145
131146 val sketchbook = prefs.getProperty(" sketchbook.path.four" )
132147
0 commit comments