GithubHelp home page GithubHelp logo

setoolbox's Introduction

Space Engineers Toolbox

A toolbox utility for modifying and importing content in the Space Engineers Game.

The primary focus of the Toolbox is to allow importing of images and 3D models, and editing of save game content.

Created by Mid-Space productions. Est. 1993

! Currently dead as of 2019-08-23 due to changes in the major game update containing Economy.

The Space Engineers Game is Copyright Keen Software House. For more details on the game, please visit the following links.


Installation

Before asking any question please read the documentation (FAQ) first as your question may have already been answered.

Issues

  • Currently documented issues are listed here.
  • Please submit any new issues here here.

Contributing

If you are interested in fixing issues and contributing directly to the code base, please see our document on working with and developing SEToolbox.

License

This application contains code expressly licenced to it, and should not be used in any other application without the permission of Keen Software House.

The Space Engineers logo was sourced from spaceengineerswiki.com under creative commons.

-/- / SEToolbox was started in 2013 soon after Space Engineers was released for Early Access, and has been worked on in my free time. There is no requirement for any individual to donate.


No longer maintained or updated

I midspace have stopped working on Space Engineers related stuff. There is a lengthy post here on the Keen forums about this decision. I'm open to other developers taking over, or at least contributing further to SEToolbox.

setoolbox's People

Contributors

chicken-nugget avatar dependabot[bot] avatar dodexahedron avatar kleest avatar midspace avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

setoolbox's Issues

Group move enhancement

  • Ships will need bounding checks to move them without overlap.
  • "randomize coordinates of selected items"
  • Arrange items across a region of space, in a specified shape (line abreast, ring, sphere, line). the orientation of the shape may have to be in respect to the player.

SE 1.117 breaking changes

TBA.

Just a heads up. I do sometimes have access to information regarding pending SE releases.
I cannot say more than that for legal reasons.

When the time comes I'll add more detail here or check in fixes. Whichever is most convenient to me at the time.
I say this, because strictly I can only say more when it's publicly available. And the "publicly available" is usually when weekly the SE updates goes out. This so happens to occur when I am asleep, because it is anywhere between 2AM and 8AM local time when it happens.

Memory Management/Runaway

So loading in large models I've experienced quite a bit of memory runaway till the system runs out of memory and the client crashes.

Is there a way to do some kind of management to prevent 100% memory usage and still load in large models?

More ship details

New more details on Ships in the detail screen.
Energy use.
Energy Production.
Thrusters. (Orientations, Forward, back etc.)
Gyros.
Cargo capacity.

Estimated Fuel time with forward thrust.
Need to determine which way is forward first! This may be indicated by the cockpit, and averaging out the orientations if there are more than one.
Or, determining which way the most thrust is pointed. This is generally backwards.

Exception - Cannot access a closed Stream. While performing drag-drop of asteroids from world to world.

I realise you have a lot on your plate and may not get to this issue soon, but thought I should inform you anyway.

Log Name:      Application
Source:        SEToolbox.exe
Date:          15/01/2016 2:54:04 AM
Event ID:      0
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      Games-PC
Description:
2016-01-15 02:54:04,907 [1] FATAL SEToolbox.Support.DiagnosticsLogging [(null)] - Unhandled Exception
Application: C:\Program Files (x86)\MidSpace\SEToolbox\SEToolbox.exe
CommandLine: "C:\Program Files (x86)\MidSpace\SEToolbox\SEToolbox.exe" 
CurrentDirectory: C:\Program Files (x86)\MidSpace\SEToolbox
SEBinPath: D:\SteamLibrary\SteamApps\common\SpaceEngineers\Bin64
SEBinVersion: 1.116.11
ProcessorCount: 8
OSVersion: Microsoft Windows NT 6.2.9200.0
Version: 4.0.30319.42000
Is64BitOperatingSystem: True
IntPtr.Size: 8
IsAdmin: False
CurrentUICulture: en-US
CurrentCulture: en-AU

Files:
2015-03-07T21:23:16.0000000+10:00   498,176 2014.2.17.1 HelixToolkit.Wpf.dll
2015-03-07T21:23:16.0000000+10:00   200,704 0.86.0.518  ICSharpCode.SharpZipLib.dll
2015-03-07T21:23:16.0000000+10:00   301,056 1.2.13.0    log4net.dll
2016-01-09T01:55:53.3983972+10:00   15,288  1.0.0.0 MedievalEngineers.ObjectBuilders.dll
2016-01-09T01:55:53.3983972+10:00   1,310,136   1.0.0.0 MedievalEngineers.ObjectBuilders.XmlSerializers.dll
2016-01-09T01:55:44.6252820+10:00   107,448 1.0.0.0 Sandbox.Common.dll
2016-01-08T20:06:10.0000000+10:00   1,175,040   01.116.008.1    SEToolbox.exe
2015-03-07T21:23:16.0000000+10:00   747     SEToolbox.exe.config
2016-01-08T18:14:48.0000000+10:00   27,648  1.0.0.0 SEToolbox.ImageLibrary.dll
2016-01-08T20:06:06.0000000+10:00   7,680   1.0.0.0 SEToolbox.ImageShaders.dll
2016-01-08T20:06:10.0000000+10:00   2,272,768       SEToolbox.pdb
2016-01-08T18:14:48.0000000+10:00   51,712  1.0.0.0 SEToolboxUpdate.exe
2016-01-09T01:55:47.2856270+10:00   32,696  1.0.0.0 SpaceEngineers.ObjectBuilders.dll
2016-01-09T01:55:47.8786952+10:00   13,412,280  1.0.0.0 SpaceEngineers.ObjectBuilders.XmlSerializers.dll
2015-03-07T21:23:14.0000000+10:00   39,936  2.0.20525.0 System.Windows.Interactivity.dll
2016-01-09T01:56:01.0383680+10:00   608,184 1.0.0.0 VRage.dll
2016-01-09T01:56:00.0562439+10:00   395,704 1.0.0.0 VRage.Game.dll
2016-01-09T01:55:48.5682829+10:00   3,068,856   1.0.0.0 VRage.Game.XmlSerializers.dll
2016-01-09T01:56:01.1863869+10:00   624,056 1.0.0.0 VRage.Library.dll
2016-01-09T01:55:14.5609612+10:00   465,336 1.0.0.0 VRage.Math.dll
2015-03-07T21:23:16.0000000+10:00   64,512  2.2.0   WPFLocalizeExtension.dll
2015-03-07T21:23:18.0000000+10:00   26,624  1.1.6.3 XAMLMarkupExtensions.dll

