From ab3972dbae4c84a490f0eaae7617a63c6fd97e90 Mon Sep 17 00:00:00 2001 From: rickard Date: Tue, 18 Oct 2022 21:19:51 +0200 Subject: [PATCH 001/150] #324 - changes Type to JComboBox with hardcoded values --- .../multiview/MaterialEditorTopComponent.java | 2 +- .../wizard/SNDefVisualPanel2.form | 4 +++- .../wizard/SNDefVisualPanel2.java | 18 +++++++++++++----- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/jme3-materialeditor/src/com/jme3/gde/materials/multiview/MaterialEditorTopComponent.java b/jme3-materialeditor/src/com/jme3/gde/materials/multiview/MaterialEditorTopComponent.java index 62aaa86da..5b6ab1432 100644 --- a/jme3-materialeditor/src/com/jme3/gde/materials/multiview/MaterialEditorTopComponent.java +++ b/jme3-materialeditor/src/com/jme3/gde/materials/multiview/MaterialEditorTopComponent.java @@ -66,7 +66,7 @@ public final class MaterialEditorTopComponent extends CloneableTopComponent impl private final SaveCookie saveCookie = new SaveCookieImpl(); private boolean saveImmediate = true; private boolean updateProperties = false; - private final List materialListeners = new ArrayList(); + private final List materialListeners = new ArrayList<>(); public MaterialEditorTopComponent() { } diff --git a/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel2.form b/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel2.form index 1168da167..8c506afe8 100644 --- a/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel2.form +++ b/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel2.form @@ -51,12 +51,14 @@ + + + - diff --git a/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel2.java b/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel2.java index 6f8b42736..de1dbf58f 100644 --- a/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel2.java +++ b/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel2.java @@ -32,6 +32,8 @@ package com.jme3.gde.shadernodedefinition.wizard; import java.awt.EventQueue; +import javax.swing.DefaultCellEditor; +import javax.swing.JComboBox; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.event.ListSelectionEvent; @@ -40,9 +42,11 @@ @SuppressWarnings({"unchecked", "rawtypes"}) public final class SNDefVisualPanel2 extends JPanel { - - private final Object[] emptyObj = {"", "", ""}; + + private final Object[] emptyObj = {"float", "", ""}; private final String type; + private final String[] varTypes = new String[]{"bool", "int", "float", "vec2", + "vec3", "vec4", "sampler", "sampler2D", "sampler3D", "mat3", "mat4"}; /** * Creates new form SNDefVisualPanel2 @@ -51,7 +55,10 @@ public SNDefVisualPanel2(String type) { initComponents(); this.type = type; titleLabel.setText(type); - varTable.getColumnModel().getSelectionModel().addListSelectionListener(new ExploreSelectionListener()); + varTable.getColumnModel().getSelectionModel().addListSelectionListener( + new ExploreSelectionListener()); + varTable.getColumn("Type").setCellEditor(new DefaultCellEditor( + new JComboBox(varTypes))); } @Override @@ -107,7 +114,9 @@ public void run() { // Edit. if (varTable.isCellEditable(row, col)) { varTable.editCellAt(row, col); - ((JTextField) varTable.getEditorComponent()).selectAll(); + if(col != 0) { + ((JTextField) varTable.getEditorComponent()).selectAll(); + } varTable.getEditorComponent().requestFocusInWindow(); } } @@ -149,7 +158,6 @@ public Class getColumnClass(int columnIndex) { }); jScrollPane1.setViewportView(varTable); - jToolBar1.setFloatable(false); jToolBar1.setRollover(true); org.openide.awt.Mnemonics.setLocalizedText(titleLabel, org.openide.util.NbBundle.getMessage(SNDefVisualPanel2.class, "SNDefVisualPanel2.titleLabel.text")); // NOI18N From 49ee49754762ca31c16c5645ae049a4cbf524a1c Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sun, 7 May 2023 22:14:21 +0300 Subject: [PATCH 002/150] Add the jmeVersion as LibraryVersion object instead of string --- .../gradledesktop/GradleDesktopGameJMEVersionPanelVisual.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jme3-templates/src/com/jme3/gde/templates/gradledesktop/GradleDesktopGameJMEVersionPanelVisual.java b/jme3-templates/src/com/jme3/gde/templates/gradledesktop/GradleDesktopGameJMEVersionPanelVisual.java index f89a4d9ec..097f6cf0f 100644 --- a/jme3-templates/src/com/jme3/gde/templates/gradledesktop/GradleDesktopGameJMEVersionPanelVisual.java +++ b/jme3-templates/src/com/jme3/gde/templates/gradledesktop/GradleDesktopGameJMEVersionPanelVisual.java @@ -167,7 +167,7 @@ private void updateLWJGLdescription() { } protected void store(WizardDescriptor d) { - String jmeVersion = jmeVersionComboBox.getSelectedItem().toString(); + LibraryVersion jmeVersion = jmeVersionComboBox.getItemAt(jmeVersionComboBox.getSelectedIndex()); TemplateLibrary lwjglLibrary = lwjglComboBox.getItemAt(lwjglComboBox.getSelectedIndex()); d.putProperty("jmeVersion", jmeVersion); From 9dac5d2398f2f838077296d7b77e09336da887d5 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sun, 7 May 2023 22:15:25 +0300 Subject: [PATCH 003/150] Add awt dialogs with jME 3.6 and newer --- .../com/jme3/gde/templates/files/freemarker/build.gradle.ftl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/jme3-templates/src/com/jme3/gde/templates/files/freemarker/build.gradle.ftl b/jme3-templates/src/com/jme3/gde/templates/files/freemarker/build.gradle.ftl index b3fd1ca99..73603c3c3 100644 --- a/jme3-templates/src/com/jme3/gde/templates/files/freemarker/build.gradle.ftl +++ b/jme3-templates/src/com/jme3/gde/templates/files/freemarker/build.gradle.ftl @@ -44,6 +44,9 @@ dependencies { // Core JME implementation "org.jmonkeyengine:jme3-core:$jmeVer" implementation "org.jmonkeyengine:jme3-desktop:$jmeVer" + <#if jmeVersion.versionInfo.major gt 3 || (jmeVersion.versionInfo.major == 3 && jmeVersion.versionInfo.minor gte 6 )> + implementation "org.jmonkeyengine:jme3-awt-dialogs:$jmeVer" + <#if lwjglLibrary.isCoreJmeLibrary == true> implementation "${lwjglLibrary.groupId}:${lwjglLibrary.artifactId}:$jmeVer" <#else> From 75f9763975cc3e1fdd79c44d9ebd8d6ca5c03bca Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sun, 7 May 2023 22:30:00 +0300 Subject: [PATCH 004/150] Get the awt dialogs --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 7191f88ab..c86156d0c 100644 --- a/build.gradle +++ b/build.gradle @@ -40,6 +40,7 @@ dependencies { corelibs dep("org.jmonkeyengine:jme3-core:$jmeVersion-$jmeVersionTag", true, true) corelibs dep("org.jmonkeyengine:jme3-desktop:$jmeVersion-$jmeVersionTag", true, true) + corelibs dep("org.jmonkeyengine:jme3-awt-dialogs:$jmeVersion-$jmeVersionTag", true, true) corelibs dep("org.jmonkeyengine:jme3-lwjgl:$jmeVersion-$jmeVersionTag", true, true) corelibs dep("org.jmonkeyengine:jme3-effects:$jmeVersion-$jmeVersionTag", true, true) corelibs dep("org.jmonkeyengine:jme3-blender:3.3.2-stable", false, false) // Pin Pointed until jme3-blender has a dedicated release or support is phased out. From 0515fafd711e8184687c4c157eb0cfce0dddc661 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sun, 7 May 2023 23:56:37 +0300 Subject: [PATCH 005/150] Include the awt dialogs package in the Basic and Tests template --- BasicGameTemplate/nbproject/project.properties | 3 ++- JME3TestsTemplate/nbproject/project.properties | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/BasicGameTemplate/nbproject/project.properties b/BasicGameTemplate/nbproject/project.properties index e5b8156e7..c718e5de9 100644 --- a/BasicGameTemplate/nbproject/project.properties +++ b/BasicGameTemplate/nbproject/project.properties @@ -42,7 +42,8 @@ javac.classpath=\ ${libs.jme3-lwjgl.classpath}:\ ${libs.jme3-effects.classpath}:\ ${libs.jme3-terrain.classpath}:\ - ${libs.jme3-jbullet.classpath} + ${libs.jme3-jbullet.classpath}:\ + ${libs.jme3-awt-dialogs.classpath} # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false diff --git a/JME3TestsTemplate/nbproject/project.properties b/JME3TestsTemplate/nbproject/project.properties index 4c9ee2028..3ba596308 100644 --- a/JME3TestsTemplate/nbproject/project.properties +++ b/JME3TestsTemplate/nbproject/project.properties @@ -36,7 +36,8 @@ javac.classpath=\ ${libs.jme3-effects.classpath}:\ ${libs.jme3-terrain.classpath}:\ ${libs.jme3-jbullet.classpath}:\ - ${libs.jme3-test-data.classpath} + ${libs.jme3-test-data.classpath}:\ + ${libs.jme3-awt-dialogs.classpath} # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false From 5169598aee3289dbff55325b45dab9d2845420d3 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sat, 3 Jun 2023 12:21:04 +0300 Subject: [PATCH 006/150] Latest JDK 17 --- jdks/download-jdks.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jdks/download-jdks.sh b/jdks/download-jdks.sh index 7e849c488..01cd0997e 100755 --- a/jdks/download-jdks.sh +++ b/jdks/download-jdks.sh @@ -11,8 +11,8 @@ set -e # Quit on Error jdk_major_version="17" -jdk_version="0.6" -jdk_build_version="10" +jdk_version="0.7" +jdk_build_version="7" platforms=( "x64_linux" "x86-32_windows" "x64_windows" "x64_mac" ) # DEPRECATED (not required anymore) From 44d1d1f21391bbf6cc115004f80588cc1d68aed7 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sat, 3 Jun 2023 12:43:37 +0300 Subject: [PATCH 007/150] Netbeans 18 + installer --- gradle.properties | 2 +- nbi/antlib/nbi-ant-tasks.jar | Bin 105402 -> 105616 bytes nbi/antlib/nbi-engine.jar | Bin 953523 -> 954915 bytes nbi/antlib/nbi-registries-management.jar | Bin 34679 -> 34845 bytes nbi/antlib/version | 2 +- 5 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 4cfde9d85..a5525d366 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,4 +8,4 @@ jmeVersionTag = stable #jmeVersionTagID = 0 # Path for downloading NetBeans Base -netbeansUrl = https://dlcdn.apache.org/netbeans/netbeans/17/netbeans-17-bin.zip +netbeansUrl = https://dlcdn.apache.org/netbeans/netbeans/18/netbeans-18-bin.zip diff --git a/nbi/antlib/nbi-ant-tasks.jar b/nbi/antlib/nbi-ant-tasks.jar index a0f58e4aa80e05b3c1972a3271078a351793b21c..09bf36a9208b91d85db30ae1983d9e81fa13fdae 100644 GIT binary patch delta 2917 zcmZuzdr*|u76093cfV!#;~gXmVn8hdqR2x<9wwk*6xaY70w#!yuF6BO3m7%DKw_dz zcz@uB5FaEyB8rmW>}oL4KibK(jwyCBW6exxY&vZx*4UV)Gp4rm+`9{PJ6X8*p6~q5 z`JHpmJ^S7L(5dgbtoJF%_0k#v15p2>quVFi%T7y5pBI0ccuFh}qWPkPv%~;ei}Bbe zT#3{~C@st=EZW&hv3|<3#2Tc@7wZ^BB52ns|N zQ(0q^k$@F44&b1SU*Js{Z=p>>yNnL5NkFHJE_BOSf_Mo%G8FVOK)G2L`lO6L9AYpn z-es@bWwSR_+UjMf=vKc>V`k-6Qs|BZ^vgJm0U3jMTfz|;M{!KXaSX|L2k%Na!4UK# z+mvwsIoWZb+vpC1V%4LjTNJ&f1F(lx;j0@;i*qT`C z9Mjmx$tfD0fmd01xU4C}$0HDfe!Hz9*S1#~x|ir}Ai3CD(`Zxg`>|l#z*V>4_l)D}?Rsl+03YI}19R zQ)y14rb>qy8N~av@Qt880+rh3%OxJ0k=ljn0tEa+9k|O)ta>*FVlG~(+BH=b?@Mp%I4J2 zg!yD|mbhnt%hL&Mew+h8IgEpD_JsrlMorr(XH(;vbIgXBM7$qMB+!SOdCz3CVA_kP zMC!*R2hZvT`&~NITntdRBwo>=nE$&Z~${w+yk=56xN7k$W)_)*Nc#g4uqd`J}1j|F@O;LYoT-HDqrR0r5;^AM77>ZLw zvIgskmp3G%cjhiUqxbf>ZN?hY6ZGQke%Bwbx*3Z(cFg5|{p8y&ud1_qwZiz%7g{7CR60NR5<<>+hzr_$bxnZK3{U(@FD|sz zkujeHP}%rcPZ!!!<@i@V%BO$w9hihl*s5CF#!~prte$COPjgJY+s5LB5Z+D@*Oauou3hy=I}`V<`qy@55zvYb zRwRUu4pt_FZ#r0s5Y~3G3L%{DWaUEe?_%49u&;}4{Qo=ok6muRjBXaDS(%}<-ilF1 z(!JHTZYB$_K@Qkg31DB2N&QhMY0fgq6)S@017{RanJvf_t*9`E%zkSo6 z6Rl;1+*%#!VP-+`YfdpxEtGx=nH54oPa1>dvIvkv*QL2lzCj8Yn)g3%dB_Qqh1U#>n z^}3Z;xbmaVNtvmPeC4gq>vsqBXnv3KT%S||CUexmemBK%KT)jvfd^Fo)z2bC7IO}h zG8Ag}0Eh(>&od^JBJnWX)Uh5Z$JHJmbMy_at|-h}eH9x7>fj2Jqo|=C!lARkE5i=-z)& hYi4#A@$-@4LAdT!R~}benZJ5skooJEw)5Wu{{=(+3~m4b delta 2679 zcmY*b3s6+&75>h$>|J&*C?J}ZMbP>{!b?QML+}M+MaYT?0zMFBRUQ!^nEFZ<)FxI% zzzhC>C}IgrCY{!X6ii7mP3@#jrfoXyOkyUDnaQJ*j%_uac523yp8vnQNw_=bKj)su z_n&*tf6v{vS8YEZwS{^LgRBm~4lHRXZV!zQN@teQ86@xCiB;^2c*%?yN(*ORif>&p z#%xQR(L@gA(L%Y3|DIMU9%(63e5YltO|@LSPVB;NC)Q$*Tx!@m2eo$8Nn^bO zPhq>8h0as=d2Y9^X;x-Pvf2q#e*T9My14!*LDIh?ODaHii~Q7NsCnMo|dv8cyl>zSN}PIUUdAw2ovXY50MTGdN3tvHx?o>l|7L&g6Xu z8uob)G}d?z>Nt9P(mo;3`(TA%#`f-gwl{$WiE*9dLl8xr0x%Lzc=y(CAjn`k4Ep-lWT9RQg z2Ja^s)LasBd)Xqg2+9hNbY1&cVvc39a9RBLR`^7t0J ztgj-PkQJOT0&NUo<)fJ53Lb$wB4z|rM-Y)D?`Dl4b_8)l6TiKI*;!VXb$n@X&{A8J zEh_jL#$47YTUr)J2bKE~5?+CY!z1SK;?g8qxQR9jYf<6|zS9k#bPea-9+i%B1CB;s zcA_uGWjC`5`BqjDq0%Qrg3SwftNd8?b$&Nb*=T4YZwR49V^~n0IEwh25`zFrN!3i?$chyn3LagiBKjUp&gVUKL!m&Ae{GA#B4j=Fg%M&8XtTv;()W z6K|s$pTLW|{4V|%duTdpC>wROl6fBLsQ^_}g#El#18u-Qs=z_2L8Iz)33ssqbGh%i z2mNVM36{4dymet^b%fXgk)ZM$5yo67~sx zt%EfrXei)Aq9Ib_5rHp}`9JVW{9U52D+6P!Y!H30SIs>aT%nzB3LdLOjofa^y zXW4?HNh5f;FlUiXjYQw-e7h3fEWB!t&DsrFGnHnjE^W3FJ~(&W^x53muV(P@L|>m7 z-apuDMy>eK5vy{3?Rt}@gylEh4^o2rwHc;q>FWjIO4IbmUz_1;-}70N=B@Xgrq6pH z9*_A^&Uvm6=2P<^P1mcUS>Qc|5e2h?_kWG5W4XS5)liVVy{q!K23?p@(Yo z(PM79?Nz!>C+Ke~dy&^d8S)Dxd@ZzG+QctgC`AeXk|wE1K5u?r#KH5VzAIw;!;zm1_#YtWDYWKir zJXIv6a=!xCK=YnuqFtkfqWl6yDV+TmDB9AyN@)#Gfm6J3fg%*h-H$&lC}IFf836?5 z1I?eTGu`j4cZzs}A{0=L!9dS@OiSvMnm7}%^hwLDTGMi;ZiaYhm~|D-4z@fvYg%H2 zW?XNxiESPJ1gf66mS4!TNmBNt1P*ruLc+wG?5+~{K!UmZOiNC`QzUizfqs>{XjU;l zg(Nvu1J^+F_zR}{M?*H_&Y&&PQ%II+L0|v1C>=a{_QhmAACe{)a_dVfQheU&FC<;$ z?Qj3Y#EX47M0hUxw_pG9u}@F(9GA2#us8F8<}IUs_cubtjf*r*J;xs;Q0CY-mN~+2 z$rNnac+=e2CrJI%5&cqo`5mcE7hec+E0pjq)_UJnT4TlCXz@&!Kb`y&>511k6-mXD z()sJ{fP1L8$MFg%teb)U{g;467j@nKf;UM^;{(%j<*P7phb`*p>{|Lt{(T!DNzRMF zHPDT_~>W6eY4R`2*HnVpI1F z)6{l}=BZupR2Kj9IWHh-@`3G&R<6dq6;3hkCYzYj>qnZ^E1#h`V77_3Pm)9QonW7% Ny)@NUd5-^u;QyN%lEnZ3 diff --git a/nbi/antlib/nbi-engine.jar b/nbi/antlib/nbi-engine.jar index 924d1e2b1dfe2af69e283c7ce1d5715a1f8dc09e..c3b8487eb99bb722858c829684619d7d768f3254 100644 GIT binary patch delta 134456 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%0DuONoEo6rLA5!-S$|6|B&8IQVLV_9!KEbOLyO}7 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

