shown in other instead.
Programming Quick Start
The primary goal of this quick start tutorial is to introduce you to programming basics in UNIGINE. Basically, this tutorial covers the C++ API workflow, however, the principles are almost the same for all programming workflows available in UNIGINE, as well as code snippets provided in this tutorial are available in C++, C# and UnigineScript. In the framework of this tutorial we are going to develop a Project which involves basic UNIGINE functionality (managing objects, lights, cameras; logging, console, intersections, controls, GUI, properties, etc). Upon the completion of this tutorial, you'll be able to solve the following tasks:
- The basic scene objects and coordinate system
- Logging and printing messages to console
- Saving and loading a world
- Closing the application
- Working with smart pointers
- Creating and deleting nodes at runtime
- Creating and setting up a camera
- Creating and setting up light sources
- Creating, applying and deleting materials at runtime
- Managing existing scene objects
- Performing basic transformations (move, rotate, scale)
- Making the application frame rate independent
- Managing intersections
- Getting and managing user inputs
- Implementing game logic and use properties
- Creating user interface
For your convenience each of the sections of this tutorial is dedicated to solving a certain task (see the list above) and divided into two sub-parts:
- Basic part - describing some basic examples of how to solve the task of the section, which can be used as a HOWTO.
- Project Progress - giving a detailed description of solving the task of the section in the framework of the Project and a video.
- Source Files - providing a source code that can be copied and pasted to the corresponding source files of your Project.
Tutorial Project Design Requirements#
Before we dive into developing our project let us describe the basic functions and appearance of our application.
Our first UNIGINE application is going to have the following features:
- One free-roaming camera.
- Three light sources to light our scene: world, projected and omni.
- Graphical user interface (see image above).
- Moving and rotating the initial set of objects (4 colored boxes) and changing their scale once in 2 seconds.
- Changing the time of the day in two modes:
- automatic - if the corresponding checkbox is checked.
- manual - by changing the slider position.
- Loading a default world by clicking the "Load World" button.
- Loading a mesh-file by clicking the "Load Mesh" button and performing the following actions:
- Specifying the file in the File Open Dialog.
- Setting the name and location coordinates for the object to be added to scene.
- Closing the application if the "Quit" button was clicked or if "Q" key was pressed on the keyboard.
- Selecting an object on the scene by clicking the right mouse button.
- Highlighting currently selected object by changing its material to the default mesh_base (using property-based logic).
- Deleting currently selected object (or all objects of the scene) using the "Delete" button and the combobox.
So, let's get started and make our first UNIGINE project!