Browse Source

Added GLTF and GLB/BIN Support to the SDK

MeFisto94 8 years ago
parent
commit
73dae34042

+ 3 - 3
jme3-blender/src/com/jme3/gde/blender/Bundle.properties

@@ -1,5 +1,5 @@
 OpenIDE-Module-Display-Category=jMonkeyEngine
 OpenIDE-Module-Long-Description=\
-    This plugin adds support for Blender .blend files and XBuf's .xbuf files
-OpenIDE-Module-Name=Blender (and XBuf) Support
-OpenIDE-Module-Short-Description=Adds support for Blender .blend and XBuf's .xbuf files
+    This plugin adds support for Blender .blend files, XBuf's .xbuf files and GLTF's .gltf .glb and .bin files
+OpenIDE-Module-Name=Blender, XBuf and GLTF Support
+OpenIDE-Module-Short-Description=Adds support for Blender .blend, XBuf's .xbuf and GLTF's .gltf .glb and .bin files

+ 98 - 0
jme3-blender/src/com/jme3/gde/blender/GLTFBinaryDataObject.java

@@ -0,0 +1,98 @@
+/*
+ *  Copyright (c) 2009-2017 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.blender;
+
+import com.jme3.gde.core.assets.SpatialAssetDataObject;
+import java.io.IOException;
+import org.openide.awt.ActionID;
+import org.openide.awt.ActionReference;
+import org.openide.awt.ActionReferences;
+import org.openide.filesystems.FileObject;
+import org.openide.filesystems.MIMEResolver;
+import org.openide.loaders.DataObject;
+import org.openide.loaders.DataObjectExistsException;
+import org.openide.loaders.MultiFileLoader;
+import org.openide.util.NbBundle.Messages;
+import com.jme3.asset.ModelKey;
+
+@Messages({
+    "LBL_GLB_LOADER=GLTF Binary Files"
+})
[email protected](
+    displayName="#LBL_GLB_LOADER",
+    mimeType="model/gltf.binary",
+    extension={ "glb", "bin"}
+)
[email protected](
+    mimeType = "model/gltf.binary", 
+    //iconBase = "com/jme3/gde/blender/glTF_100px_June16.png",
+    iconBase = "com/jme3/gde/blender/blender.png",
+    displayName="#LBL_GLB_LOADER",
+    position=300
+)
+@ActionReferences(value = {
+    @ActionReference(id =
+    @ActionID(category = "jMonkeyPlatform", id = "com.jme3.gde.core.assets.actions.ConvertModel"), path = "Loaders/model/gltf.binary/Actions", position = 10),
+    @ActionReference(id =
+    @ActionID(category = "jMonkeyPlatform", id = "com.jme3.gde.core.assets.actions.OpenModel"), path = "Loaders/model/gltf.binary/Actions", position = 20),
+    @ActionReference(id =
+    @ActionID(category = "Edit", id = "org.openide.actions.CutAction"), path = "Loaders/model/gltf.binary/Actions", position = 200, separatorBefore = 100),
+    @ActionReference(id =
+    @ActionID(category = "Edit", id = "org.openide.actions.CopyAction"), path = "Loaders/model/gltf.binary/Actions", position = 300, separatorAfter = 400),
+    @ActionReference(id =
+    @ActionID(category = "Edit", id = "org.openide.actions.DeleteAction"), path = "Loaders/model/gltf.binary/Actions", position = 500),
+    @ActionReference(id =
+    @ActionID(category = "System", id = "org.openide.actions.RenameAction"), path = "Loaders/model/gltf.binary/Actions", position = 600, separatorAfter = 700),
+    @ActionReference(id =
+    @ActionID(category = "System", id = "org.openide.actions.SaveAsTemplateAction"), path = "Loaders/model/gltf.binary/Actions", position = 800, separatorAfter = 900),
+    @ActionReference(id =
+    @ActionID(category = "System", id = "org.openide.actions.FileSystemAction"), path = "Loaders/model/gltf.binary/Actions", position = 1000, separatorAfter = 1100),
+    @ActionReference(id =
+    @ActionID(category = "System", id = "org.openide.actions.ToolsAction"), path = "Loaders/model/gltf.binary/Actions", position = 1200),
+    @ActionReference(id =
+    @ActionID(category = "System", id = "org.openide.actions.PropertiesAction"), path = "Loaders/model/gltf.binary/Actions", position = 1300)
+})
+public class GLTFBinaryDataObject extends SpatialAssetDataObject {
+
+    public GLTFBinaryDataObject(FileObject pf, MultiFileLoader loader) throws DataObjectExistsException, IOException {
+        super(pf, loader);
+    }
+
+    @Override
+    public ModelKey getAssetKey() {
+        if (assetKey instanceof ModelKey) {
+            return (ModelKey)assetKey; // since there is no GLTFKey
+        } else {
+            return new ModelKey(super.getAssetKey().getName());
+        }
+    }
+}

+ 99 - 0
jme3-blender/src/com/jme3/gde/blender/GLTFDataObject.java

@@ -0,0 +1,99 @@
+/*
+ *  Copyright (c) 2009-2017 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.blender;
+
+import com.jme3.gde.core.assets.SpatialAssetDataObject;
+import java.io.IOException;
+import org.openide.awt.ActionID;
+import org.openide.awt.ActionReference;
+import org.openide.awt.ActionReferences;
+import org.openide.filesystems.FileObject;
+import org.openide.filesystems.MIMEResolver;
+import org.openide.loaders.DataObject;
+import org.openide.loaders.DataObjectExistsException;
+import org.openide.loaders.MultiFileLoader;
+import org.openide.util.NbBundle.Messages;
+import com.jme3.asset.ModelKey;
+
+@Messages({
+    "LBL_GLTF_LOADER=GLTF Files"
+})
[email protected](
+    displayName="#LBL_GLTF_LOADER",
+    mimeType="model/gltf+json",
+    //mimeType="model/gltf.binary",
+    extension={ "gltf"}
+)
[email protected](
+    mimeType = "model/gltf+json", 
+    iconBase = "com/jme3/gde/blender/blender.png",
+    //iconBase = "com/jme3/gde/blender/glTF_100px_June16.png",
+    displayName="#LBL_GLTF_LOADER",
+    position=300
+)
+@ActionReferences(value = {
+    @ActionReference(id =
+    @ActionID(category = "jMonkeyPlatform", id = "com.jme3.gde.core.assets.actions.ConvertModel"), path = "Loaders/model/gltf+json/Actions", position = 10),
+    @ActionReference(id =
+    @ActionID(category = "jMonkeyPlatform", id = "com.jme3.gde.core.assets.actions.OpenModel"), path = "Loaders/model/gltf+json/Actions", position = 20),
+    @ActionReference(id =
+    @ActionID(category = "Edit", id = "org.openide.actions.CutAction"), path = "Loaders/model/gltf+json/Actions", position = 200, separatorBefore = 100),
+    @ActionReference(id =
+    @ActionID(category = "Edit", id = "org.openide.actions.CopyAction"), path = "Loaders/model/gltf+json/Actions", position = 300, separatorAfter = 400),
+    @ActionReference(id =
+    @ActionID(category = "Edit", id = "org.openide.actions.DeleteAction"), path = "Loaders/model/gltf+json/Actions", position = 500),
+    @ActionReference(id =
+    @ActionID(category = "System", id = "org.openide.actions.RenameAction"), path = "Loaders/model/gltf+json/Actions", position = 600, separatorAfter = 700),
+    @ActionReference(id =
+    @ActionID(category = "System", id = "org.openide.actions.SaveAsTemplateAction"), path = "Loaders/model/gltf+json/Actions", position = 800, separatorAfter = 900),
+    @ActionReference(id =
+    @ActionID(category = "System", id = "org.openide.actions.FileSystemAction"), path = "Loaders/model/gltf+json/Actions", position = 1000, separatorAfter = 1100),
+    @ActionReference(id =
+    @ActionID(category = "System", id = "org.openide.actions.ToolsAction"), path = "Loaders/model/gltf+json/Actions", position = 1200),
+    @ActionReference(id =
+    @ActionID(category = "System", id = "org.openide.actions.PropertiesAction"), path = "Loaders/model/gltf+json/Actions", position = 1300)
+})
+public class GLTFDataObject extends SpatialAssetDataObject {
+
+    public GLTFDataObject(FileObject pf, MultiFileLoader loader) throws DataObjectExistsException, IOException {
+        super(pf, loader);
+    }
+
+    @Override
+    public ModelKey getAssetKey() {
+        if (assetKey != null) {
+            return (ModelKey)assetKey; // since there is no GLTFKey
+        } else {
+            return super.getAssetKey();
+        }
+    }
+}