System.ObjectDisposedException: Cannot access a closed Stream.
   at System.IO.__Error.StreamIsClosed()
   at System.IO.MemoryStream.set_Position(Int64 value)
   at SEToolbox.Interop.SpaceEngineersApi.Deserialize[T](String xml) in d:\Development\SpaceEngineers\Codeplex\Main\SEToolbox\SEToolbox\Interop\SpaceEngineersApi.cs:line 91
   at SEToolbox.Models.StructureVoxelModel.OnDeserializedMethod(StreamingContext context) in d:\Development\SpaceEngineers\Codeplex\Main\SEToolbox\SEToolbox\Models\StructureVoxelModel.cs:line 278
   at System.Runtime.Serialization.SerializationEvents.InvokeOnDeserialized(Object obj, StreamingContext context)
   at System.Runtime.Serialization.ObjectManager.RaiseOnDeserializedEvent(Object obj)
   at System.Runtime.Serialization.ObjectManager.RegisterObject(Object obj, Int64 objectID, SerializationInfo info, Int64 idOfContainingObj, MemberInfo member, Int32[] arrayIndex)
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.RegisterObject(Object obj, ParseRecord pr, ParseRecord objectPr, Boolean bIsString)
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ParseObjectEnd(ParseRecord pr)
   at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   at System.Windows.DataObject.OleConverter.ReadObjectFromHandle(IntPtr handle)
   at System.Windows.DataObject.OleConverter.GetDataFromHGLOBAL(String format, IntPtr hglobal)
   at System.Windows.DataObject.OleConverter.GetDataFromOleHGLOBAL(String format, DVASPECT aspect, Int32 index)
   at System.Windows.DataObject.OleConverter.GetDataFromBoundOleDataObject(String format, DVASPECT aspect, Int32 index)
   at System.Windows.DataObject.OleConverter.GetData(String format, Boolean autoConvert, DVASPECT aspect, Int32 index)
   at System.Windows.DataObject.OleConverter.GetData(String format, Boolean autoConvert)
   at SEToolbox.Services.ListBoxDropBehavior.AssociatedObject_Drop(Object sender, DragEventArgs e) in d:\Development\SpaceEngineers\Codeplex\Main\SEToolbox\SEToolbox\Services\ListBoxDropBehavior.cs:line 98
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   at System.Windows.OleDropTarget.RaiseDragEvent(RoutedEvent dragEvent, Int32 dragDropKeyStates, Int32& effects, DependencyObject target, Point targetPoint)
   at System.Windows.OleDropTarget.MS.Win32.UnsafeNativeMethods.IOleDropTarget.OleDrop(Object data, Int32 dragDropKeyStates, Int64 point, Int32& effects)
   at MS.Win32.UnsafeNativeMethods.DoDragDrop(IDataObject dataObject, IOleDropSource dropSource, Int32 allowedEffects, Int32[] finalEffect)
   at System.Windows.OleServicesContext.OleDoDragDrop(IDataObject dataObject, IOleDropSource dropSource, Int32 allowedEffects, Int32[] finalEffect)
   at System.Windows.DragDrop.OleDoDragDrop(DependencyObject dragSource, DataObject dataObject, DragDropEffects allowedEffects)
   at System.Windows.DragDrop.DoDragDrop(DependencyObject dragSource, Object data, DragDropEffects allowedEffects)
   at SEToolbox.Services.ListBoxItemDragBehavior.AssociatedObject_MouseLeave(Object sender, MouseEventArgs e) in d:\Development\SpaceEngineers\Codeplex\Main\SEToolbox\SEToolbox\Services\ListBoxItemDragBehavior.cs:line 154
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   at System.Windows.ReverseInheritProperty.FirePropertyChangeInAncestry(DependencyObject element, Boolean oldValue, DeferredElementTreeState treeState, Action`2 originChangedAction)
   at System.Windows.ReverseInheritProperty.FirePropertyChangeInAncestry(DependencyObject element, Boolean oldValue, DeferredElementTreeState treeState, Action`2 originChangedAction)
   at System.Windows.ReverseInheritProperty.OnOriginValueChanged(DependencyObject oldOrigin, DependencyObject newOrigin, IList`1 otherOrigins, DeferredElementTreeState& oldTreeState, Action`2 originChangedAction)
   at System.Windows.Input.MouseDevice.ChangeMouseOver(IInputElement mouseOver, Int32 timestamp)
   at System.Windows.Input.MouseDevice.PreNotifyInput(Object sender, NotifyInputEventArgs e)
   at System.Windows.Input.InputManager.ProcessStagingArea()
   at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
   at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
   at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="SEToolbox.exe" />
    <EventID Qualifiers="0">0</EventID>
    <Level>2</Level>
    <Task>0</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2016-01-14T16:54:04.945905200Z" />
    <EventRecordID>6128</EventRecordID>
    <Channel>Application</Channel>
    <Computer>Games-PC</Computer>
    <Security />
  </System>
  <EventData>
    <Data>2016-01-15 02:54:04,907 [1] FATAL SEToolbox.Support.DiagnosticsLogging [(null)] - Unhandled Exception
