diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Editors/FileSystem/Commands.uexml b/Content/UniversalEditor.Content.PlatformIndependent/Editors/FileSystem/Commands.uexml
index 72ed3914..799f1240 100644
--- a/Content/UniversalEditor.Content.PlatformIndependent/Editors/FileSystem/Commands.uexml
+++ b/Content/UniversalEditor.Content.PlatformIndependent/Editors/FileSystem/Commands.uexml
@@ -49,7 +49,7 @@
-
+
@@ -149,6 +149,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Editors/Multimedia3D/Model/Icons/cube.png b/Content/UniversalEditor.Content.PlatformIndependent/Editors/Multimedia3D/Model/Icons/cube.png
new file mode 100644
index 00000000..6f430f81
Binary files /dev/null and b/Content/UniversalEditor.Content.PlatformIndependent/Editors/Multimedia3D/Model/Icons/cube.png differ
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Editors/Multimedia3D/Model/Icons/cube.svg b/Content/UniversalEditor.Content.PlatformIndependent/Editors/Multimedia3D/Model/Icons/cube.svg
new file mode 100644
index 00000000..b03a6dd1
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/Editors/Multimedia3D/Model/Icons/cube.svg
@@ -0,0 +1,105 @@
+
+
+
+
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Editors/Multimedia3D/Model/Icons/sphere.png b/Content/UniversalEditor.Content.PlatformIndependent/Editors/Multimedia3D/Model/Icons/sphere.png
new file mode 100644
index 00000000..c35485d6
Binary files /dev/null and b/Content/UniversalEditor.Content.PlatformIndependent/Editors/Multimedia3D/Model/Icons/sphere.png differ
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Editors/Multimedia3D/Model/Icons/sphere.svg b/Content/UniversalEditor.Content.PlatformIndependent/Editors/Multimedia3D/Model/Icons/sphere.svg
new file mode 100644
index 00000000..3419275a
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/Editors/Multimedia3D/Model/Icons/sphere.svg
@@ -0,0 +1,78 @@
+
+
+
+
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Extensions/Multimedia3D/Languages/English.uexml b/Content/UniversalEditor.Content.PlatformIndependent/Extensions/Multimedia3D/Languages/English.uexml
new file mode 100644
index 00000000..53ab99db
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/Extensions/Multimedia3D/Languages/English.uexml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj b/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj
index 8957004f..69474d60 100644
--- a/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj
+++ b/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj
@@ -326,6 +326,9 @@
+
+
+
@@ -363,6 +366,8 @@
+
+
@@ -373,6 +378,8 @@
+
+
diff --git a/Libraries/UniversalEditor.UserInterface/Common/Reflection.cs b/Libraries/UniversalEditor.UserInterface/Common/Reflection.cs
index ec94f3f7..59eb0354 100644
--- a/Libraries/UniversalEditor.UserInterface/Common/Reflection.cs
+++ b/Libraries/UniversalEditor.UserInterface/Common/Reflection.cs
@@ -296,6 +296,20 @@ namespace UniversalEditor.UserInterface.Common
er.Variables.Add(varr);
}
}
+
+
+ MarkupTagElement tagCommandBars = (tagEditor.Elements["CommandBars"] as MarkupTagElement);
+ if (tagCommandBars != null)
+ {
+ foreach (MarkupElement elCommandBar in tagCommandBars.Elements)
+ {
+ CommandBar cb = CommandBarLoader.LoadCommandBarXML(elCommandBar as MarkupTagElement);
+ if (cb != null)
+ {
+ er.CommandBars.Add(cb);
+ }
+ }
+ }
}
}
}
diff --git a/Libraries/UniversalEditor.UserInterface/EditorContext.cs b/Libraries/UniversalEditor.UserInterface/EditorContext.cs
index 266231c8..086b7a2c 100644
--- a/Libraries/UniversalEditor.UserInterface/EditorContext.cs
+++ b/Libraries/UniversalEditor.UserInterface/EditorContext.cs
@@ -45,6 +45,10 @@ namespace UniversalEditor.UserInterface
{
Commands.Add(reference.Commands[i]);
}
+ for (int i = 0; i < reference.CommandBars.Count; i++)
+ {
+ CommandBars.Add(reference.CommandBars[i]);
+ }
for (int i = 0; i < reference.MenuBar.Items.Count; i++)
{
MenuItems.Add(reference.MenuBar.Items[i]);
diff --git a/Libraries/UniversalEditor.UserInterface/EditorReference.cs b/Libraries/UniversalEditor.UserInterface/EditorReference.cs
index 29a31aed..fe9b2f1b 100644
--- a/Libraries/UniversalEditor.UserInterface/EditorReference.cs
+++ b/Libraries/UniversalEditor.UserInterface/EditorReference.cs
@@ -30,6 +30,7 @@ namespace UniversalEditor.UserInterface
public MarkupTagElement Configuration { get; set; } = null;
public CommandBar MenuBar { get; } = new CommandBar();
+ public CommandBar.CommandBarCollection CommandBars { get; } = new CommandBar.CommandBarCollection();
public Command.CommandCollection Commands { get; } = new Command.CommandCollection();
public PanelReference.PanelReferenceCollection Panels { get; } = new PanelReference.PanelReferenceCollection();
public EditorView.EditorViewCollection Views { get; } = new EditorView.EditorViewCollection();
diff --git a/Plugins.UserInterface/UniversalEditor.Plugins.Multimedia.UserInterface/Plugins/Transport/TransportPlugin.cs b/Plugins.UserInterface/UniversalEditor.Plugins.Multimedia.UserInterface/Plugins/Transport/TransportPlugin.cs
index 05cd0e2a..00174853 100644
--- a/Plugins.UserInterface/UniversalEditor.Plugins.Multimedia.UserInterface/Plugins/Transport/TransportPlugin.cs
+++ b/Plugins.UserInterface/UniversalEditor.Plugins.Multimedia.UserInterface/Plugins/Transport/TransportPlugin.cs
@@ -73,11 +73,11 @@ namespace UniversalEditor.Plugins.Multimedia.UserInterface.Plugins.Transport
{
base.InitializeInternal();
- Context.Commands.Add(new Command("Transport_Rewind", "_Rewind"));
- Context.Commands.Add(new Command("Transport_Back", "_Back"));
- Context.Commands.Add(new Command("Transport_Play", "_Play"));
- Context.Commands.Add(new Command("Transport_Forward", "_Forward"));
- Context.Commands.Add(new Command("Transport_End", "_End"));
+ Context.Commands.Add(new Command("Transport_Rewind", "_Rewind") { StockType = StockType.MediaPrevious });
+ Context.Commands.Add(new Command("Transport_Back", "_Back") { StockType = StockType.MediaRewind });
+ Context.Commands.Add(new Command("Transport_Play", "_Play") { StockType = StockType.MediaPlay });
+ Context.Commands.Add(new Command("Transport_Forward", "_Forward") { StockType = StockType.MediaForward });
+ Context.Commands.Add(new Command("Transport_End", "_End") { StockType = StockType.MediaNext });
Context.Commands.Add(new Command("Transport_Transport", "P_layback", new CommandItem[]
{
new CommandReferenceCommandItem("Transport_Rewind"),
diff --git a/Plugins.UserInterface/UniversalEditor.Plugins.Multimedia3D.UserInterface/Editors/Model/ModelEditor.cs b/Plugins.UserInterface/UniversalEditor.Plugins.Multimedia3D.UserInterface/Editors/Model/ModelEditor.cs
index 9500ccaf..fa78e17e 100644
--- a/Plugins.UserInterface/UniversalEditor.Plugins.Multimedia3D.UserInterface/Editors/Model/ModelEditor.cs
+++ b/Plugins.UserInterface/UniversalEditor.Plugins.Multimedia3D.UserInterface/Editors/Model/ModelEditor.cs
@@ -27,6 +27,7 @@ using MBS.Framework.Rendering;
using MBS.Framework.UserInterface;
using MBS.Framework.UserInterface.Controls;
using MBS.Framework.UserInterface.Dialogs;
+using MBS.Framework.UserInterface.Input.Mouse;
using MBS.Framework.UserInterface.Layouts;
using UniversalEditor.ObjectModels.Multimedia3D.Model;
@@ -46,18 +47,29 @@ namespace UniversalEditor.Plugins.Multimedia3D.UserInterface.Editors.Model
{
_er = base.MakeReference();
_er.SupportedObjectModels.Add(typeof(ModelObjectModel));
+
+ _er.Commands.Add(new Command("ModelEditor_Insert_Cube", "Cube") { ImageFileName = "Editors/Multimedia3D/Model/Icons/cube.png" });
+ _er.Commands.Add(new Command("ModelEditor_Insert_Sphere", "Sphere") { ImageFileName = "Editors/Multimedia3D/Model/Icons/sphere.png" });
+ _er.Commands.Add(new Command("ModelEditor_Insert_Plane", "Plane") { ImageFileName = "Editors/Multimedia3D/Model/Icons/plane.png" });
+
+ _er.CommandBars.Add(new CommandBar("ModelEditor_Insert", "Insert", new CommandItem[]
+ {
+ new CommandReferenceCommandItem("ModelEditor_Insert_Cube"),
+ new CommandReferenceCommandItem("ModelEditor_Insert_Sphere"),
+ new CommandReferenceCommandItem("ModelEditor_Insert_Plane"),
+ new SeparatorCommandItem()
+ }));
}
return _er;
}
public override void UpdateSelections()
{
- throw new NotImplementedException();
}
protected override Selection CreateSelectionInternal(object content)
{
- throw new NotImplementedException();
+ return null;
}
private OpenGLCanvas gla = null;
@@ -67,6 +79,7 @@ namespace UniversalEditor.Plugins.Multimedia3D.UserInterface.Editors.Model
this.Layout = new BoxLayout(Orientation.Vertical);
gla = new OpenGLCanvas();
+ gla.FocusOnClick = true;
gla.Realize += gla_Realize;
gla.Render += gla_Render;
this.Controls.Add(gla, new BoxLayout.Constraints(true, true));
@@ -116,7 +129,7 @@ namespace UniversalEditor.Plugins.Multimedia3D.UserInterface.Editors.Model
new VERTEX(-0.5f, -0.366f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f)
};
- VertexArray[] vaos = null;
+ VertexArray vao = null;
///
/// Computes the modelview projection
@@ -176,6 +189,16 @@ namespace UniversalEditor.Plugins.Multimedia3D.UserInterface.Editors.Model
void gla_Render(object sender, OpenGLCanvasRenderEventArgs e)
{
+ if (fatalError)
+ return;
+
+ if (e.Canvas == null)
+ {
+ MessageDialog.ShowDialog(String.Format("{0} . {1} {2} .\n\n", this._("Multimedia3D.Errors.CanvasInaccessible"), this._("Multimedia3D.Errors.RenderingUnavailable"), this._("Multimedia3D.Errors.CheckRequiredLibraries")), this._("Framework.Errors.GenericErrorTitle"), MessageDialogButtons.OK, MessageDialogIcon.Error);
+ fatalError = true;
+ return;
+ }
+
e.Canvas.Clear(Colors.Gray);
if (p == null && !fatalError)
@@ -185,7 +208,7 @@ namespace UniversalEditor.Plugins.Multimedia3D.UserInterface.Editors.Model
string vtxFileName = ((UIApplication)Application.Instance).ExpandRelativePath("~/Editors/Multimedia3D/Model/Shaders/Default/default_vtx.glsl");
if (!System.IO.File.Exists(vtxFileName))
{
- MessageDialog.ShowDialog(String.Format("Vertex shader not found . The rendering will be unavailable. Check to ensure the file exists and is readable .\n\n{0}", vtxFileName), "Error", MessageDialogButtons.OK, MessageDialogIcon.Error);
+ MessageDialog.ShowDialog(String.Format("{0} . {1} {2} .\n\n", this._("Multimedia3D.Errors.VertexShaderNotFound"), this._("Multimedia3D.Errors.RenderingUnavailable"), this._("Multimedia3D.Errors.CheckRequiredFile")), this._("Framework.Errors.GenericErrorTitle"), MessageDialogButtons.OK, MessageDialogIcon.Error);
fatalError = true;
p = null;
return;
@@ -197,7 +220,7 @@ namespace UniversalEditor.Plugins.Multimedia3D.UserInterface.Editors.Model
string frgFileName = ((UIApplication)Application.Instance).ExpandRelativePath("~/Editors/Multimedia3D/Model/Shaders/Default/default_frg.glsl");
if (!System.IO.File.Exists(vtxFileName))
{
- MessageDialog.ShowDialog(String.Format("Fragment shader not found . The rendering will be unavailable. Check to ensure the file exists and is readable .\n\n{0}", frgFileName), "Error", MessageDialogButtons.OK, MessageDialogIcon.Error);
+ MessageDialog.ShowDialog(String.Format("{0} . {1} {2} .\n\n", this._("Multimedia3D.Errors.FragmentShaderNotFound"), this._("Multimedia3D.Errors.RenderingUnavailable"), this._("Multimedia3D.Errors.CheckRequiredFile")), this._("Framework.Errors.GenericErrorTitle"), MessageDialogButtons.OK, MessageDialogIcon.Error);
fatalError = true;
p = null;
return;
@@ -220,11 +243,11 @@ namespace UniversalEditor.Plugins.Multimedia3D.UserInterface.Editors.Model
}
/* use the buffers in the VAO */
- if (vaos != null)
+ if (vao != null)
{
try
{
- vaos[0].Bind();
+ vao.Bind();
/* draw the three vertices as a triangle */
e.Canvas.DrawArrays(RenderMode.Triangles, 0, vertex_data.Length);
@@ -289,18 +312,18 @@ namespace UniversalEditor.Plugins.Multimedia3D.UserInterface.Editors.Model
vertex_data = list.ToArray();
}
- if (vaos != null)
+ if (vao != null)
{
- gla.Engine.DeleteVertexArray(vaos);
+ gla.Engine.DeleteVertexArray(vao);
}
// we need to create a VAO to store the other buffers
- vaos = gla.Engine.CreateVertexArray(1);
+ vao = gla.Engine.CreateVertexArray();
// this is the VBO that holds the vertex data
using (RenderBuffer buffer = gla.Engine.CreateBuffer())
{
- vaos[0].Bind();
+ vao.Bind();
buffer.Bind(BufferTarget.ArrayBuffer);
buffer.SetData(vertex_data, BufferDataUsage.StaticDraw);
@@ -320,7 +343,7 @@ namespace UniversalEditor.Plugins.Multimedia3D.UserInterface.Editors.Model
// reset the state; we will re-enable the VAO when needed
buffer.Unbind();
- vaos[0].Unbind(); // must be called BEFORE the buffer gets disposed
+ vao.Unbind(); // must be called BEFORE the buffer gets disposed
}
changed = false;
}