sE 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�g@+8Mfg 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�VN?Rkune=a=oQWEyw_A@(m1x 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 delta 11345 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 N{+ju|_!UeB{0~tOnK1wW diff --git a/nbi/antlib/version b/nbi/antlib/version index c787b5a51..1e57e5e27 100644 --- a/nbi/antlib/version +++ b/nbi/antlib/version @@ -1 +1 @@ -NB-17 +NB-18 From 4578d23baf86defcfcffd292a74404c7d94785e9 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sun, 4 Jun 2023 12:18:35 +0300 Subject: [PATCH 008/150] Update readme.md A long overdue overhaul of the readme. Especially important since we no longer require to build the jME engine manually. --- readme.md | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/readme.md b/readme.md index bc3cd64d9..ba5d3db1a 100644 --- a/readme.md +++ b/readme.md @@ -1,7 +1,7 @@ -# jMonkeyEngine Software Development Kit (SDK) [![Build Status](https://travis-ci.org/jMonkeyEngine/sdk.svg?branch=master)](https://travis-ci.org/jMonkeyEngine/sdk) +# jMonkeyEngine Software Development Kit (SDK) [![Build Status](https://github.com/jMonkeyEngine/sdk/actions/workflows/gradle.yml/badge.svg)](../../actions) Welcome to the repository of the jMonkeyEngine Software Development Kit (SDK). -This SDK simplifies developing 3D Applications with the jMonkeyEngine. It contains everything ever needed to develop a full application. +This SDK simplifies developing 3D Applications with the jMonkeyEngine (jME). It contains everything ever needed to develop a full application. Our SDK (or jmonkeyplatform) is based on the Netbeans IDE but includes additional features like: - A Scene Editor (SceneExplorer: Preview your scene, adjust all positions, add `Controls` and `AppStates` (WYSIWYG) and then just save the scene) @@ -16,9 +16,7 @@ Our SDK (or jmonkeyplatform) is based on the Netbeans IDE but includes additiona and many more! It is important to know that the SDK is not coupled with the engine itself, so if you have issues which are unrelated to the IDE, report them [here](https://github.com/jMonkeyEngine/jmonkeyengine). -This however also means, that the SDK can have a different pace than the engine (at the time of writing, the SDK is on 3.1.0-stable whereas the engine team is already working on 3.2) but you can nonetheless work on a different engine version than the one which is bundled. - -__!!! Note: You are currently watching the master branch which is the active development for JMonkeyEngine 3.2. For the current release candidate, see the v3.1 branch! !!!__ +This however also means, that the SDK can have a different pace than the engine but you can nonetheless work on a different engine version than the one which is bundled. For your own projects, you should consider using Gradle build system which also gives you flexibility on choosing any jMonkeyEngine version. More on this later. ## Getting Started / Downloading the SDK Just have a look at our [releases](https://github.com/jMonkeyEngine/sdk/releases) section. @@ -26,17 +24,15 @@ There you can download the version you desire. The SDK will generally follow the plus some suffixes for different SDK releases on the same engine version. There are multiple files from which you can choose: -You can take the platform agnostic `jmonkeyplatform.zip` which contains the full SDK able to be run on "any" (X86/x86_64) platform (Windows, Mac OS, Linux) however it lacks the jdk as well as blender. +You can take the platform agnostic `jmonkeyplatform.zip` which contains the full SDK able to be run on "any" (X86/x86_64) platform (Windows, Mac OS, Linux) however it lacks the jdk as well as Blender. Thus the prefered download is `jmonkeyplatform-windows-x64.exe` which essentially __is__ `jmonkeyplatform.zip` and the correct version of the JDK and Blender (hence the ~250MiB size increase). If you don't know whether your system is 64 bits (x64) or 32 bits (x86), you can type `uname -i` on Linux or look into the system informations (right click on Computer->Properties) on Windows. -__Note:__ The Tag `stable` is refering to 3.0-stable, which is an ancient version. You should not start any new projects based of 3.0 but use 3.1 instead. Also the tag is pointing to the wrong commit since we had to re-upload those files but the repo doesn't really contain any 3.0 commits anymore. +After the SDK is up and running. A good starting point is to look at the jME examples. Under *File | New project | JME3 Tests* you can create a new project, populated with the jME build in examples. You can freely mess around with these and try out stuff. Your changes can always be reverted by simply creating a new *JME3 Tests* project. Once you are all comfortable and ready to embark on your own exciting journey, *File | New project | Basic game (with Gradle)* is the recommended starting point. ## Building the SDK Building the SDK is an easy process basically, but it depends on what kind of distribution you want to build. -You also have to know that the build process changes from time to time, so have a look at the `.travis.yml` file, or related, you will see how we build our releases then. - -__Note:__ Currently, the SDK has to build the engine on it's own, because not all needed dependencies are in mavenCentral/jCenter. Thus you have to call `build_engine.sh` first on a Linux System, Inside your Windows-Git-Shell or you can manually checkout the [jMonkeyEngine](https://github.com/jMonkeyEngine/jmonkeyengine) repository and then invoke `gradlew.bat -PbuildJavaDoc=true install`. This will add _all_ jMonkeyEngine Libraries into your local maven "server". +You also have to know that the build process changes from time to time, so have a look at the `.github/workflows/gradle.yml` file, or related, you will see how we build our releases then. Technically the gradle task `buildSdk` is the main task which builds the sdk (Invoking `./gradlew buildSdk` or `gradlew.bat buildSdk` on Windows). @@ -48,14 +44,14 @@ __If you want to build the platform agnostic zip:__ __If you want to build the platform installers (like we do):__ call `./download-jdks.sh`, `./gradlew buildSdk` and then `ant build-installers` - You have to install ant for this to work (for linux consult the internet, for mac os look into homebrew). - Note that this takes a long time (more than one hour), because a huge amount of data is compressed and such. + You have to install ant for this to work (for Linux consult the internet, for Mac OS look into homebrew). + Note that this might take a long time, because a huge amount of data is compressed and such. __If you want to build the platform installers (On Windows -> without having ant):__ See above. You can bypass ant by declaring a gradle task, just like it has been done for run. There, the gradle included ant will be used). Alternatively you can launch netbeans in `netbeans/`, open the SDK as Netbeans Project Collection and select __package as__: ![Package as...](http://i.imgur.com/5V2uBHf.png). - Note that you still have to download and unpack the jdks somehow, which is a cumbersome process, which is why it is discouraged to + Note that you still have to download and unpack the JDKs somehow, which is a cumbersome process, which is why it is discouraged to build the installers on Windows (Linux and Mac OS are supported). __If you want to debug the SDK inside an IDE:__ @@ -70,11 +66,4 @@ Basically the only tricky thing is how we handle custom entries in the SceneExpl Just take a look at the `Motion Event Pull Request`, which should've been added around `March 2016`, there you can see what was needed to add MotionEvents to the SDK. Other than that, we are more than happy to help, even if your addition is incomplete. Make sure you use the Netbeans formatting, obvious variable naming and commented and especially documented code, though. -Before you open an issue, make sure that it is not an engine bug, but a real sdk bug. If you are uncertain whether it is a real bug or misuse, you can either open an issue or ask [on the hub](https://hub.jmonkeyengine.org) using the `Troubleshooting | jmonkeyplatform` category. - -## Issues when building -__Could not find `jme3.1.0-stable`__ : - When you occur this issue, you have to go back to the engine build step and see how the engine is called. Technically the engine version is collected out from git tags, or called SNAPSHOT. Then there are cases where this recognition fails. For example when the SDK has a tag but the engine is snapshot. Then take a look at `build.gradle` in the sdk repo. It contains a field called `ext.jmeVersion` or something, where you can specify the version. - -__Could not find `jme3-jbullet`__ : - jBullet is not part of jCenter, which means you forgot to build the engine first. See above. +Before you open an issue, make sure that it is not an engine bug, but a real SDK bug. If you are uncertain whether it is a real bug or misuse, you can either open an issue or ask [on the hub](https://hub.jmonkeyengine.org) using the `Troubleshooting | jmonkeyplatform` category. From e55837a34d33db61c8d8d071fc3f17ccce2d0fb7 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sun, 4 Jun 2023 18:45:56 +0300 Subject: [PATCH 009/150] Update readme.md --- readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index ba5d3db1a..68aae11a0 100644 --- a/readme.md +++ b/readme.md @@ -31,7 +31,7 @@ If you don't know whether your system is 64 bits (x64) or 32 bits (x86), you can After the SDK is up and running. A good starting point is to look at the jME examples. Under *File | New project | JME3 Tests* you can create a new project, populated with the jME build in examples. You can freely mess around with these and try out stuff. Your changes can always be reverted by simply creating a new *JME3 Tests* project. Once you are all comfortable and ready to embark on your own exciting journey, *File | New project | Basic game (with Gradle)* is the recommended starting point. ## Building the SDK -Building the SDK is an easy process basically, but it depends on what kind of distribution you want to build. +Building the SDK is an easy process basically, but it depends on what kind of distribution you want to build. Currently the SDK requires __JDK 17__ to build. You also have to know that the build process changes from time to time, so have a look at the `.github/workflows/gradle.yml` file, or related, you will see how we build our releases then. Technically the gradle task `buildSdk` is the main task which builds the sdk (Invoking `./gradlew buildSdk` or `gradlew.bat buildSdk` on Windows). @@ -57,7 +57,7 @@ __If you want to build the platform installers (On Windows -> without having ant __If you want to debug the SDK inside an IDE:__ See above. You want to open the SDK as Netbeans Project from within Netbeans (you can use the nb in `netbeans/`) and you can then treat it as regular project with the difference that there are several subproject. -A note about the `netbeans/` folder: To save bandwidth `buildSdk` downloads netbeans once to said folder and uses it over and over again. Even when the download URL is changed (i.e. when you update the netbeans version), you have to delete the netbeans folder and remove it from any cache (`Travis!`), so it can be reloaded. +A note about the `netbeans/` folder: To save bandwidth `buildSdk` downloads netbeans once to said folder and uses it over and over again. Even when the download URL is changed (i.e. when you update the Netbeans version), you have to delete the netbeans folder and remove it from any cache so it can be reloaded. ## Developing/Contributing First of all, I suggest you to take a look at [docs/](https://github.com/jMonkeyEngine/sdk/tree/master/docs). Those docs are a loose collection of things I came across during development, but they prevent you from re-doing the same experiences. From 537c791074c72b2abd07c1b4b429b80083202b29 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Mon, 5 Jun 2023 08:22:23 +0300 Subject: [PATCH 010/150] Update readme.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Rickard Edén --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 68aae11a0..dc18002c9 100644 --- a/readme.md +++ b/readme.md @@ -66,4 +66,4 @@ Basically the only tricky thing is how we handle custom entries in the SceneExpl Just take a look at the `Motion Event Pull Request`, which should've been added around `March 2016`, there you can see what was needed to add MotionEvents to the SDK. Other than that, we are more than happy to help, even if your addition is incomplete. Make sure you use the Netbeans formatting, obvious variable naming and commented and especially documented code, though. -Before you open an issue, make sure that it is not an engine bug, but a real SDK bug. If you are uncertain whether it is a real bug or misuse, you can either open an issue or ask [on the hub](https://hub.jmonkeyengine.org) using the `Troubleshooting | jmonkeyplatform` category. +If you think you've encountered a bug in the SDK, please open an issue to let the developers know or post [on the hub](https://hub.jmonkeyengine.org) using the `Troubleshooting | jmonkeyplatform` category. From 2e4125a15f5c72fde8965ab10ef6cfab3c6151aa Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Mon, 10 Jul 2023 15:58:16 +0300 Subject: [PATCH 011/150] Update to the latest point release of jME --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index a5525d366..1627e4033 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ # Version number used for plugins, only 3 numbers (e.g. 3.1.3) -jmeVersion = 3.6.0 +jmeVersion = 3.6.1 # Version used for application and settings folder, no spaces! jmeMainVersion = 3.6 # Version addition pre-alpha-svn, Stable, Beta From 3e28728ec9987e33f120a1c57e91c45f9fcc2a70 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Mon, 10 Jul 2023 16:17:16 +0300 Subject: [PATCH 012/150] Add jME 3.6.1 to known versions --- .../gde/templates/files/patchnotes/361-stable.html | 13 +++++++++++++ .../templates/gradledesktop/options/JMEVersion.java | 2 ++ 2 files changed, 15 insertions(+) create mode 100644 jme3-templates/src/com/jme3/gde/templates/files/patchnotes/361-stable.html diff --git a/jme3-templates/src/com/jme3/gde/templates/files/patchnotes/361-stable.html b/jme3-templates/src/com/jme3/gde/templates/files/patchnotes/361-stable.html new file mode 100644 index 000000000..93a60e6b3 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/files/patchnotes/361-stable.html @@ -0,0 +1,13 @@ + +

A production-quality JMonkeyEngine 3.6 patch release with the following noteworthy changes relative to 3.6.0-stable:

+
    +
  • re-initialize the renderer on each context restart (issues #798 and #801, PR #1988)
  • +
  • update the LWJGL3 libraries from v3.3.1 to v3.3.2 (76ebd14 and issue #1778)
  • +
  • app crashes when using OpenGL version 3.0 and 3.1 (issue #2011, PR #2009)
  • +
  • instanced objects are culled when using WaterFilter (issue #2007, PRs #2008 and #2036)
  • +
  • better messages in Spatial assertions (issue #1992, PR #1993)
  • +
  • use PrimitiveAllocator by default on Android (PR #2029)
  • +
  • serialization of ShaderNodeDefinition (issue #2034, PR #2035)
  • +
+ + diff --git a/jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/JMEVersion.java b/jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/JMEVersion.java index 365f73fe1..de1b9c1d6 100644 --- a/jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/JMEVersion.java +++ b/jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/JMEVersion.java @@ -56,6 +56,8 @@ */ public enum JMEVersion implements LibraryVersion { + JME_3_6_1("3.6.1-stable", + "/com/jme3/gde/templates/files/patchnotes/361-stable.html"), JME_3_6_0("3.6.0-stable", "/com/jme3/gde/templates/files/patchnotes/360-stable.html"), JME_3_5_2("3.5.2-stable", From c7d25f085fc46a14804e08d07cee6dced265228d Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Tue, 11 Jul 2023 14:27:28 +0300 Subject: [PATCH 013/150] Open module to allow drag & drop in code editor --- nbproject/project.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nbproject/project.properties b/nbproject/project.properties index e5e8dde42..d9f61cb99 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -12,7 +12,7 @@ app.version=3.4.1-SNAPSHOT plugins.version=3.4.1 nbm.revision=2026 #command line args -run.args.extra=-J-Dsun.java2d.noddraw\=true -J--add-opens\=java.base/java.net\=ALL-UNNAMED -J--add-exports\=java.desktop/sun.awt\=ALL-UNNAMED -J--add-opens\=java.desktop/javax.swing.text\=ALL-UNNAMED -J--add-opens\=java.desktop/javax.swing\=ALL-UNNAMED -J--add-opens\=java.prefs/java.util.prefs\=ALL-UNNAMED -J--add-opens\=java.base/java.security\=ALL-UNNAMED -J--add-exports\=java.base/sun.reflect.annotation\=ALL-UNNAMED +run.args.extra=-J-Dsun.java2d.noddraw\=true -J--add-opens\=java.base/java.net\=ALL-UNNAMED -J--add-exports\=java.desktop/sun.awt\=ALL-UNNAMED -J--add-opens\=java.desktop/javax.swing.text\=ALL-UNNAMED -J--add-opens\=java.desktop/javax.swing\=ALL-UNNAMED -J--add-opens\=java.prefs/java.util.prefs\=ALL-UNNAMED -J--add-opens\=java.base/java.security\=ALL-UNNAMED -J--add-exports\=java.base/sun.reflect.annotation\=ALL-UNNAMED -J--add-opens\=java.desktop/javax.swing.plaf.basic\=ALL-UNNAMED auxiliary.org-netbeans-modules-apisupport-installer.license-file=license-jme.txt auxiliary.org-netbeans-modules-apisupport-installer.os-linux=true auxiliary.org-netbeans-modules-apisupport-installer.os-macosx=true From 088cb96b5b9f99418da0702e0b8fb08b28457911 Mon Sep 17 00:00:00 2001 From: Pete Whelpton Date: Tue, 18 Jul 2023 21:57:53 +0100 Subject: [PATCH 014/150] Make Scene Composer grid symmetrical --- .../jme3/gde/core/scene/controller/SceneToolController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jme3-core/src/com/jme3/gde/core/scene/controller/SceneToolController.java b/jme3-core/src/com/jme3/gde/core/scene/controller/SceneToolController.java index 3d24325d5..4aae0ee7f 100644 --- a/jme3-core/src/com/jme3/gde/core/scene/controller/SceneToolController.java +++ b/jme3-core/src/com/jme3/gde/core/scene/controller/SceneToolController.java @@ -136,9 +136,9 @@ protected final void initTools() { //cursor.attachChild(cursorArrowZ); //grid - grid = new Geometry("grid", new Grid(20, 20, 1.0f)); + grid = new Geometry("grid", new Grid(21, 21, 1.0f)); grid.setMaterial(grayMat); - grid.setLocalTranslation(-10, 0, -10); + grid.center().move(Vector3f.ZERO); SceneApplication.getApplication().enqueue(new Callable() { @Override public Object call() throws Exception { From e6de08c3e30486205bf774f18c16f44c1fc0453c Mon Sep 17 00:00:00 2001 From: rickard Date: Thu, 10 Aug 2023 15:44:03 +0200 Subject: [PATCH 015/150] fixing Material Parameter strings --- .../dialog/AddMaterialParameterDialog.java | 1 - .../jme3/gde/materialdefinition/dialog/Bundle.properties | 6 ++++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/jme3-materialeditor/src/com/jme3/gde/materialdefinition/dialog/AddMaterialParameterDialog.java b/jme3-materialeditor/src/com/jme3/gde/materialdefinition/dialog/AddMaterialParameterDialog.java index a3b2c867d..e07837a98 100644 --- a/jme3-materialeditor/src/com/jme3/gde/materialdefinition/dialog/AddMaterialParameterDialog.java +++ b/jme3-materialeditor/src/com/jme3/gde/materialdefinition/dialog/AddMaterialParameterDialog.java @@ -31,7 +31,6 @@ */ package com.jme3.gde.materialdefinition.dialog; -import com.jme3.gde.core.editor.nodes.Diagram; import com.jme3.gde.materialdefinition.editor.ShaderNodeDiagram; import com.jme3.shader.VarType; import java.awt.Point; diff --git a/jme3-materialeditor/src/com/jme3/gde/materialdefinition/dialog/Bundle.properties b/jme3-materialeditor/src/com/jme3/gde/materialdefinition/dialog/Bundle.properties index 706982093..49f629f5f 100644 --- a/jme3-materialeditor/src/com/jme3/gde/materialdefinition/dialog/Bundle.properties +++ b/jme3-materialeditor/src/com/jme3/gde/materialdefinition/dialog/Bundle.properties @@ -5,13 +5,15 @@ AddMaterialParameterDialog.jLabel1.text=Parameter Type AddMaterialParameterDialog.title=Add Material Parameter AddMaterialParameterDialog.jButton1.text=Ok AddMaterialParameterDialog.jButton2.text=Cancel -AddWorldParameterDialog.title=Add Material Parameter +AddMaterialParameterDialog.okButton.text=Ok +AddMaterialParameterDialog.cancelButton.text=Cancel +AddWorldParameterDialog.title=Add World Parameter AddWorldParameterDialog.jButton1.text=Ok AddWorldParameterDialog.jButton2.text=Cancel AddWorldParameterDialog.jLabel1.text=Parameter Name AddAttributeDialog.jButton2.text=Cancel AddAttributeDialog.jLabel1.text=Attribute -AddAttributeDialog.title=Add Material Parameter +AddAttributeDialog.title=Add Attribute AddAttributeDialog.jButton1.text=Ok AddAttributeDialog.jLabel2.text=GLSL Type AddAttributeDialog.typeField.text= From 9e6164bdc9f0664262e98235ac02068498ed512a Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Wed, 6 Sep 2023 19:46:15 +0300 Subject: [PATCH 016/150] Latest JDK 17 --- jdks/download-jdks.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jdks/download-jdks.sh b/jdks/download-jdks.sh index 01cd0997e..2899fa3e5 100755 --- a/jdks/download-jdks.sh +++ b/jdks/download-jdks.sh @@ -11,8 +11,8 @@ set -e # Quit on Error jdk_major_version="17" -jdk_version="0.7" -jdk_build_version="7" +jdk_version="0.8.1" +jdk_build_version="1" platforms=( "x64_linux" "x86-32_windows" "x64_windows" "x64_mac" ) # DEPRECATED (not required anymore) From 2e5a808246615c2c4762324139a7a49cba1804c5 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Wed, 6 Sep 2023 20:02:32 +0300 Subject: [PATCH 017/150] Netbeans 19 --- gradle.properties | 2 +- nbi/antlib/nbi-ant-tasks.jar | Bin 105616 -> 105616 bytes nbi/antlib/nbi-engine.jar | Bin 954915 -> 954915 bytes nbi/antlib/nbi-registries-management.jar | Bin 34845 -> 34845 bytes 4 files changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 1627e4033..25642b018 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,4 +8,4 @@ jmeVersionTag = stable #jmeVersionTagID = 0 # Path for downloading NetBeans Base -netbeansUrl = https://dlcdn.apache.org/netbeans/netbeans/18/netbeans-18-bin.zip +netbeansUrl = https://dlcdn.apache.org/netbeans/netbeans/19/netbeans-19-bin.zip diff --git a/nbi/antlib/nbi-ant-tasks.jar b/nbi/antlib/nbi-ant-tasks.jar index 09bf36a9208b91d85db30ae1983d9e81fa13fdae..d24c2b5212c9e6623a5942a121062ae66b3a0a53 100644 GIT binary patch delta 865 zcmYk3T}V@59LCRcJf6u|E6rk5F1?xsl_Nq79EtYDEZWsps8py$Mqfx6X3e0xww-x4 zUpK=>M0ODsO00omq(NX%UNr;zxQZ@x`{{lCvSf32Wu1=W2d zSfV&3sZ5gQ4tT;zw@;Zh_J)*VzAt#W|L~c+?uEbHFr@#UD!oRo)}wH;B#uVH8#ECr zOC`xzJD1~c)jy4^lOOMQSpAwF_9^T#{p7lp zWzVz45^7ab>n*qb`Mz>$g9~$3zJtYUGPU{lPOEP5L;praTNxdoXGsRNMKHHo|JKcL}yR$rusRwfl{kPl1e1$+`&itl3u^kWA62aV!hA$xc~55yY54v)HJ03o=Ux1uF|7$vm}lN!W%Ra z%HQl$2~ht$$gtCFHk%_XE)p&NFW?r{Ao zYInK=)uj1r{dQejD$8sW*)i3M|2!D*?J1Tdb8TLTzh3_|u1`L95FOGx6J7 zVTf}q*Wx01QjPdyR1rPWeasw6k%M`hbYf$L4n&u)`@ReUEw#QIsjZj2m z2wJvy7Q;r;Pt!H$CpN|H>4@GqI2AD+$8NgI5(twz6KEs7OrVuirQrzas)lyb7Y$vc za1#4T_mVhDDj&iDQqPd16&5L|J6*Cmjt-G|rHIrE#8gI^(#XGtM2MQJkQgA9eDr Iy^gd00H@SK;s5{u diff --git a/nbi/antlib/nbi-engine.jar b/nbi/antlib/nbi-engine.jar index c3b8487eb99bb722858c829684619d7d768f3254..ae246b5a7482ac57037d983764463c67c6af3619 100644 GIT binary patch delta 13750 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 delta 13750 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 CeN{OC delta 250 zcmbO`fobjpCcXe~W)?061`Y;>;^=K*6ZzCxia@mG6c#Z5q8x<&tPZ9p%P|^47{QF@ z5Jn%PHH2}N(G9{7XYvL!Hm5PEGecMtSxea=EG}MWs92ytUNJ<&;bwENt&{&X+d)Je zTJ#`{q86w%Yg-&4BA;5^Aq?AAh&7XYTEieB&sw7)4A-_C2xDtoE`*`h4z+7;djkMV C4_@B@ From 697a5f237a1b51c9b479ff9a63f09657a43ee808 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rickard=20Ed=C3=A9n?= Date: Sat, 9 Sep 2023 16:19:35 +0200 Subject: [PATCH 018/150] Assetbrowser (#506) * initial commit * drag and drop working * drag and drop works for spatials and materials (somewhat) assetbrowser resizes correctly. * resizing previews actually use generated preview * resizing previews actually use generated preview * fixing material vs spatial drop clean up * fixing material vs spatial drop fix proper drop location in SceneViewer clean up * delete obsolete files * reverting changes to SceneComposer * hooking up delete * fixing a lot of the outstanding issues with AssetBrowser * a bit of formatting and fixing * tweaks * special handling of project path for gradle projects --- jme3-assetbrowser/build.xml | 8 + jme3-assetbrowser/manifest.mf | 7 + jme3-assetbrowser/nbproject/build-impl.xml | 45 ++ .../nbproject/genfiles.properties | 8 + .../nbproject/project.properties | 7 + jme3-assetbrowser/nbproject/project.xml | 260 +++++++++ jme3-assetbrowser/nbproject/suite.properties | 1 + .../jme3/gde/assetbrowser/AssetBrowser.form | 155 +++++ .../jme3/gde/assetbrowser/AssetBrowser.java | 548 ++++++++++++++++++ .../AssetBrowserTopComponent.form | 48 ++ .../AssetBrowserTopComponent.java | 112 ++++ .../jme3/gde/assetbrowser/Bundle.properties | 10 + .../com/jme3/gde/assetbrowser/Constants.java | 43 ++ .../jme3/gde/assetbrowser/PreviewHelper.java | 310 ++++++++++ .../dnd/AssetPreviewPopupMenu.java | 48 ++ .../dnd/AssetPreviewWidgetMouseListener.java | 94 +++ .../jme3/gde/assetbrowser/icons/Icons.java | 55 ++ .../com/jme3/gde/assetbrowser/icons/asset.png | Bin 0 -> 9399 bytes .../gde/assetbrowser/icons/remove_texture.svg | 1 + .../gde/assetbrowser/icons/sound-waves.png | Bin 0 -> 6717 bytes .../gde/assetbrowser/icons/sound-waves.svg | 61 ++ .../widgets/AssetPreviewWidget.form | 68 +++ .../widgets/AssetPreviewWidget.java | 182 ++++++ .../assetbrowser/widgets/Bundle.properties | 4 + .../assetbrowser/widgets/MatDefPreview.java | 47 ++ .../assetbrowser/widgets/MaterialPreview.java | 48 ++ .../assetbrowser/widgets/ModelPreview.java | 48 ++ .../widgets/PreviewInteractionListener.java | 45 ++ .../assetbrowser/widgets/SoundPreview.java | 46 ++ .../assetbrowser/widgets/TexturePreview.java | 22 + .../nbproject/genfiles.properties | 2 +- jme3-core/nbproject/project.xml | 9 +- .../gde/core/assets/ProjectAssetManager.java | 91 +-- .../jme3/gde/core/dnd/AssetGrabHandler.java | 89 +++ .../jme3/gde/core/dnd/AssetNameHolder.java | 16 + .../jme3/gde/core/dnd/AssetTransferable.java | 60 ++ .../jme3/gde/core/dnd/MaterialDataFlavor.java | 10 + .../core/dnd/MaterialDropTargetListener.java | 80 +++ .../dnd/SceneViewerDropTargetListener.java | 94 +++ .../jme3/gde/core/dnd/SpatialDataFlavor.java | 41 ++ .../jme3/gde/core/dnd/StringDataFlavor.java | 50 ++ .../jme3/gde/core/dnd/TextureDataFlavor.java | 41 ++ .../jme3/gde/core/scene/PreviewRequest.java | 4 +- .../sceneviewer/SceneViewerTopComponent.java | 68 ++- .../materials/MaterialPreviewOpenSupport.java | 30 + .../dnd/TextureDropTargetListener.java | 111 ++++ .../multiview/widgets/TexturePanel.java | 26 +- .../multiview/widgets/TexturePanelSquare.java | 26 +- .../gde/scenecomposer/OpenSceneComposer.java | 44 +- .../src/com/jme3/gde/scenecomposer/layer.xml | 42 ++ nbproject/project.properties | 11 +- 51 files changed, 3199 insertions(+), 77 deletions(-) create mode 100644 jme3-assetbrowser/build.xml create mode 100644 jme3-assetbrowser/manifest.mf create mode 100644 jme3-assetbrowser/nbproject/build-impl.xml create mode 100644 jme3-assetbrowser/nbproject/genfiles.properties create mode 100644 jme3-assetbrowser/nbproject/project.properties create mode 100644 jme3-assetbrowser/nbproject/project.xml create mode 100644 jme3-assetbrowser/nbproject/suite.properties create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/AssetBrowser.form create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/AssetBrowser.java create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/AssetBrowserTopComponent.form create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/AssetBrowserTopComponent.java create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/Bundle.properties create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/Constants.java create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/PreviewHelper.java create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/dnd/AssetPreviewPopupMenu.java create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/dnd/AssetPreviewWidgetMouseListener.java create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/icons/Icons.java create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/icons/asset.png create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/icons/remove_texture.svg create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/icons/sound-waves.png create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/icons/sound-waves.svg create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/AssetPreviewWidget.form create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/AssetPreviewWidget.java create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/Bundle.properties create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/MatDefPreview.java create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/MaterialPreview.java create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/ModelPreview.java create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/PreviewInteractionListener.java create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/SoundPreview.java create mode 100644 jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/TexturePreview.java create mode 100644 jme3-core/src/com/jme3/gde/core/dnd/AssetGrabHandler.java create mode 100644 jme3-core/src/com/jme3/gde/core/dnd/AssetNameHolder.java create mode 100644 jme3-core/src/com/jme3/gde/core/dnd/AssetTransferable.java create mode 100644 jme3-core/src/com/jme3/gde/core/dnd/MaterialDataFlavor.java create mode 100644 jme3-core/src/com/jme3/gde/core/dnd/MaterialDropTargetListener.java create mode 100644 jme3-core/src/com/jme3/gde/core/dnd/SceneViewerDropTargetListener.java create mode 100644 jme3-core/src/com/jme3/gde/core/dnd/SpatialDataFlavor.java create mode 100644 jme3-core/src/com/jme3/gde/core/dnd/StringDataFlavor.java create mode 100644 jme3-core/src/com/jme3/gde/core/dnd/TextureDataFlavor.java create mode 100644 jme3-materialeditor/src/com/jme3/gde/materials/MaterialPreviewOpenSupport.java create mode 100644 jme3-materialeditor/src/com/jme3/gde/materials/dnd/TextureDropTargetListener.java diff --git a/jme3-assetbrowser/build.xml b/jme3-assetbrowser/build.xml new file mode 100644 index 000000000..97de6a221 --- /dev/null +++ b/jme3-assetbrowser/build.xml @@ -0,0 +1,8 @@ + + + + + + Builds, tests, and runs the project com.jme3.assetbrowser. + + diff --git a/jme3-assetbrowser/manifest.mf b/jme3-assetbrowser/manifest.mf new file mode 100644 index 000000000..87b1d0b18 --- /dev/null +++ b/jme3-assetbrowser/manifest.mf @@ -0,0 +1,7 @@ +Manifest-Version: 1.0 +AutoUpdate-Show-In-Client: true +OpenIDE-Module: com.jme3.gde.assetbrowser +OpenIDE-Module-Localizing-Bundle: com/jme3/gde/assetbrowser/Bundle.properties +OpenIDE-Module-Requires: org.openide.windows.WindowManager +OpenIDE-Module-Specification-Version: 1.0 + diff --git a/jme3-assetbrowser/nbproject/build-impl.xml b/jme3-assetbrowser/nbproject/build-impl.xml new file mode 100644 index 000000000..081c3f289 --- /dev/null +++ b/jme3-assetbrowser/nbproject/build-impl.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + You must set 'suite.dir' to point to your containing module suite + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jme3-assetbrowser/nbproject/genfiles.properties b/jme3-assetbrowser/nbproject/genfiles.properties new file mode 100644 index 000000000..7690ae5fb --- /dev/null +++ b/jme3-assetbrowser/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=9efa5489 +build.xml.script.CRC32=f284e28d +build.xml.stylesheet.CRC32=15ca8a54@2.91 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=37385f23 +nbproject/build-impl.xml.script.CRC32=a691b4aa +nbproject/build-impl.xml.stylesheet.CRC32=49aa68b0@2.91 diff --git a/jme3-assetbrowser/nbproject/project.properties b/jme3-assetbrowser/nbproject/project.properties new file mode 100644 index 000000000..7312cafeb --- /dev/null +++ b/jme3-assetbrowser/nbproject/project.properties @@ -0,0 +1,7 @@ +#Thu, 25 Aug 2011 20:26:49 +0200 +javac.source=17 +javac.compilerargs=-Xlint -Xlint:-serial +license.file=../license-jme.txt +nbm.homepage=https://www.jmonkeyengine.org +nbm.module.author=Normen Hansen +nbm.needs.restart=true diff --git a/jme3-assetbrowser/nbproject/project.xml b/jme3-assetbrowser/nbproject/project.xml new file mode 100644 index 000000000..4db2ce9be --- /dev/null +++ b/jme3-assetbrowser/nbproject/project.xml @@ -0,0 +1,260 @@ + + + org.netbeans.modules.apisupport.project + + + com.jme3.gde.assetbrowser + + + + com.jme3.gde.core + + + + 1 + 3.6.0 + + + + com.jme3.gde.materials + + + + 1 + 3.6.0 + + + + com.jme3.gde.scenecomposer + + + + 1 + 3.6.0 + + + + com.jme3.gde.textureeditor + + + + 1 + 3.6.0 + + + + com.jme3.gde.core.baselibs + + + + 1 + 3.6.0 + + + + com.jme3.gde.core.libraries + + + + 1 + 3.6.0 + + + + org.netbeans.api.templates + + + + 1.6.1 + + + + org.netbeans.api.visual + + + + 2.43.1 + + + + org.netbeans.core.multiview + + + + 1 + 1.40.1 + + + + org.netbeans.modules.editor.document + + + + 1.5.1.1 + + + + org.netbeans.modules.editor.lib + + + + 3 + 3.49.2.22.43 + + + + org.netbeans.modules.projectapi + + + + 1 + 1.60.2 + + + + org.netbeans.modules.projectuiapi + + + + 1 + 1.78.1.8 + + + + org.netbeans.modules.settings + + + + 1 + 1.45.1 + + + + org.netbeans.modules.websvc.jaxws21api + + + + 1 + 1.34.1 + + + + org.netbeans.spi.navigator + + + + 1 + 1.33.1 + + + + org.openide.actions + + + + 6.38.1 + + + + org.openide.awt + + + + 7.62.1 + + + + org.openide.dialogs + + + + 7.38.1 + + + + org.openide.explorer + + + + 6.57.1 + + + + org.openide.filesystems + + + + 9.7.1 + + + + org.openide.filesystems.nb + + + + 9.7.1 + + + + org.openide.loaders + + + + 7.57.2 + + + + org.openide.nodes + + + + 7.39.1 + + + + org.openide.text + + + + 6.62.2 + + + + org.openide.util + + + + 8.39.1 + + + + org.openide.util.lookup + + + + 8.25.1 + + + + org.openide.util.ui + + + + 9.4.1 + + + + org.openide.windows + + + + 6.71.1 + + + + + com.jme3.gde.assetBrowser + + + + diff --git a/jme3-assetbrowser/nbproject/suite.properties b/jme3-assetbrowser/nbproject/suite.properties new file mode 100644 index 000000000..29d7cc9bd --- /dev/null +++ b/jme3-assetbrowser/nbproject/suite.properties @@ -0,0 +1 @@ +suite.dir=${basedir}/.. diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/AssetBrowser.form b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/AssetBrowser.form new file mode 100644 index 000000000..2e1db28ea --- /dev/null +++ b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/AssetBrowser.form @@ -0,0 +1,155 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/AssetBrowser.java b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/AssetBrowser.java new file mode 100644 index 000000000..7f4f06757 --- /dev/null +++ b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/AssetBrowser.java @@ -0,0 +1,548 @@ +/* + * Copyright (c) 2009-2023 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.assetbrowser; + +import com.jme3.gde.assetbrowser.icons.Icons; +import com.jme3.gde.assetbrowser.widgets.AssetPreviewWidget; +import com.jme3.gde.assetbrowser.widgets.MatDefPreview; +import com.jme3.gde.assetbrowser.widgets.MaterialPreview; +import com.jme3.gde.assetbrowser.widgets.ModelPreview; +import com.jme3.gde.assetbrowser.widgets.PreviewInteractionListener; +import com.jme3.gde.assetbrowser.widgets.SoundPreview; +import com.jme3.gde.assetbrowser.widgets.TexturePreview; +import com.jme3.gde.core.assets.BinaryModelDataObject; +import com.jme3.gde.core.assets.ProjectAssetManager; +import com.jme3.gde.core.util.ProjectSelection; +import com.jme3.gde.materials.JMEMaterialDataObject; +import com.jme3.gde.materials.multiview.MaterialOpenSupport; +import com.jme3.gde.scenecomposer.OpenSceneComposer; +import com.jme3.gde.scenecomposer.SceneComposerTopComponent; +import com.jme3.gde.textureeditor.JmeTextureDataObject; +import com.jme3.gde.textureeditor.OpenTexture; +import com.jme3.scene.Spatial; +import java.awt.Dimension; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.event.ComponentEvent; +import java.awt.event.ComponentListener; +import java.awt.event.KeyEvent; +import java.io.File; +import java.io.IOException; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; +import javax.swing.JOptionPane; +import org.netbeans.api.project.Project; +import org.openide.DialogDisplayer; +import org.openide.NotifyDescriptor; +import org.openide.filesystems.FileAttributeEvent; +import org.openide.filesystems.FileChangeListener; +import org.openide.filesystems.FileEvent; +import org.openide.filesystems.FileObject; +import org.openide.filesystems.FileRenameEvent; +import org.openide.loaders.DataObject; +import org.openide.loaders.DataObjectNotFoundException; +import org.openide.util.Exceptions; + +/** + * Top component for AssetBrowser + * + * @author rickard + */ +public class AssetBrowser extends javax.swing.JPanel implements PreviewInteractionListener { + + private static final String MATERIALS = "Materials"; + private static final String MAT_DEFS = "MatDefs"; + private static final String MODELS = "Models"; + private static final String TEXTURES = "Textures"; + private static final String SOUNDS = "Sounds"; + private ProjectAssetManager assetManager; + private PreviewHelper previewUtil; + private String projectName; + + private int lastGridColumns = 0; + private int lastGridRows = 0; + private String lastFilter; + + private int sizeX = Constants.sizeX; + private int sizeY = Constants.sizeY; + private int imageSize = Constants.imageSize; + private int oldSliderValue = 2; + + private boolean componentListenerAdded = false; + private ComponentListener resizeListener = new ComponentListener() { + @Override + public void componentResized(ComponentEvent e) { + setSize(getParent().getSize()); + setPreferredSize(getParent().getSize()); + getLayout().layoutContainer(AssetBrowser.this); + java.awt.EventQueue.invokeLater(() -> { + + loadAssets(lastFilter); + + }); + } + + @Override + public void componentMoved(ComponentEvent e) { +// setSize(new Dimension(0,0)); + } + + @Override + public void componentShown(ComponentEvent e) { + } + + @Override + public void componentHidden(ComponentEvent e) { + } + }; + + /** + * Creates new form AssetBrowser + */ + public AssetBrowser() { + + initComponents(); + + addComponentListener(resizeListener); + } + + /** + * Will recalculate grid, and remove all previews and regenerate if rows or + * columns or filter has changed + * + * @param filter only show previews containing filter + */ + private void loadAssets(String filter) { + if (assetManager == null) { + return; + } + + // this is required to make the panel resize + if (!componentListenerAdded && getParent() != null) { + getParent().addComponentListener(resizeListener); + componentListenerAdded = true; + removeComponentListener(resizeListener); + } + Dimension size = previewsPanel.getSize(); + + int rows = Math.min(size.height, getHeight() - 30) / sizeY; + + final var textures = Arrays.stream(assetManager.getTextures()).filter(s -> filter.isEmpty() || s.toLowerCase().contains(filter)).collect(Collectors.toList()); + final var materials = Arrays.stream(assetManager.getMaterials()).filter(s -> filter.isEmpty() || s.toLowerCase().contains(filter)).collect(Collectors.toList()); + final var models = Arrays.stream(assetManager.getModels()).filter(s -> filter.isEmpty() || s.toLowerCase().contains(filter)).collect(Collectors.toList()); + final var sounds = Arrays.stream(assetManager.getSounds()).filter(s -> filter.isEmpty() || s.toLowerCase().contains(filter)).collect(Collectors.toList()); + final var matdefs = Arrays.stream(assetManager.getMatDefs()).filter(s -> filter.isEmpty() || s.toLowerCase().contains(filter)).collect(Collectors.toList()); + int numAssets = textures.size() + materials.size() + models.size() + sounds.size() + matdefs.size(); + int columns = Math.max(numAssets / rows, 1); + + Dimension newSize = new Dimension(columns * sizeX, rows * sizeY); + if (columns != lastGridColumns || rows != lastGridRows || !lastFilter.equals(filter)) { + GridBagConstraints constraints = new GridBagConstraints(); + previewsPanel.setLayout(new GridBagLayout()); + constraints.fill = GridBagConstraints.BOTH; + constraints.gridx = sizeX; + constraints.gridy = sizeY; + previewsPanel.removeAll(); + previewsPanel.setSize(newSize); + previewsPanel.setPreferredSize(newSize); + + previewsPanel.setLayout(new GridBagLayout()); + + int index = addAssets(textures, TEXTURES, constraints, columns, rows, 0); + index = addAssets(materials, MATERIALS, constraints, columns, rows, index); + index = addAssets(models, MODELS, constraints, columns, rows, index); + index = addAssets(sounds, SOUNDS, constraints, columns, rows, index); + index = addAssets(matdefs, MAT_DEFS, constraints, columns, rows, index); + lastGridColumns = columns; + lastGridRows = rows; + lastFilter = filter; + } + } + + /** + * Add assets of a specific type to the grid + * + * @param items the assets to preview + * @param type type of asset + * @param constraints + * @param columns columns in the grid + * @param rows rows in the grid + * @param startIndex last used index when adding previews + * @return + */ + private int addAssets(List items, String type, GridBagConstraints constraints, int columns, int rows, int startIndex) { + Collections.sort(items); + int index = startIndex; + for (String item : items) { + AssetPreviewWidget preview = null; + + constraints.gridx = index % columns; + constraints.gridy = (int) (((float) index-1) / (columns)); + if (type.startsWith(TEXTURES)) { + preview = new TexturePreview(this, previewUtil.getOrCreateTexturePreview(item, imageSize)); + } else if (type.startsWith(MATERIALS)) { + preview = new MaterialPreview(this); + preview.setPreviewImage(previewUtil.getOrCreateMaterialPreview(item, preview, imageSize)); + } else if (type.startsWith(MODELS)) { + preview = new ModelPreview(this); + preview.setPreviewImage(previewUtil.getOrCreateModelPreview(item, preview, imageSize)); + } else if (type.startsWith(SOUNDS)) { + preview = new SoundPreview(this, previewUtil.getSoundPreview(item, imageSize)); + } else if (type.startsWith(MAT_DEFS)) { + preview = new MatDefPreview(this, previewUtil.getDefaultIcon(item, imageSize)); + } + if (preview == null) { + continue; + } + preview.setMinimumSize(new Dimension(sizeX, sizeY)); + preview.setPreferredSize(new Dimension(sizeX, sizeY)); + if (assetManager.getAbsoluteAssetPath(item) != null) { + preview.setEditable(true); + } + preview.setPreviewName(item); + previewsPanel.add(preview, constraints); + index++; + } + return index; + } + + /** + * Creates the base folder for previews in the project directory + * + * @param assetManager + */ + private void createAssetBrowserFolder(ProjectAssetManager assetManager) { + final FileObject fileObject = assetManager.getProject().getProjectDirectory(); + + final String path = assetManager.isGradleProject() ? + fileObject.getParent().getPath() : fileObject.getPath(); + + final File file = new File(path, ".assetBrowser/"); + if (!file.exists()) { + file.mkdirs(); + } + } + + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + projectLabel = new javax.swing.JLabel(); + jScrollPane1 = new javax.swing.JScrollPane(); + previewsPanel = new javax.swing.JPanel(); + jPanel2 = new javax.swing.JPanel(); + filterField = new javax.swing.JTextField(); + clearFilterButton = new javax.swing.JButton(); + filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(32767, 0)); + sizeSlider = new javax.swing.JSlider(); + + setAlignmentX(0.0F); + setAlignmentY(0.0F); + setPreferredSize(new java.awt.Dimension(2000, 2000)); + setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.PAGE_AXIS)); + + projectLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + org.openide.awt.Mnemonics.setLocalizedText(projectLabel, org.openide.util.NbBundle.getMessage(AssetBrowser.class, "AssetBrowser.projectLabel.text")); // NOI18N + projectLabel.setVerticalAlignment(javax.swing.SwingConstants.TOP); + projectLabel.setAlignmentX(0.5F); + projectLabel.setAlignmentY(0.0F); + projectLabel.setHorizontalTextPosition(javax.swing.SwingConstants.LEADING); + projectLabel.setMaximumSize(new java.awt.Dimension(32000, 32000)); + projectLabel.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + projectLabelMouseClicked(evt); + } + }); + add(projectLabel); + + jScrollPane1.setMinimumSize(new java.awt.Dimension(150, 150)); + jScrollPane1.setPreferredSize(new java.awt.Dimension(2000, 3000)); + + previewsPanel.setPreferredSize(new java.awt.Dimension(200, 300)); + previewsPanel.setLayout(new java.awt.GridBagLayout()); + jScrollPane1.setViewportView(previewsPanel); + + add(jScrollPane1); + + jPanel2.setMaximumSize(new java.awt.Dimension(2147483647, 23)); + jPanel2.setMinimumSize(new java.awt.Dimension(104, 33)); + jPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEADING)); + + filterField.setText(org.openide.util.NbBundle.getMessage(AssetBrowser.class, "AssetBrowser.filterField.text")); // NOI18N + filterField.setToolTipText(org.openide.util.NbBundle.getMessage(AssetBrowser.class, "AssetBrowser.filterField.toolTipText")); // NOI18N + filterField.setMinimumSize(new java.awt.Dimension(40, 23)); + filterField.setPreferredSize(new java.awt.Dimension(250, 23)); + filterField.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + filterFieldFocusLost(evt); + } + }); + filterField.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + filterFieldMouseClicked(evt); + } + }); + filterField.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + filterFieldActionPerformed(evt); + } + }); + filterField.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyPressed(java.awt.event.KeyEvent evt) { + filterFieldKeyPressed(evt); + } + }); + jPanel2.add(filterField); + + clearFilterButton.setIcon(Icons.clearFilter); + org.openide.awt.Mnemonics.setLocalizedText(clearFilterButton, org.openide.util.NbBundle.getMessage(AssetBrowser.class, "AssetBrowser.clearFilterButton.text")); // NOI18N + clearFilterButton.setMaximumSize(new java.awt.Dimension(23, 23)); + clearFilterButton.setMinimumSize(new java.awt.Dimension(23, 23)); + clearFilterButton.setPreferredSize(new java.awt.Dimension(23, 23)); + clearFilterButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + clearFilterButtonMouseClicked(evt); + } + }); + jPanel2.add(clearFilterButton); + jPanel2.add(filler1); + + sizeSlider.setMaximum(2); + sizeSlider.setToolTipText(org.openide.util.NbBundle.getMessage(AssetBrowser.class, "AssetBrowser.sizeSlider.toolTipText")); // NOI18N + sizeSlider.setName("sizeSlider"); // NOI18N + sizeSlider.setPreferredSize(new java.awt.Dimension(100, 20)); + sizeSlider.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + sizeSliderStateChanged(evt); + } + }); + jPanel2.add(sizeSlider); + + add(jPanel2); + }// //GEN-END:initComponents + + /** + * Select project to view + * + * @param evt + */ + private void projectLabelMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_projectLabelMouseClicked + assetManager = ProjectSelection.getProjectAssetManager("Select project"); + projectName = assetManager.getProject().getProjectDirectory().getName(); + projectLabel.setText(projectName); + previewUtil = new PreviewHelper(assetManager); + createAssetBrowserFolder(assetManager); + // Check which assets was added/deleted/renamed/changed? Nah, just load + // everything! + assetManager.getAssetFolder().addRecursiveListener(new FileChangeListener() { + @Override + public void fileFolderCreated(FileEvent fe) { + loadAssets(lastFilter); + } + + @Override + public void fileDataCreated(FileEvent fe) { + loadAssets(lastFilter); + } + + @Override + public void fileChanged(FileEvent fe) { + loadAssets(lastFilter); + } + + @Override + public void fileDeleted(FileEvent fe) { + loadAssets(lastFilter); + } + + @Override + public void fileRenamed(FileRenameEvent fre) { + loadAssets(lastFilter); + } + + @Override + public void fileAttributeChanged(FileAttributeEvent fae) { + loadAssets(lastFilter); + } + }); + loadAssets(""); + }//GEN-LAST:event_projectLabelMouseClicked + + private void filterFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_filterFieldFocusLost + + }//GEN-LAST:event_filterFieldFocusLost + + private void filterFieldKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_filterFieldKeyPressed + if (evt.getKeyCode() == KeyEvent.VK_TAB || evt.getKeyCode() == KeyEvent.VK_ENTER) { + previewsPanel.requestFocusInWindow(); + loadAssets(filterField.getText().toLowerCase()); + } + }//GEN-LAST:event_filterFieldKeyPressed + + private void filterFieldMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_filterFieldMouseClicked + //filterField.setSelectionStart(0); + //filterField.setSelectionEnd(filterField.getSelectedText().length()); + }//GEN-LAST:event_filterFieldMouseClicked + + private void filterFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_filterFieldActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_filterFieldActionPerformed + + /** + * Change size of previews + * + * @param evt + */ + private void sizeSliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_sizeSliderStateChanged + final var value = sizeSlider.getValue(); + switch (value) { + case 0: + sizeX = (int) (Constants.sizeX * 0.5f); + sizeY = (int) (Constants.sizeY * 0.5f); + imageSize = (int) (Constants.imageSize * 0.5f); + break; + case 1: + sizeX = (int) (Constants.sizeY * 0.75f); + sizeY = (int) (Constants.sizeX * 0.75f); + imageSize = (int) (Constants.imageSize * 0.75f); + break; + case 2: + sizeX = Constants.sizeY; + sizeY = Constants.sizeX; + imageSize = Constants.imageSize; + break; + } + if (value != oldSliderValue) { + loadAssets(lastFilter); + oldSliderValue = value; + } + }//GEN-LAST:event_sizeSliderStateChanged + + private void clearFilterButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_clearFilterButtonMouseClicked + filterField.setText(""); + lastFilter = ""; + loadAssets(""); + }//GEN-LAST:event_clearFilterButtonMouseClicked + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton clearFilterButton; + private javax.swing.Box.Filler filler1; + private javax.swing.JTextField filterField; + private javax.swing.JPanel jPanel2; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JPanel previewsPanel; + private javax.swing.JLabel projectLabel; + private javax.swing.JSlider sizeSlider; + // End of variables declaration//GEN-END:variables + + /** + * Double click an asset to open it (if supported) + */ + @Override + public void openAsset(AssetPreviewWidget widget) { + FileObject pf = assetManager.getAssetFileObject(widget.getPreviewName()); + if (widget instanceof MaterialPreview) { + try { + JMEMaterialDataObject matObject = (JMEMaterialDataObject) DataObject.find(pf); + new MaterialOpenSupport(matObject.getPrimaryEntry()).open(); + } catch (IOException ex) { + Exceptions.printStackTrace(ex); + } + } else if (widget instanceof TexturePreview) { + try { + JmeTextureDataObject textureObject = (JmeTextureDataObject) DataObject.find(pf); + OpenTexture openTexture = new OpenTexture(textureObject); + openTexture.actionPerformed(null); + } catch (DataObjectNotFoundException ex) { + Exceptions.printStackTrace(ex); + } + + } else if (widget instanceof ModelPreview) { + try { + BinaryModelDataObject model = (BinaryModelDataObject) DataObject.find(pf); + Runnable call = () -> { + assetManager.clearCache(); + final Spatial asset = model.loadAsset(); + if (asset != null) { + java.awt.EventQueue.invokeLater(() -> { + SceneComposerTopComponent composer = SceneComposerTopComponent.findInstance(); + composer.openScene(asset, model, assetManager); + }); + } else { + NotifyDescriptor.Confirmation msg = new NotifyDescriptor.Confirmation( + "Error opening " + model.getPrimaryFile().getNameExt(), + NotifyDescriptor.OK_CANCEL_OPTION, + NotifyDescriptor.ERROR_MESSAGE); + DialogDisplayer.getDefault().notify(msg); + } + + }; + new Thread(call).start(); + } catch (DataObjectNotFoundException ex) { + Exceptions.printStackTrace(ex); + } + } else { + JOptionPane.showMessageDialog(null, "Not yet supported"); + } + } + + @Override + public void refreshPreview(AssetPreviewWidget widget) { + // not yet implemented + } + + /** + * Delete the asset + */ + @Override + public void deleteAsset(AssetPreviewWidget widget) { + int result = JOptionPane.showConfirmDialog(null, "Delete asset? " + widget.getAssetName()); + if (result == JOptionPane.OK_OPTION) { + FileObject pf = assetManager.getAssetFileObject(widget.getPreviewName()); + try { + pf.delete(); + } catch (IOException ex) { + Exceptions.printStackTrace(ex); + } + } + } + +} diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/AssetBrowserTopComponent.form b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/AssetBrowserTopComponent.form new file mode 100644 index 000000000..77d24fcba --- /dev/null +++ b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/AssetBrowserTopComponent.form @@ -0,0 +1,48 @@ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/AssetBrowserTopComponent.java b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/AssetBrowserTopComponent.java new file mode 100644 index 000000000..670cf039c --- /dev/null +++ b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/AssetBrowserTopComponent.java @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2003-2023 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.assetbrowser; + +import org.netbeans.api.settings.ConvertAsProperties; +import org.openide.awt.ActionID; +import org.openide.awt.ActionReference; +import org.openide.util.NbBundle; +import org.openide.windows.TopComponent; +import org.openide.util.NbBundle.Messages; + +/** + * Top component which displays something. + */ +@ConvertAsProperties( + dtd = "-//com.jme3.gde.assetbrowser//AssetBrowser//EN", + autostore = false +) +@TopComponent.Description( + preferredID = "AssetBrowserTopComponent", + //iconBase="SET/PATH/TO/ICON/HERE", + persistenceType = TopComponent.PERSISTENCE_ALWAYS +) +@TopComponent.Registration(mode = "navigator", openAtStartup = true) +@ActionID(category = "Window", id = "com.jme3.gde.assetbrowser.AssetBrowserTopComponent") +@ActionReference(path = "Menu/Window" /*, position = 333 */) +@TopComponent.OpenActionRegistration( + displayName = "#CTL_AssetBrowserAction", + preferredID = "AssetBrowserTopComponent" +) +//@Messages({ +// "CTL_AssetBrowserAction=AssetBrowser", +// "CTL_AssetBrowserTopComponent=AssetBrowser Window", +// "HINT_AssetBrowserTopComponent=This is a AssetBrowser window" +//}) +public final class AssetBrowserTopComponent extends TopComponent { + + public AssetBrowserTopComponent() { + initComponents(); + setName(NbBundle.getMessage(AssetBrowserTopComponent.class, "CTL_AssetBrowserTopComponent")); +// setName(Bundle.CTL_AssetBrowserTopComponent()); + setToolTipText(NbBundle.getMessage(AssetBrowserTopComponent.class, "HINT_AssetBrowserTopComponent")); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + assetBrowser1 = new com.jme3.gde.assetbrowser.AssetBrowser(); + + setLayout(new java.awt.BorderLayout()); + add(assetBrowser1, java.awt.BorderLayout.SOUTH); + }// //GEN-END:initComponents + + // Variables declaration - do not modify//GEN-BEGIN:variables + private com.jme3.gde.assetbrowser.AssetBrowser assetBrowser1; + // End of variables declaration//GEN-END:variables + @Override + public void componentOpened() { + // TODO add custom code on component opening + } + + @Override + public void componentClosed() { + // TODO add custom code on component closing + } + + void writeProperties(java.util.Properties p) { + // better to version settings since initial version as advocated at + // http://wiki.apidesign.org/wiki/PropertyFiles + p.setProperty("version", "1.0"); + // TODO store your settings + } + + void readProperties(java.util.Properties p) { + String version = p.getProperty("version"); + // TODO read your settings according to their version + } +} diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/Bundle.properties b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/Bundle.properties new file mode 100644 index 000000000..49e153588 --- /dev/null +++ b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/Bundle.properties @@ -0,0 +1,10 @@ +OpenIDE-Module-Display-Category=jMonkeyEngine +OpenIDE-Module-Name=AssetBrowser +CTL_AssetBrowserAction=AssetBrowser +CTL_AssetBrowserTopComponent=AssetBrowser +HINT_AssetBrowserTopComponent=AssetBrowser +AssetBrowser.projectLabel.text=No project selected +AssetBrowser.filterField.text= +AssetBrowser.sizeSlider.toolTipText=Size of previews +AssetBrowser.clearFilterButton.text= +AssetBrowser.filterField.toolTipText=Enter text to filter diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/Constants.java b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/Constants.java new file mode 100644 index 000000000..5460f2ef6 --- /dev/null +++ b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/Constants.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2009-2023 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.assetbrowser; + +/** + * + * @author rickard + */ +public class Constants { + + static final int sizeX = 170; + static final int sizeY = 180; + static final int imageSize = 150; +} diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/PreviewHelper.java b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/PreviewHelper.java new file mode 100644 index 000000000..90dd453e1 --- /dev/null +++ b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/PreviewHelper.java @@ -0,0 +1,310 @@ +/* + * Copyright (c) 2009-2023 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.assetbrowser; + +import com.jme3.gde.assetbrowser.icons.Icons; +import com.jme3.gde.assetbrowser.widgets.AssetPreviewWidget; +import com.jme3.gde.core.assets.ProjectAssetManager; +import com.jme3.gde.core.icons.IconList; +import com.jme3.gde.core.scene.PreviewRequest; +import com.jme3.gde.core.scene.SceneApplication; +import com.jme3.gde.core.scene.SceneListener; +import com.jme3.gde.core.scene.SceneRequest; +import com.jme3.material.Material; +import com.jme3.math.ColorRGBA; +import com.jme3.math.Vector3f; +import com.jme3.scene.Geometry; +import com.jme3.scene.Node; +import com.jme3.scene.Spatial; +import com.jme3.scene.shape.Box; +import com.jme3.texture.Image; +import com.jme3.texture.Texture; +import com.jme3.util.mikktspace.MikktspaceTangentGenerator; +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.attribute.BasicFileAttributes; +import java.nio.file.attribute.FileTime; +import javax.imageio.ImageIO; +import javax.swing.Icon; +import javax.swing.ImageIcon; +import jme3tools.converters.ImageToAwt; +import org.openide.filesystems.FileObject; +import org.openide.util.Exceptions; + +/** + * Helper class for generating preview images + * + * @author rickard + */ +public class PreviewHelper { + + private static final int PREVIEW_SIZE = 150; + private final ProjectAssetManager assetManager; + + private static final Vector3f previewLocation = new Vector3f(4, 4, 7); + private static final Vector3f previewLookAt = new Vector3f(0, 0, 0); + + public PreviewHelper(ProjectAssetManager assetManager) { + this.assetManager = assetManager; + } + + public Icon getOrCreateTexturePreview(String asset, int size) { + final var icon = tryGetPreview(asset, size); + if (icon != null) { + return icon; + } + System.out.println("creating preview "); + Texture texture = assetManager.loadTexture(asset); + Image image = texture.getImage(); + + BufferedImage buff = ImageToAwt.convert(image, false, false, 0); + + BufferedImage scaled = scaleDown(buff, 150, 150); + BufferedImage noAlpha = convertImage(scaled); + savePreview(assetManager, asset.split("\\.")[0], noAlpha); + return new ImageIcon(noAlpha); + } + + public Icon getSoundPreview(String asset, int size) { + return Icons.soundIcon; + } + + public Icon getDefaultIcon(String asset, int size) { + return Icons.assetIcon; + } + + public Icon getOrCreateMaterialPreview(String asset, AssetPreviewWidget widget, int size) { + final var icon = tryGetPreview(asset, size); + if (icon != null) { + return icon; + } + + Material mat = assetManager.loadMaterial(asset); + + Box boxMesh = new Box(1.75f, 1.75f, 1.75f); + Geometry box = new Geometry("previewBox", boxMesh); + box.setMaterial(mat); + PreviewListener listener = new PreviewListener(assetManager, mat.getAssetName().split("\\.")[0], widget); + SceneApplication.getApplication().addSceneListener(listener); + SceneApplication.getApplication().enqueue(() -> { + SceneApplication.getApplication().getRenderManager().preloadScene(box); + java.awt.EventQueue.invokeLater(() -> { + MikktspaceTangentGenerator.generate(box); + PreviewRequest request = new PreviewRequest(listener, box, PREVIEW_SIZE, PREVIEW_SIZE); + request.getCameraRequest().setLocation(previewLocation); + request.getCameraRequest().setLookAt(previewLookAt, Vector3f.UNIT_Y); + SceneApplication.getApplication().createPreview(request); + }); + }); + return IconList.asset; + } + + private Icon tryGetPreview(String asset, int size) { + final var assetPath = assetManager.getAbsoluteAssetPath(asset); + + final FileTime assetModificationTime = getAssetModificationTime(assetPath); + + final File previewFile = loadPreviewFile(assetManager, asset.split("\\.")[0]); + + if (previewFile != null && assetModificationTime != null) { + final Path previewPath = previewFile.toPath(); + if(previewPath == null) { + return null; + } + try { + final BasicFileAttributes previewAttributes = Files.readAttributes( + previewPath, BasicFileAttributes.class); + final FileTime previewCreationTime = previewAttributes.creationTime(); + + if (previewCreationTime.compareTo(assetModificationTime) > 0) { + System.out.println("existing preview OK " + previewFile); + BufferedImage image = ImageIO.read(previewFile); + if (image != null) { + return new ImageIcon(size != PREVIEW_SIZE ? image.getScaledInstance(size, size, 0) : image); + } + } + + } catch (IOException ex) { + Exceptions.printStackTrace(ex); + } + } + return null; + } + + public Icon getOrCreateModelPreview(String asset, AssetPreviewWidget widget, int size) { + final var icon = tryGetPreview(asset, size); + if (icon != null) { + return icon; + } + + Material unshaded = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); + unshaded.setColor("Color", ColorRGBA.Red); + + Spatial spatial = assetManager.loadModel(asset); + + recurseApplyDefaultMaterial(spatial, unshaded); + + PreviewListener listener = new PreviewListener(assetManager, asset.split("\\.")[0], widget); + SceneApplication.getApplication().addSceneListener(listener); + SceneApplication.getApplication().enqueue(() -> { + SceneApplication.getApplication().getRenderManager().preloadScene(spatial); + java.awt.EventQueue.invokeLater(() -> { + PreviewRequest request = new PreviewRequest(listener, spatial, PREVIEW_SIZE, PREVIEW_SIZE); + request.getCameraRequest().setLocation(previewLocation); + request.getCameraRequest().setLookAt(previewLookAt, Vector3f.UNIT_Y); + SceneApplication.getApplication().createPreview(request); + }); + }); + return IconList.asset; + } + + /** + * Applies unshaded MatDef if spatial has no material already + * + * @param spatial + * @param material + */ + private void recurseApplyDefaultMaterial(Spatial spatial, Material material) { + if (spatial instanceof Node) { + ((Node) spatial).getChildren().forEach(child -> recurseApplyDefaultMaterial(child, material)); + } else if (spatial instanceof Geometry) { + if (((Geometry) spatial).getMaterial() == null) { + spatial.setMaterial(material); + } + } + } + + private FileTime getAssetModificationTime(String assetPath) { + if (assetPath == null) { + return null; + } + Path path = new File(assetPath).toPath(); + + try { + // creating BasicFileAttributes class object using + // readAttributes method + BasicFileAttributes file_att = Files.readAttributes( + path, BasicFileAttributes.class); + return file_att.lastModifiedTime(); + } catch (IOException ex) { + Exceptions.printStackTrace(ex); + } + return null; + } + + private File loadPreviewFile(ProjectAssetManager assetManager, String id) { + FileObject fileObject = assetManager.getProject().getProjectDirectory(); + return new File(fileObject.getPath() + "/.assetBrowser/", id + ".jpg"); + } + + private void savePreview(ProjectAssetManager assetManager, String id, BufferedImage preview) { + FileObject fileObject = assetManager.getProject().getProjectDirectory(); + String[] fileSections = id.split("/"); + String fileName = fileSections[fileSections.length - 1]; + File path = new File(fileObject.getPath() + "/.assetBrowser/" + id.substring(0, id.length() - fileName.length())); + File file = new File(path, fileName + ".jpg"); + try { + path.mkdirs(); + file.createNewFile(); + ImageIO.write(preview, "jpg", file); + } catch (IOException ex) { + Exceptions.printStackTrace(ex); + } + } + + private BufferedImage scaleDown(BufferedImage sourceImage, int targetWidth, int targetHeight) { + int sourceWidth = sourceImage.getWidth(); + int sourceHeight = sourceImage.getHeight(); + + BufferedImage targetImage = new BufferedImage(targetWidth, targetHeight, sourceImage.getType()); + + Graphics2D g = targetImage.createGraphics(); + g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); + g.drawImage(sourceImage, 0, 0, targetWidth, targetHeight, 0, 0, sourceWidth, sourceHeight, null); + g.dispose(); + + return targetImage; + } + + private class PreviewListener implements SceneListener { + + final AssetPreviewWidget widget; + final ProjectAssetManager assetManager; + private final String assetName; + + public PreviewListener(ProjectAssetManager assetManager, String assetName, AssetPreviewWidget widget) { + this.widget = widget; + this.assetManager = assetManager; + this.assetName = assetName; + } + + @Override + public void sceneOpened(SceneRequest request) { + } + + @Override + public void sceneClosed(SceneRequest request) { + } + + @Override + public void previewCreated(PreviewRequest request) { + if (request.getRequester() == this) { + final var image = convertImage(request.getImage()); + java.awt.EventQueue.invokeLater(() -> { + widget.setPreviewImage(new ImageIcon(image)); + savePreview(assetManager, assetName, image); + widget.revalidate(); + }); + } + } + }; + + private static BufferedImage convertImage(BufferedImage preview) { + final int width = preview.getWidth(); + final int height = preview.getHeight(); + BufferedImage converted = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + Graphics2D g = converted.createGraphics(); + g.setColor(Color.WHITE); + g.fillRect(0, 0, width, height); + int w = preview.getWidth(); + int h = preview.getHeight(); + g.drawImage(preview, 0, 0, w, h, 0, h, w, 0, null); + g.dispose(); + return converted; + } +} diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/dnd/AssetPreviewPopupMenu.java b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/dnd/AssetPreviewPopupMenu.java new file mode 100644 index 000000000..41939f75d --- /dev/null +++ b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/dnd/AssetPreviewPopupMenu.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2009-2023 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.assetbrowser.dnd; + +import java.awt.event.ActionListener; +import javax.swing.JPopupMenu; + +/** + * Pop up menu for actions on asset previews + * + * @author rickard + */ +public class AssetPreviewPopupMenu extends JPopupMenu { + + public AssetPreviewPopupMenu(ActionListener listener) { + add("Refresh").addActionListener(listener); + add("Delete").addActionListener(listener); + } +} diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/dnd/AssetPreviewWidgetMouseListener.java b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/dnd/AssetPreviewWidgetMouseListener.java new file mode 100644 index 000000000..4fd9c959c --- /dev/null +++ b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/dnd/AssetPreviewWidgetMouseListener.java @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2009-2023 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.assetbrowser.dnd; + +import com.jme3.gde.assetbrowser.widgets.AssetPreviewWidget; +import com.jme3.gde.assetbrowser.widgets.PreviewInteractionListener; +import java.awt.event.MouseAdapter; +import javax.swing.JOptionPane; +import javax.swing.TransferHandler; + +/** + * For handling drag and drop of assets. + * + * @author rickard + */ +public final class AssetPreviewWidgetMouseListener extends MouseAdapter { + + private final AssetPreviewWidget previewWidget; + private final PreviewInteractionListener listener; + private boolean pressed, moved; + + public AssetPreviewWidgetMouseListener(AssetPreviewWidget previewWidget, PreviewInteractionListener listener) { + this.previewWidget = previewWidget; + this.listener = listener; + } + + @Override + public void mouseClicked(final java.awt.event.MouseEvent evt) { + if (evt.getClickCount() == 2) { + evt.consume(); + if (previewWidget.isEditable()) { + listener.openAsset(previewWidget); + } else { + JOptionPane.showMessageDialog(null, "Project dependencies can't be edited"); + } + } + } + + @Override + public void mousePressed(final java.awt.event.MouseEvent evt) { + pressed = true; + + } + + @Override + public void mouseReleased(final java.awt.event.MouseEvent evt) { + pressed = false; + moved = false; + } + + @Override + public void mouseMoved(final java.awt.event.MouseEvent evt) { + } + + @Override + public void mouseDragged(final java.awt.event.MouseEvent evt) { + if (pressed) { + moved = true; + TransferHandler handler = previewWidget.getTransferHandler(); + if (handler != null) { + handler.exportAsDrag(previewWidget, evt, TransferHandler.COPY); + } + } + } +} diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/icons/Icons.java b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/icons/Icons.java new file mode 100644 index 000000000..9f0eb7951 --- /dev/null +++ b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/icons/Icons.java @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2009-2023 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.assetbrowser.icons; + +import javax.swing.ImageIcon; +import org.openide.util.ImageUtilities; + +/** + * Lists all icons used by the AssetBrowser + * @author rickard + */ +public class Icons { + + public static final String ICONS_PATH = "com/jme3/gde/assetbrowser/icons/"; + public static final String TEXTURE_REMOVE = ICONS_PATH + "remove_texture.svg"; + // use png for asset preview + public static final String SOUND_WAVES = ICONS_PATH + "sound_waves.png"; + public static final String ASSET = ICONS_PATH + "asset.png"; + + public static final ImageIcon clearFilter = + ImageUtilities.loadImageIcon(TEXTURE_REMOVE, false); + public static final ImageIcon soundIcon = + ImageUtilities.loadImageIcon(SOUND_WAVES, false); + public static final ImageIcon assetIcon = + ImageUtilities.loadImageIcon(ASSET, false); +} \ No newline at end of file diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/icons/asset.png b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/icons/asset.png new file mode 100644 index 0000000000000000000000000000000000000000..f94a32406209ee9f78952ab17d198787bf9d1426 GIT binary patch literal 9399 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 literal 0 HcmV?d00001 diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/icons/remove_texture.svg b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/icons/remove_texture.svg new file mode 100644 index 000000000..969e234ef --- /dev/null +++ b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/icons/remove_texture.svg @@ -0,0 +1 @@ + diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/icons/sound-waves.png b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/icons/sound-waves.png new file mode 100644 index 0000000000000000000000000000000000000000..58c6322fc3651b581993477f3a71c8ff6c44a10e GIT binary patch literal 6717 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 + + + + + image/svg+xml + + + + + + + + + + diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/AssetPreviewWidget.form b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/AssetPreviewWidget.form new file mode 100644 index 000000000..e6b7a0420 --- /dev/null +++ b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/AssetPreviewWidget.form @@ -0,0 +1,68 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/AssetPreviewWidget.java b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/AssetPreviewWidget.java new file mode 100644 index 000000000..12a3d2150 --- /dev/null +++ b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/AssetPreviewWidget.java @@ -0,0 +1,182 @@ +/* + * Copyright (c) 2009-2023 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.assetbrowser.widgets; + +import com.jme3.gde.assetbrowser.dnd.AssetPreviewPopupMenu; +import com.jme3.gde.assetbrowser.dnd.AssetPreviewWidgetMouseListener; +import com.jme3.gde.core.icons.IconList; +import com.jme3.gde.core.scene.PreviewRequest; +import com.jme3.gde.core.scene.SceneListener; +import com.jme3.gde.core.scene.SceneRequest; +import com.jme3.gde.core.dnd.AssetNameHolder; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.Icon; + +/** + * Displays an asset as an image in the AssetBrowser and handles open action and + * dragging (if supported) + * + * @author rickard + */ +public class AssetPreviewWidget extends javax.swing.JPanel implements SceneListener, AssetNameHolder, ActionListener { + + private boolean editable; + private PreviewInteractionListener listener; + + /** + * Creates new form AssetPreviewWidget + */ + public AssetPreviewWidget() { + initComponents(); + } + + public AssetPreviewWidget(final PreviewInteractionListener listener, Icon icon) { + this(listener); + assetPreviewLabel.setIcon(icon); + } + + public AssetPreviewWidget(final PreviewInteractionListener listener) { + this(); + this.listener = listener; + final var mouseListener = new AssetPreviewWidgetMouseListener(this, listener); + addMouseListener(mouseListener); + addMouseMotionListener(mouseListener); + setComponentPopupMenu(new AssetPreviewPopupMenu(this)); + } + + public void setPreviewImage(Icon icon) { + assetPreviewLabel.setIcon(icon); + } + + public void setPreviewName(String name) { + assetNameLabel.setText(name); + setToolTipText(name); + } + + public String getPreviewName() { + return assetNameLabel.getText(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + assetNameLabel = new javax.swing.JLabel(); + assetPreviewLabel = new javax.swing.JLabel(); + + setMinimumSize(new java.awt.Dimension(170, 180)); + setPreferredSize(new java.awt.Dimension(170, 180)); + addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + formMousePressed(evt); + } + }); + setLayout(new java.awt.BorderLayout()); + + org.openide.awt.Mnemonics.setLocalizedText(assetNameLabel, org.openide.util.NbBundle.getMessage(AssetPreviewWidget.class, "AssetPreviewWidget.assetNameLabel.text")); // NOI18N + add(assetNameLabel, java.awt.BorderLayout.SOUTH); + assetNameLabel.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(AssetPreviewWidget.class, "AssetPreviewWidget.assetNameLabel.AccessibleContext.accessibleName")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(assetPreviewLabel, org.openide.util.NbBundle.getMessage(AssetPreviewWidget.class, "AssetPreviewWidget.assetPreviewLabel.text")); // NOI18N + assetPreviewLabel.setVerticalAlignment(javax.swing.SwingConstants.TOP); + assetPreviewLabel.setPreferredSize(new java.awt.Dimension(150, 150)); + add(assetPreviewLabel, java.awt.BorderLayout.CENTER); + assetPreviewLabel.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(AssetPreviewWidget.class, "AssetPreviewWidget.assetPreviewLabel.AccessibleContext.accessibleName")); // NOI18N + }// //GEN-END:initComponents + + private void formMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMousePressed + + }//GEN-LAST:event_formMousePressed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLabel assetNameLabel; + private javax.swing.JLabel assetPreviewLabel; + // End of variables declaration//GEN-END:variables + + @Override + public void sceneOpened(SceneRequest request) { + } + + @Override + public void sceneClosed(SceneRequest request) { + } + + @Override + public void previewCreated(PreviewRequest request) { + if (request.getRequester() == this) { + java.awt.EventQueue.invokeLater(() -> { + assetPreviewLabel.setIcon(IconList.asset); +// invalidate(); + revalidate(); + repaint(); +// updateUI(); + }); + } + } + + @Override + public String getAssetName() { + return assetNameLabel.getText(); + } + + @Override + public void setAssetName(String name) { + assetNameLabel.setText(name); + } + + public void setEditable(boolean editable) { + this.editable = editable; + } + + public boolean isEditable() { + return editable; + } + + @Override + public void actionPerformed(ActionEvent e) { + switch (e.getActionCommand()) { + case "Refresh": + listener.refreshPreview(this); + break; + case "Delete": + listener.deleteAsset(this); + break; + } + } + +} diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/Bundle.properties b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/Bundle.properties new file mode 100644 index 000000000..7be2afddf --- /dev/null +++ b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/Bundle.properties @@ -0,0 +1,4 @@ +AssetPreviewWidget.assetNameLabel.text=assetName +AssetPreviewWidget.assetNameLabel.AccessibleContext.accessibleName=assetNameLabel +AssetPreviewWidget.assetPreviewLabel.AccessibleContext.accessibleName=assetPreviewLabel +AssetPreviewWidget.assetPreviewLabel.text= diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/MatDefPreview.java b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/MatDefPreview.java new file mode 100644 index 000000000..5faad99a9 --- /dev/null +++ b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/MatDefPreview.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2009-2023 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.assetbrowser.widgets; + +import javax.swing.Icon; + +/** + * A preview of a MatDef in the AssetBrowser + * + * @author rickard + */ +public class MatDefPreview extends AssetPreviewWidget { + + public MatDefPreview(PreviewInteractionListener listener, Icon icon) { + super(listener, icon); + } + +} diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/MaterialPreview.java b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/MaterialPreview.java new file mode 100644 index 000000000..2d51fb22e --- /dev/null +++ b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/MaterialPreview.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2009-2023 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.assetbrowser.widgets; + +import com.jme3.gde.core.dnd.MaterialDataFlavor; +import com.jme3.gde.core.dnd.AssetGrabHandler; + +/** + * + * @author rickard + */ +public class MaterialPreview extends AssetPreviewWidget { + + public MaterialPreview(PreviewInteractionListener listener) { + super(listener); + setTransferHandler(new AssetGrabHandler(this, new MaterialDataFlavor())); + } + +} diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/ModelPreview.java b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/ModelPreview.java new file mode 100644 index 000000000..363fe71a6 --- /dev/null +++ b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/ModelPreview.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2009-2023 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.assetbrowser.widgets; + +import com.jme3.gde.core.dnd.AssetGrabHandler; +import com.jme3.gde.core.dnd.SpatialDataFlavor; + +/** + * + * @author rickard + */ +public class ModelPreview extends AssetPreviewWidget { + + public ModelPreview(PreviewInteractionListener listener) { + super(listener); + setTransferHandler(new AssetGrabHandler(this, new SpatialDataFlavor())); + } + +} diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/PreviewInteractionListener.java b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/PreviewInteractionListener.java new file mode 100644 index 000000000..af69d3c03 --- /dev/null +++ b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/PreviewInteractionListener.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2009-2023 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.assetbrowser.widgets; + +/** + * + * @author rickard + */ +public interface PreviewInteractionListener { + + void openAsset(AssetPreviewWidget widget); + + void refreshPreview(AssetPreviewWidget widget); + + void deleteAsset(AssetPreviewWidget widget); +} diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/SoundPreview.java b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/SoundPreview.java new file mode 100644 index 000000000..148703750 --- /dev/null +++ b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/SoundPreview.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2009-2023 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.assetbrowser.widgets; + +import javax.swing.Icon; + +/** + * Displaying a preview of a sound in the AssetBrowser + * + * @author rickard + */ +public class SoundPreview extends AssetPreviewWidget { + + public SoundPreview(PreviewInteractionListener listener, Icon icon) { + super(listener, icon); + } +} diff --git a/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/TexturePreview.java b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/TexturePreview.java new file mode 100644 index 000000000..1fa401a28 --- /dev/null +++ b/jme3-assetbrowser/src/com/jme3/gde/assetbrowser/widgets/TexturePreview.java @@ -0,0 +1,22 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.jme3.gde.assetbrowser.widgets; + +import com.jme3.gde.core.dnd.AssetGrabHandler; +import com.jme3.gde.core.dnd.TextureDataFlavor; +import javax.swing.Icon; + +/** + * + * @author rickard + */ +public class TexturePreview extends AssetPreviewWidget { + + public TexturePreview(PreviewInteractionListener listener, Icon icon) { + super(listener, icon); + setTransferHandler(new AssetGrabHandler(this, new TextureDataFlavor())); + } + +} diff --git a/jme3-behaviortrees/nbproject/genfiles.properties b/jme3-behaviortrees/nbproject/genfiles.properties index 6ac5d8385..5e64f64fd 100644 --- a/jme3-behaviortrees/nbproject/genfiles.properties +++ b/jme3-behaviortrees/nbproject/genfiles.properties @@ -5,4 +5,4 @@ build.xml.stylesheet.CRC32=a56c6a5b@2.72.1 # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. nbproject/build-impl.xml.data.CRC32=8aca329b nbproject/build-impl.xml.script.CRC32=35831a68 -nbproject/build-impl.xml.stylesheet.CRC32=238281d1@2.72.1 +nbproject/build-impl.xml.stylesheet.CRC32=49aa68b0@2.91 diff --git a/jme3-core/nbproject/project.xml b/jme3-core/nbproject/project.xml index 5415578cd..505f969fe 100644 --- a/jme3-core/nbproject/project.xml +++ b/jme3-core/nbproject/project.xml @@ -12,7 +12,7 @@ 1 - 3.3.0 + 3.6.0 @@ -21,20 +21,20 @@ 1 - 3.3.0 + 3.6.0 com.jme3.gde.core.updatecenters - 3.3.0 + 3.6.0 com.jme3.gde.project.testdata 1 - 3.3.0 + 3.6.0 @@ -434,6 +434,7 @@ com.jme3.gde.core.assets.nodes com.jme3.gde.core.codeless com.jme3.gde.core.completion + com.jme3.gde.core.dnd com.jme3.gde.core.editor.icons com.jme3.gde.core.editor.nodes com.jme3.gde.core.errorreport diff --git a/jme3-core/src/com/jme3/gde/core/assets/ProjectAssetManager.java b/jme3-core/src/com/jme3/gde/core/assets/ProjectAssetManager.java index 260d39c33..ee6ec150e 100644 --- a/jme3-core/src/com/jme3/gde/core/assets/ProjectAssetManager.java +++ b/jme3-core/src/com/jme3/gde/core/assets/ProjectAssetManager.java @@ -455,64 +455,85 @@ private String stripFirstSlash(String input) { return input; } - @Deprecated - public AssetManager getManager() { - return this; - } - public String[] getModels() { - return filesWithSuffix("j3o"); + return getModels(true); } + public String[] getModels(boolean includeDependencies) { + return filesWithSuffix("j3o", includeDependencies); + } + public String[] getMaterials() { - return filesWithSuffix("j3m"); + return getMaterials(true); } + public String[] getMaterials(boolean includeDependencies) { + return filesWithSuffix("j3m", includeDependencies); + } + public String[] getSounds() { - ArrayList list = new ArrayList(); - list.addAll(collectFilesWithSuffix("wav")); - list.addAll(collectFilesWithSuffix("ogg")); - return list.toArray(new String[list.size()]); + return getSounds(true); } + public String[] getSounds(boolean includeDependencies) { + ArrayList list = new ArrayList<>(); + list.addAll(collectFilesWithSuffix("wav", includeDependencies)); + list.addAll(collectFilesWithSuffix("ogg", includeDependencies)); + return list.toArray(String[]::new); + } + public String[] getTextures() { - ArrayList list = new ArrayList(); - list.addAll(collectFilesWithSuffix("jpg")); - list.addAll(collectFilesWithSuffix("jpeg")); - list.addAll(collectFilesWithSuffix("gif")); - list.addAll(collectFilesWithSuffix("png")); - list.addAll(collectFilesWithSuffix("dds")); - list.addAll(collectFilesWithSuffix("pfm")); - list.addAll(collectFilesWithSuffix("hdr")); - list.addAll(collectFilesWithSuffix("tga")); - return list.toArray(new String[list.size()]); + return getTextures(true); + } + + public String[] getTextures(boolean includeDependencies) { + ArrayList list = new ArrayList<>(); + list.addAll(collectFilesWithSuffix("jpg", includeDependencies)); + list.addAll(collectFilesWithSuffix("jpeg", includeDependencies)); + list.addAll(collectFilesWithSuffix("gif", includeDependencies)); + list.addAll(collectFilesWithSuffix("png", includeDependencies)); + list.addAll(collectFilesWithSuffix("dds", includeDependencies)); + list.addAll(collectFilesWithSuffix("pfm", includeDependencies)); + list.addAll(collectFilesWithSuffix("hdr", includeDependencies)); + list.addAll(collectFilesWithSuffix("tga", includeDependencies)); + return list.toArray(String[]::new); + } + + public String[] getMatDefs() { + return getMatDefs(true); } - public String[] getMatDefs() { - return filesWithSuffix("j3md"); + public String[] getMatDefs(boolean includeDependencies) { + return filesWithSuffix("j3md", includeDependencies); } public List getProjectShaderNodeDefs() { - return collectProjectFilesWithSuffix("j3sn", new LinkedList()); + return collectProjectFilesWithSuffix("j3sn", new LinkedList<>()); } public List getDependenciesShaderNodeDefs() { - return collectDependenciesFilesWithSuffix("j3sn", new LinkedList()); + return collectDependenciesFilesWithSuffix("j3sn", new LinkedList<>()); } - + public String[] getAssetsWithSuffix(String string) { - return filesWithSuffix(string); + return getAssetsWithSuffix(string, true); + } + + public String[] getAssetsWithSuffix(String string, boolean includeDependencies) { + return filesWithSuffix(string, includeDependencies); } - private String[] filesWithSuffix(String string) { - List list = collectFilesWithSuffix(string); - return list.toArray(new String[list.size()]); + private String[] filesWithSuffix(String string, boolean includeDependencies) { + List list = collectFilesWithSuffix(string, includeDependencies); + return list.toArray(String[]::new); } - private List collectFilesWithSuffix(String suffix) { - List list = new LinkedList(); + private List collectFilesWithSuffix(String suffix, boolean includeDependencies) { + List list = new LinkedList<>(); collectProjectFilesWithSuffix(suffix, list); - collectDependenciesFilesWithSuffix(suffix, list); + if(includeDependencies) { + collectDependenciesFilesWithSuffix(suffix, list); + } return list; } @@ -682,6 +703,10 @@ public void run() { } }); } + + public boolean isGradleProject() { + return GradleBaseProject.get(project) != null; + } public Mutex mutex() { return mutex; diff --git a/jme3-core/src/com/jme3/gde/core/dnd/AssetGrabHandler.java b/jme3-core/src/com/jme3/gde/core/dnd/AssetGrabHandler.java new file mode 100644 index 000000000..ff20fac84 --- /dev/null +++ b/jme3-core/src/com/jme3/gde/core/dnd/AssetGrabHandler.java @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2009-2023 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.core.dnd; + +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.JComponent; +import javax.swing.TransferHandler; +import javax.swing.TransferHandler.TransferSupport; + +/** + * Based on: + * https://stackoverflow.com/questions/23225958/dragging-between-two-components-in-swing + * + * @author rickard + * @param + */ +public class AssetGrabHandler extends TransferHandler { + + private static final long serialVersionUID = 1L; + private final DataFlavor flavor; + private final AssetNameHolder origin; + + public AssetGrabHandler(AssetNameHolder origin, T flavor) { + this.origin = origin; + this.flavor = flavor; + } + + @Override + public boolean canImport(TransferSupport info) { + return info.isDataFlavorSupported(flavor); + } + + @Override + public boolean importData(TransferSupport transferSupport) { + final Transferable t = transferSupport.getTransferable(); + try { + return t.getTransferData(flavor) != null; + } catch (UnsupportedFlavorException | IOException e) { + Logger.getLogger(AssetGrabHandler.class.getName()).log(Level.WARNING, "Non-supported flavor {0}", t); + } + return false; + } + + @Override + public int getSourceActions(JComponent c) { + return TransferHandler.COPY; + } + + @Override + public Transferable createTransferable(JComponent source) { + // We need the values from the list as an object array, otherwise the data flavor won't match in importData + return new AssetTransferable(origin, flavor); + } + +} diff --git a/jme3-core/src/com/jme3/gde/core/dnd/AssetNameHolder.java b/jme3-core/src/com/jme3/gde/core/dnd/AssetNameHolder.java new file mode 100644 index 000000000..57efb7345 --- /dev/null +++ b/jme3-core/src/com/jme3/gde/core/dnd/AssetNameHolder.java @@ -0,0 +1,16 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.jme3.gde.core.dnd; + +/** + * + * @author rickard + */ +public interface AssetNameHolder { + + String getAssetName(); + + void setAssetName(String name); +} diff --git a/jme3-core/src/com/jme3/gde/core/dnd/AssetTransferable.java b/jme3-core/src/com/jme3/gde/core/dnd/AssetTransferable.java new file mode 100644 index 000000000..ff025514a --- /dev/null +++ b/jme3-core/src/com/jme3/gde/core/dnd/AssetTransferable.java @@ -0,0 +1,60 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.jme3.gde.core.dnd; + +import com.jme3.gde.core.dnd.AssetNameHolder; +import com.jme3.gde.core.dnd.StringDataFlavor; +import com.jme3.gde.core.dnd.TextureDataFlavor; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; +import java.io.IOException; +import javax.swing.JPanel; + +/** + * + * @author rickard + * @param + */ +public class AssetTransferable implements Transferable { + + private DataFlavor[] flavors; + private AssetNameHolder string; + + public AssetTransferable(AssetNameHolder name, T flavor) { + this.string = name; + flavors = new DataFlavor[]{flavor}; + } + + @Override + public DataFlavor[] getTransferDataFlavors() { + return flavors; + } + + @Override + public boolean isDataFlavorSupported(DataFlavor flavor) { + for (DataFlavor mine : getTransferDataFlavors()) { + if (mine.equals(flavor)) { + return true; + } + } + return false; + } + + public AssetNameHolder getString() { + return string; + } + + @Override + public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { + if (isDataFlavorSupported(flavor)) { + return getString(); + } else { + throw new UnsupportedFlavorException(flavor); + } + + } + +} diff --git a/jme3-core/src/com/jme3/gde/core/dnd/MaterialDataFlavor.java b/jme3-core/src/com/jme3/gde/core/dnd/MaterialDataFlavor.java new file mode 100644 index 000000000..271945499 --- /dev/null +++ b/jme3-core/src/com/jme3/gde/core/dnd/MaterialDataFlavor.java @@ -0,0 +1,10 @@ +package com.jme3.gde.core.dnd; + +/** + * + * @author rickard + */ +public class MaterialDataFlavor extends StringDataFlavor { + + public final static MaterialDataFlavor instance = new MaterialDataFlavor(); +} diff --git a/jme3-core/src/com/jme3/gde/core/dnd/MaterialDropTargetListener.java b/jme3-core/src/com/jme3/gde/core/dnd/MaterialDropTargetListener.java new file mode 100644 index 000000000..58f72c4bc --- /dev/null +++ b/jme3-core/src/com/jme3/gde/core/dnd/MaterialDropTargetListener.java @@ -0,0 +1,80 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.jme3.gde.core.dnd; + +import com.jme3.gde.core.sceneviewer.SceneViewerTopComponent; +import com.jme3.math.Vector2f; +import java.awt.Cursor; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.awt.dnd.DropTargetContext; +import java.awt.dnd.DropTargetDragEvent; +import java.awt.dnd.DropTargetDropEvent; +import java.awt.dnd.DropTargetEvent; +import java.awt.dnd.DropTargetListener; + +/** + * + * @author rickard + */ +public class MaterialDropTargetListener implements DropTargetListener { + + private static final Cursor droppableCursor = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR); + private static final Cursor notDroppableCursor = Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR); + + private final SceneViewerTopComponent rootPanel; + + public MaterialDropTargetListener(SceneViewerTopComponent rootPanel) { + this.rootPanel = rootPanel; + } + + @Override + public void dragEnter(DropTargetDragEvent dtde) { + } + + @Override + public void dragOver(DropTargetDragEvent dtde) { + if (!this.rootPanel.getCursor().equals(droppableCursor)) { + this.rootPanel.setCursor(droppableCursor); + } + } + + @Override + public void dropActionChanged(DropTargetDragEvent dtde) { + } + + @Override + public void dragExit(DropTargetEvent dte) { + this.rootPanel.setCursor(notDroppableCursor); + } + + @Override + public void drop(DropTargetDropEvent dtde) { + this.rootPanel.setCursor(Cursor.getDefaultCursor()); + + Object transferableObj = null; + try { + final DataFlavor dragAndDropPanelFlavor = new MaterialDataFlavor(); + + final Transferable transferable = dtde.getTransferable(); + + if (transferable.isDataFlavorSupported(dragAndDropPanelFlavor)) { + transferableObj = dtde.getTransferable().getTransferData(dragAndDropPanelFlavor); + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + + if (transferableObj == null) { + return; + } + final int dropYLoc = dtde.getLocation().y; + final int dropXLoc = dtde.getLocation().x; + + rootPanel.applyMaterial(((AssetNameHolder) transferableObj).getAssetName(), new Vector2f(dropXLoc, dropYLoc)); + } + +} diff --git a/jme3-core/src/com/jme3/gde/core/dnd/SceneViewerDropTargetListener.java b/jme3-core/src/com/jme3/gde/core/dnd/SceneViewerDropTargetListener.java new file mode 100644 index 000000000..81dedec2d --- /dev/null +++ b/jme3-core/src/com/jme3/gde/core/dnd/SceneViewerDropTargetListener.java @@ -0,0 +1,94 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.jme3.gde.core.dnd; + +import com.jme3.gde.core.sceneviewer.SceneViewerTopComponent; +import com.jme3.math.Vector2f; +import java.awt.Cursor; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; +import java.awt.dnd.DropTargetDragEvent; +import java.awt.dnd.DropTargetDropEvent; +import java.awt.dnd.DropTargetEvent; +import java.awt.dnd.DropTargetListener; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Handles dropping Materials or Spatial from the AssetBrowser to the + * SceneViewer + * @author rickard + */ +public class SceneViewerDropTargetListener implements DropTargetListener { + + private static final Cursor droppableCursor = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR); + private static final Cursor notDroppableCursor = Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR); + + private final SceneViewerTopComponent rootPanel; + + public SceneViewerDropTargetListener(final SceneViewerTopComponent rootPanel) { + this.rootPanel = rootPanel; + } + + @Override + public void dragEnter(final DropTargetDragEvent dtde) { + } + + @Override + public void dragOver(final DropTargetDragEvent dtde) { + if (!this.rootPanel.getCursor().equals(droppableCursor)) { + this.rootPanel.setCursor(droppableCursor); + } + } + + @Override + public void dropActionChanged(DropTargetDragEvent dtde) { + } + + @Override + public void dragExit(final DropTargetEvent dte) { + this.rootPanel.setCursor(notDroppableCursor); + } + + @Override + public void drop(final DropTargetDropEvent dtde) { + this.rootPanel.setCursor(Cursor.getDefaultCursor()); + + AssetNameHolder transferableObj = null; + Transferable transferable = null; + DataFlavor flavor = null; + + try { + transferable = dtde.getTransferable(); + final DataFlavor[] flavors = transferable.getTransferDataFlavors(); + + flavor = flavors[0]; + // What does the Transferable support + if (transferable.isDataFlavorSupported(flavor)) { + transferableObj = (AssetNameHolder) dtde.getTransferable().getTransferData(flavor); + } + + } catch (UnsupportedFlavorException | IOException ex) { + Logger.getLogger(SceneViewerDropTargetListener.class.getName()).log(Level.WARNING, "Non-supported flavor {0}", transferable); + } + + if (transferable == null || transferableObj == null) { + return; + } + + final int dropYLoc = dtde.getLocation().y; + final int dropXLoc = dtde.getLocation().x; + + if (flavor instanceof SpatialDataFlavor) { + rootPanel.addModel(transferableObj.getAssetName(), new Vector2f(dropXLoc, dropYLoc)); + } else if (flavor instanceof MaterialDataFlavor) { + rootPanel.applyMaterial(transferableObj.getAssetName(), new Vector2f(dropXLoc, dropYLoc)); + } + + } + +} diff --git a/jme3-core/src/com/jme3/gde/core/dnd/SpatialDataFlavor.java b/jme3-core/src/com/jme3/gde/core/dnd/SpatialDataFlavor.java new file mode 100644 index 000000000..1bb8bf122 --- /dev/null +++ b/jme3-core/src/com/jme3/gde/core/dnd/SpatialDataFlavor.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2009-2023 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */package com.jme3.gde.core.dnd; + +/** + * + * @author rickard + */ +public class SpatialDataFlavor extends StringDataFlavor { + + public final static SpatialDataFlavor instance = new SpatialDataFlavor(); + +} diff --git a/jme3-core/src/com/jme3/gde/core/dnd/StringDataFlavor.java b/jme3-core/src/com/jme3/gde/core/dnd/StringDataFlavor.java new file mode 100644 index 000000000..bd7e79301 --- /dev/null +++ b/jme3-core/src/com/jme3/gde/core/dnd/StringDataFlavor.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2009-2023 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.core.dnd; + +import java.awt.datatransfer.DataFlavor; + +/** + * Based on: + * https://stackoverflow.com/questions/23225958/dragging-between-two-components-in-swing + * + * @author rickard + */ +public class StringDataFlavor extends DataFlavor { + + public StringDataFlavor() { + + super("text/plain", null); + + } + +} diff --git a/jme3-core/src/com/jme3/gde/core/dnd/TextureDataFlavor.java b/jme3-core/src/com/jme3/gde/core/dnd/TextureDataFlavor.java new file mode 100644 index 000000000..576db866f --- /dev/null +++ b/jme3-core/src/com/jme3/gde/core/dnd/TextureDataFlavor.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2009-2023 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */package com.jme3.gde.core.dnd; + +/** + * + * @author rickard + */ +public class TextureDataFlavor extends StringDataFlavor { + + public final static TextureDataFlavor instance = new TextureDataFlavor(); + +} diff --git a/jme3-core/src/com/jme3/gde/core/scene/PreviewRequest.java b/jme3-core/src/com/jme3/gde/core/scene/PreviewRequest.java index 425820361..c5f734a38 100644 --- a/jme3-core/src/com/jme3/gde/core/scene/PreviewRequest.java +++ b/jme3-core/src/com/jme3/gde/core/scene/PreviewRequest.java @@ -37,7 +37,9 @@ import java.awt.image.BufferedImage; /** - * + * Used to render an image of a scene using SceneApplication. Used by + * Material Editor and Shader Editor, for example. + * * @author normenhansen */ public class PreviewRequest { diff --git a/jme3-core/src/com/jme3/gde/core/sceneviewer/SceneViewerTopComponent.java b/jme3-core/src/com/jme3/gde/core/sceneviewer/SceneViewerTopComponent.java index c5a8111d6..c91d3314a 100644 --- a/jme3-core/src/com/jme3/gde/core/sceneviewer/SceneViewerTopComponent.java +++ b/jme3-core/src/com/jme3/gde/core/sceneviewer/SceneViewerTopComponent.java @@ -24,13 +24,26 @@ */ package com.jme3.gde.core.sceneviewer; +import com.jme3.asset.AssetManager; +import com.jme3.asset.MaterialKey; +import com.jme3.collision.CollisionResult; +import com.jme3.collision.CollisionResults; +import com.jme3.gde.core.dnd.SceneViewerDropTargetListener; import com.jme3.gde.core.filters.FilterExplorerTopComponent; import com.jme3.gde.core.icons.IconList; import com.jme3.gde.core.scene.SceneApplication; import com.jme3.gde.core.scene.SceneRequest; import com.jme3.input.awt.AwtKeyInput; import com.jme3.input.event.KeyInputEvent; +import com.jme3.material.Material; +import com.jme3.math.Ray; +import com.jme3.math.Vector2f; +import com.jme3.math.Vector3f; +import com.jme3.renderer.Camera; +import com.jme3.scene.Node; +import com.jme3.scene.Spatial; import java.awt.Component; +import java.awt.dnd.DropTarget; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseWheelEvent; @@ -51,7 +64,7 @@ * It also contains the top bar. */ @ConvertAsProperties(dtd = "-//com.jme3.gde.core.sceneviewer//SceneViewer//EN", -autostore = false) + autostore = false) public final class SceneViewerTopComponent extends TopComponent { private static SceneViewerTopComponent instance; @@ -101,10 +114,9 @@ public Void call() throws Exception { String action; if (e.getWheelRotation() < 0) { action = "MouseWheel"; - }else if (e.getWheelRotation() > 0) { + } else if (e.getWheelRotation() > 0) { action = "MouseWheel-"; - } - else { + } else { return null; } if (app.getActiveCameraController() != null) { @@ -154,6 +166,7 @@ public Void call() throws Exception { }); //} + oGLPanel.setDropTarget(new DropTarget(this, new SceneViewerDropTargetListener(this))); } /** @@ -352,7 +365,8 @@ private void enableNormalViewActionPerformed(java.awt.event.ActionEvent evt) {// * only, i.e. deserialization routines; otherwise you could get a * non-deserialized instance. To obtain the singleton instance, use * {@link #findInstance}. - * @return + * + * @return */ public static synchronized SceneViewerTopComponent getDefault() { if (instance == null) { @@ -364,7 +378,8 @@ public static synchronized SceneViewerTopComponent getDefault() { /** * Obtain the SceneViewerTopComponent instance. Never call * {@link #getDefault} directly! - * @return + * + * @return */ public static synchronized SceneViewerTopComponent findInstance() { TopComponent win = WindowManager.getDefault().findTopComponent(PREFERRED_ID); @@ -454,4 +469,45 @@ protected String preferredID() { public UndoRedo getUndoRedo() { return Lookup.getDefault().lookup(UndoRedo.class); } + + public void applyMaterial(String assetName, Vector2f cursorPosition) { + AssetManager assetManager = app.getAssetManager(); + Spatial spatial = pickWorldSpatial(app.getCamera(), new Vector2f(cursorPosition.x, app.getCamera().getHeight() - cursorPosition.y), app.getRootNode()); + System.out.println("position " + new Vector2f(cursorPosition.x, app.getCamera().getHeight() - cursorPosition.y)); + if (spatial != null) { + Material material = assetManager.loadAsset(new MaterialKey(assetName)); + spatial.setMaterial(material); + } + } + + public void addModel(String assetName, Vector2f cursorPosition) { + AssetManager assetManager = app.getAssetManager(); + Spatial spatial = assetManager.loadModel(assetName); + CollisionResult cr = pick(app.getCamera(), cursorPosition, app.getRootNode()); + spatial.setLocalTranslation(cr != null ? + cr.getContactPoint() : app.getCamera().getWorldCoordinates(cursorPosition, 100f)); + app.getRootNode().attachChild(spatial); + } + + public static Spatial pickWorldSpatial(Camera cam, Vector2f mouseLoc, Node jmeRootNode) { + CollisionResult cr = pick(cam, mouseLoc, jmeRootNode); + if (cr != null) { + return cr.getGeometry(); + } else { + return null; + } + } + + private static CollisionResult pick(Camera cam, Vector2f mouseLoc, Node node) { + CollisionResults results = new CollisionResults(); + Ray ray = new Ray(); + Vector3f pos = cam.getWorldCoordinates(mouseLoc, 0).clone(); + Vector3f dir = cam.getWorldCoordinates(mouseLoc, 0.125f).clone(); + dir.subtractLocal(pos).normalizeLocal(); + ray.setOrigin(pos); + ray.setDirection(dir); + node.collideWith(ray, results); + CollisionResult result = results.getClosestCollision(); + return result; + } } diff --git a/jme3-materialeditor/src/com/jme3/gde/materials/MaterialPreviewOpenSupport.java b/jme3-materialeditor/src/com/jme3/gde/materials/MaterialPreviewOpenSupport.java new file mode 100644 index 000000000..004572f96 --- /dev/null +++ b/jme3-materialeditor/src/com/jme3/gde/materials/MaterialPreviewOpenSupport.java @@ -0,0 +1,30 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.jme3.gde.materials; + +import com.jme3.gde.materials.JMEMaterialDataObject; +import com.jme3.gde.materials.multiview.MaterialEditorTopComponent; +import org.openide.cookies.CloseCookie; +import org.openide.cookies.OpenCookie; +import org.openide.loaders.OpenSupport; +import org.openide.windows.CloneableTopComponent; + +/** + * + * @author rickard + */ +public class MaterialPreviewOpenSupport extends OpenSupport implements OpenCookie, CloseCookie { + + public MaterialPreviewOpenSupport(JMEMaterialDataObject.Entry entry) { + super(entry); + } + + @Override + protected CloneableTopComponent createCloneableTopComponent() { + JMEMaterialDataObject dobj = (JMEMaterialDataObject) entry.getDataObject(); + MaterialEditorTopComponent tc = new MaterialEditorTopComponent(dobj); + return tc; + } +} diff --git a/jme3-materialeditor/src/com/jme3/gde/materials/dnd/TextureDropTargetListener.java b/jme3-materialeditor/src/com/jme3/gde/materials/dnd/TextureDropTargetListener.java new file mode 100644 index 000000000..fa6a4ae29 --- /dev/null +++ b/jme3-materialeditor/src/com/jme3/gde/materials/dnd/TextureDropTargetListener.java @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2009-2023 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.materials.dnd; + +import com.jme3.gde.core.dnd.AssetNameHolder; +import com.jme3.gde.core.dnd.TextureDataFlavor; +import java.awt.Cursor; +import java.awt.datatransfer.Transferable; +import java.awt.dnd.DropTargetContext; +import java.awt.dnd.DropTargetDragEvent; +import java.awt.dnd.DropTargetDropEvent; +import java.awt.dnd.DropTargetEvent; +import java.awt.dnd.DropTargetListener; + +/** + * + * @author rickard + */ +public class TextureDropTargetListener implements DropTargetListener { + + private static final Cursor droppableCursor = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR); + private static final Cursor notDroppableCursor = Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR); + + private final TextureDropTarget rootPanel; + + public TextureDropTargetListener(TextureDropTarget rootPanel) { + this.rootPanel = rootPanel; + } + + @Override + public void dragEnter(DropTargetDragEvent dtde) { + } + + @Override + public void dragOver(DropTargetDragEvent dtde) { + if (!this.rootPanel.getCursor().equals(droppableCursor)) { + this.rootPanel.setCursor(droppableCursor); + } + } + + @Override + public void dropActionChanged(DropTargetDragEvent dtde) { + } + + @Override + public void dragExit(DropTargetEvent dte) { + this.rootPanel.setCursor(notDroppableCursor); + } + + @Override + public void drop(DropTargetDropEvent dtde) { + this.rootPanel.setCursor(Cursor.getDefaultCursor()); + + Object transferableObj = null; + try { + + final Transferable transferable = dtde.getTransferable(); + + if (transferable.isDataFlavorSupported(TextureDataFlavor.instance)) { + transferableObj = dtde.getTransferable().getTransferData(TextureDataFlavor.instance); + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + + if (transferableObj == null) { + return; + } + + rootPanel.setTexture("\"" + ((AssetNameHolder) transferableObj).getAssetName() + "\""); + } + + public interface TextureDropTarget { + + void setTexture(String texture); + + void setCursor(Cursor cursor); + + Cursor getCursor(); + } +} diff --git a/jme3-materialeditor/src/com/jme3/gde/materials/multiview/widgets/TexturePanel.java b/jme3-materialeditor/src/com/jme3/gde/materials/multiview/widgets/TexturePanel.java index 5540833ff..d7ace1e31 100644 --- a/jme3-materialeditor/src/com/jme3/gde/materials/multiview/widgets/TexturePanel.java +++ b/jme3-materialeditor/src/com/jme3/gde/materials/multiview/widgets/TexturePanel.java @@ -15,10 +15,13 @@ import com.jme3.gde.core.properties.TexturePropertyEditor; import com.jme3.gde.core.properties.preview.TexturePreview; import com.jme3.gde.materials.MaterialProperty; +import com.jme3.gde.materials.dnd.TextureDropTargetListener; +import com.jme3.gde.materials.dnd.TextureDropTargetListener.TextureDropTarget; import com.jme3.gde.materials.multiview.MaterialEditorTopComponent; import com.jme3.gde.materials.multiview.widgets.icons.Icons; import java.awt.Component; import java.awt.Graphics2D; +import java.awt.dnd.DropTarget; import java.awt.image.BufferedImage; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.logging.Level; @@ -30,7 +33,7 @@ * * @author normenhansen */ -public class TexturePanel extends MaterialPropertyWidget { +public class TexturePanel extends MaterialPropertyWidget implements TextureDropTarget{ private TexturePropertyEditor editor; private ProjectAssetManager manager; @@ -54,6 +57,8 @@ public TexturePanel(ProjectAssetManager manager) { this.manager = manager; editor = new TexturePropertyEditor(manager); initComponents(); + + setDropTarget(new DropTarget(this, new TextureDropTargetListener(this))); } private void displayPreview() { @@ -333,4 +338,23 @@ public void cleanUp() { private javax.swing.JSeparator jSeparator1; private javax.swing.JLabel texturePreview; // End of variables declaration//GEN-END:variables + + @Override + public void setTexture(String name) { + property.setValue(""); + java.awt.EventQueue.invokeLater(() -> { + if(name.startsWith("\"")){ + textureName = name; + } else { + textureName = "\"" + name + "\""; + } + property.setValue(textureName); + displayPreview(); + updateFlipRepeat(); + java.awt.EventQueue.invokeLater(() -> { + fireChanged(); + }); + }); + + } } diff --git a/jme3-materialeditor/src/com/jme3/gde/materials/multiview/widgets/TexturePanelSquare.java b/jme3-materialeditor/src/com/jme3/gde/materials/multiview/widgets/TexturePanelSquare.java index 947d11238..b250d746a 100644 --- a/jme3-materialeditor/src/com/jme3/gde/materials/multiview/widgets/TexturePanelSquare.java +++ b/jme3-materialeditor/src/com/jme3/gde/materials/multiview/widgets/TexturePanelSquare.java @@ -37,8 +37,12 @@ import com.jme3.gde.core.properties.TexturePropertyEditor; import com.jme3.gde.core.properties.preview.TexturePreview; import com.jme3.gde.materials.MaterialProperty; +import com.jme3.gde.core.dnd.AssetNameHolder; +import com.jme3.gde.materials.dnd.TextureDropTargetListener; +import com.jme3.gde.materials.dnd.TextureDropTargetListener.TextureDropTarget; import com.jme3.gde.materials.multiview.MaterialEditorTopComponent; import java.awt.Component; +import java.awt.dnd.DropTarget; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.concurrent.ScheduledThreadPoolExecutor; @@ -49,7 +53,7 @@ * A more compact texture panel designed for the shader node editor. * @author rickard */ -public class TexturePanelSquare extends MaterialPropertyWidget { +public class TexturePanelSquare extends MaterialPropertyWidget implements TextureDropTarget { private final TexturePropertyEditor editor; private final ProjectAssetManager manager; @@ -99,6 +103,7 @@ public void mouseEntered(MouseEvent e) { public void mouseExited(MouseEvent e) { } }); + setDropTarget(new DropTarget(this, new TextureDropTargetListener(this))); } private void displayPreview() { @@ -305,4 +310,23 @@ public void cleanUp() { private javax.swing.JPanel jPanel1; private javax.swing.JLabel texturePreview; // End of variables declaration//GEN-END:variables + + @Override + public void setTexture(String name) { + property.setValue(""); + java.awt.EventQueue.invokeLater(() -> { + if(name.startsWith("\"")){ + textureName = name; + } else { + textureName = "\"" + name + "\""; + } + property.setValue(textureName); + displayPreview(); + updateFlipRepeat(); + java.awt.EventQueue.invokeLater(() -> { + fireChanged(); + }); + }); + + } } diff --git a/jme3-scenecomposer/src/com/jme3/gde/scenecomposer/OpenSceneComposer.java b/jme3-scenecomposer/src/com/jme3/gde/scenecomposer/OpenSceneComposer.java index 4216a91e0..c361869da 100644 --- a/jme3-scenecomposer/src/com/jme3/gde/scenecomposer/OpenSceneComposer.java +++ b/jme3-scenecomposer/src/com/jme3/gde/scenecomposer/OpenSceneComposer.java @@ -27,32 +27,26 @@ public void actionPerformed(ActionEvent ev) { if (manager == null) { return; } - Runnable call = new Runnable() { - - public void run() { - ProgressHandle progressHandle = ProgressHandle.createHandle("Opening in SceneComposer"); - progressHandle.start(); - try { - manager.clearCache(); - final Spatial asset = context.loadAsset(); - if (asset != null) { - java.awt.EventQueue.invokeLater(new Runnable() { - - public void run() { - SceneComposerTopComponent composer = SceneComposerTopComponent.findInstance(); - composer.openScene(asset, context, manager); - } - }); - } else { - Confirmation msg = new NotifyDescriptor.Confirmation( - "Error opening " + context.getPrimaryFile().getNameExt(), - NotifyDescriptor.OK_CANCEL_OPTION, - NotifyDescriptor.ERROR_MESSAGE); - DialogDisplayer.getDefault().notify(msg); - } - } finally { - progressHandle.finish(); + Runnable call = () -> { + ProgressHandle progressHandle = ProgressHandle.createHandle("Opening in SceneComposer"); + progressHandle.start(); + try { + manager.clearCache(); + final Spatial asset = context.loadAsset(); + if (asset != null) { + java.awt.EventQueue.invokeLater(() -> { + SceneComposerTopComponent composer = SceneComposerTopComponent.findInstance(); + composer.openScene(asset, context, manager); + }); + } else { + Confirmation msg = new NotifyDescriptor.Confirmation( + "Error opening " + context.getPrimaryFile().getNameExt(), + NotifyDescriptor.OK_CANCEL_OPTION, + NotifyDescriptor.ERROR_MESSAGE); + DialogDisplayer.getDefault().notify(msg); } + } finally { + progressHandle.finish(); } }; new Thread(call).start(); diff --git a/jme3-scenecomposer/src/com/jme3/gde/scenecomposer/layer.xml b/jme3-scenecomposer/src/com/jme3/gde/scenecomposer/layer.xml index 07bba0f5e..6e623878b 100644 --- a/jme3-scenecomposer/src/com/jme3/gde/scenecomposer/layer.xml +++ b/jme3-scenecomposer/src/com/jme3/gde/scenecomposer/layer.xml @@ -66,6 +66,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + VVSnf3_;!0J=(f$yh{J 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 literal 0 HcmV?d00001 diff --git a/jme3-core/src/com/jme3/gde/core/errorreport/ExceptionUtils.java b/jme3-core/src/com/jme3/gde/core/errorreport/ExceptionUtils.java index 76249680f..ad7a0b159 100644 --- a/jme3-core/src/com/jme3/gde/core/errorreport/ExceptionUtils.java +++ b/jme3-core/src/com/jme3/gde/core/errorreport/ExceptionUtils.java @@ -31,7 +31,6 @@ */ package com.jme3.gde.core.errorreport; -import com.google.common.base.Throwables; import com.jme3.system.JmeVersion; import org.openide.DialogDescriptor; import org.openide.DialogDisplayer; @@ -68,11 +67,12 @@ public static void caughtException(Throwable t, String comment, boolean wantIssu sB.append("If you need troubleshooting help, visit our forums, but " + "don't report this as a github issue"); } + sB.append(newLine); sB.append("Comment: "); sB.append(comment); sB.append(newLine); - sB.append(t != null ? Throwables.getStackTraceAsString(t) : fakeCallstack()); + sB.append(t != null ? convertStackTraceToString(t) : "No stacktrace"); sB.append(newLine); //sB.append("Versions: "); //sB.append(newLine); @@ -99,8 +99,34 @@ public static void caughtException(Throwable t) { caughtException(t, "", true); } - private static String fakeCallstack() { - return Throwables.getStackTraceAsString(new IllegalStateException("Fake-Callstack!")); + /** + * ChatGPT generated method to convert to string + * @param throwable + * @return + */ + private static String convertStackTraceToString(Throwable throwable) { + StringBuilder result = new StringBuilder(); + + // Append the exception message (if any) + if (throwable.getMessage() != null) { + result.append(throwable.getClass().getName()).append(": ").append(throwable.getMessage()); + result.append(System.lineSeparator()); + } else { + result.append(throwable.getClass().getName()).append(System.lineSeparator()); + } + + // Append each stack trace element + for (StackTraceElement element : throwable.getStackTrace()) { + result.append("\tat ").append(element.toString()).append(System.lineSeparator()); + } + + // Append the cause (if any) + Throwable cause = throwable.getCause(); + if (cause != null) { + result.append("Caused by: ").append(convertStackTraceToString(cause)); + } + + return result.toString(); } } diff --git a/jme3-core/src/com/jme3/gde/core/scene/controller/SceneToolController.java b/jme3-core/src/com/jme3/gde/core/scene/controller/SceneToolController.java index 4aae0ee7f..98f333951 100644 --- a/jme3-core/src/com/jme3/gde/core/scene/controller/SceneToolController.java +++ b/jme3-core/src/com/jme3/gde/core/scene/controller/SceneToolController.java @@ -327,7 +327,7 @@ protected void attachPhysicsSelection(Spatial geom) { control = geom.getControl(GhostControl.class); } if (control == null) { - control = geom.getControl(CharacterControl.class); + control = geom.getControl(CharacterControl.class).getCharacter(); } if (control == null) { return; diff --git a/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/JmeRigidBodyControl.java b/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/JmeRigidBodyControl.java index cfaf55d63..ac7ff874d 100644 --- a/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/JmeRigidBodyControl.java +++ b/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/JmeRigidBodyControl.java @@ -33,18 +33,23 @@ import com.jme3.bullet.collision.shapes.CollisionShape; import com.jme3.bullet.control.RigidBodyControl; +import com.jme3.bullet.objects.PhysicsRigidBody; import com.jme3.gde.core.icons.IconList; +import com.jme3.gde.core.sceneexplorer.nodes.editor.GravityPropertyEditor; import com.jme3.math.Quaternion; import com.jme3.math.Vector3f; import java.awt.Image; +import java.beans.PropertyEditor; +import java.lang.reflect.InvocationTargetException; import org.openide.loaders.DataObject; +import org.openide.nodes.PropertySupport; import org.openide.nodes.Sheet; /** * * @author normenhansen */ -@org.openide.util.lookup.ServiceProvider(service=SceneExplorerNode.class) +@org.openide.util.lookup.ServiceProvider(service = SceneExplorerNode.class) @SuppressWarnings({"unchecked", "rawtypes"}) public class JmeRigidBodyControl extends JmeControl { @@ -90,11 +95,11 @@ protected Sheet createSheet() { set.put(makeProperty(obj, CollisionShape.class, "getCollisionShape", "setCollisionShape", "Collision Shape")); set.put(makeProperty(obj, int.class, "getCollisionGroup", "setCollisionGroup", "Collision Group")); set.put(makeProperty(obj, int.class, "getCollideWithGroups", "setCollideWithGroups", "Collide With Groups")); - + set.put(makeProperty(obj, float.class, "getFriction", "setFriction", "Friction")); set.put(makeProperty(obj, float.class, "getMass", "setMass", "Mass")); set.put(makeProperty(obj, boolean.class, "isKinematic", "setKinematic", "Kinematic")); - set.put(makeProperty(obj, Vector3f.class, "getGravity", "setGravity", "Gravity")); + set.put(createGravityProperty(obj)); set.put(makeProperty(obj, float.class, "getLinearDamping", "setLinearDamping", "Linear Damping")); set.put(makeProperty(obj, float.class, "getAngularDamping", "setAngularDamping", "Angular Damping")); set.put(makeProperty(obj, float.class, "getRestitution", "setRestitution", "Restitution")); @@ -121,4 +126,25 @@ public Class getExplorerNodeClass() { public org.openide.nodes.Node[] createNodes(Object key, DataObject key2, boolean cookie) { return new org.openide.nodes.Node[]{new JmeRigidBodyControl((RigidBodyControl) key, key2).setReadOnly(cookie)}; } + + private Property createGravityProperty(PhysicsRigidBody physicsRigidBody) { + return new PropertySupport("gravity", Vector3f.class, "Gravity", "Set the gravity vector", true, true) { + private final GravityPropertyEditor editor = new GravityPropertyEditor(physicsRigidBody); + + @Override + public PropertyEditor getPropertyEditor() { + return editor; + } + + @Override + public Object getValue() throws IllegalAccessException, InvocationTargetException { + return editor.getValue(); + } + + @Override + public void setValue(Object t) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException { + editor.setValue(t); + } + }; + } } diff --git a/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/JmeVehicleControl.java b/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/JmeVehicleControl.java index 47fba5f1f..cce06a9f0 100644 --- a/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/JmeVehicleControl.java +++ b/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/JmeVehicleControl.java @@ -33,12 +33,16 @@ import com.jme3.bullet.collision.shapes.CollisionShape; import com.jme3.bullet.control.VehicleControl; +import com.jme3.bullet.objects.PhysicsRigidBody; import com.jme3.bullet.objects.VehicleWheel; import com.jme3.gde.core.icons.IconList; import com.jme3.gde.core.scene.SceneApplication; +import com.jme3.gde.core.sceneexplorer.nodes.editor.GravityPropertyEditor; import com.jme3.math.Quaternion; import com.jme3.math.Vector3f; import java.awt.Image; +import java.beans.PropertyEditor; +import java.lang.reflect.InvocationTargetException; import java.util.LinkedList; import java.util.List; import java.util.concurrent.Callable; @@ -46,6 +50,7 @@ import org.openide.loaders.DataObject; import org.openide.nodes.Children; import org.openide.nodes.Node; +import org.openide.nodes.PropertySupport; import org.openide.nodes.Sheet; import org.openide.util.Exceptions; @@ -103,7 +108,7 @@ protected Sheet createSheet() { set.put(makeProperty(obj, float.class, "getFriction", "setFriction", "Friction")); set.put(makeProperty(obj, float.class, "getMass", "setMass", "Mass")); set.put(makeProperty(obj, boolean.class, "isKinematic", "setKinematic", "Kinematic")); - set.put(makeProperty(obj, Vector3f.class, "getGravity", "setGravity", "Gravity")); + set.put(createGravityProperty(obj)); set.put(makeProperty(obj, float.class, "getLinearDamping", "setLinearDamping", "Linear Damping")); set.put(makeProperty(obj, float.class, "getAngularDamping", "setAngularDamping", "Angular Damping")); set.put(makeProperty(obj, float.class, "getRestitution", "setRestitution", "Restitution")); @@ -196,4 +201,25 @@ protected Node[] createNodes(Object key) { return null; } } + + private Property createGravityProperty(PhysicsRigidBody physicsRigidBody) { + return new PropertySupport("gravity", Vector3f.class, "Gravity", "Set the gravity vector", true, true) { + private final GravityPropertyEditor editor = new GravityPropertyEditor(physicsRigidBody); + + @Override + public PropertyEditor getPropertyEditor() { + return editor; + } + + @Override + public Object getValue() throws IllegalAccessException, InvocationTargetException { + return editor.getValue(); + } + + @Override + public void setValue(Object t) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException { + editor.setValue(t); + } + }; + } } diff --git a/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/editor/GravityPropertyEditor.java b/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/editor/GravityPropertyEditor.java new file mode 100644 index 000000000..3aba709ba --- /dev/null +++ b/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/editor/GravityPropertyEditor.java @@ -0,0 +1,56 @@ +package com.jme3.gde.core.sceneexplorer.nodes.editor; + +import com.jme3.bullet.objects.PhysicsRigidBody; +import com.jme3.math.Vector3f; +import java.beans.PropertyEditorSupport; + +public class GravityPropertyEditor extends PropertyEditorSupport { + + private final PhysicsRigidBody instance; + + public GravityPropertyEditor(PhysicsRigidBody instance) { + this.instance = instance; + } + + @Override + public String getAsText() { + // Convert the current value to a string representation + Vector3f gravity = (Vector3f) getValue(); + return gravity != null ? gravity.toString() : "(0.0,0.0,0.0)"; + } + + @Override + public void setAsText(String text) throws IllegalArgumentException { + // Convert the given string to the property value + // In this example, assuming the input is a comma-separated list of floats + String[] values = text.replace("(", "").replace(")", "").split(","); + if (values.length == 3) { + try { + float x = Float.parseFloat(values[0]); + float y = Float.parseFloat(values[1]); + float z = Float.parseFloat(values[2]); + Vector3f gravity = new Vector3f(x, y, z); + setValue(gravity); + } catch (NumberFormatException e) { + throw new IllegalArgumentException("Invalid format for gravity string"); + } + } else { + throw new IllegalArgumentException("Invalid format for gravity string"); + } + } + + @Override + public void setValue(Object value) { + // Set the value to the actual property using the unconventional setter + // (Assuming you have access to the PhysicsRigidBody instance) + instance.setGravity((Vector3f) value); + } + + @Override + public Object getValue() { + // Retrieve the value from the actual property using the unconventional getter + // (Assuming you have access to the PhysicsRigidBody instance) + return instance.getGravity(new Vector3f()); + } + +} \ No newline at end of file diff --git a/jme3-desktop-executables/nbproject/project.xml b/jme3-desktop-executables/nbproject/project.xml index d2e33a796..6d07fda55 100644 --- a/jme3-desktop-executables/nbproject/project.xml +++ b/jme3-desktop-executables/nbproject/project.xml @@ -12,7 +12,7 @@ 1 - 3.3.0 + 3.6.1 diff --git a/jme3-desktop-executables/src/com/jme3/gde/desktop/executables/desktop-deployment-data.zip b/jme3-desktop-executables/src/com/jme3/gde/desktop/executables/desktop-deployment-data.zip index d0c0716a3ab82c318a43dcd83bb863af911e6a28..ef9c0f17362b1d93f2239650832eca1256f93f60 100644 GIT binary patch delta 417 zcmX^AS@Qg6NxlGYW)?061`Y;>YR7_*iF_(75L$eqFE4}{rwXArN={q=722o<5xTt^ zOmFUDykY=mO-?d`3JDrd)q+T_iapE(W;GWkv==5Y0x=U1GXpWp_QC{K!Dz7T_O{)u zE#hG2^z~|NlH1iUvnoqM`0wr6B&VmpVVwn0$@-RcnI(h?RB3}yv>76}%zE8tX*Yn77*4qxR_-*OsupV yrfx?$n;k^muW~ks3#U~AO%JSKgM{n!$_h3|h>Cp`P_;l6P)$yiFv<2xHV*)ToQ?Sa delta 417 zcmX^AS@Qg6NxlGYW)?061`Y-WncXQK6ZuqFAhh^IUtS0^P8C9Ll$^K#Dzs4zB6NE- znBLsQc*OwBnw(?=6%sU_ss)i;6?>Qo%xW%7XfI4)1Y#y2W(H!G?S%=fg3(~v?QOeR zTg1W4>Fd?lB)6+yW>uDi@Za0BNls6H!#WG1lJza?GD`>(sL}?ZXfs4`nFHGf6Nt{J zQZ@ujYWkW|HYte2sZusm2+OvNO=`Mq8Ji58YX)JJm$BJHSi8#DEFi3Ja52krm{@5! yOx=!hHam#AU*&8N7f!1LnjToe1_{^cl@)A`5Ec6>plX3CpqiX2VUq2YY#sp5ua0E^ diff --git a/jme3-documentation/src/com/jme3/gde/docs/jme3/advanced/3d_models.html b/jme3-documentation/src/com/jme3/gde/docs/jme3/advanced/3d_models.html index e3a20ebbb..7ccdaaca2 100644 --- a/jme3-documentation/src/com/jme3/gde/docs/jme3/advanced/3d_models.html +++ b/jme3-documentation/src/com/jme3/gde/docs/jme3/advanced/3d_models.html @@ -15,7 +15,7 @@

Using Models and Scenes with jME3

To use 3D models in a jME3 application:

    -
  1. Export the 3D model in Ogre XML or Wavefront OBJ format. Export Scenes as Ogre DotScene format.
    +
  2. Export the 3D model in GLTF or Wavefront OBJ format. Export Scenes as GLTF format.
  3. Save the files into a subdirectory of your jME3 project's assets directory.
  4. @@ -28,53 +28,6 @@

    Using Models and Scenes with jME3

- -

Creating Models and Scenes

-
- -

-To create 3D models and scenes, you need a 3D Mesh Editor such as , with an OgreXML Exporter plugin. -

- -

-Tip: Learn how to create for more complex models, it looks more professional. -

- -

-3D model editors are third-party products, so please consult their documentation for instructions how to use them. Here is an example workflow for Blender users: -

- - -

-To export your models as Ogre XML meshes with materials: -

-
    -
  1. Open the menu File > Export > OgreXML Exporter to open the exporter dialog.
    -
  2. -
  3. In the Export Materials field: Give the material the same name as the model. For example, the model something.mesh.xml goes with something.material, plus (optionally) something.skeleton.xml, and some JPG files.
    -
  4. -
  5. In the Export Meshes field: Select a target subdirectory of your assets/Models/ directory. E.g. assets/Models/something/.
    -
  6. -
  7. Activate the following exporter settings:
    -
      -
    • Copy Textures: YES
      -
    • -
    • Rendering Materials: YES
      -
    • -
    • Flip Axis: YES
      -
    • -
    • Require Materials: YES
      -
    • -
    • Skeleton name follows mesh: YES
      -
    • -
    -
  8. -
  9. Click export.
    -
  10. -

You can now use the jMonkeyEngine SDK to load and view models. You can create scenes from them and write code that loads them into your application. @@ -82,4 +35,4 @@

Creating Models and Scenes

-

view online version

\ No newline at end of file +

view online version

diff --git a/jme3-documentation/src/com/jme3/gde/docs/jme3/external/blender.html b/jme3-documentation/src/com/jme3/gde/docs/jme3/external/blender.html deleted file mode 100644 index 0390f44f7..000000000 --- a/jme3-documentation/src/com/jme3/gde/docs/jme3/external/blender.html +++ /dev/null @@ -1,610 +0,0 @@ - -

Creating assets in Blender3D

-
- -

-This section discusses how to create and import models from Blender3D (2.62+, see bottom of page for Blender 2.49 and before) to jME3. Furthermore it explains how you can create various typical game-related assets like normal maps of high-poly models and baked lighting maps. -

- -
- -

Asset Management

-
- -

-For the managing of assets in general, be sure to read the Asset Pipeline Documentation. It contains vital information on how to manage your asset files. -

- -
- -

Creating Models

-
- -

-Game-compatible models are models that basically only consist of a mesh and UV-mapped textures, in some cases animations. All other material parameters or effects (like particles etc.) can not be expected to be transferred properly and probably would not translate to live rendering very well anyway. -

- -
- -

UV Mapped Textures

-
- -

-To successfully import a texture, the texture has to be UV-mapped to the model. Heres how to assign diffuse, normal and specular maps: -

-
    -
  • -
  • -
  • -
  • -
- -

-Its important to note that each used texture will create one separate geometry. So its best to either combine the UV maps or use a premade atlas with different texture types from the start and then map the uv coords of the models to the atlas instead of painting on the texture. This works best for large models like cities and space ships. -

- -
- -

Animations

-
- -

-Animations for jME3 have to be bone animations, simple object movement is supported by the blender importer, mesh deformation or other forms of animation are not supported. -

- -

-To create an animation from scratch do the following: -

-
    -
  • Create the model
    -
      -
    • Make sure your models location, rotation and scale is applied and zero / one (see “Model Checklist” below)
      -
    • -
    • (Did you know? You can make any model from a box by only using extrusion, this creates very clean meshes)
      -
    • -
    -
  • -
  • Create the armature bones, don't forget to have one root bone!
    -
      -
    • Start by placing the cursor at zero
      -
    • -
    • Go to the Add→Armature→Single Bone menu and create the root bone
      -
        -
      • -
      • -
      -
    • -
    • Select the bone and go to edit mode (press tab)
      -
    • -
    • Select the root bone end and press “E” to extrude the bone, then start rigging your model this way
      -
    • -
    • Make sure your armatures location, rotation and scale is applied (see “Model Checklist” below) before continuing
      -
    • -
    -
  • -
  • Make the armature the parent of the model
    -
      -
    • Make sure you are back in object mode (press tab again)
      -
    • -
    • First select the model object then select the armature object with shift pressed, then press Ctrl-P
      -
    • -
    • When you do this, you can select how the bone groups will be mapped to the model vertices initially
      -
    • -
    -
  • -
  • Set a new armature constraint in the model “Object Modifiers” settings and select the Armature
    -
      -
    • -
    • -
    -
  • -
  • Voila, your model should move when you move the bones in pose mode
    -
  • -
  • Go to the “Dope Sheet” window and select the “Action editor”
    -
      -
    • -
    • -
    -
  • -
  • Add an action by pressing the plus button
    -
  • -
  • Create the keyframes (select the model armature and press I) along the timeline
    -
      -
    • -
    • -
    -
  • -
  • Each action will be an animation available via the animation control in jME after the import
    -
  • -
  • Press the “F” button next to the action so it will be saved even if theres no references
    -
      -
    • The animation would else be deleted if its not the active animation on the armature and the file is saved
      -
    • -
    -
  • -
- -
- -

Model Checklist

-
- -

-Sometimes you do not create the model yourself and often times models from the web are not really made for OpenGL live rendering or not completely compatible with the bone system in jME. -

- -

-To export an animated model in Blender make sure the following conditions are met: -

-
    -
  • The animation has to be a bone animation
    -
  • -
  • Apply Location, Rotation and Scale to the mesh on Blender: On 3D View editor on Blender, select the mesh in Object Mode and go to the 3D View Editor’s header → Object Menu → Apply → Location / Rotation / Scale.
    -
      -
    • -
    • -
    -
  • -
  • Apply Location, Rotation and Scale to the armature on Blender: On 3D View editor on Blender, select the armature in Object Mode and go to the 3D View Editor’s header → Object Menu → Apply → Location / Rotation / Scale.
    -
      -
    • -
    • -
    -
  • -
  • Set the mesh’s origin point in the bottom of the mesh (see the image below).
    -
  • -
  • Set the armature’s origin point in the bottom of the armature (see the image below).
    -
  • -
  • Armature’s origin point and mesh’s origin point must be in the same location(see the image below).
    -
  • -
  • Use a root bone located in the armature’s origin. This root bone must be in vertical position (see the image below) and it is the root bone of the armature. If you rotate the root bone, the the entire armature might be rotate when you import the model into jMonkey (I’m just mentioning the result, I don’t know where is the problem (jMonkey importer or blender’s ogre exporter plugin)).
    -
  • -
  • Uncheck “Bone Envelopes” checkbox on the Armature modifier for the mesh (see the image below).
    -
      -
    • -
    • -
    -
  • -
  • Uncheck “Envelopes” checkbox on the armature (see the image below).
    -
      -
    • -
    • -
    -
  • -
- -

-You can use SkeletonDebugger to show the skeleton on your game in order to check if the mesh and the skeleton are loaded correctly: -

-
    final Material soldier2Mat = assetManager.loadMaterial("Materials/soldier2/soldier2.j3m");
-    final Spatial soldier2 = assetManager.loadModel("Models/soldier2/soldier2.j3o");
-    TangentBinormalGenerator.generate(soldier2);
-    soldier2.setMaterial(soldier2Mat);
- 
-    final Node soldier2Node = new Node("Soldier2 Node");
- 
-    soldier2Node.attachChild(soldier2);
-    rootNode.attachChild(soldier2Node);
- 
-    final AnimControl control = soldier2.getControl(AnimControl.class);
-    control.addListener(this);
-    final AnimChanel channel = control.createChannel();
- 
-    final SkeletonDebugger skeletonDebug = new SkeletonDebugger("skeleton", control.getSkeleton());
-    final Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
-    mat.setColor("Color", ColorRGBA.Green);
-    mat.getAdditionalRenderState().setDepthTest(false);
-    skeletonDebug.setMaterial(mat);
-    soldier2Node.attachChild(skeletonDebug);
-
    -
  • -
  • -
- -

-Also check out these videos and resources: -

-
    -
  • ()
    -
  • -
  • -
  • -
  • -
  • -
- -
- -

NormalMap baking

-
- -

-Models for live rendering should have a low polygon count. To increase the perceived detail of a model normal maps are commonly used in games. This tutorial will show how to create a normalmap from a highpoly version of your model that you can apply to a lowpoly version of the model in your game. -

- -
- -

Blender modeling lowPoly & highPoly

-
-
    -
  • If you use the multiresolution modifier you only need one object. Lets look at this example:
    -
      -
    • -
    • -
    -
  • -
  • Add a multiresolution modifier:
    -
      -
    • -
    • -
    -
  • -
  • There are two types of modifiers: Catmull-Clark and Simple.
    -
      -
    • Simple is better for things like walls or floors.
      -
    • -
    • Catmull-Clark is better for objects like spheres.
      -
    • -
    -
  • -
  • When using Catmull-Clark with a higher “subdivide” value (more than 3) its good to have the “preview” value above 0 and less than the subdivide level. This is because Catmull-Clark smoothes the vertices, so the normalMap is not so precise.
    -
  • -
  • Here is an example of Prewiew 1, it's more smooth than the original mesh:
    -
      -
    • -
    • -
    -
  • -
  • Enable “Sculpt Mode” in blender and design the highPoly version of your model like here:
    -
      -
    • -
    • -
    -
  • -
  • Now go into Render Tab, and bake a normalMap using same configuration as here:
    -
      -
    • -
    • -
    -
  • -
- -

-

Remember! The actual preview affects the baking output and mesh export! -

-

- -

-

Be careful: The steps above lead to terrible normal maps - use this procedure instead: -

-

-
    -
  • uncheck “[ ] Bake from Multires”
    -
  • -
  • switch to object mode
    -
  • -
  • make a copy of your mesh (SHIFT+D)
    -
  • -
  • remove the Multires modifier from the copied model
    -
  • -
  • remove any materials from the copied model
    -
  • -
  • remove the armature modifier from the copied model
    -
  • -
  • select the original (highres) model
    -
  • -
  • go into pose mode, clear any pose transformations
    -
  • -
  • the highres and lowres models should be on top of each other now
    -
  • -
  • select the original (highres) model
    -
  • -
  • hold SHIFT and select the copied (lowres) model
    -
  • -
  • in the properties menu go to render
    -
  • -
  • use Bake > Normal
    -
  • -
  • check “[x] Selected to Active”
    -
  • -
  • use a reasonably high value for “Margin” (4+ pixels at least for 1024×1024 maps)
    -
  • -
  • don't forget to safe the normal map image
    -
  • -
- -

-

Be careful: in the Outliner the camera symbol (Restrict Render) must be on! -

-

- -
- -

Fixing the normal colors in Blender

-
- -

-Blender has its own normal colors standard. We need to fix the colors to prepare the normalmap for using it with the JME Lighting Material. -

- -

-To do this, go to the Blender Node Window -

-
    -
  • Here is Blender Node example. It fixes the normal colors:
    -
      -
    • -
    • -
    -
  • -
-
    -
  • Here is the colors configuration:
    -
      -
    • -
    • -
    -
  • -
-
    -
  • Sometimes it will be needed to change R and G scale and add some blur for better effect. Do it like on image below
    -
      -
    • -
    • -
    -
  • -
  • After rendering, save the file to a destination you want and use it with the JME Lighting Material and the lowpoly version of the model.
    -
      -
    • -
    • -
    -
  • -
- -
- -

LightMap baking

-
- -

-The goal of this tutorial is to explain briefly how to bake light map in blender with a separate set of texture coordinates and then export a model using this map in jME3. -

- -
- -

Blender modeling + texturing

-
-
    -
  • create a mesh in blender and unwrap it to create uvs
    -
      -
    • -
    • -
    -
  • -
-
    -
  • In the mesh tab you can see the sets of Uvs, it will create the first one.
    -
      -
    • You can assign w/e texture on it, i used the built in checker of blender for the example.
      -
    • -
    -
  • -
  • In this list, create a new one and click on the camera icon so that baking is made with this set. Name it LightUvMap.
    -
  • -
  • In the 3D view in edit mode select all your mesh vertice and hit 'U'/LightMap pack then ok it will unfold the mesh for light map.
    -
  • -
  • Create a new image, go to the render tab an all at the end check the “Bake” section and select shadows. Then click bake.
    -
  • -
  • If all went ok it will create a light map like this.
    -
      -
    • -
    • -
    -
  • -
  • Go to the material tab, create a new one for your model and go to the Texture Tab.
    -
  • -
  • Create 2 textures one for the color map, and one for the light map.
    -
  • -
  • In the Mapping section be sure to select coordinates : UV and select the good set of coordinates.
    -
      -
    • -
    • -
    -
  • -
  • Then the light map
    -
      -
    • -
    • -
    -
  • -
- -
- -

Importing the model in the SDK and creating the appropriate material

-
- -

-Once this is done, export your model with the ogre exporter (or import it directly via the blend importer), and turn it into J3o with the SDK. -

-
    -
  • Create material for it using the lighting definition.
    -
  • -
  • Add the colorMap in the diffuse map slot and the lightMap in the light map slot.
    -
  • -
  • Make sure you check “SeparateTexCoords”
    -
      -
    • -
    • -
    -
  • -
  • It should roughly result in something like that :
    -
      -
    • -
    • -
    -
  • -
- -

-The blend file, the ogre xml files and the textures can be found in the download section of the google code repo -

- -

- -

- -
- -

Modelling racing tracks and cars

-
- -

-Follow the link below to a pdf tutorial by rhymez where I guide you to modelling a car and importing it to the jMonkeyengine correctly and edit it in the vehicle editor.Plus how to model a simple racing track. - -

- -
- -

Optimizing Models for 3D games

-
- -

-Follow the link below to a pdf tutorial by rhymez where I guide you on how you can optimize your models for faster rendering. - -

- -
- -

SkyBox baking

-
- -

-There are several ways to create static images to use for a sky in your game. This will describe the concepts used in blender and create an ugly sky :-) Check the links below for other ways and prettier skies. -

- -

-A sky box is a texture mapped cube, it can also, loosely, be called en EnvMap or a CubeMap. The camera is inside the cube and the clever thing that jME does is to draw the sky so it is always behind whatever else is in your scene. Imagine the monkey is the camera in the picture. -

-
    -
  • -
  • -
- -

-But a real sky is not a box around our heads, it is more like a sphere. So if we put any old image in the sky it will look strange and might even look like a box. This is not what we want. The trick is to distort the image so that it will look like a sphere even if it in fact is a picture pasted on a box. Luckily blender can do that tricky distortion for us. -

- -

-The screenshots are from Blender 2.63 but the equivalent operations have been in blender for years so with minor tweaks should work for almost any version. -

- -

-So let's get started -

-
    -
  • Fire up blender and you'll see something like this.
    -
      -
    • -
    • -
    -
  • -
  • The cube in the start scene is perfect for us. What we'll do is have Blender render the scene onto that cube. The resulting image is what we'll use for our sky box. So our jME sky will look like we stood inside the blender box and looked out on the scene in blender.
    -
  • -
  • Start by selecting the box and set its material to shadeless.
    -
      -
    • -
    • -
    -
  • -
  • Now we will create a texture for the box. Make sure the texture is an Environment Map, that the Viewpoint Object is set to the cube. The resolution is how large the resulting image will be. More pixels makes the sky look better but comes at the cost of texture memory. You'll have to trim the resolution to what works in your application.
    -
      -
    • -
    • -
    -
  • -
  • Next up is the fun part, create the sky scene in blender. You can do whatever fits your application, include models for a city landscape, set up a texture mapped sphere in blender with a nice photographed sky, whatever you can think will make a good sky. I am not so creative so I created this scene:
    -
      -
    • -
    • -
    -
  • -
  • Now render the scene (press F12). It doesn't actually matter where the camera is in blender but you might see something similar to this:
    -
      -
    • -
    • -
    -
  • -
  • You can see that Blender has actually drawn the scene onto the cube. This is exactly what we want. Now to save the image.
    -
  • -
  • Select the texture of the cube and select save environment map.
    -
      -
    • -
    • -
    -
  • -
  • That is it for Blender. Open the saved image in some image editor (I use the Gimp from here).
    -
  • -
- -

-

The SDK also contains an image editor, right-click the image and select “edit image” to open it. -

-

-
    -
  • You will notice that Blender has taken the 6 sides of the cube and pasted together into one image (3×2). So now we need to cut it up again into 6 separate images. In gimp I usually set the guides to where I want to cut and then go into Filters→Web→Slice and let gimp cut it up for me.
    -
      -
    • -
    • -
    -
  • -
  • Next up is to move the image files into your assets directory and create the sky in jME. You can do that in the Scene Composer by right clicking the scene node, select Add Spatial and then select Skybox.
    -
  • -
- -

-If you want to do it from code, here is an example: -

-
public void simpleInitApp() {
- 
-    Texture westTex = assetManager.loadTexture("Textures/west.png");
-    Texture eastTex = assetManager.loadTexture("Textures/east.png");
-    Texture northTex = assetManager.loadTexture("Textures/north.png");
-    Texture southTex = assetManager.loadTexture("Textures/south.png");
-    Texture upTex = assetManager.loadTexture("Textures/top.png");
-    Texture downTex = assetManager.loadTexture("Textures/bottom.png");
- 
-    final Vector3f normalScale = new Vector3f(-1, 1, 1);
-    Spatial skySpatial = SkyFactory.createSky(
-                        assetManager,
-                        westTex,
-                        eastTex,
-                        northTex,
-                        southTex,
-                        upTex,
-                        downTex,
-                        normalScale);
-    rootNode.attachChild(skySpatial);
-}
- -

-

This example uses a strange normalScale, this is to flip the image on the X-axis and might not be needed in your case. Hint: the texture is applied on the outside of the cube but we are inside so what do we see? -

-

- -
- -

Further reading

- - -

view online version

\ No newline at end of file diff --git a/jme3-documentation/src/com/jme3/gde/docs/sdk/3ds_to_blender_to_jmp.html b/jme3-documentation/src/com/jme3/gde/docs/sdk/3ds_to_blender_to_jmp.html deleted file mode 100644 index 4d167af74..000000000 --- a/jme3-documentation/src/com/jme3/gde/docs/sdk/3ds_to_blender_to_jmp.html +++ /dev/null @@ -1,65 +0,0 @@ - -

Using Blender as a Intermediator Between 3dMax and the jMonkeyEngine SDK

-
- -

-The jMonkeyEngine SDK supports .blend files and can convert them to jMonkeyEngine's .j3o format. This means you can use Blender to convert, for example, a 3dMax file to .j3o format. -

- -
- -

Importing the .3ds file to Blender

-
- -

-I'm using the blender 2.59 at this tutorial, but if you blender 2.49b, no problem ;). -After you saved your .3ds file in 3dmax, open the blender, delete the default cube, -and import your .3ds file via File—→Import—–>3D Studio. -

- -

- -

- -
- -

Saving the .blend file

-
- -

-Now save your .blend file so you can load it into the jMonkeyEngine SDK. -

- -

- -

- -
- -

Importing the .blend file to the SDK by using the ModelImporter and BlenderSupport plugins

-
- -

-Click on Import Model button and then click on Open Model button to open the .blend file. Click next, select the checkbox to import a copy from .blend file, and click finish. -

- -

- -

- -
- -

Edit your model in SceneComposer and "VOILA"

-
- -

-As you can see, the .blend model was automatically converted to .j3o binary format. Now, you are able to edit it in SceneComposer ;D. -

- -

- -

- -
- -

view online version

\ No newline at end of file diff --git a/jme3-documentation/src/com/jme3/gde/docs/sdk/blender.html b/jme3-documentation/src/com/jme3/gde/docs/sdk/blender.html deleted file mode 100644 index 4e7236702..000000000 --- a/jme3-documentation/src/com/jme3/gde/docs/sdk/blender.html +++ /dev/null @@ -1,362 +0,0 @@ - -

Blender importer for jMonkeyEngine 3

-
- -
- -

Introduction

-
- -

-Importing models to any game engine is as important as using them. The quality of the models depends on the abilities of the people who create it and on the tools they use. -Blender is one of the best free tools for creating 3D enviroments. Its high amount of features attract many model designers. -So far jMonkeyEngine used Ogre mesh files to import 3D data. These files were created by the python script that exported data from blender. -It was important to have always the lates version of the script that is compatible with the version of blender and to use it before importing data to jme. -Now we have an opportunity to simplify the import process by loading data directly from blender binary files: *.blend. -

- -

-

Before you try to import models, make sure you created them properly. -

-

- -
- -

Usage

-
- -

-To use it in your game or the SDK you should follow the standard asset loading instructions. -By default a BlenderModelLoader is registered with your assetManager to load blend files. This means you can load and convert .blend model files to .j3o format, just like any other supported model format. -

- -
- -

Currently supported features

-
-
    -
  1. Loading scene (only the current scene is loaded and imported as a node)
    -
  2. -
  3. Loading mesh objects.
    -
      -
    • Meshes are split into several geometries when they have several materials applied.
      -
    • -
    • All faces are stored as triangles (even if blender uses quads).
      -
    • -
    • The mesh is 'Smooth' aware.
      -
    • -
    • User defined UV coordinates are read.
      -
    • -
    • Loading BMesh is supported.
      -
    • -
    -
  4. -
  5. Loading textures.
    -
      -
    • Both image and generated textures are imported.
      -
    • -
    • Textures influence is supported ('Influence' tab in blender 2.5+ and 'Map to' in 2.49).
      -
    • -
    • Map input is not yet fully supported (currently working on it ;) ) so please use UV-mapping for all kinds of textures.
      -
    • -
    -
  6. -
  7. Image textures.
    -
      -
    • Textures can be loaded from: png, jpg, bmp, dds and tga.
      -
    • -
    • Both textures stored in the blender file and the outside are loaded (the outside textures need a valid path).
      -
    • -
    • Image textures are stored as Texture2D.
      -
    • -
    -
  8. -
  9. Generated textures.
    -
      -
    • All generated textures can be loaded except: VoxelData, EnviromentMap and PointDensity.
      -
    • -
    • Feel free to use colorbands.
      -
    • -
    • Generated textures are 'baked' into 2D textures and merged to create one flat texture. They can be freely merged with image textures.
      -
    • -
    • Generated textures can be used as normal maps (but this looks poor when large amount of small triangles is used; incleasing generated texture ppu in blender key might help a little)
      -
    • -
    -
  10. -
  11. Loading materials.
    -
      -
    • Materials are loaded and attached to geometries.
      -
    • -
    • Because jMonkeyEngine supports only one material for each Mesh, if you apply several materials to one object – it will be split into several meshes (but still in one node).
      -
    • -
    • Several kinds of input mapping is supported: UV maps, Orco and Nor; all projection types for 2D textures, XYZ coordinates mapping.
      -
    • -
    -
  12. -
  13. Loading animations.
    -
      -
    • Bone animations and object animations are supported.
      -
    • -
    • Armatures are imported as Skeleton. Constraint loading is not fully supported so use it carefully.
      -
    • -
    • Only assigning vertices to bones is at the moment supported so do not use bones' envelopes.
      -
    • -
    -
  14. -
  15. Loading modifiers.
    -
      -
    1. Array modifier
      -
    2. -
    3. Mirror modifier
      -
    4. -
    5. Armature modifier (see loading animations)
      -
    6. -
    7. Particles modifier (see loading particles)
      -
    8. -
    -
      -
    • More will come with time.
      -
    • -
    -
  16. -
  17. Constraints loading
    -
      -
    • Constraints are basicly supported but they do not work the way I'd like it. So feel free to experiment with it. I will create another post when I get it to work properly.
      -
    • -
    -
  18. -
  19. Particles loading.
    -
      -
    • Some features of particles loading is supported. You can use only particle emitters at the moment.
      -
    • -
    • You can choose to emit particles from vertices, faces or the geometry's convex hull (instead of volume).
      -
    • -
    • Currently Newtonian Physics is only supported.
      -
    • -
    • It was mostly tested for blender 2.49 (so I'm not 100% sure about its use in blender 2.5+).
      -
    • -
    -
  20. -
  21. Using sculpting.
    -
      -
    • This should work quite well for now :).
      -
    • -
    -
  22. -
  23. Importing curves.
    -
      -
    • Both bezier and NURBS curves are supproted.
      -
    • -
    • Feel free to use bevel and taper objects as well ;)
      -
    • -
    -
  24. -
  25. Importing surfaces
    -
      -
    • NURBS surface and sphere can be imported.
      -
    • -
    -
  26. -
  27. Importing sky
    -
      -
    • loading world's horizon color as a background color if no sky type is used
      -
    • -
    • loading sky without the texture
      -
    • -
    • loading textured sky (including both generated and normal textures)
      -
    • -
    -
  28. -
- -
- -

Planned features.

-
-
    -
  1. Full support for scale and offset in texture input mapping.
    -
  2. -
  3. Full support for bone and object constraints.
    -
  4. -
  5. More modifiers loaded.
    -
  6. -
  7. Loading texts.
    -
  8. -
  9. Loading meta objects (if jme will support it ;) ).
    -
  10. -
- -
- -

Known bugs/problems.

-
-
    -
  1. RGB10 and RGB9E5 texture types are not supported in texture merging operations (which means that you can use this as a single texture on the model, but you should not combine it with other images or generated textures).
    -
  2. -
  3. If an armature is attached to a mesh that has more than one material the vertices of the mesh might be strongly displaced. Hope to fix that soon.
    -
  4. -
- -
- -

Using BlenderLoader instead of BlenderModelLoader

-
- -

-You have two loaders available. -

-
    -
  • BlenderLoader that loads the whole scene. It returns an instance of LoadingResults that contains all the data loaded from the scene.
    -
  • -
-
public static class LoadingResults extends Spatial {
-        /** Bitwise mask of features that are to be loaded. */
-        private final int featuresToLoad;
-        /** The scenes from the file. */
-        private List<Node> scenes;
-        /** Objects from all scenes. */
-        private List<Node> objects;
-        /** Materials from all objects. */
-        private List<Material> materials;
-        /** Textures from all objects. */
-        private List<Texture> textures;
-        /** Animations of all objects. */
-        private List<AnimData> animations;
-        /** All cameras from the file. */
-        private List<Camera> cameras;
-        /** All lights from the file. */
-        private List<Light> lights;
-	/** Access Methods goes here. */
-}
-
    -
  • BlenderModelLoader loads only the model node and should be used if you have a single model in a file.
    -
  • -
- -

-To register the model do the following: -

-
assetManager.registerLoader(BlenderLoader.class, "blend");
- -

-or -

-
assetManager.registerLoader(BlenderModelLoader.class, "blend");
-
    -
  • The last thing to do is to create a proper key.
    -
  • -
- -

-You can use com.jme3.asset.BlenderKey for that. -The simplest use is to create the key with the asset's name. -It has many differens settings descibing the blender file more precisely, but all of them have default values so you do not need to worry about it at the beggining. -You can use ModelKey as well. This will give the same result as using default BlenderKey. -

- -
- -

How does it work?

-
- -

-BlenderLoader (as well as BlenderModelLoader) is looking for all kinds of known assets to load. -It's primary use is of course to load the models withon the files. -Each blender object is imported as scene Node. The node should have applied textures and materials as well. -If you define animations in your BlenderKey the animations will as well be imported and attached to the model. -

- -

-Here is the list of how blender features are mapped into jme. -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BlenderjMonkeyEngine3Note
Scene Node
Object Node
Mesh List<Geometry> One mesh can have several materials so that is why a list is needed here.
Lamp Light
Camera Camera
Material Material
Texture Texture
Curve Node Node with Curve as its mesh
Surface Node The surface is transformed to the proper mesh
- -

-Using BlenderLoader can allow you to use blend file as your local assets repository. -You can store your textures, materials or meshes there and simply import it when needed. -Currently blender 2.49 and 2.5+ are supported (only the stable versions). -Probably versions before 2.49 will work pretty well too, but I never checked that :) -

- -
- -

Notes

-
- -

-I know that the current version of loader is not yet fully functional, but belive me – Blender is a very large issue ;) -Hope I will meet your expectations. -

- -

-Be mindful of the result model vertices amount. The best results are achieved when the model is smooth and has no texture. Then the vertex amount is equal to the vertex amount in blender. If the model is not smooth or has a generated texture applied then the amount of vertices is 3 times larger than mesh's triangles amount. If a 2d texture is applied with UV mapping then the vertex count will vary depending on how much the UV map is fragmented. -

- -

-When using polygon meshes in blender 2.5 and newer, better add and apply the triangulation modifier (if available in your version) or save the file with convertion from polygons to triangles. -Even though the importer supports loading of polygons as the mesh faces, if your face isn't convex, the results might contain errors. -

- -

-Not all modifiers are supported. If your model has modifiers and looks not the way you want in the jme scene - try to apply them and load again. -

- -

-Cheers, -Marcin Roguski (Kaelthas) -

- -

-P.S. -This text might be edited in a meantime if I forgot about something ;) -

-
- -

-See also: -

- - -

-tag_documentation_sdk_tool_asset -

- -
- -

view online version

\ No newline at end of file diff --git a/jme3-lwjgl-applet/release/libs/applet-loader.zip b/jme3-lwjgl-applet/release/libs/applet-loader.zip index d6b82584be253c3b25b2df98a9d1a3aee58084a3..9baeef806cb5437080b1b978799276504785c798 100644 GIT binary patch delta 355 zcmXxbF;Buk7{>8J3s%G`cZ!OND1vy24la-o5KKDZ;Na9Wegb0HJ38F%pmA_#B}a0L zD_z(~ocRJK#3l@GKK6~nFZt)q^G=4t!~~qXo@r$a!?ul}JGdV?-%0B)lxemXaXq<_ zbfW|$!2}CZkcJiQMs_rhm$Erqg$%6e<}7AE?1aK~f72f*P8Sqp2~Z{YHmpZzvktUF8X$ zp;m8c6Po)6g7Bch%}@8G;RSELe7@u1Ffj(_`qH%0hGE-A{_XZ+z;`o-CmhErTS%}OV#3{LDlEtj7o8FPBr7=Y7XiRg5dxF diff --git a/jme3-vehicle-creator/src/com/jme3/gde/vehiclecreator/SuspensionSettings.java b/jme3-vehicle-creator/src/com/jme3/gde/vehiclecreator/SuspensionSettings.java index 4f90e2ece..4ac08176f 100644 --- a/jme3-vehicle-creator/src/com/jme3/gde/vehiclecreator/SuspensionSettings.java +++ b/jme3-vehicle-creator/src/com/jme3/gde/vehiclecreator/SuspensionSettings.java @@ -31,8 +31,8 @@ public SuspensionSettings() { } public SuspensionSettings(VehicleWheel wheel) { - this.direction.set(wheel.getDirection()); - this.axle.set(wheel.getAxle()); + this.direction.set(wheel.getDirection(new Vector3f())); + this.axle.set(wheel.getAxle(new Vector3f())); this.frontWheel = wheel.isFrontWheel(); this.radius = wheel.getRadius(); this.restLength = wheel.getRestLength(); diff --git a/jme3-vehicle-creator/src/com/jme3/gde/vehiclecreator/VehicleEditorController.java b/jme3-vehicle-creator/src/com/jme3/gde/vehiclecreator/VehicleEditorController.java index d3ec933de..9ffd03d7f 100644 --- a/jme3-vehicle-creator/src/com/jme3/gde/vehiclecreator/VehicleEditorController.java +++ b/jme3-vehicle-creator/src/com/jme3/gde/vehiclecreator/VehicleEditorController.java @@ -72,16 +72,16 @@ public VehicleEditorController(JmeSpatial jmeRootNode, BinaryModelDataObject cur toolsNode.addLight(new DirectionalLight()); Node track = (Node) new DesktopAssetManager(true).loadModel("Models/Racetrack/Raceway.j3o"); if (track.getChild("Grass").getControl(RigidBodyControl.class) == null) { - track.getChild("Grass").addControl(new RigidBodyControl()); + track.getChild("Grass").addControl(new RigidBodyControl(0f)); } if (track.getChild("Road").getControl(RigidBodyControl.class) == null) { - track.getChild("Road").addControl(new RigidBodyControl()); + track.getChild("Road").addControl(new RigidBodyControl(0f)); } if (track.getChild("Wall").getControl(RigidBodyControl.class) == null) { - track.getChild("Wall").addControl(new RigidBodyControl()); + track.getChild("Wall").addControl(new RigidBodyControl(0f)); } if (track.getChild("Rumble-Strip").getControl(RigidBodyControl.class) == null) { - track.getChild("Rumble-Strip").addControl(new RigidBodyControl()); + track.getChild("Rumble-Strip").addControl(new RigidBodyControl(0f)); } toolsNode.attachChild(track); diff --git a/nbi/stub/build.xml b/nbi/stub/build.xml index 3be580c7f..08fa58fe6 100644 --- a/nbi/stub/build.xml +++ b/nbi/stub/build.xml @@ -17,14 +17,6 @@ - - - - - - - - @@ -166,19 +158,6 @@ jarsigner.enabled=${jarsigner.enabled} - - - - - - - - - - - - - @@ -205,7 +184,6 @@ jarsigner.enabled=${jarsigner.enabled} - @@ -214,7 +192,6 @@ jarsigner.enabled=${jarsigner.enabled} - @@ -222,7 +199,6 @@ jarsigner.enabled=${jarsigner.enabled} - @@ -231,7 +207,6 @@ jarsigner.enabled=${jarsigner.enabled} - diff --git a/nbi/stub/ext/components/products/blender/build.xml b/nbi/stub/ext/components/products/blender/build.xml deleted file mode 100644 index 07f2eba0b..000000000 --- a/nbi/stub/ext/components/products/blender/build.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - Builds, tests, and runs the project helloworld. - - - diff --git a/nbi/stub/ext/components/products/blender/data/Bundle.properties b/nbi/stub/ext/components/products/blender/data/Bundle.properties deleted file mode 100644 index 33fc0b2ba..000000000 --- a/nbi/stub/ext/components/products/blender/data/Bundle.properties +++ /dev/null @@ -1,42 +0,0 @@ -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. -# -# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved. -# -# Oracle and Java are registered trademarks of Oracle and/or its affiliates. -# Other names may be trademarks of their respective owners. -# -# The contents of this file are subject to the terms of either the GNU General Public -# License Version 2 only ("GPL") or the Common Development and Distribution -# License("CDDL") (collectively, the "License"). You may not use this file except in -# compliance with the License. You can obtain a copy of the License at -# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the -# License for the specific language governing permissions and limitations under the -# License. When distributing the software, include this License Header Notice in -# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle -# designates this particular file as subject to the "Classpath" exception as provided -# by Oracle in the GPL Version 2 section of the License file that accompanied this code. -# If applicable, add the following below the License Header, with the fields enclosed -# by brackets [] replaced by your own identifying information: -# "Portions Copyrighted [year] [name of copyright owner]" -# -# Contributor(s): -# -# The Original Software is NetBeans. The Initial Developer of the Original Software -# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All -# Rights Reserved. -# -# If you wish your version of this file to be governed by only the CDDL or only the -# GPL Version 2, indicate your decision by adding "[Contributor] elects to include -# this software in this distribution under the [CDDL or GPL Version 2] license." If -# you do not indicate a single choice of license, a recipient has the option to -# distribute your version of this file under either the CDDL, the GPL Version 2 or -# to extend the choice of license to its licensees as provided above. However, if you -# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the -# option applies only if the new code is made subject to such option by the copyright -# holder. -# - -product.display.name={product-name} -product.description=Blender 3D editor in a version that is \ -compatible with jME3, recommended for jME3 game development. diff --git a/nbi/stub/ext/components/products/blender/data/icon.png b/nbi/stub/ext/components/products/blender/data/icon.png deleted file mode 100644 index a8c0f8c3480dc943a45444696e29140b76c41c61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must set src.dir - Must set test.src.dir - Must set build.dir - Must set dist.dir - Must set build.classes.dir - Must set dist.javadoc.dir - Must set build.test.classes.dir - Must set build.test.results.dir - Must set build.classes.excludes - Must set dist.jar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must set javac.includes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - No tests executed. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must set JVM to use for profiling in profiler.info.jvm - Must set profiler agent JVM arguments in profiler.info.jvmargs.agent - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must select some files in the IDE or set javac.includes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - To run this application from the command line without Ant, try: - - java -jar "${dist.jar.resolved}" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must select one file in the IDE or set run.class - - - - Must select one file in the IDE or set run.class - - - - - - - - - - - - - - - - - - - - - - - Must select one file in the IDE or set debug.class - - - - - Must select one file in the IDE or set debug.class - - - - - Must set fix.includes - - - - - - - - - - This target only works when run from inside the NetBeans IDE. - - - - - - - - - Must select one file in the IDE or set profile.class - This target only works when run from inside the NetBeans IDE. - - - - - - - - - This target only works when run from inside the NetBeans IDE. - - - - - - - - - - - - - This target only works when run from inside the NetBeans IDE. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must select one file in the IDE or set run.class - - - - - - Must select some files in the IDE or set test.includes - - - - - Must select one file in the IDE or set run.class - - - - - Must select one file in the IDE or set applet.url - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must select some files in the IDE or set javac.includes - - - - - - - - - - - - - - - - - - - - - - - - Some tests failed; see details above. - - - - - - - - - Must select some files in the IDE or set test.includes - - - - Some tests failed; see details above. - - - - Must select some files in the IDE or set test.class - Must select some method in the IDE or set test.method - - - - Some tests failed; see details above. - - - - - Must select one file in the IDE or set test.class - - - - Must select one file in the IDE or set test.class - Must select some method in the IDE or set test.method - - - - - - - - - - - - - - Must select one file in the IDE or set applet.url - - - - - - - - - Must select one file in the IDE or set applet.url - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/nbi/stub/ext/components/products/blender/nbproject/genfiles.properties b/nbi/stub/ext/components/products/blender/nbproject/genfiles.properties deleted file mode 100644 index fb4a26f76..000000000 --- a/nbi/stub/ext/components/products/blender/nbproject/genfiles.properties +++ /dev/null @@ -1,8 +0,0 @@ -build.xml.data.CRC32=b5c7f54a -build.xml.script.CRC32=16bbb630 -build.xml.stylesheet.CRC32=be360661 -# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. -# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. -nbproject/build-impl.xml.data.CRC32=eb8fa073 -nbproject/build-impl.xml.script.CRC32=52136381 -nbproject/build-impl.xml.stylesheet.CRC32=f89f7d21@1.94.0.48 diff --git a/nbi/stub/ext/components/products/blender/nbproject/project.properties b/nbi/stub/ext/components/products/blender/nbproject/project.properties deleted file mode 100644 index ddafab052..000000000 --- a/nbi/stub/ext/components/products/blender/nbproject/project.properties +++ /dev/null @@ -1,85 +0,0 @@ -annotation.processing.enabled=true -annotation.processing.enabled.in.editor=false -annotation.processing.processors.list= -annotation.processing.run.all.processors=true -application.title=blender -application.vendor=dlm198383 -build.classes.dir=${build.dir}/classes -build.classes.excludes=**/*.java,**/*.form -# This directory is removed when the project is cleaned: -build.dir=build -build.generated.dir=${build.dir}/generated -build.generated.sources.dir=${build.dir}/generated-sources -# Only compile against the classpath explicitly listed here: -build.sysclasspath=ignore -build.test.classes.dir=${build.dir}/test/classes -build.test.results.dir=${build.dir}/test/results -debug.classpath=\ - ${run.classpath} -debug.modulepath=\ - ${run.modulepath} -debug.test.classpath=\ - ${run.test.classpath} -debug.test.modulepath=\ - ${run.test.modulepath} -# This directory is removed when the project is cleaned: -dist.dir=dist -dist.jar=${dist.dir}/blender.jar -dist.javadoc.dir=${dist.dir}/javadoc -endorsed.classpath= -excludes= -includes=** -jar.compress=false -javac.classpath=\ - ${reference.Core_NBI_Engine.jar}:\ - ../../../../../antlib/nbi-engine.jar -# Space-separated list of extra javac options -javac.compilerargs= -javac.deprecation=false -javac.external.vm=false -javac.modulepath= -javac.processormodulepath= -javac.processorpath=\ - ${javac.classpath} -javac.source=1.7 -javac.target=1.7 -javac.test.classpath=\ - ${javac.classpath}:\ - ${build.classes.dir}:\ - ${libs.junit.classpath}:\ - ${libs.junit_4.classpath} -javac.test.modulepath=\ - ${javac.modulepath} -javadoc.additionalparam= -javadoc.author=false -javadoc.encoding=${source.encoding} -javadoc.noindex=false -javadoc.nonavbar=false -javadoc.notree=false -javadoc.private=false -javadoc.splitindex=true -javadoc.use=true -javadoc.version=false -javadoc.windowtitle= -meta.inf.dir=${src.dir}/META-INF -mkdist.disabled=false -platform.active=default_platform -project.Core_NBI_Engine=../../../../nbi/engine -reference.Core_NBI_Engine.jar=${project.Core_NBI_Engine}/dist/nbi-engine.jar -run.classpath=\ - ${javac.classpath}:\ - ${build.classes.dir} -# Space-separated list of JVM arguments used when running the project -# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value -# or test-sys-prop.name=value to set system properties for unit tests): -run.jvmargs= -run.modulepath=\ - ${javac.modulepath} -run.test.classpath=\ - ${javac.test.classpath}:\ - ${build.test.classes.dir} -run.test.modulepath=\ - ${javac.test.modulepath} -source.encoding=UTF-8 -src.dir=src -test.src.dir=test diff --git a/nbi/stub/ext/components/products/blender/nbproject/project.xml b/nbi/stub/ext/components/products/blender/nbproject/project.xml deleted file mode 100644 index 466ac44f7..000000000 --- a/nbi/stub/ext/components/products/blender/nbproject/project.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - org.netbeans.modules.java.j2seproject - - - blender - 1.6.5 - - - - - - - - - - Core_NBI_Engine - jar - - jar - clean - jar - - - - diff --git a/nbi/stub/ext/components/products/blender/src/org/mycompany/Bundle.properties b/nbi/stub/ext/components/products/blender/src/org/mycompany/Bundle.properties deleted file mode 100644 index e69de29bb..000000000 diff --git a/nbi/stub/ext/components/products/blender/src/org/mycompany/ConfigurationLogic.java b/nbi/stub/ext/components/products/blender/src/org/mycompany/ConfigurationLogic.java deleted file mode 100644 index d1616e459..000000000 --- a/nbi/stub/ext/components/products/blender/src/org/mycompany/ConfigurationLogic.java +++ /dev/null @@ -1,99 +0,0 @@ -package org.mycompany; - -import java.io.File; -import java.util.List; -import org.netbeans.installer.product.Registry; -import org.netbeans.installer.product.components.Product; -import org.netbeans.installer.product.components.ProductConfigurationLogic; -import org.netbeans.installer.utils.LogManager; -import org.netbeans.installer.utils.helper.RemovalMode; -import org.netbeans.installer.utils.exceptions.InitializationException; -import org.netbeans.installer.utils.exceptions.InstallationException; -import org.netbeans.installer.utils.exceptions.UninstallationException; -import org.netbeans.installer.utils.helper.Platform; -import org.netbeans.installer.utils.progress.Progress; -import org.netbeans.installer.wizard.Wizard; -import org.netbeans.installer.wizard.components.WizardComponent; -//normen - JDK launchers - -public class ConfigurationLogic extends ProductConfigurationLogic { - - private List wizardComponents; - - // constructor ////////////////////////////////////////////////////////////////// - public ConfigurationLogic() throws InitializationException { - wizardComponents = Wizard.loadWizardComponents( - WIZARD_COMPONENTS_URI, - getClass().getClassLoader()); - } - - public List getWizardComponents() { - return wizardComponents; - } - - @Override - public boolean allowModifyMode() { - return false; - } - - @Override - public void install(Progress progress) throws InstallationException { - final Product product = getProduct(); - final File installLocation = product.getInstallationLocation(); - LogManager.log("Setting Blender files as executable"); - setExecutableFile(installLocation, "blender"); - setExecutableFile(installLocation, "blenderplayer"); - setExecutableFile(installLocation, "blender-softwaregl"); - } - private static void setExecutableFile(File parent, String path) { - File binFile = new File(parent, path); - try { - binFile.setExecutable(true, false); - } catch (Exception ex) { - ex.printStackTrace(); - } - } - - @Override - public void uninstall(Progress progress) throws UninstallationException { - progress.setPercentage(Progress.COMPLETE); - } - - @Override - public String getExecutable() { - return ""; - } - - @Override - public String getIcon() { - return ""; - } - - public RemovalMode getRemovalMode() { - return RemovalMode.LIST; - } - - @Override - public boolean registerInSystem() { - return false; - } - - @Override - public boolean requireLegalArtifactSaving() { - return false; - } - - @Override - public boolean requireDotAppForMacOs() { - return false; - } - - @Override - public boolean wrapForMacOs() { - return false; - } - - public static final String WIZARD_COMPONENTS_URI = - "resource:" + // NOI18N - "org/mycompany/wizard.xml"; // NOI18N -} diff --git a/nbi/stub/ext/components/products/blender/src/org/mycompany/wizard.xml b/nbi/stub/ext/components/products/blender/src/org/mycompany/wizard.xml deleted file mode 100644 index 48cf8e5c7..000000000 --- a/nbi/stub/ext/components/products/blender/src/org/mycompany/wizard.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - diff --git a/nbi/stub/ext/components/products/blender/src/org/mycompany/wizard/panels/Bundle.properties b/nbi/stub/ext/components/products/blender/src/org/mycompany/wizard/panels/Bundle.properties deleted file mode 100644 index ed2c2d07d..000000000 --- a/nbi/stub/ext/components/products/blender/src/org/mycompany/wizard/panels/Bundle.properties +++ /dev/null @@ -1,51 +0,0 @@ -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. -# -# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved. -# -# Oracle and Java are registered trademarks of Oracle and/or its affiliates. -# Other names may be trademarks of their respective owners. -# -# The contents of this file are subject to the terms of either the GNU General Public -# License Version 2 only ("GPL") or the Common Development and Distribution -# License("CDDL") (collectively, the "License"). You may not use this file except in -# compliance with the License. You can obtain a copy of the License at -# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the -# License for the specific language governing permissions and limitations under the -# License. When distributing the software, include this License Header Notice in -# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle -# designates this particular file as subject to the "Classpath" exception as provided -# by Oracle in the GPL Version 2 section of the License file that accompanied this code. -# If applicable, add the following below the License Header, with the fields enclosed -# by brackets [] replaced by your own identifying information: -# "Portions Copyrighted [year] [name of copyright owner]" -# -# Contributor(s): -# -# The Original Software is NetBeans. The Initial Developer of the Original Software -# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All -# Rights Reserved. -# -# If you wish your version of this file to be governed by only the CDDL or only the -# GPL Version 2, indicate your decision by adding "[Contributor] elects to include -# this software in this distribution under the [CDDL or GPL Version 2] license." If -# you do not indicate a single choice of license, a recipient has the option to -# distribute your version of this file under either the CDDL, the GPL Version 2 or -# to extend the choice of license to its licensees as provided above. However, if you -# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the -# option applies only if the new code is made subject to such option by the copyright -# holder. -# - -################################################################################ -# will be augmented with the product name from data/Bundle.properties -# Note: Augmentation is broken, see ShortcutCreationPanel.java - -P.title= Blender -P.description=Create a desktop shortcut for the Blender 3D Editor. - -P.create.desktop.shortcut=Create Desktop icon -P.create.start.menu.shortcut.windows=Create Start menu entry -P.create.start.menu.shortcut.unix=Create shortcut in Applications menu -P.create.start.menu.shortcut.macosx=Create icon in Dock - diff --git a/nbi/stub/ext/components/products/blender/src/org/mycompany/wizard/panels/ShortcutCreationPanel.java b/nbi/stub/ext/components/products/blender/src/org/mycompany/wizard/panels/ShortcutCreationPanel.java deleted file mode 100644 index 225bed537..000000000 --- a/nbi/stub/ext/components/products/blender/src/org/mycompany/wizard/panels/ShortcutCreationPanel.java +++ /dev/null @@ -1,182 +0,0 @@ -package org.mycompany.wizard.panels; - -import java.awt.GridBagConstraints; -import java.awt.Insets; -import org.netbeans.installer.utils.ResourceUtils; -import org.netbeans.installer.utils.StringUtils; -import org.netbeans.installer.utils.SystemUtils; -import org.netbeans.installer.utils.helper.swing.NbiCheckBox; -import org.netbeans.installer.wizard.components.panels.ErrorMessagePanel; -import org.netbeans.installer.wizard.containers.SwingContainer; -import org.netbeans.installer.wizard.ui.SwingUi; -import org.netbeans.installer.wizard.ui.WizardUi; - -/** - * - * @author Dmitry Lipin - */ -public class ShortcutCreationPanel extends ErrorMessagePanel { - - public ShortcutCreationPanel() { - setProperty(TITLE_PROPERTY, - DEFAULT_TITLE); - setProperty(DESCRIPTION_PROPERTY, - DEFAULT_DESCRIPTION); - - } - - @Override - public WizardUi getWizardUi() { - if (wizardUi == null) { - wizardUi = new ShortcutCreationPanelUi(this); - } - - return wizardUi; - } - - @Override - public void initialize() { - super.initialize(); - if(getWizard().getProperty(CREATE_DESKTOP_SHORTCUT_PROPERTY) == null) { - getWizard().setProperty(CREATE_DESKTOP_SHORTCUT_PROPERTY, "" + true); - } - if(getWizard().getProperty(CREATE_START_MENU_SHORTCUT_PROPERTY) == null) { - getWizard().setProperty(CREATE_START_MENU_SHORTCUT_PROPERTY, "" + true); - } - } - - - public static class ShortcutCreationPanelUi extends ErrorMessagePanelUi { - - protected ShortcutCreationPanel panel; - - public ShortcutCreationPanelUi(ShortcutCreationPanel panel) { - super(panel); - - - this.panel = panel; - } - - public SwingUi getSwingUi(SwingContainer container) { - if (swingUi == null) { - swingUi = new ShortcutCreationPanelSwingUi(panel, container); - } - - return super.getSwingUi(container); - } - } - - public static class ShortcutCreationPanelSwingUi extends ErrorMessagePanelSwingUi { - - protected ShortcutCreationPanel panel; - private NbiCheckBox desktopShortcutComboBox; - private NbiCheckBox startMenuShortcutComboBox; - - public ShortcutCreationPanelSwingUi( - final ShortcutCreationPanel panel, - final SwingContainer container) { - super(panel, container); - - this.panel = panel; - - initComponents(); - } - - // protected //////////////////////////////////////////////////////////////// - @Override - protected void initialize() { - desktopShortcutComboBox.setText(CREATE_DESKTOP_SHORTCUT_NAME); - desktopShortcutComboBox.setSelected(false); - if(Boolean.parseBoolean(panel.getWizard().getProperty(CREATE_DESKTOP_SHORTCUT_PROPERTY))) { - desktopShortcutComboBox.doClick(); - } - - startMenuShortcutComboBox.setText( - SystemUtils.isWindows() ? CREATE_START_MENU_SHORTCUT_NAME_WINDOWS : - (SystemUtils.isMacOS() ? CREATE_START_MENU_SHORTCUT_NAME_MAC : - CREATE_START_MENU_SHORTCUT_NAME_UNIX)); - startMenuShortcutComboBox.setSelected(false); - if(Boolean.parseBoolean(panel.getWizard().getProperty(CREATE_START_MENU_SHORTCUT_PROPERTY))) { - startMenuShortcutComboBox.doClick(); - } - - super.initialize(); - } - - @Override - protected void saveInput() { - super.saveInput(); - panel.getWizard().setProperty( - CREATE_DESKTOP_SHORTCUT_PROPERTY, - StringUtils.EMPTY_STRING + desktopShortcutComboBox.isSelected()); - - panel.getWizard().setProperty( - CREATE_START_MENU_SHORTCUT_PROPERTY, - StringUtils.EMPTY_STRING + startMenuShortcutComboBox.isSelected()); - } - - @Override - protected String validateInput() { - String errorMessage = super.validateInput(); - return errorMessage; - } - - // private ////////////////////////////////////////////////////////////////// - private void initComponents() { - // selectedLocationField //////////////////////////////////////////////// - desktopShortcutComboBox = new NbiCheckBox(); - startMenuShortcutComboBox = new NbiCheckBox(); - - // this ///////////////////////////////////////////////////////////////// - add(desktopShortcutComboBox, new GridBagConstraints( - 0, 2, // x, y - 2, 1, // width, height - 1.0, 0.0, // weight-x, weight-y - GridBagConstraints.LINE_START, // anchor - GridBagConstraints.HORIZONTAL, // fill - new Insets(15, 11, 0, 11), // padding - 0, 0)); // padx, pady - ??? - add(startMenuShortcutComboBox, new GridBagConstraints( - 0, 3, // x, y - 2, 1, // width, height - 1.0, 0.0, // weight-x, weight-y - GridBagConstraints.LINE_START, // anchor - GridBagConstraints.HORIZONTAL, // fill - new Insets(7, 11, 0, 11), // padding - 0, 0)); // padx, pady - ??? - - } - } - ///////////////////////////////////////////////////////////////////////////////// - // Constants - - /* @TODO: "ResourceUtils.getString("data","product.display.name")" is broken - * It should fetch the properties from the data folder and then we should - * also do the same for the description. For some reason the Resource "data" - * is not found (See #227). I've integrated everything within P.title and - * P.description, doesn't matter for now since we have no i18n anyway. - * - MeFisto94 - */ - public static final String DEFAULT_TITLE = - ResourceUtils.getString(ShortcutCreationPanel.class, - "P.title"); // NOI18N - public static final String DEFAULT_DESCRIPTION = - ResourceUtils.getString(ShortcutCreationPanel.class, - "P.description"); // NOI18N - public static final String CREATE_DESKTOP_SHORTCUT_NAME = - ResourceUtils.getString(ShortcutCreationPanel.class, - "P.create.desktop.shortcut"); // NOI18N - public static final String CREATE_START_MENU_SHORTCUT_NAME_WINDOWS = - ResourceUtils.getString(ShortcutCreationPanel.class, - "P.create.start.menu.shortcut.windows"); // NOI18N - public static final String CREATE_START_MENU_SHORTCUT_NAME_UNIX = - ResourceUtils.getString(ShortcutCreationPanel.class, - "P.create.start.menu.shortcut.unix"); // NOI18N - public static final String CREATE_START_MENU_SHORTCUT_NAME_MAC = - ResourceUtils.getString(ShortcutCreationPanel.class, - "P.create.start.menu.shortcut.macosx"); // NOI18N - public static final String CREATE_DESKTOP_SHORTCUT_PROPERTY = - "create.desktop.shortcut"; - public static final String CREATE_START_MENU_SHORTCUT_PROPERTY = - "create.start.menu.shortcut"; -} diff --git a/nbi/stub/ext/infra/build/products/README b/nbi/stub/ext/infra/build/products/README index 892a83214..3a4ab735c 100644 --- a/nbi/stub/ext/infra/build/products/README +++ b/nbi/stub/ext/infra/build/products/README @@ -1,5 +1,4 @@ Updating Bundled Products: a) To update the JDK edit ~/jdks/download-jdks.sh and make sure to clean any caches (on CI-Systems like Travis) or delete the file links in ~/jdks/ -b) To update blender you simply need to change the download URLs AND the Base Folder (just see their properties files, it’s self explanatory) The product "helloworld" is the SDK itself (don't ask me, legacy code) diff --git a/nbi/stub/ext/infra/build/products/blender-linux-x64/build.properties b/nbi/stub/ext/infra/build/products/blender-linux-x64/build.properties deleted file mode 100644 index 85e24472e..000000000 --- a/nbi/stub/ext/infra/build/products/blender-linux-x64/build.properties +++ /dev/null @@ -1,161 +0,0 @@ -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. -# -# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved. -# -# Oracle and Java are registered trademarks of Oracle and/or its affiliates. -# Other names may be trademarks of their respective owners. -# -# The contents of this file are subject to the terms of either the GNU General Public -# License Version 2 only ("GPL") or the Common Development and Distribution -# License("CDDL") (collectively, the "License"). You may not use this file except in -# compliance with the License. You can obtain a copy of the License at -# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the -# License for the specific language governing permissions and limitations under the -# License. When distributing the software, include this License Header Notice in -# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle -# designates this particular file as subject to the "Classpath" exception as provided -# by Oracle in the GPL Version 2 section of the License file that accompanied this code. -# If applicable, add the following below the License Header, with the fields enclosed -# by brackets [] replaced by your own identifying information: -# "Portions Copyrighted [year] [name of copyright owner]" -# -# Contributor(s): -# -# The Original Software is NetBeans. The Initial Developer of the Original Software -# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All -# Rights Reserved. -# -# If you wish your version of this file to be governed by only the CDDL or only the -# GPL Version 2, indicate your decision by adding "[Contributor] elects to include -# this software in this distribution under the [CDDL or GPL Version 2] license." If -# you do not indicate a single choice of license, a recipient has the option to -# distribute your version of this file under either the CDDL, the GPL Version 2 or -# to extend the choice of license to its licensees as provided above. However, if you -# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the -# option applies only if the new code is made subject to such option by the copyright -# holder. -# - -# path to the directory where the base build scripts library and properties -# reside -common.dir=../../../../../.common - -# path to the local working directory; this directory which will be the target -# for checking out the sources and will be used for the build process -# * this path can be either absolute or relative in any unix environment, -# however, only relative paths are supported on windows, as the cygwin scp -# command does not properly handle colon in local paths -work.dir=./build - -# path to the local distributive directory; this directory will contain the -# distributive file, when (if) the build script finishes successfully -dist.dir=./dist - -# path to the products's sources within the cvs module; it should be a relative -# path from the module's root, e.g. for 'nbi/engine', where 'nbi is the module -# name, the path should be 'engine' -cvs.path=components/products/blender - -# core product properties: -# * ${product.uid} - product "family" (e.g. nb-ide) -# * ${product.version} - actual products' version; together with the uid it -# forms the unique identifier for the product) -# * ${product.platforms} - the list of platforms that are supported by this -# product (note that this property is not related to native libraries) -product.uid=blender -#normen - do not change this to the actual app version, it has to be the jME SDK version -product.version={product-version} -product.platforms=linux-x64 - -# miscellaneous product properties: -# * ${product.status} - default status that the product will have in the -# registry. it is meant to be always "not-installed", unless you want -# something really exotic -# * ${product.offset} - order of the product's node among its parent's -# children, the bigger the offset value, the further the product's node will -# be -# * ${product.expand} - whether to automatically expand the product's node in -# the components tree or not; 'true'/'false' -# * ${product.visible} - whether the product's node is visible or not (note -# that this value will be modified at nbi runtime, 'true' may become 'false' -# if the product is filtered out); 'true'/'false' -# * ${product.features} - list of features that this product belongs to; the -# list should be space-separated -product.status=not-installed -product.offset=20000 -product.expand=false -product.visible=true -product.features= - -# list of configuration logic jar files; normally the first one would be the -# distributive file of the product's netbeans project -# * ${product.logic.length} - total number of the files -# * indices should start with 1 -product.logic.length=1 -product.logic.1.path=${nbproject.dist.dir}/${nbproject.dist.file.name} - -# list of product installation data files -# * ${product.data.length} - total number of the files -# * ${product.data.N.uri} - uri at which the installation data file is located -# * ${product.data.N.zip} - whether the data file is a zip archive which needs to -# be extracted or it is a file that should be used directly; 'true'/'false' -# * indices should start with 1 -product.data.length=1 -product.data.1.zip=false -product.data.1.uri=https://download.blender.org/release/Blender2.79/blender-2.79-linux-glibc219-x86_64.tar.bz2 -product.data.tar=blender-2.79-linux-glibc219-x86_64.tar.bz2 -product.data.sub.dir=blender-2.79-linux-glibc219-x86_64 - -# modificator for the required disk space parameter; the core value will be the -# sum of unzipped unstallation data files -# * the measurement unit is one byte -product.disk.space.modificator=0 - -# product's requirements (i.e. other products that should be installed -# in order for this product to succesfully install and function) -# * ${product.requirements.length} - total number of the requirements -# * indices should start with 1 -product.requirements.length=0 -#product.requirements.1.uid= -#product.requirements.1.version-lower= -#product.requirements.1.version-upper= - -# product's conflicts (i.e. other products that prevent this product from -# functioning correctly, and thus cannot be installed together with it) -# * ${product.conflicts.length} - total number of the conflicts -# * indices should start with 1 -product.conflicts.length=0 -#product.conflicts.1.uid= -#product.conflicts.1.version-lower= -#product.conflicts.1.version-upper= - -# other products that should be installed prior to this product; these -# dependencies do not imply that the dependent product will be installed at -# all, but if both the current and the dependent product are selected for -# installation, the latter will be installed first -# * ${product.install-afters.length} - total number of the install-afters -# * indices should start with 1 -product.install-afters.length=0 -#product.install-afters.1.uid= - -# additional product's properties; these will appear in the product's -# descriptor and in the registry in the form of -# value tags. -# * ${product.properties.length} - total number of the properties -# * indices should start with 1 -# * properties are not i18n compliant -product.properties.length=3 -product.properties.1.name=installation.location -product.properties.1.value=$N{install}/{product-install-directory-name} -product.properties.2.name=installation.location.windows -product.properties.2.value=$N{install}/{product-install-directory-name-windows} -product.properties.3.name=installation.location.macosx -product.properties.3.value=$N{install}/{product-install-directory-name-macosx}.app - -# sources parameters; a search-and-replace will be run over the sources after -# check-out, replacing [token] => [value]; regular expressions are not allowed -# * ${sources.params.length} - total number of the parameters -# * indices should start with 1 -# * parameters are not i18n compliant -sources.params.length=0 diff --git a/nbi/stub/ext/infra/build/products/blender-linux-x64/build.xml b/nbi/stub/ext/infra/build/products/blender-linux-x64/build.xml deleted file mode 100644 index 154783552..000000000 --- a/nbi/stub/ext/infra/build/products/blender-linux-x64/build.xml +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - In order to 'clean', 'checkout' and 'build' the group use the - 'build-all' target. To 'clean', 'checkout', 'build' and - 'release' - use 'release-all'. - - For more details, please see the source of this build script. - - - diff --git a/nbi/stub/ext/infra/build/products/blender-macosx/build.properties b/nbi/stub/ext/infra/build/products/blender-macosx/build.properties deleted file mode 100644 index 1542ec358..000000000 --- a/nbi/stub/ext/infra/build/products/blender-macosx/build.properties +++ /dev/null @@ -1,162 +0,0 @@ -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. -# -# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved. -# -# Oracle and Java are registered trademarks of Oracle and/or its affiliates. -# Other names may be trademarks of their respective owners. -# -# The contents of this file are subject to the terms of either the GNU General Public -# License Version 2 only ("GPL") or the Common Development and Distribution -# License("CDDL") (collectively, the "License"). You may not use this file except in -# compliance with the License. You can obtain a copy of the License at -# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the -# License for the specific language governing permissions and limitations under the -# License. When distributing the software, include this License Header Notice in -# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle -# designates this particular file as subject to the "Classpath" exception as provided -# by Oracle in the GPL Version 2 section of the License file that accompanied this code. -# If applicable, add the following below the License Header, with the fields enclosed -# by brackets [] replaced by your own identifying information: -# "Portions Copyrighted [year] [name of copyright owner]" -# -# Contributor(s): -# -# The Original Software is NetBeans. The Initial Developer of the Original Software -# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All -# Rights Reserved. -# -# If you wish your version of this file to be governed by only the CDDL or only the -# GPL Version 2, indicate your decision by adding "[Contributor] elects to include -# this software in this distribution under the [CDDL or GPL Version 2] license." If -# you do not indicate a single choice of license, a recipient has the option to -# distribute your version of this file under either the CDDL, the GPL Version 2 or -# to extend the choice of license to its licensees as provided above. However, if you -# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the -# option applies only if the new code is made subject to such option by the copyright -# holder. -# - -# path to the directory where the base build scripts library and properties -# reside -common.dir=../../../../../.common - -# path to the local working directory; this directory which will be the target -# for checking out the sources and will be used for the build process -# * this path can be either absolute or relative in any unix environment, -# however, only relative paths are supported on windows, as the cygwin scp -# command does not properly handle colon in local paths -work.dir=./build - -# path to the local distributive directory; this directory will contain the -# distributive file, when (if) the build script finishes successfully -dist.dir=./dist - -# path to the products's sources within the cvs module; it should be a relative -# path from the module's root, e.g. for 'nbi/engine', where 'nbi is the module -# name, the path should be 'engine' -cvs.path=components/products/blender - -# core product properties: -# * ${product.uid} - product "family" (e.g. nb-ide) -# * ${product.version} - actual products' version; together with the uid it -# forms the unique identifier for the product) -# * ${product.platforms} - the list of platforms that are supported by this -# product (note that this property is not related to native libraries) -product.uid=blender -#normen - do not change this to the actual app version, it has to be the jME SDK version -product.version={product-version} -product.platforms=macosx - -# miscellaneous product properties: -# * ${product.status} - default status that the product will have in the -# registry. it is meant to be always "not-installed", unless you want -# something really exotic -# * ${product.offset} - order of the product's node among its parent's -# children, the bigger the offset value, the further the product's node will -# be -# * ${product.expand} - whether to automatically expand the product's node in -# the components tree or not; 'true'/'false' -# * ${product.visible} - whether the product's node is visible or not (note -# that this value will be modified at nbi runtime, 'true' may become 'false' -# if the product is filtered out); 'true'/'false' -# * ${product.features} - list of features that this product belongs to; the -# list should be space-separated -product.status=not-installed -product.offset=20000 -product.expand=false -product.visible=true -product.features= - -# list of configuration logic jar files; normally the first one would be the -# distributive file of the product's netbeans project -# * ${product.logic.length} - total number of the files -# * indices should start with 1 -product.logic.length=1 -product.logic.1.path=${nbproject.dist.dir}/${nbproject.dist.file.name} - -# list of product installation data files -# * ${product.data.length} - total number of the files -# * ${product.data.N.uri} - uri at which the installation data file is located -# * ${product.data.N.zip} - whether the data file is a zip archive which needs to -# be extracted or it is a file that should be used directly; 'true'/'false' -# * indices should start with 1 -product.data.length=1 -product.data.1.zip=false -#normen -product.data.1.uri=https://download.blender.org/release/Blender2.79/blender-2.79-macOS-10.6.tar.gz -product.data.tar=blender-2.79-macOS-10.6.tar.gz -product.data.sub.dir=blender-2.79-macOS-10.6 - -# modificator for the required disk space parameter; the core value will be the -# sum of unzipped unstallation data files -# * the measurement unit is one byte -product.disk.space.modificator=0 - -# product's requirements (i.e. other products that should be installed -# in order for this product to succesfully install and function) -# * ${product.requirements.length} - total number of the requirements -# * indices should start with 1 -product.requirements.length=0 -#product.requirements.1.uid= -#product.requirements.1.version-lower= -#product.requirements.1.version-upper= - -# product's conflicts (i.e. other products that prevent this product from -# functioning correctly, and thus cannot be installed together with it) -# * ${product.conflicts.length} - total number of the conflicts -# * indices should start with 1 -product.conflicts.length=0 -#product.conflicts.1.uid= -#product.conflicts.1.version-lower= -#product.conflicts.1.version-upper= - -# other products that should be installed prior to this product; these -# dependencies do not imply that the dependent product will be installed at -# all, but if both the current and the dependent product are selected for -# installation, the latter will be installed first -# * ${product.install-afters.length} - total number of the install-afters -# * indices should start with 1 -product.install-afters.length=0 -#product.install-afters.1.uid= - -# additional product's properties; these will appear in the product's -# descriptor and in the registry in the form of -# value tags. -# * ${product.properties.length} - total number of the properties -# * indices should start with 1 -# * properties are not i18n compliant -product.properties.length=3 -product.properties.1.name=installation.location -product.properties.1.value=$N{install}/{product-install-directory-name} -product.properties.2.name=installation.location.windows -product.properties.2.value=$N{install}/{product-install-directory-name-windows} -product.properties.3.name=installation.location.macosx -product.properties.3.value=$N{install}/{product-install-directory-name-macosx}.app - -# sources parameters; a search-and-replace will be run over the sources after -# check-out, replacing [token] => [value]; regular expressions are not allowed -# * ${sources.params.length} - total number of the parameters -# * indices should start with 1 -# * parameters are not i18n compliant -sources.params.length=0 diff --git a/nbi/stub/ext/infra/build/products/blender-macosx/build.xml b/nbi/stub/ext/infra/build/products/blender-macosx/build.xml deleted file mode 100644 index 19a01495b..000000000 --- a/nbi/stub/ext/infra/build/products/blender-macosx/build.xml +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - In order to 'clean', 'checkout' and 'build' the group use the - 'build-all' target. To 'clean', 'checkout', 'build' and - 'release' - use 'release-all'. - - For more details, please see the source of this build script. - - - diff --git a/nbi/stub/ext/infra/build/products/blender-windows-x64/build.properties b/nbi/stub/ext/infra/build/products/blender-windows-x64/build.properties deleted file mode 100644 index d4ab052d6..000000000 --- a/nbi/stub/ext/infra/build/products/blender-windows-x64/build.properties +++ /dev/null @@ -1,160 +0,0 @@ -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. -# -# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved. -# -# Oracle and Java are registered trademarks of Oracle and/or its affiliates. -# Other names may be trademarks of their respective owners. -# -# The contents of this file are subject to the terms of either the GNU General Public -# License Version 2 only ("GPL") or the Common Development and Distribution -# License("CDDL") (collectively, the "License"). You may not use this file except in -# compliance with the License. You can obtain a copy of the License at -# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the -# License for the specific language governing permissions and limitations under the -# License. When distributing the software, include this License Header Notice in -# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle -# designates this particular file as subject to the "Classpath" exception as provided -# by Oracle in the GPL Version 2 section of the License file that accompanied this code. -# If applicable, add the following below the License Header, with the fields enclosed -# by brackets [] replaced by your own identifying information: -# "Portions Copyrighted [year] [name of copyright owner]" -# -# Contributor(s): -# -# The Original Software is NetBeans. The Initial Developer of the Original Software -# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All -# Rights Reserved. -# -# If you wish your version of this file to be governed by only the CDDL or only the -# GPL Version 2, indicate your decision by adding "[Contributor] elects to include -# this software in this distribution under the [CDDL or GPL Version 2] license." If -# you do not indicate a single choice of license, a recipient has the option to -# distribute your version of this file under either the CDDL, the GPL Version 2 or -# to extend the choice of license to its licensees as provided above. However, if you -# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the -# option applies only if the new code is made subject to such option by the copyright -# holder. -# - -# path to the directory where the base build scripts library and properties -# reside -common.dir=../../../../../.common - -# path to the local working directory; this directory which will be the target -# for checking out the sources and will be used for the build process -# * this path can be either absolute or relative in any unix environment, -# however, only relative paths are supported on windows, as the cygwin scp -# command does not properly handle colon in local paths -work.dir=./build - -# path to the local distributive directory; this directory will contain the -# distributive file, when (if) the build script finishes successfully -dist.dir=./dist - -# path to the products's sources within the cvs module; it should be a relative -# path from the module's root, e.g. for 'nbi/engine', where 'nbi is the module -# name, the path should be 'engine' -cvs.path=components/products/blender - -# core product properties: -# * ${product.uid} - product "family" (e.g. nb-ide) -# * ${product.version} - actual products' version; together with the uid it -# forms the unique identifier for the product) -# * ${product.platforms} - the list of platforms that are supported by this -# product (note that this property is not related to native libraries) -product.uid=blender -#normen - do not change this to the actual app version, it has to be the jME SDK version -product.version={product-version} -product.platforms=windows-x64 - -# miscellaneous product properties: -# * ${product.status} - default status that the product will have in the -# registry. it is meant to be always "not-installed", unless you want -# something really exotic -# * ${product.offset} - order of the product's node among its parent's -# children, the bigger the offset value, the further the product's node will -# be -# * ${product.expand} - whether to automatically expand the product's node in -# the components tree or not; 'true'/'false' -# * ${product.visible} - whether the product's node is visible or not (note -# that this value will be modified at nbi runtime, 'true' may become 'false' -# if the product is filtered out); 'true'/'false' -# * ${product.features} - list of features that this product belongs to; the -# list should be space-separated -product.status=not-installed -product.offset=20000 -product.expand=false -product.visible=true -product.features= - -# list of configuration logic jar files; normally the first one would be the -# distributive file of the product's netbeans project -# * ${product.logic.length} - total number of the files -# * indices should start with 1 -product.logic.length=1 -product.logic.1.path=${nbproject.dist.dir}/${nbproject.dist.file.name} - -# list of product installation data files -# * ${product.data.length} - total number of the files -# * ${product.data.N.uri} - uri at which the installation data file is located -# * ${product.data.N.zip} - whether the data file is a zip archive which needs to -# be extracted or it is a file that should be used directly; 'true'/'false' -# * indices should start with 1 -product.data.length=1 -product.data.1.zip=true -product.data.1.uri=https://download.blender.org/release/Blender2.79/blender-2.79-windows64.zip -product.data.sub.dir=blender-2.79-windows64 - -# modificator for the required disk space parameter; the core value will be the -# sum of unzipped unstallation data files -# * the measurement unit is one byte -product.disk.space.modificator=0 - -# product's requirements (i.e. other products that should be installed -# in order for this product to succesfully install and function) -# * ${product.requirements.length} - total number of the requirements -# * indices should start with 1 -product.requirements.length=0 -#product.requirements.1.uid= -#product.requirements.1.version-lower= -#product.requirements.1.version-upper= - -# product's conflicts (i.e. other products that prevent this product from -# functioning correctly, and thus cannot be installed together with it) -# * ${product.conflicts.length} - total number of the conflicts -# * indices should start with 1 -product.conflicts.length=0 -#product.conflicts.1.uid= -#product.conflicts.1.version-lower= -#product.conflicts.1.version-upper= - -# other products that should be installed prior to this product; these -# dependencies do not imply that the dependent product will be installed at -# all, but if both the current and the dependent product are selected for -# installation, the latter will be installed first -# * ${product.install-afters.length} - total number of the install-afters -# * indices should start with 1 -product.install-afters.length=0 -#product.install-afters.1.uid= - -# additional product's properties; these will appear in the product's -# descriptor and in the registry in the form of -# value tags. -# * ${product.properties.length} - total number of the properties -# * indices should start with 1 -# * properties are not i18n compliant -product.properties.length=3 -product.properties.1.name=installation.location -product.properties.1.value=$N{install}/{product-install-directory-name} -product.properties.2.name=installation.location.windows -product.properties.2.value=$N{install}/{product-install-directory-name-windows} -product.properties.3.name=installation.location.macosx -product.properties.3.value=$N{install}/{product-install-directory-name-macosx}.app - -# sources parameters; a search-and-replace will be run over the sources after -# check-out, replacing [token] => [value]; regular expressions are not allowed -# * ${sources.params.length} - total number of the parameters -# * indices should start with 1 -# * parameters are not i18n compliant -sources.params.length=0 diff --git a/nbi/stub/ext/infra/build/products/blender-windows-x64/build.xml b/nbi/stub/ext/infra/build/products/blender-windows-x64/build.xml deleted file mode 100644 index 51179e25e..000000000 --- a/nbi/stub/ext/infra/build/products/blender-windows-x64/build.xml +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - In order to 'clean', 'checkout' and 'build' the group use the - 'build-all' target. To 'clean', 'checkout', 'build' and - 'release' - use 'release-all'. - - For more details, please see the source of this build script. - - - diff --git a/nbi/stub/ext/infra/build/products/blender-windows-x86/build.properties b/nbi/stub/ext/infra/build/products/blender-windows-x86/build.properties deleted file mode 100644 index 9bda31129..000000000 --- a/nbi/stub/ext/infra/build/products/blender-windows-x86/build.properties +++ /dev/null @@ -1,161 +0,0 @@ -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. -# -# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved. -# -# Oracle and Java are registered trademarks of Oracle and/or its affiliates. -# Other names may be trademarks of their respective owners. -# -# The contents of this file are subject to the terms of either the GNU General Public -# License Version 2 only ("GPL") or the Common Development and Distribution -# License("CDDL") (collectively, the "License"). You may not use this file except in -# compliance with the License. You can obtain a copy of the License at -# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the -# License for the specific language governing permissions and limitations under the -# License. When distributing the software, include this License Header Notice in -# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle -# designates this particular file as subject to the "Classpath" exception as provided -# by Oracle in the GPL Version 2 section of the License file that accompanied this code. -# If applicable, add the following below the License Header, with the fields enclosed -# by brackets [] replaced by your own identifying information: -# "Portions Copyrighted [year] [name of copyright owner]" -# -# Contributor(s): -# -# The Original Software is NetBeans. The Initial Developer of the Original Software -# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All -# Rights Reserved. -# -# If you wish your version of this file to be governed by only the CDDL or only the -# GPL Version 2, indicate your decision by adding "[Contributor] elects to include -# this software in this distribution under the [CDDL or GPL Version 2] license." If -# you do not indicate a single choice of license, a recipient has the option to -# distribute your version of this file under either the CDDL, the GPL Version 2 or -# to extend the choice of license to its licensees as provided above. However, if you -# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the -# option applies only if the new code is made subject to such option by the copyright -# holder. -# - -# path to the directory where the base build scripts library and properties -# reside -common.dir=../../../../../.common - -# path to the local working directory; this directory which will be the target -# for checking out the sources and will be used for the build process -# * this path can be either absolute or relative in any unix environment, -# however, only relative paths are supported on windows, as the cygwin scp -# command does not properly handle colon in local paths -work.dir=./build - -# path to the local distributive directory; this directory will contain the -# distributive file, when (if) the build script finishes successfully -dist.dir=./dist - -# path to the products's sources within the cvs module; it should be a relative -# path from the module's root, e.g. for 'nbi/engine', where 'nbi is the module -# name, the path should be 'engine' -cvs.path=components/products/blender - -# core product properties: -# * ${product.uid} - product "family" (e.g. nb-ide) -# * ${product.version} - actual products' version; together with the uid it -# forms the unique identifier for the product) -# * ${product.platforms} - the list of platforms that are supported by this -# product (note that this property is not related to native libraries) -product.uid=blender -#normen - do not change this to the actual app version, it has to be the jME SDK version -product.version={product-version} -product.platforms=windows-x86 - -# miscellaneous product properties: -# * ${product.status} - default status that the product will have in the -# registry. it is meant to be always "not-installed", unless you want -# something really exotic -# * ${product.offset} - order of the product's node among its parent's -# children, the bigger the offset value, the further the product's node will -# be -# * ${product.expand} - whether to automatically expand the product's node in -# the components tree or not; 'true'/'false' -# * ${product.visible} - whether the product's node is visible or not (note -# that this value will be modified at nbi runtime, 'true' may become 'false' -# if the product is filtered out); 'true'/'false' -# * ${product.features} - list of features that this product belongs to; the -# list should be space-separated -product.status=not-installed -product.offset=20000 -product.expand=false -product.visible=true -product.features= - -# list of configuration logic jar files; normally the first one would be the -# distributive file of the product's netbeans project -# * ${product.logic.length} - total number of the files -# * indices should start with 1 -product.logic.length=1 -product.logic.1.path=${nbproject.dist.dir}/${nbproject.dist.file.name} - -# list of product installation data files -# * ${product.data.length} - total number of the files -# * ${product.data.N.uri} - uri at which the installation data file is located -# * ${product.data.N.zip} - whether the data file is a zip archive which needs to -# be extracted or it is a file that should be used directly; 'true'/'false' -# * indices should start with 1 -product.data.length=1 -product.data.1.zip=true -#normen -product.data.1.uri=https://download.blender.org/release/Blender2.79/blender-2.79-windows32.zip -product.data.sub.dir=blender-2.79-windows32 - -# modificator for the required disk space parameter; the core value will be the -# sum of unzipped unstallation data files -# * the measurement unit is one byte -product.disk.space.modificator=0 - -# product's requirements (i.e. other products that should be installed -# in order for this product to succesfully install and function) -# * ${product.requirements.length} - total number of the requirements -# * indices should start with 1 -product.requirements.length=0 -#product.requirements.1.uid= -#product.requirements.1.version-lower= -#product.requirements.1.version-upper= - -# product's conflicts (i.e. other products that prevent this product from -# functioning correctly, and thus cannot be installed together with it) -# * ${product.conflicts.length} - total number of the conflicts -# * indices should start with 1 -product.conflicts.length=0 -#product.conflicts.1.uid= -#product.conflicts.1.version-lower= -#product.conflicts.1.version-upper= - -# other products that should be installed prior to this product; these -# dependencies do not imply that the dependent product will be installed at -# all, but if both the current and the dependent product are selected for -# installation, the latter will be installed first -# * ${product.install-afters.length} - total number of the install-afters -# * indices should start with 1 -product.install-afters.length=0 -#product.install-afters.1.uid= - -# additional product's properties; these will appear in the product's -# descriptor and in the registry in the form of -# value tags. -# * ${product.properties.length} - total number of the properties -# * indices should start with 1 -# * properties are not i18n compliant -product.properties.length=3 -product.properties.1.name=installation.location -product.properties.1.value=$N{install}/{product-install-directory-name} -product.properties.2.name=installation.location.windows -product.properties.2.value=$N{install}/{product-install-directory-name-windows} -product.properties.3.name=installation.location.macosx -product.properties.3.value=$N{install}/{product-install-directory-name-macosx}.app - -# sources parameters; a search-and-replace will be run over the sources after -# check-out, replacing [token] => [value]; regular expressions are not allowed -# * ${sources.params.length} - total number of the parameters -# * indices should start with 1 -# * parameters are not i18n compliant -sources.params.length=0 diff --git a/nbi/stub/ext/infra/build/products/blender-windows-x86/build.xml b/nbi/stub/ext/infra/build/products/blender-windows-x86/build.xml deleted file mode 100644 index 51179e25e..000000000 --- a/nbi/stub/ext/infra/build/products/blender-windows-x86/build.xml +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - In order to 'clean', 'checkout' and 'build' the group use the - 'build-all' target. To 'clean', 'checkout', 'build' and - 'release' - use 'release-all'. - - For more details, please see the source of this build script. - - - From 3d46ac8050e8908410977fa52559e9a68a8db777 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Thu, 7 Dec 2023 20:11:28 +0200 Subject: [PATCH 034/150] Get new Java 17 version --- jdks/download-jdks.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jdks/download-jdks.sh b/jdks/download-jdks.sh index 2899fa3e5..47b72a58c 100755 --- a/jdks/download-jdks.sh +++ b/jdks/download-jdks.sh @@ -11,8 +11,8 @@ set -e # Quit on Error jdk_major_version="17" -jdk_version="0.8.1" -jdk_build_version="1" +jdk_version="0.9" +jdk_build_version="9" platforms=( "x64_linux" "x86-32_windows" "x64_windows" "x64_mac" ) # DEPRECATED (not required anymore) From 7479ab9a2260ec5864d1f9343740437789f74458 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Thu, 7 Dec 2023 20:26:25 +0200 Subject: [PATCH 035/150] Netbeans 20 --- gradle.properties | 2 +- nbi/antlib/nbi-ant-tasks.jar | Bin 105616 -> 105616 bytes nbi/antlib/nbi-engine.jar | Bin 954915 -> 954915 bytes nbi/antlib/nbi-registries-management.jar | Bin 34845 -> 34845 bytes 4 files changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 25642b018..30cf5e4d7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,4 +8,4 @@ jmeVersionTag = stable #jmeVersionTagID = 0 # Path for downloading NetBeans Base -netbeansUrl = https://dlcdn.apache.org/netbeans/netbeans/19/netbeans-19-bin.zip +netbeansUrl = https://dlcdn.apache.org/netbeans/netbeans/20/netbeans-20-bin.zip diff --git a/nbi/antlib/nbi-ant-tasks.jar b/nbi/antlib/nbi-ant-tasks.jar index d24c2b5212c9e6623a5942a121062ae66b3a0a53..9fde0d62faf093e4d3d7b6f1f5eeccc5eea1e9ca 100644 GIT binary patch delta 768 zcmYk3T}V@59LCRcwl+~`tPy=_=1r{|E1|H!3^S5OVckrUlrsC03X@W4v=Lpl?QCcB zbyHd+sGEvN;wVWUPy|9>SDHw4)kPOUA9N8x?S0-?=)mFmo#+4czW-xQd8{dquRY{) zmm5ZzVO$y-O!g95kpZtE1~NE7XCb4jTC(V(b1SPGVgyI&^p5E1Zx>;^(0z&mXPM(4#T7z&6vKq7 k9L^JBIrI~L<}gS&m)D_BdEI&682T8R9Mk7nJB|zg08`i+i~s-t delta 768 zcmYk3T}V@59LCRcwl+~`tPxph=1r{|E1|H!3^N*y!n&C#6=n7%73M`rqmAgYZD%{1 zuba{uLEThD5=Tk;AR`d^y3$0Vt1h|-`k;#lYVY&DLI)1d?>zsn_x&Gh(qm0}e4SyJ zyV5W!3}ZS}oAw1=FUr!AbIGrF4V3ReDRw=Y{bh|9|2_3~qq)|Oqmmg3?4Z6uJ2hbL zqxPC1spI#}l}iXS-mgBwt+ujwrh6<;Z^viDnD~z`zktj z`kNaG3)iD6rzcn9S;qesi>kbIdrVdBygTG(^3;R4n$cP`iAL!WHuM6TisPcJ$WXpw(H#1d$eG4VWsjf5XEB%P+DTC*5Tg8LOu zlGxAC(i9F7j;C;lFr7jdp~1p2!Ziy=2%jySBy^_HO}LjvFCmaY4`Cpqo!LcbwRL&X z#%bnMWx;ER!7NVDS;*?D_8bn=xs}rmF^r>h`iAxNw~Me%=sqQZv&`|2;0hr#f+0dp k9_I=1JO&6q^SDSjSJ0tP1>Je?DEb+i7}e)lGlmQQ0JnJtJOBUy diff --git a/nbi/antlib/nbi-engine.jar b/nbi/antlib/nbi-engine.jar index ae246b5a7482ac57037d983764463c67c6af3619..343a1a6d3384e2c141f44d655d148891edcb6b4c 100644 GIT binary patch delta 12303 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 C7(x~R delta 12303 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�G}hQ6Oc2Gu#NzPeLw#C2vrNDTOK88NX43?lnN2aw~)N>W2`BFvByLf z^>m&)MwJLXE()MiMjt22+2aiUxywtRptk9Df*NVX2?qaj=J!sJv*9PH2QrJn>66rl zKBp+oey1q%{ii5}0jH^SBTfsWdNEI&rtAlvp@tY%3=W^6rV2VMqR@p?&QdB)o~5So zJx9)`o+CX6&xtDOafSRYhQAJ`{myy)*7q3g-N!uo?A^Hl+K zO6paTxptNH21?vDmI5+cuaUyC*V!mw{dk>C1yJz@8xLUf4K@-$g`1=>|0b=n-6DlU zZ&84kZi#l%jaIu&tfjY!WxhjTz#U?pE2c!>B@dV1rAU=~l&F+@Wb5`lHUKm?zt4sN zIB=gkh8+&?fa^B+=rh7^PA#USAkC9Lp~D7)^v`(vuf(8r=R zbjpdx6ju2sv|Xk@q2j!KLX~X$lziX)l%>O}D$gj01<#1$@>~R=7kTV++T=H%)AIT+ zC@X7TP?|knQhZr2sm1QUq!cE+qE+i((JGJEju&&!``bG>x=&Uys&et~- zPM5bdJ$AkoTSt%7>m3cmq3?)t@*SnF)_Y1z{(F*nQw*AYAkC{jkc{~wC9}szYM<-H zl$xJN^Za7)<`W4g{z*G{-Ji6lrN0PtD+W7?f%|6>sUFvu&muoMxc!;-ee~ay-UY?r zufM5q?f;={Z2m`NOkd^qMYN9&W_%G9)WMrCl)83b3GDic%jfy2FeT@WQepADyJ}xp z(#%Qi2S9UD(JS%4^;DqDHL8OEIGG5fn$#gcxnokXA6l4EAJ@$4KwyPfNcejTY5r;< z;Xx7!Uyz6uBNJtfOx9hkWMaIP+<0##nJzZ+`G`%}g3YQ3%{o}F&?}r> z_Ta-x zmpL0nGPSA@SXqVQQmYaeSyk*EUHExbbs~WDYE+$T)hPBx)zu7O?XRwm0Z>0$oetns zG--~mK}pzDLu^=GVVRn=s-UKt36!8(v@3IJ(W+0iC_nvclN+~c)ACkz2o%+!{a&}O z*iE|TO~s&eJzAAtPfY_Biy@iJ7+U_en9{pG*}7Ptnj}7!0^Af!Cd$Q8O_#@!jB7j< zE-Rj#e;!YIx-=lx$p&I~>yE`VBt2R~5-!t72o+?_3G0E(v#ejtQR#UN|k2h*ve*tr5kl`PR;gRbK1)ni$UcUWMW|pT4n!M z#rtEwZ&iGg+5fGI?=8NGBs@Nm+<2ZyoiHd#{SIP(oJ0-Ky`>0Hw|=ap=u90nZ>5d~ zaJ&@-SiLp%#^%;k!O%8jVon<}@wp8R#(`}~=1yBmZ*n_z92mXQj@(F2R>uS7Mlx-O zZtcm$wf5v;atG>-V;#h7(d!l8k$m3Oky^BFCu*C`ozz7jlh~QSi()Xdi@E?SF1gww6ATy09@-TG*ux1UT`l{*FoSEtBa$toFCvbeY`U6l>Mv!%Nq&gNTIU^}W zVHxTI_=vbR;)o+19bb|-^W_ZUS&Uq-1MmgRq^&IM3$G_}s^(P{xu62_^DW)h7RUJNXg#jex$;n2ynwXRPl%`K)7*jo%LPbJC< z0pR;=5A9Nf=ltoSry{4Rt$_p|+kmuOkRT0zO`~;#rW3e1of@Y14B?t?|H2H~{`F_l z_2Y+`bdC9ErWihY=XaPzhu7{|6l+9|nh&hwIn-V4XH&|b&87w(Gl%-*`5el0hg@-2 L(G~8@Rr~!vH9;vWoJFyc*1BOVeHc{P|111XEC%pl$cc`)@!14K=hWi$fQL5vn) zx|h)gOrK$N2h(CqJ|KE?Dw75?m@$F1j2+D2r z52g!SAZD*=aRT!{ws?SPn^v&dle=5P!ThJKF<{!IEf-90Y0CrCs_i9UdQN*I0O|2e ANdN!< From 2513273da23202ef0509a8cda5da85d4ae519b8d Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Thu, 7 Dec 2023 20:49:24 +0200 Subject: [PATCH 036/150] Added some module exceptions --- nbproject/project.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nbproject/project.properties b/nbproject/project.properties index 582ca1638..482bd5624 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -12,7 +12,7 @@ app.version=3.6.0-make_texture_panel_resizable-SNAPSHOT plugins.version=3.6.0 nbm.revision=2401 #command line args -run.args.extra=-J-Dsun.java2d.noddraw\=true -J--add-opens\=java.base/java.net\=ALL-UNNAMED -J--add-exports\=java.desktop/sun.awt\=ALL-UNNAMED -J--add-opens\=java.desktop/javax.swing.text\=ALL-UNNAMED -J--add-opens\=java.desktop/javax.swing\=ALL-UNNAMED -J--add-opens\=java.prefs/java.util.prefs\=ALL-UNNAMED -J--add-opens\=java.base/java.security\=ALL-UNNAMED -J--add-exports\=java.base/sun.reflect.annotation\=ALL-UNNAMED -J--add-opens\=java.desktop/javax.swing.plaf.basic\=ALL-UNNAMED +run.args.extra=-J-Dsun.java2d.noddraw\=true -J--add-opens\=java.base/java.net\=ALL-UNNAMED -J--add-exports\=java.desktop/sun.awt\=ALL-UNNAMED -J--add-opens\=java.desktop/javax.swing.text\=ALL-UNNAMED -J--add-opens\=java.desktop/javax.swing\=ALL-UNNAMED -J--add-opens\=java.prefs/java.util.prefs\=ALL-UNNAMED -J--add-opens\=java.base/java.security\=ALL-UNNAMED -J--add-exports\=java.base/sun.reflect.annotation\=ALL-UNNAMED -J--add-opens\=java.desktop/javax.swing.plaf.basic\=ALL-UNNAMED -J--add-opens\=java.desktop/java.awt\=ALL-UNNAMED -J--add-opens\=java.desktop/java.awt.event\=ALL-UNNAMED -J--add-opens\=java.desktop/sun.awt.X11\=ALL-UNNAMED -J--add-opens\=java.desktop/javax.swing.plaf.synth\=ALL-UNNAMED -J--add-opens\=java.desktop/com.sun.java.swing.plaf.gtk\=ALL-UNNAMED -J--add-opens\=java.desktop/sun.awt.shell\=ALL-UNNAMED -J--add-opens\=java.desktop/sun.awt.im\=ALL-UNNAMED -J--add-exports\=java.desktop/java.awt.peer\=ALL-UNNAMED -J--add-exports\=java.desktop/com.sun.beans.editors\=ALL-UNNAMED -J--add-exports\=java.desktop/sun.swing\=ALL-UNNAMED -J--add-exports\=java.desktop/sun.awt.im\=ALL-UNNAMED -J--add-exports\=java.desktop/com.sun.java.swing.plaf.motif\=ALL-UNNAMED -J--add-exports\=java.desktop/com.apple.eio\=ALL-UNNAMED auxiliary.org-netbeans-modules-apisupport-installer.license-file=license-jme.txt auxiliary.org-netbeans-modules-apisupport-installer.os-linux=true auxiliary.org-netbeans-modules-apisupport-installer.os-macosx=true From 436f5b4653f4a8a2eb758009b3b72cb3f034ab53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rickard=20Ed=C3=A9n?= Date: Fri, 8 Dec 2023 06:57:33 +0100 Subject: [PATCH 037/150] update minie to 7.8.1 (#549) * update minie to 7.8.1 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 3946db4d7..b823cea62 100644 --- a/build.gradle +++ b/build.gradle @@ -41,7 +41,7 @@ dependencies { corelibs dep("org.jmonkeyengine:jme3-awt-dialogs:$jmeVersion-$jmeVersionTag", true, true) corelibs dep("org.jmonkeyengine:jme3-lwjgl:$jmeVersion-$jmeVersionTag", true, true) corelibs dep("org.jmonkeyengine:jme3-effects:$jmeVersion-$jmeVersionTag", true, true) - corelibs dep("com.github.stephengold:Minie:7.7.0", false, false) // replacement for bullet-native + corelibs dep("com.github.stephengold:Minie:7.8.1", false, false) // replacement for bullet-native corelibs dep("com.github.stephengold:Heart:8.7.0", true, true) // requirement for Minie corelibs dep(fileTree("lib"), false, false) corelibs dep("org.jmonkeyengine:jme3-jogg:$jmeVersion-$jmeVersionTag", true, true) From 202425d42e2f498c84f6a9eb457c0ad203c5ff1d Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sat, 9 Dec 2023 13:44:45 +0200 Subject: [PATCH 038/150] Cleanup some old stuff --- jdks/download-jdks.sh | 51 ------------------------------------------- 1 file changed, 51 deletions(-) diff --git a/jdks/download-jdks.sh b/jdks/download-jdks.sh index 47b72a58c..ac342314d 100755 --- a/jdks/download-jdks.sh +++ b/jdks/download-jdks.sh @@ -13,57 +13,6 @@ set -e # Quit on Error jdk_major_version="17" jdk_version="0.9" jdk_build_version="9" -platforms=( "x64_linux" "x86-32_windows" "x64_windows" "x64_mac" ) - -# DEPRECATED (not required anymore) -function install_xar { - # This is needed to open Mac OS .pkg files on Linux... - echo ">> Compiling xar, just for you..." - wget -q https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/xar/xar-1.5.2.tar.gz - tar xf xar-1.5.2.tar.gz - cd xar-1.5.2 - ./configure -q > /dev/null - make -s > /dev/null - cd ../ - echo "<< OK!" -} - -# DEPRECATED (not required anymore) -function install_seven_zip { - # This is due to not having root privilegs for apt-get - if [ -x "$(command -v 7z)" ]; then - return 0 - fi - - echo "> Installing 7zip" - - if [ -x "7zip/bin/7z" ]; then - echo ">> Found cached 7zip, adjusting path" - cd 7zip/bin - PATH=`pwd`:$PATH - cd ../../ - return 0 - fi - - echo ">> Compiling 7zip from source" - mkdir -p 7zip/bin - mkdir -p 7zip/lib - cd 7zip - wget -q http://downloads.sourceforge.net/project/p7zip/p7zip/15.09/p7zip_15.09_src_all.tar.bz2 - tar xf p7zip* - rm *.bz2 - cd p7zip* - make all3 > /dev/null - ./install.sh ../bin ../lib /dev/null /dev/null - #mv -v bin/ ../ - cd ../ - rm -rf p7zip* - cd bin - PATH=`pwd`:$PATH - cd ../lib - PATH=`pwd`:$PATH - cd ../../ -} function download_jdk { echo ">>> Downloading the JDK for $1" From 12fd8504450a1adb63344186ca48e58312f367ff Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sat, 9 Dec 2023 14:12:46 +0200 Subject: [PATCH 039/150] Little bit hacky download for the latest JDK 17 --- jdks/download-jdks.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/jdks/download-jdks.sh b/jdks/download-jdks.sh index ac342314d..fab3405ca 100755 --- a/jdks/download-jdks.sh +++ b/jdks/download-jdks.sh @@ -13,6 +13,8 @@ set -e # Quit on Error jdk_major_version="17" jdk_version="0.9" jdk_build_version="9" +# JDK 17.0.9 seems to have botched up release causing download URL to vary and platform versions not on the same step +jdk_build_tmp_version="9.1" function download_jdk { echo ">>> Downloading the JDK for $1" @@ -20,6 +22,10 @@ function download_jdk { if [ -f downloads/jdk-$1$2 ]; then echo "<<< Already existing, SKIPPING." + elif [[ "$1" == *windows ]]; + then + curl -# -o downloads/jdk-$1$2 -L https://github.com/adoptium/temurin$jdk_major_version-binaries/releases/download/jdk-$jdk_major_version.$jdk_version+$jdk_build_tmp_version/OpenJDK${jdk_major_version}U-jdk_$1_hotspot_$jdk_major_version.${jdk_version}_$jdk_build_version$2 + echo "<<< OK!" else curl -# -o downloads/jdk-$1$2 -L https://github.com/adoptium/temurin$jdk_major_version-binaries/releases/download/jdk-$jdk_major_version.$jdk_version+$jdk_build_version/OpenJDK${jdk_major_version}U-jdk_$1_hotspot_$jdk_major_version.${jdk_version}_$jdk_build_version$2 echo "<<< OK!" From 6ac7a8270332aaf281e1df5014a13fcecfd777c6 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sat, 6 Jan 2024 13:11:15 +0200 Subject: [PATCH 040/150] Disable Windows x86 by default --- .github/workflows/release.yml | 2 +- build.xml | 2 +- jdks/download-jdks.sh | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 550006e4c..5170c8b60 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,7 +26,7 @@ jobs: - name: Build Installers run: ant -Dstorepass="$NBM_SIGN_PASS" -Dpack200.enabled=false set-spec-version build-installers unset-spec-version env: - BUILD_X86: true + BUILD_X86: false BUILD_X64: true BUILD_OTHER: true - name: Fix Platform Independent Build diff --git a/build.xml b/build.xml index 656267f59..1afd2bea0 100644 --- a/build.xml +++ b/build.xml @@ -220,7 +220,7 @@ - + diff --git a/jdks/download-jdks.sh b/jdks/download-jdks.sh index fab3405ca..5dcb2b3a1 100755 --- a/jdks/download-jdks.sh +++ b/jdks/download-jdks.sh @@ -263,14 +263,14 @@ else then build_mac_jdk & build_other_jdk linux x64 x64 & - build_other_jdk windows x86-32 x86 & + # Windows 32bit not by default build_other_jdk windows x86-32 x86 & build_other_jdk windows x64 x64 & else build_mac_jdk build_other_jdk linux x64 x64 - build_other_jdk windows x86-32 x86 + ## Windows 32bit not by default build_other_jdk windows x86-32 x86 build_other_jdk windows x64 x64 - #Linux 32bit not supported... build_other_jdk linux x86-32 + # Linux 32bit not supported... build_other_jdk linux x86-32 fi fi From cd27f228ff6212f8fec2c6dcfb3651d1b153fea2 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sun, 25 Feb 2024 13:04:26 +0200 Subject: [PATCH 041/150] Update to Netbeans 21 --- gradle.properties | 2 +- harness-override/app.exe | Bin 290816 -> 357888 bytes harness-override/app64.exe | Bin 299008 -> 306688 bytes harness-override/override.properties | 8 ++++---- nbi/antlib/nbi-ant-tasks.jar | Bin 105616 -> 105616 bytes nbi/antlib/nbi-engine.jar | Bin 954915 -> 954915 bytes nbi/antlib/nbi-registries-management.jar | Bin 34845 -> 34845 bytes 7 files changed, 5 insertions(+), 5 deletions(-) diff --git a/gradle.properties b/gradle.properties index 30cf5e4d7..663c531b1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,4 +8,4 @@ jmeVersionTag = stable #jmeVersionTagID = 0 # Path for downloading NetBeans Base -netbeansUrl = https://dlcdn.apache.org/netbeans/netbeans/20/netbeans-20-bin.zip +netbeansUrl = https://dlcdn.apache.org/netbeans/netbeans/21/netbeans-21-bin.zip diff --git a/harness-override/app.exe b/harness-override/app.exe index 21b82fffeda0317c19e6c60f817c524467290b04..4b3c9bfa94a4c614b671136ef9a298b5eaa2cd7b 100755 GIT binary patch delta 173950 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 delta 107512 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 diff --git a/harness-override/app64.exe b/harness-override/app64.exe index 49dab050adcbdc02f802f024bad8b004bd77c50b..1f2d33120dfb2d59ae584db9883ff078e095488c 100755 GIT binary patch delta 106069 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 L$0he$wweAP;H7ro delta 97382 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

oTq;A3yS^Pv}U?`Z1?tmy#6VJ%*|rU1sveOoyhN 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 amdnrF)9ySyxhJvex(hm-yOqs)>i+>m3~qw} diff --git a/harness-override/override.properties b/harness-override/override.properties index ec2dce273..6b1223670 100644 --- a/harness-override/override.properties +++ b/harness-override/override.properties @@ -1,6 +1,6 @@ -app.exe.hashBefore=08568a9ece42e67685df6f20a0383e70248bb0e41c1ab2ec45883bbe001b6326 -app.exe.hashAfter=c399d6eb732faadb7c2850451fd569e4854f5ae7250c66051043aca9f47b22ca -app64.exe.hashBefore=ee790adfcf8436d7b128ddb43d6f6df1a8404df7612972b2bef7022b4f27bf69 -app64.exe.hashAfter=b50451b5b264504cb61998a8363cc7fbefe6db4d7df55c2b490cc293ede3bfe2 +app.exe.hashBefore=b82006e55944fa7d2eb4c42b15096013beeda8892886165ecc345a7393267a77 +app.exe.hashAfter=c5097cdfdef1a3e3cc1b55ba7651dae454241ed6cfe08ce212f45cacd7923a24 +app64.exe.hashBefore=360204bde78249a9fd386517727b1b7c7f79d9d2e42601b9f2ed93564962b622 +app64.exe.hashAfter=1f1c28cfd34f2e74aaf658da0660f3a3718651829c3ff65b53f9c053b756ea75 pre7_app.exe.hashBefore=f4ea42a1ec2572b2a65a6d9baef0dd1f7293980c44c5d031c5b2ea5752352e49 pre7_app.exe.hashAfter=fa8ae6457dad70a65cecb623ef0f60a86c92e856705eaeb2f22e43310fa9226f \ No newline at end of file diff --git a/nbi/antlib/nbi-ant-tasks.jar b/nbi/antlib/nbi-ant-tasks.jar index 9fde0d62faf093e4d3d7b6f1f5eeccc5eea1e9ca..d99ede7252effac71e3104d4a47313e028e08740 100644 GIT binary patch delta 878 zcmYk3T}V@59LCRcoM&UKm1ZH8ORuIu<)~N*lSC_G_OXj_hDn85Wb`Rvn59v7Z9B)a zdE5*e5!pplC~+DX_6dPO2|+WkkE`e+h`uiBrtLiEj1IiKKc4^pectCie>o$`8Ogmn zSY&ewf>VLGggxcWjGc(`z?0J#e%sZ#qH}}48IkoVgm%QVC zHCpUOn2F!+>bOl1@~bHqW`j1JLaF}Njxin|KkEX2gWg|`zf7T@TY+q+VXB8O;tOA> zZHd5Nn5A|p0uEAp62TgyS^JsmAgzs>6ViI3;AFJvD0Z;AD25QJGln+O^B7u4l`;;H zF3V^qeU{Nh3MptM-BECmR5paYq*FtdmMu`dYPqCU9A=*@jt){!9DJ%aAGgjnCa{my z8wtx<9L9cXUBgzE*9EH6EWhg-jCiIxes=uZ{cJAT56#`Z+ORa zErM1(%;axpZQLRVh1HS|vrU^#p*-{6ig6yFxa0tTLuQ~7f0-h4c^z_{x@jhK4d3`e zZD#}x#aU|CBj6yl=Mikuo3)?$4$|hRF(Iut3Qk6wjbbmWD`E(cI%8-fy^0}7s+Mt# zbVEiv>8p$`Qb55$(nAHuNfpC5L^?lgYPljcs-{a?#R>K~;^-jt#=)m*i*fU8a{`B1 zy_+zd#St8()-_^gc~>N_X8PUHaEg89qZlBmqX?6hCvloIl*C!muO#|NXHsVMOUk^% QKZcX6X2;BY>u=%QKNX}t#sB~S diff --git a/nbi/antlib/nbi-engine.jar b/nbi/antlib/nbi-engine.jar index 343a1a6d3384e2c141f44d655d148891edcb6b4c..b9b137bc59f4a961da73c09a3a92932fa7e508eb 100644 GIT binary patch delta 13891 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 XH4EG8*(|I^+gx@tfQebxJ#$$ delta 13891 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 N2t%zMYTw-U1^~%vSL^@) delta 263 zcmbO`fobjpCcXe~W)?061`Y;>vWoKXiG1oDr9e8~>T~);+fYWMiIc5Zz!DebAoOQ- zFg;n0(GbE2W;BN|`WUStjI)ex5QaFDH<+E=Z From 143fae13e88d5203576af355a30cd983be816768 Mon Sep 17 00:00:00 2001 From: Toni Helenius Date: Sun, 25 Feb 2024 13:09:32 +0200 Subject: [PATCH 042/150] Update copyright year --- .../org/netbeans/core/ui/Bundle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/branding/modules/org-netbeans-core.jar/org/netbeans/core/ui/Bundle.properties b/branding/modules/org-netbeans-core.jar/org/netbeans/core/ui/Bundle.properties index cd29774b6..cb2fddad2 100644 --- a/branding/modules/org-netbeans-core.jar/org/netbeans/core/ui/Bundle.properties +++ b/branding/modules/org-netbeans-core.jar/org/netbeans/core/ui/Bundle.properties @@ -1,3 +1,3 @@ -LBL_Copyright=

Icons sets :

Copyright © 2023 jMonkeyEngine.\n
Please visit
http://jmonkeyengine.org for more information.