Application: C:\Program Files (x86)\MidSpace\SEToolbox\SEToolbox.exe
CommandLine: "C:\Program Files (x86)\MidSpace\SEToolbox\SEToolbox.exe" 
CurrentDirectory: C:\Program Files (x86)\MidSpace\SEToolbox
SEBinPath: D:\SteamLibrary\SteamApps\common\SpaceEngineers\Bin64
SEBinVersion: 1.116.11
ProcessorCount: 8
OSVersion: Microsoft Windows NT 6.2.9200.0
Version: 4.0.30319.42000
Is64BitOperatingSystem: True
IntPtr.Size: 8
IsAdmin: False
CurrentUICulture: en-US
CurrentCulture: en-AU

Files:
2015-03-07T21:23:16.0000000+10:00   498,176 2014.2.17.1 HelixToolkit.Wpf.dll
2015-03-07T21:23:16.0000000+10:00   200,704 0.86.0.518  ICSharpCode.SharpZipLib.dll
2015-03-07T21:23:16.0000000+10:00   301,056 1.2.13.0    log4net.dll
2016-01-09T01:55:53.3983972+10:00   15,288  1.0.0.0 MedievalEngineers.ObjectBuilders.dll
2016-01-09T01:55:53.3983972+10:00   1,310,136   1.0.0.0 MedievalEngineers.ObjectBuilders.XmlSerializers.dll
2016-01-09T01:55:44.6252820+10:00   107,448 1.0.0.0 Sandbox.Common.dll
2016-01-08T20:06:10.0000000+10:00   1,175,040   01.116.008.1    SEToolbox.exe
2015-03-07T21:23:16.0000000+10:00   747     SEToolbox.exe.config
2016-01-08T18:14:48.0000000+10:00   27,648  1.0.0.0 SEToolbox.ImageLibrary.dll
2016-01-08T20:06:06.0000000+10:00   7,680   1.0.0.0 SEToolbox.ImageShaders.dll
2016-01-08T20:06:10.0000000+10:00   2,272,768       SEToolbox.pdb
2016-01-08T18:14:48.0000000+10:00   51,712  1.0.0.0 SEToolboxUpdate.exe
2016-01-09T01:55:47.2856270+10:00   32,696  1.0.0.0 SpaceEngineers.ObjectBuilders.dll
2016-01-09T01:55:47.8786952+10:00   13,412,280  1.0.0.0 SpaceEngineers.ObjectBuilders.XmlSerializers.dll
2015-03-07T21:23:14.0000000+10:00   39,936  2.0.20525.0 System.Windows.Interactivity.dll
2016-01-09T01:56:01.0383680+10:00   608,184 1.0.0.0 VRage.dll
2016-01-09T01:56:00.0562439+10:00   395,704 1.0.0.0 VRage.Game.dll
2016-01-09T01:55:48.5682829+10:00   3,068,856   1.0.0.0 VRage.Game.XmlSerializers.dll
2016-01-09T01:56:01.1863869+10:00   624,056 1.0.0.0 VRage.Library.dll
2016-01-09T01:55:14.5609612+10:00   465,336 1.0.0.0 VRage.Math.dll
2015-03-07T21:23:16.0000000+10:00   64,512  2.2.0   WPFLocalizeExtension.dll
2015-03-07T21:23:18.0000000+10:00   26,624  1.1.6.3 XAMLMarkupExtensions.dll

