SPACEVESSEL DEVELOPMENT TEAM

On this page you can DOWNLOAD SpaceVIL framework for all supported platforms and read quick guide for Java and C# languages.

Read about last release: 0.3.4.1-ALPHA



Get started with SpaceVIL

This guide learn you to make simple cross-platform application using SpaceVIL framework. We hope you will enjoy the framework. Follow to YouTube to see more - https://youtu.be/kJ6n1fTHXws

Examples of use SpaceVIL you can find on GitHub - https://github.com/spvessel/spacevil

You can also view SpaceVIL documentation:
C# .NET reference
Java .NET reference


Step 1: Implementing SpaceVIL into you Project

C# / .NET Standard / Visual Studio

     - Create console project
     - Download SpaceVIL for .NET Standard
     - Download glfw and copy next to the executable file.
     - Add Reference to SpaceVIL.dll
     - Check the framework by adding the line: using SpaceVIL;

C# / .NET Core / Visual Studio Code (or any other text editor)

     - Create console project by executing the command in terminal:
dotnet new console --output MyProject
     - Download SpaceVIL for .NET Core
     - Windows: download glfw and copy to the executable file. Linux: install libglfw3 and libglfw3-dev via repository. Mac OS X (simplest way): extract libglfw.dylib from lwjgl-glfw-natives-macos.jar (or you can compile libglfw.dylib from sources) and copy next to the executable file.
     - Copy SpaceVIL.dll in the MyProject folder
     - Add code below into MyProject.csproj:
<ItemGroup>
  <Reference Include="SpaceVIL.dll"/>
</ItemGroup>

Windows / Linux:
     -  Install System.Drawing.Common from NuGet by command:
dotnet add package System.Drawing.Common --version 4.6.0-preview7.19362.9
     or just add code below and then execute command in terminal:  dotnet restore
<ItemGroup>
  <PackageReference Include="System.Drawing.Common" Version="4.6.0-preview7.19362.9" />
</ItemGroup>

For Mac OS:
     -  Install System.Drawing.Common from NuGet by command:
dotnet add package System.Drawing.Common --version 4.6.0-preview7.19362.9
     -  Install runtime.osx.10.10-x64.CoreCompat.System.Drawing from NuGet by command:
dotnet add package runtime.osx.10.10-x64.CoreCompat.System.Drawing --version 5.8.64
     or just add code below and then execute command in terminal:  dotnet restore
<ItemGroup>
  <PackageReference Include="System.Drawing.Common" Version="4.6.0-preview7.19362.9" />
  <PackageReference Include="runtime.osx.10.10-x64.CoreCompat.System.Drawing" Version="5.8.64" />
</ItemGroup>

     - Check the framework by adding the line: using SpaceVIL;

Java / Gradle

     - Download SpaceVIL for JVM
     - Download lwjgl
     - Create directory for project
     - Create gradle project by executing the command in terminal:
gradle init --type java-application
     - Create directory libs in the project directory
     - Copy into libs downloaded file spacevil.jar
     - Copy this lwjgl files below into libs directory:
         lwjgl.jar
         lwjgl-glfw.jar
         lwjgl-glfw-natives-linux.jar
         lwjgl-glfw-natives-macos.jar
         lwjgl-glfw-natives-windows.jar
         lwjgl-natives-linux.jar
         lwjgl-natives-macos.jar
         lwjgl-natives-windows.jar
         lwjgl-opengl.jar
         lwjgl-opengl-natives-linux.jar
         lwjgl-opengl-natives-macos.jar
         lwjgl-opengl-natives-windows.jar


     -  In build.gradle add line into dependencies block:
compile fileTree(dir: 'libs', include: '*.jar')
For Mac OS:
     - ATTENTION! To get your app work you should run jvm on Mac OS with -XstartOnFirstThread argument! In build.gradle add line:
applicationDefaultJvmArgs = ['-XstartOnFirstThread']
     or run your compiled *.jar file with command:
java -jar -XstartOnFirstThread your_app.jar

     - Check the framework by adding the line: import com.spvessel.spacevil.*;


Step 2: Creating and running a new window

C#

     - Create in project source file named for example MainWindow.cs (name may be different)
     - Create class MainWindow
     - Class MainWindow must be inherited from class SpaceVIL.ActiveWindow
     - Override method InitWindow
     - Set basic parameters of window via method SetParameters()
     - Code should look like this:
using System;
using System.Drawing;
using SpaceVIL;
namespace MyProject
{
  class MainWindow : ActiveWindow
  {
    public override void InitWindow()
    {
      SetParameters((nameof(MainWindow), nameof(MainWindow), 800, 600);
      SetMinSize(400, 300);
      SetBackground(32, 34, 37);
    }
  }
}
     - In Program.cs add line on top of the file: using SpaceVIL;
     - In Program.cs of project source file inside Main function add lines:
Common.CommonService.InitSpaceVILComponents();
MainWindow mw = new MainWindow();
mw.Show();
     - Code should look like this:
using System;
using SpaceVIL;
namespace MyProject
{
  class Program
  {
    static void Main(string[] args)
    {
      Common.CommonService.InitSpaceVILComponents();
      MainWindow mw = new MainWindow();
      mw.Show();
    }
  }
}
     - Compile and run project to check

Java

     - Create in project source file named for example MainWindow.java (name may be different)
     - Create class MainWindow
     - Class MainWindow must be inherited from class com.spvessel.spacevil.ActiveWindow
     - Override method initWindow
     - Set basic parameters of window via method SetParameters()
     - Code should look like this:
import java.awt.Color;
import com.spvessel.spacevil.*;
class MainWindow extends ActiveWindow {
  @Override
  public void initWindow() {
    setParameters(this.getClass().getSimpleName(), "App", 360, 500);
    setMinSize(360, 500);
    setBackground(45, 45, 45);
  }
}
     - In App.java add line on top of the file: import com.spvessel.spacevil.*;
     - In App.java of project source file inside main function add lines:
com.spvessel.spacevil.Common.CommonService.initSpaceVILComponents();
MainWindow mw = new MainWindow();
mw.show();
     - Code should look like this:
import com.spvessel.spacevil*;
public class App {
  public static void main(String[] args) {
    com.spvessel.spacevil.Common.CommonService.initSpaceVILComponents();
    MainWindow mw = new MainWindow();
    mw.show();
  }
}
     - Compile and run project to check


Step 3: Adding items to the window

C#

     - Items can be added to the window as follows:
AddItem(item1);

     - Items can be added to another item simply by calling method:
item1.AddItem(item2);


Java

     - Items can be added to the window as follows:
addItem(item1);

     - Items can be added to another item simply by calling method:
item1.addItem(item2);


Step 4: Assigning actions to events

You can assign unlimited count of action to one event of an item.

C#

     - Assign an action (lambda expression or method) to all avaliable item events as follows:
btn.EventMouseClick += (sender, args) =>
{
  //do something
};


Java

     - In Java, you can assign an action to item events as follows:
btn.eventMouseClick.add( (sender, args) -> {
  //do something
});


DOWNLOADS:

.NET Standard

.NET Core

Java



Read about last release: 0.3.4.1-ALPHA