System.ObjectDisposedException: Cannot access a closed Stream.
   at System.IO.__Error.StreamIsClosed()
   at System.IO.MemoryStream.set_Position(Int64 value)
   at SEToolbox.Interop.SpaceEngineersApi.Deserialize[T](String xml) in d:\Development\SpaceEngineers\Codeplex\Main\SEToolbox\SEToolbox\Interop\SpaceEngineersApi.cs:line 91
   at SEToolbox.Models.StructureVoxelModel.OnDeserializedMethod(StreamingContext context) in d:\Development\SpaceEngineers\Codeplex\Main\SEToolbox\SEToolbox\Models\StructureVoxelModel.cs:line 278
   at System.Runtime.Serialization.SerializationEvents.InvokeOnDeserialized(Object obj, StreamingContext context)
   at System.Runtime.Serialization.ObjectManager.RaiseOnDeserializedEvent(Object obj)
   at System.Runtime.Serialization.ObjectManager.RegisterObject(Object obj, Int64 objectID, SerializationInfo info, Int64 idOfContainingObj, MemberInfo member, Int32[] arrayIndex)
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.RegisterObject(Object obj, ParseRecord pr, ParseRecord objectPr, Boolean bIsString)
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ParseObjectEnd(ParseRecord pr)
   at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   at System.Windows.DataObject.OleConverter.ReadObjectFromHandle(IntPtr handle)
   at System.Windows.DataObject.OleConverter.GetDataFromHGLOBAL(String format, IntPtr hglobal)
   at System.Windows.DataObject.OleConverter.GetDataFromOleHGLOBAL(String format, DVASPECT aspect, Int32 index)
   at System.Windows.DataObject.OleConverter.GetDataFromBoundOleDataObject(String format, DVASPECT aspect, Int32 index)
   at System.Windows.DataObject.OleConverter.GetData(String format, Boolean autoConvert, DVASPECT aspect, Int32 index)
   at System.Windows.DataObject.OleConverter.GetData(String format, Boolean autoConvert)
   at SEToolbox.Services.ListBoxDropBehavior.AssociatedObject_Drop(Object sender, DragEventArgs e) in d:\Development\SpaceEngineers\Codeplex\Main\SEToolbox\SEToolbox\Services\ListBoxDropBehavior.cs:line 98
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   at System.Windows.OleDropTarget.RaiseDragEvent(RoutedEvent dragEvent, Int32 dragDropKeyStates, Int32&amp; effects, DependencyObject target, Point targetPoint)
   at System.Windows.OleDropTarget.MS.Win32.UnsafeNativeMethods.IOleDropTarget.OleDrop(Object data, Int32 dragDropKeyStates, Int64 point, Int32&amp; effects)
   at MS.Win32.UnsafeNativeMethods.DoDragDrop(IDataObject dataObject, IOleDropSource dropSource, Int32 allowedEffects, Int32[] finalEffect)
   at System.Windows.OleServicesContext.OleDoDragDrop(IDataObject dataObject, IOleDropSource dropSource, Int32 allowedEffects, Int32[] finalEffect)
   at System.Windows.DragDrop.OleDoDragDrop(DependencyObject dragSource, DataObject dataObject, DragDropEffects allowedEffects)
   at System.Windows.DragDrop.DoDragDrop(DependencyObject dragSource, Object data, DragDropEffects allowedEffects)
   at SEToolbox.Services.ListBoxItemDragBehavior.AssociatedObject_MouseLeave(Object sender, MouseEventArgs e) in d:\Development\SpaceEngineers\Codeplex\Main\SEToolbox\SEToolbox\Services\ListBoxItemDragBehavior.cs:line 154
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   at System.Windows.ReverseInheritProperty.FirePropertyChangeInAncestry(DependencyObject element, Boolean oldValue, DeferredElementTreeState treeState, Action`2 originChangedAction)
   at System.Windows.ReverseInheritProperty.FirePropertyChangeInAncestry(DependencyObject element, Boolean oldValue, DeferredElementTreeState treeState, Action`2 originChangedAction)
   at System.Windows.ReverseInheritProperty.OnOriginValueChanged(DependencyObject oldOrigin, DependencyObject newOrigin, IList`1 otherOrigins, DeferredElementTreeState&amp; oldTreeState, Action`2 originChangedAction)
   at System.Windows.Input.MouseDevice.ChangeMouseOver(IInputElement mouseOver, Int32 timestamp)
   at System.Windows.Input.MouseDevice.PreNotifyInput(Object sender, NotifyInputEventArgs e)
   at System.Windows.Input.InputManager.ProcessStagingArea()
   at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
   at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
   at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean&amp; handled)
   at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean&amp; handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean&amp; handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
</Data>
  </EventData>
</Event>

Corrupt save world file check

SEToolbox needs to check for corrupt save worlds during loading, and provide a more friendly message instead of crashing with an Unhanded Exception message.

It would be useful to provide more information on the type of corruption.
which file. "LastLoaded.sbl", "Sandbox.sbc", "SANDBOX_0_0_0_.sbs.
Type of corruption. Null 0x00 bytes (either at start or end of xml file), missing xml.

Sample provided by user.
https://dl.dropboxusercontent.com/u/26211652/Corrupt_Survival.zip
All the asteroid .vox files are filled with nulls.
The Sandbox.sbc is filled with nulls.
The SANDBOX_0_0_0_.sbs is half filled with nulls.

Sort/Delete Players, Factions, Objects by Owner

A method to sort through and delete the players and factions in a world would be very helpful for managing multiplayer worlds. Additionally a way of sorting all objects in the Craft/Objects screen by owner would also be very helpful.

Thank you for considering it.

x86 and x64 checks

Need to add further checks when running SEToolbox to check if it's running x86 or x64, and consider the SE dependencies of the other instruction to be invalid when the user is prompted to pick the SE base path.

This may have to be a cheap check of the directory name, otherwise a direct interrogation of the assemblies themselves.

I think most bug reports I get are of the "BadImage" variety, which are only because the user selected the wrong path. If we make this a little better, there should be fewer reports.

1.123.4.1 Error

After install with MSi or ZIP when it goes to update to the latest SE files the following message is displayed, I wasn't able to locate the log referenced.

An error has been detected in the application that has caused the application to shut down

The type initializer for 'SEToolbox.Interop.SpaceEngineerCore' threw an exception

Please see the Application Event Log for more details.
Apologies for any inconvenience

Select associated/connected grids

A context menu and menu button to additionally select connected grids in addition to those already selected.
Selection should be restricted to piston and rotor.

Drag-drop of "Unknown" MyObjectBuilder_ReplicableEntity and Planet causes crash

Trying to Drag the "Unknown" MyObjectBuilder_ReplicableEntity from one SEToolbox to another causes crash in the source SEToolbox.

2016-01-15 16:54:14,762 [1] FATAL SEToolbox.Support.DiagnosticsLogging [(null)] - Unhandled Exception
Application: C:\Program Files (x86)\MidSpace\SEToolbox\SEToolbox.exe
CommandLine: "C:\Program Files (x86)\MidSpace\SEToolbox\SEToolbox.exe" 
CurrentDirectory: C:\Program Files (x86)\MidSpace\SEToolbox
SEBinPath: C:\Program Files (x86)\Steam\steamapps\common\SpaceEngineers\Bin64
SEBinVersion: 1.117.7
ProcessorCount: 8
OSVersion: Microsoft Windows NT 6.2.9200.0
Version: 4.0.30319.42000
Is64BitOperatingSystem: True
IntPtr.Size: 8
IsAdmin: False
CurrentUICulture: en-US
CurrentCulture: en-AU

Files:
2016-01-11T18:42:58.0000000+11:00   498,176 2014.2.17.1 HelixToolkit.Wpf.dll
2016-01-11T18:42:58.0000000+11:00   200,704 0.86.0.518  ICSharpCode.SharpZipLib.dll
2016-01-11T18:42:58.0000000+11:00   301,056 1.2.13.0    log4net.dll
2016-01-15T08:34:26.2416899+11:00   18,872  1.0.0.0 MedievalEngineers.ObjectBuilders.dll
2016-01-15T08:35:07.9814285+11:00   901,048 1.0.0.0 MedievalEngineers.ObjectBuilders.XmlSerializers.dll
2016-01-15T08:35:18.4863631+11:00   98,744  1.0.0.0 Sandbox.Common.dll
2016-01-14T22:15:02.0000000+11:00   1,173,504   01.117.002.1    SEToolbox.exe
2016-01-12T17:41:58.0000000+11:00   747     SEToolbox.exe.config
2016-01-12T22:41:16.0000000+11:00   27,648  1.0.0.0 SEToolbox.ImageLibrary.dll
2016-01-14T22:14:56.0000000+11:00   7,680   1.0.0.0 SEToolbox.ImageShaders.dll
2016-01-14T22:15:02.0000000+11:00   2,260,480       SEToolbox.pdb
2016-01-12T22:41:16.0000000+11:00   51,712  1.0.0.0 SEToolboxUpdate.exe
2016-01-15T08:35:09.5136955+11:00   49,080  1.0.0.0 SpaceEngineers.ObjectBuilders.dll
2016-01-15T08:35:20.1473553+11:00   10,273,720  1.0.0.0 SpaceEngineers.ObjectBuilders.XmlSerializers.dll
2016-01-11T18:42:58.0000000+11:00   39,936  2.0.20525.0 System.Windows.Interactivity.dll
2016-01-15T08:34:31.8562782+11:00   608,696 1.0.0.0 VRage.dll
2016-01-15T08:34:25.2445376+11:00   395,704 1.0.0.0 VRage.Game.dll
2016-01-15T08:34:32.3902485+11:00   2,125,752   1.0.0.0 VRage.Game.XmlSerializers.dll
2016-01-15T08:35:11.0910584+11:00   624,056 1.0.0.0 VRage.Library.dll
2016-01-15T08:34:35.9800871+11:00   467,384 1.0.0.0 VRage.Math.dll
2016-01-11T18:42:58.0000000+11:00   64,512  2.2.0   WPFLocalizeExtension.dll
2016-01-11T18:42:58.0000000+11:00   26,624  1.1.6.3 XAMLMarkupExtensions.dll

System.NullReferenceException: Object reference not set to an instance of an object.
   at VRage.ObjectBuilders.MyObjectBuilderSerializer.DeserializeXML(Stream reader, MyObjectBuilder_Base& objectBuilder, Type builderType)
   at VRage.ObjectBuilders.MyObjectBuilderSerializer.DeserializeXML[T](Stream reader, T& objectBuilder)
   at SEToolbox.Interop.SpaceEngineersApi.Deserialize[T](String xml) in d:\Development\GitHub\SEToolbox\Main\SEToolbox\SEToolbox\Interop\SpaceEngineersAPI.cs:line 92
   at SEToolbox.Models.StructureUnknownModel.OnDeserializedMethod(StreamingContext context) in d:\Development\GitHub\SEToolbox\Main\SEToolbox\SEToolbox\Models\StructureUnknownModel.cs:line 32
   at System.Runtime.Serialization.SerializationEvents.InvokeOnDeserialized(Object obj, StreamingContext context)
   at System.Runtime.Serialization.ObjectManager.RaiseOnDeserializedEvent(Object obj)
   at System.Runtime.Serialization.ObjectManager.RegisterObject(Object obj, Int64 objectID, SerializationInfo info, Int64 idOfContainingObj, MemberInfo member, Int32[] arrayIndex)
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.RegisterObject(Object obj, ParseRecord pr, ParseRecord objectPr, Boolean bIsString)
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ParseObjectEnd(ParseRecord pr)
   at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   at System.Windows.DataObject.OleConverter.ReadObjectFromHandle(IntPtr handle)
   at System.Windows.DataObject.OleConverter.GetDataFromHGLOBAL(String format, IntPtr hglobal)
   at System.Windows.DataObject.OleConverter.GetDataFromOleHGLOBAL(String format, DVASPECT aspect, Int32 index)
   at System.Windows.DataObject.OleConverter.GetDataFromBoundOleDataObject(String format, DVASPECT aspect, Int32 index)
   at System.Windows.DataObject.OleConverter.GetData(String format, Boolean autoConvert, DVASPECT aspect, Int32 index)
   at System.Windows.DataObject.OleConverter.GetData(String format, Boolean autoConvert)
   at SEToolbox.Services.ListBoxDropBehavior.AssociatedObject_Drop(Object sender, DragEventArgs e) in d:\Development\GitHub\SEToolbox\Main\SEToolbox\SEToolbox\Services\ListBoxDropBehavior.cs:line 98
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   at System.Windows.OleDropTarget.RaiseDragEvent(RoutedEvent dragEvent, Int32 dragDropKeyStates, Int32& effects, DependencyObject target, Point targetPoint)
   at System.Windows.OleDropTarget.MS.Win32.UnsafeNativeMethods.IOleDropTarget.OleDrop(Object data, Int32 dragDropKeyStates, Int64 point, Int32& effects)
   at MS.Win32.UnsafeNativeMethods.DoDragDrop(IDataObject dataObject, IOleDropSource dropSource, Int32 allowedEffects, Int32[] finalEffect)
   at System.Windows.OleServicesContext.OleDoDragDrop(IDataObject dataObject, IOleDropSource dropSource, Int32 allowedEffects, Int32[] finalEffect)
   at System.Windows.DragDrop.OleDoDragDrop(DependencyObject dragSource, DataObject dataObject, DragDropEffects allowedEffects)
   at System.Windows.DragDrop.DoDragDrop(DependencyObject dragSource, Object data, DragDropEffects allowedEffects)
   at SEToolbox.Services.ListBoxItemDragBehavior.AssociatedObject_MouseLeave(Object sender, MouseEventArgs e) in d:\Development\GitHub\SEToolbox\Main\SEToolbox\SEToolbox\Services\ListBoxItemDragBehavior.cs:line 154
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   at System.Windows.ReverseInheritProperty.FirePropertyChangeInAncestry(DependencyObject element, Boolean oldValue, DeferredElementTreeState treeState, Action`2 originChangedAction)
   at System.Windows.ReverseInheritProperty.FirePropertyChangeInAncestry(DependencyObject element, Boolean oldValue, DeferredElementTreeState treeState, Action`2 originChangedAction)
   at System.Windows.ReverseInheritProperty.OnOriginValueChanged(DependencyObject oldOrigin, DependencyObject newOrigin, IList`1 otherOrigins, DeferredElementTreeState& oldTreeState, Action`2 originChangedAction)
   at System.Windows.Input.MouseDevice.ChangeMouseOver(IInputElement mouseOver, Int32 timestamp)
   at System.Windows.Input.MouseDevice.PreNotifyInput(Object sender, NotifyInputEventArgs e)
   at System.Windows.Input.InputManager.ProcessStagingArea()
   at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
   at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
   at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

Deleting asteroids - file is locked

When saving in toolbox, it sometimes reports that file somevoxmap.vx2 is locked, but it fact it was the toolbox that locked that file to count materials in it and did not finished that in time.

This is a threading issue, and you would usually encounter it with large asteroids, as they take a lot longer to decompress. The file is locked during this time.

If an asteroid is deleted through the UI, the Model/ViewModel should kill the thread that is currently examining the asteroid file for resources, thus removing the file lock.

http://stackoverflow.com/questions/4732737/how-to-stop-backgroundworker-correctly

Improve Exception reporting

Need to improve exception reporting.

2 considerations.

  1. At the crash dialog, allow copying of crash details, and open directly to here on GitHub to log a crash report. (Unless there is a Url query string to allow automatic pre-fill of a form.)
    See this example: https://github.com/midspace/SEToolbox/issues/new?title=Crash+Report&body=The following+details&labels=bug,question
  2. Automatic Exception reporting
    Implementing an automatic method for logging exceptions, a little like how Keen do it with Space Engineers would help considerably in collecting bug reports.

The Unhandled exception dialog should also prompt the user for whatever they were doing at the time of the Exception, and ask for any files/links they think may be important.

I'm guessing a dedicated web page, .PHP hosted somewhere that accepts a specific POST message, which will in turn email it to us.
SEToolbox can post to that specific page, with any and all detail on the error.
Some basic checks on POST fields, and on the Referer and UserAgent to prevent too much abuse or spam.

Ship viewer

Need some way of viewing a 3D model of a ship/station in is current orientation.

A consideration is creating a simple voxel of all cubes in the ship and displaying it with HelixToolkit.
Another is to read the .mwm files and interpret all the triangles to build a complete 3D model. (Useful for those doing 3D printing)

It should be understood however that Keen currently provide the models in .fbx format in "SpaceEngineers\Tools\ModelPack.zip"
However we cannot rely upon that been there forever, or it remaining accurate or reliable (mods?).

Resource definitions restucture

Restructuring of underlying code and how it accesses Space Engineers content and Definitions.
This will be to support futher development in the future.

Update Site Links

Update the Application, and provide the new website links to GitHub.

Add Objects for Backpack

The Backpack is currently represented by a generic placeholder for unknown objects, with the label "MyObjectBuilder_ReplicableEntity".

It needs it's own object structure, and the ability to have its inventory edited.

Mirror and rotate to conveyor lines

This task needs to be reinvestigated to see if this is still an issue.

The "ConveyorLines" contain the "MyObjectBuilder_ConveyorLine" object.
When rotating and mirroring a ship with Conveyors, the ConveyorLines need to be rotated and mirrored also.

Add Objects for Spiders and Cyberhounds

These may appear as "MyObjectBuilder_ReplicableEntity".
I haven't verified this as yet.

They need their own object structure, and the ability to have its inventory edited.
I'd hope we can have a generic NPC entity, and just label it as the appropriate creature type from the definition.
I believe they also have Inventory.

This may affect #14

Resource report detail

Add more detail, including:

Break down per ship.

  • separate report each entity/object
  • report inventory
  • include construction costs
  • report only selected entity/object
  • including dimensions, block count and weight would be nice as well.

Break down per asteroid.

Add subtotal construction time, not just the total for ship detail.

Related to https://setoolbox.codeplex.com/discussions/549219

Cube owner changer - Add Npc Identity

In the cube selection screen of ships, allow individual cubes owner to be changed.

Owner list needs to come from the Sandbox list of players and their SE generated unique Id.

May have to also present an artificial Id to allow players to create a non-existent enemy for testing other features (or creating their own fake space battle).

Update the readme.txt

  • The readme.txt needs to be changed to readme.md.
  • The content needs a review and updated to include current development tools.
  • Also, it should include links and information for the casual user, so they can find stuff more easily, because the human eye can be drawn more easily to large text, rather than those small labels and buttons up the top of the GitHub web pages.
  • Need to review and update License details.

Drag-Drop to copy ownership/faction details

When Drag-drop copying of ships, the ownership/faction information needs to be also transferred across into the other save game if it doesn't already exist.

Ownership can be matched by SteamId, but Faction details may need to be matched by name.

Currently when Serializing the objects for transfer, only the bare minimum, which is the CubeGrid is transferred.
The object model should probably be enhanced to contain more information for exchanging between two running applications.
It should be remembered that the communication channel, all data has to be serialized for sending across an AppDomain boundary, and that the size is limited.

Perhaps we should consider changing this, so the Drop operation instead passes a link for a another method, like Named Pipe to allow faster transfer of larger data.

Move Build output folder

Need to move the build output folder of build.bat to outside of the root of the source repository so it isn't automatically included in the Git.

Cube orientation changer

In the cube selection screen of ships, allow cubes to be individually rotated.

This may be an issue without the user know what the current orientation of the cubes are in relation to the environment.

Enhance Mirroring (new blocks do not work)

The "MirroringX", "MirroringY", "MirroringZ" and "MirroringBlock" are a recent additions to the CubeBlocks.sbc.

Update the StructureCubeGridModel.MirrorCubeOrientation() method to make use of them to mirror ALL cubes, especially mod cubes.

Addition:
The Symmetry of cubes in Space Engineers is still not perfect.
Multi cube items like Windows still do not work right, so the current code for Mirroring should be kept for current blocks, but the new properties should definitely be used for everything else.

These need to be properly tested with Window1x2SideLeft, Window1x2SideRight.

Create NPC

Option for create NPC and point to create a spawn NPC on the create menu

Build updates

  • Replace binary references for nuget references.

Do not replace the HelixToolkit.Wpf.dll, as it has custom exception handling.

SEToolbox/Main/SEToolbox/References/

https://www.nuget.org/packages/ICSharpCode.SharpZipLib.Patched/
Install-Package ICSharpCode.SharpZipLib.Patched

https://www.nuget.org/packages/System.Windows.Interactivity.WPF/
Install-Package System.Windows.Interactivity.WPF

https://www.nuget.org/packages/WpfLocalizeExtension/
Install-Package WpfLocalizeExtension

https://www.nuget.org/packages/XAMLMarkupExtensions/
Install-Package XAMLMarkupExtensions

https://www.nuget.org/packages/log4net/
Install-Package log4net

World preview

A preview of the world in 2D or 3D with all objects in it, allowing objects to be repositioned or selected for editing.

Desired features:
Icons to represent all objects. Not to scale, but scaled to visibility.
Cube grid lines to indicate 100km sections? Or Polar grid system.
Arrows to represent sector orientation, and position of sun (source of meteors and Solar).
Selection cursor/crosshair (Adorner to circle or highlight object).
Arrows to represent ship/meteor vector (Direction AND speed) and rotation.
Tooltip or highlight for basic details (asteroid name, ship beacon name, floating object name)
Option checkbox to turn on/off vector arrows, on/off sector grid lines, switch between primitive and model.

Advanced features:
Scale 3d model representations of asteroids and ships/stations. See #36.

Breaking changes for SE 1.125

Need to remove the MedievalEngineers dependencies from the ToolboxUpdater as it will be removed from the Space Engineers deployments.
Will need to look at the projects also and remove any lingering references.

Unfortunately this will completely remove any support for Medieval Engineers.

MyObjectBuilder_Dx11VoxelMaterialDefinition will be moved to a common assembly.

We'll have to look at a later date to create a separate application project to support Medieval Engineers.

Ship subsystem editor

To enable editing of properties of any cube in a ship/station.

It needs to use Reflection, as properties can change too quickly during the Alpha, and Mods may implement their own properties.

Select isolated dynamic asteroids

A context menu and menu button to select dynamic asteroids that are isolated.

Space Engineers generally only generates the .vx2 file and a the Asteroid entity in the SANDBOX_0_0_0_.sbs when a dynamic asteroid has been modified (either by a player mining, or meteor hit).

Over the long term, this causes two issues.

  • The game size increases (larger server footprint, storage and memory), and more downloads for players.
  • Asteroids are mined out, and have no useable ore left.

Dynamic asteroids with static content can be deleted, and Space Engineers will automatically generate a new dynamic one in it's place, effectively resetting the asteroid back to it's pristine state.
However, this should only be done when there are no other entities in the bounding box of the asteroid. No floating items, players, ships or stations. Otherwise players can be killed or trapped. Ships can be destroyed.

Only Dynamic asteroid entities should be selected. I believe this can only be determined by the voxel storage name pattern. Asteroid_##_##_##_#_##########.vx2
And only asteroids where there are no other items within its bounding box.

Drag-drop files into SEToolbox

Allow drag-drop of files directly into SEToolbox.

Need to detect the file type and act appropriately.

  • Detect .vox .vx2 files for asteroids.
  • Detect .sbc files for other content.
  • Detect 3D models, open 3D Import screen..
  • Detect image files, open image import screen.

And not throw an exception on invalid or corrupt content.

Menu option - Item creator for all component parts of a cube

The Item creator currently allows creation of items (components, weapons, tools, ore, ingots).

Need to add the option of creating all components required for a specific cube.
The UI will need enhancing, as there are way more cubes then components currently, and it would clog the combobox with cubes.

Use Space Engineers API for Asteroids/Voxel

This a copy/paste from the original request here:
KeenSoftwareHouse/SpaceEngineers#90
For my own notes to follow up on this.

Access to the IMyStorage CreateStorage(byte[] data) from an external point other than IMyVoxelMaps. This will require specifying VoxelMaterials.

This is to provide access to externals tools like SEToolbox or from within Keen's own VRageEditor tool as another plugin, to building custom Voxel Asteroids.

This unnamed class should not be white-listed for use in the Mod API.

Expected methods:
IMyStorage CreateStorage(byte[] data);
LoadMaterialData(IEnumerable voxelMaterials)

Additional details:
Would like to also be able to use some of the MyVoxelShapes.
IMyStorage will naturally provide the method; Save(out byte[] outCompressedData)

Perceived issues:
The low level classes may be too intertwined with live game data syncing to allow use without having to load the entire game engine.

Testing of functionality need to cover the following areas:
Tests confirmed working in the Dev branch will be checked off.

Main panel.

  • View existing asteroid details.
  • Verify existing asteroid details are correct.
  • Generate Asteroid Field.
  • World Resource Report.

Importing

  • Import Stock asteroid (v2 format).
  • Import Stock asteroid (v3 format).
  • Import file (v2 format).
  • Import file (v3 format).
  • Create Sphere.

Models

  • From Model
  • From Model for Asteroid

Editing

  • Replace All material with new.
  • Replace surface material with new.
  • Replace selected materiel with selected.
  • Delete selected material.
  • Slice Half.
  • Slice Quarter.
  • Extract from intersecting blocks.
  • Rotate Pitch +/-
  • Rotate Yaw +/-
  • Rotate Roll +/-
  • Merge Asteroids Volume +Union
  • Merge Asteroids Material +Union
  • Merge Asteroids Volume -Subtraction
  • Additional code enhancements/gaps (the TODOs )

Code Cleanup.

  • Verify and update unit tests.
  • Remove old code.
  • adjust existing code for maintainability.
  • verify that application compile/deploy.

This is a sample application to test what is available at the moment, and the issues I'm running into.

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using Sandbox.Engine.Voxels;
using VRage.FileSystem;

class Program
{
    static void Main(string[] args)
    {
        // Make sure the following are available/copied into the bin path:
        // Be aware if you are running x86 or x64 to use the appropriate .dll's.

        // HavokWrapper.dll
        // Sandbox.Common.dll
        // Sandbox.Common.XmlSerializers.dll
        // Sandbox.Game.dll
        // Sandbox.Graphics.dll
        // SharpDX.DirectInput.dll
        // SharpDX.dll
        // SharpDX.XAudio2.dll
        // SteamSDK.dll
        // steam_api.dll
        // steam_api64.dll
        // VRage.Audio.dll
        // VRage.dll
        // VRage.Input.dll
        // VRage.Library.dll
        // VRage.Math.dll
        // VRage.Native.dll


        // Game Content path.
        var contentPath = @"C:\Program Files (x86)\Steam\steamapps\common\SpaceEngineers\Content";

        // base User path.
        var userPath = Environment.ExpandEnvironmentVariables(@"%AppData%\SpaceEngineers");

        // Our test asteroid.
        var filename = Path.Combine(contentPath, @"VoxelMaps\Arabian_Border_7.vx2");

        try
        {
            // Force loading of the SteamSDK into memory, so the remaining Types in Sandbox.Game are available when MyOctreeStorage is initialized.
            //var ass = Assembly.Load(new AssemblyName("SteamSDK"));

            // Initilize the FileSystem. This is required for MyDefinitionManager to call LoadData().
            MyFileSystem.Reset();
            MyFileSystem.Init(contentPath, userPath);
            MyFileSystem.InitUserSpecific((string)null);

            // Call LoadData() to load up all the base definitions.
            // ##### static MyDefinitionManager.ctor() calls MyObjectFactory.RegisterFromAssembly(). This will forcefully load all the Types in Sandbox.Game.dll.
            // ##### There are a lot of dependant Types that need to be loaded.

            // #####
            // Here is where it all breaks down, as MySandboxGame has to be created in memory to be able to 
            // load Voxel Material Definitions. Other definitions will load, but the Voxel Material is dependant on the game engine.
            Sandbox.Definitions.MyDefinitionManager.Static.LoadData(new List<Sandbox.Common.ObjectBuilders.MyObjectBuilder_Checkpoint.ModItem>());

            // Check that materials exist.
            var materials = Sandbox.Definitions.MyDefinitionManager.Static.GetVoxelMaterialDefinitions();

            // Attempt to load the Voxel file.
            // If the specific Voxel materials that the asteroid requires are in the MyDefinitionManager memory, the voxel will load.


            // ##### static MyOctreeStorage.ctor() calls MyOctreeStorage.RegisterTypes(). This will forcefully load all the Types in Sandbox.Game.dll.
            // ##### There are a lot of dependant Types that need to be loaded.
            var storage = MyStorageBase.LoadFromFile(filename);

            Debugger.Break();
        }
        catch (Exception ex)
        {
            // Check your exception.
            // "The given key was not present in the dictionary." will mean, you are missing a required VoxelMaterialDefinition.
            Debugger.Break();
        }
    }
}

Rotation of Group of objects

The ability to rotate a group of objects including Asteroids.

We created a new asteroid for a friend to start building his own base. As you know, we can't rotate the asteroid in-game when placing it. Sadly, the good 'side' of the asteroid is facing away from the light source. I rotated the asteroid 90 degrees (yaw) anti-clockwise. I did the same for the station that was on the asteroid... but they don't match up like before. Am I missing something?

It would be really really awesome if we could select 'Asteroid' and then 'Base' on the list, and then rotate them together. Or maybe there is a way and I'm just not familiar enough with the program to do it.

Migrated from:
https://setoolbox.codeplex.com/workitem/1501

This issue may no longer be relevant or even fixable, as most worlds are now created with dynamic asteroids and these cannot be modified in the normal sense. They are a generated with a random number seed, so their appearance and orientation are not tied to physical point of reference.
Many games are still started with static asteroids in the center area however, but these would be rare instances.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.