<commit_before># SuSto Engine
[![Build status](https://ci.appveyor.com/api/projects/status/m3lluga340u8kfuk/branch/master?svg=true)](https://ci.appveyor.com/project/Guillemsc/3d-engine/branch/master)
[![License](http://img.shields.io/:license-mit-blue.svg)](http://doge.mit-license.org)

3D Engine made by <NAME> and <NAME> for the 3D engines subject during the 3rd year of Game Design and Game Development degree at CITM.

Link to the Github Repository ![https://github.com/Guillemsc/3D-Engine](https://github.com/Guillemsc/3D-Engine)

Link to the **Guillem Sunyer**'s Github page ![https://github.com/Guillemsc](https://github.com/Guillemsc/)

Link to the **<NAME>**'s Github page ![https://github.com/SimonStoyanov](https://github.com/SimonStoyanov)


## Game Engine Instructions
### Main Menu Bar
* **File**
  * _**Open in Explorer**_: Opens the container of the Engine.
  * _**Save Scene**_: Saves the current scene into a JSon.
  * _**Quit (Alt + F4)**_: Exits the application.
* **Game Object**
  * _**Create Empty**_: Creates an empty GameObject and puts it into the hierarchy.
* **Component**
It will only show the options if a GameObject of the hierarchy is selected.
  * _**Add Mesh**_: Adds a component mesh to the selected GameObject.
  * _**Add Texture**_: Adds a component texture to the selected GameObject.
* **Window**
  * _**Game**_
  * _**Hierarchy**_
  * _**Inspector**_
  * _**Console**_
  * _**Configuration (C)**_
  * _**Profiler (P)**_
  * _**Hardware**_
  * _**Explorer**_
* **Help**
  * _**About SuSto Engine**_
* **Layouts**
  * _**Current Layout**_: Shows the layout that is using the engine at the moment.
  * _**List of Layouts**_: A list of layouts that can be assigned when clicking the _Set_ Button or be deleted with the _X_ Button.
  * _**Input Layout**_: By clicking the button _Save Layout_ and assigning a name at the text input, a layout will be added to the list of layouts above.
* **Debug**
  * _**Test Window**_: Opens the imgui test window.
* **FPS**: Show the current framerate.

### Toolbar
* **Move**: Selects the current guizmo mode to Movement.
* **Rotate**: Selects the current guizmo mode to Rotation.
* **Scale**: Selects the current guizmo mode to Scale.
* **Play**: Starts the game, every object that is moved during play-time will return to its original position, also for the rotation and scale.
* **Pause**: Only shown during play-time. It will change to editor mode, stoping the game.
* **Draw KDTree**: Debug functionality that shows the planes that are dividing the gameobjects to create the KDTree.
* **Draw BBoxes**: Draws the bounding boxes of all gameobjects that have one.

### Game
* **Camera Movement**
  * _**Right Click + W, A, S, D**_: Move **forward**, **Left**, **backward** or **right**, respectively.
  * _**Right Click + Z, X**_: Move **up** or **down**, respectively
  * _**Mouse Scroll**_: Move the camera forward or backwards.
  * _**Right Click + Mouse Movement**_: Camera moves.
  * _**F**_: Centers the view to the (0, 0, 0).
* **Other functionalities**
  * _**Drag and Drop**_: if an fbx is dropped into the engine, it will be rendered.
 
### Hierarchy
GameObjects are shown at the hierarchy. There, they can be selected (by right clicking) and created (with a button above the list of GameObject.
Also, by right clicking and then pressing the button delete it will erase the GameObject.

### Inspector
At the inspecotr it is posible to look at the components of a selected GameObject, which would be its transform, the mesh and the texture component (the last two being optional for the GameObject).

### Console
The console prints the log of the engine, and also admits commands. At the momement, there are two commands:
* _**.Clear**_: clears the log of the console.
* _**.Help**_: Shows a list of commands.

### Configuration
At the configuration the user can change some variables for the sake of the use of the editor. The most remarkable things are the Fill mode, the wireframe mode and the point mode, which are used to change the mode the meshes are shown at the game window.

### Profiler
Mainly, the user can look at the memory usage and the framerate within the profiler window.

### Hardware
The hardware windows shows the capabilities of the hardware used by the user.

## License
MIT License

Copyright (c) 2017 <NAME> and <NAME>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights<commit_msg>Readme ffinished<commit_after># SuSto Engine
[![Build status](https://ci.appveyor.com/api/projects/status/m3lluga340u8kfuk/branch/master?svg=true)](https://ci.appveyor.com/project/Guillemsc/3d-engine/branch/master)
[![License](http://img.shields.io/:license-mit-blue.svg)](http://doge.mit-license.org)

3D Engine made by <NAME> and <NAME> for the 3D engines subject during the 3rd year of Game Design and Game Development degree at CITM.

Link to the Github Repository ![https://github.com/Guillemsc/3D-Engine](https://github.com/Guillemsc/3D-Engine)

Link to the **Guillem Sunyer**'s Github page ![https://github.com/Guillemsc](https://github.com/Guillemsc/)

Link to the **Simón Stoyanov**'s Github page ![https://github.com/SimonStoyanov](https://github.com/SimonStoyanov)


## Game Engine Instructions
### Main Menu Bar
* **File**
  * _**Open in Explorer**_: Opens the container of the Engine.
  * _**Save Scene**_: Saves the current scene into a JSon.
  * _**Quit (Alt + F4)**_: Exits the application.
* **Game Object**
  * _**Create Empty**_: Creates an empty GameObject and puts it into the hierarchy.
* **Component**
It will only show the options if a GameObject of the hierarchy is selected.
  * _**Add Mesh**_: Adds a component mesh to the selected GameObject.
  * _**Add Texture**_: Adds a component texture to the selected GameObject.
* **Window**
  * _**Game**_
  * _**Hierarchy**_
  * _**Inspector**_
  * _**Console**_
  * _**Configuration (C)**_
  * _**Profiler (P)**_
  * _**Hardware**_
  * _**Explorer**_
* **Help**
  * _**About SuSto Engine**_
* **Layouts**
  * _**Current Layout**_: Shows the layout that is using the engine at the moment.
  * _**List of Layouts**_: A list of layouts that can be assigned when clicking the _Set_ Button or be deleted with the _X_ Button.
  * _**Input Layout**_: By clicking the button _Save Layout_ and assigning a name at the text input, a layout will be added to the list of layouts above.
* **Debug**
  * _**Test Window**_: Opens the imgui test window.
* **FPS**: Show the current framerate.

### Toolbar
* **Move**: Selects the current guizmo mode to Movement.
* **Rotate**: Selects the current guizmo mode to Rotation.
* **Scale**: Selects the current guizmo mode to Scale.
* **Play**: Starts the game, every object that is moved during play-time will return to its original position, also for the rotation and scale.
* **Pause**: Only shown during play-time. It will change to editor mode, stoping the game.
* **Draw KDTree**: Debug functionality that shows the planes that are dividing the gameobjects to create the KDTree.
* **Draw BBoxes**: Draws the bounding boxes of all gameobjects that have one.

### Game
* **Camera Movement**
  * _**Right Click + W, A, S, D**_: Move **forward**, **Left**, **backward** or **right**, respectively.
  * _**Right Click + Z, X**_: Move **up** or **down**, respectively
  * _**Mouse Scroll**_: Move the camera forward or backwards.
  * _**Right Click + Mouse Movement**_: Camera moves.
  * _**F**_: Centers the view to the (0, 0, 0).
* **Other functionalities**
  * _**Drag and Drop**_: if an fbx is dropped into the engine, it will be rendered.
 
### Hierarchy
GameObjects are shown at the hierarchy. There, they can be selected (by right clicking) and created (with a button above the list of GameObject.
Also, by right clicking and then pressing the button delete it will erase the GameObject.

### Inspector
At the inspector it is posible to look at the components of a selected GameObject, which would be the next ones:
* Transform. 
* Mesh.
* Texture.
* Camera.

### Console
The console prints the log of the engine, and also admits commands. At the momement, there are two commands:
* _**.Clear**_: clears the log of the console.
* _**.Help**_: Shows a list of commands.

### Configuration
At the configuration the user can change some variables for the sake of the use of the editor. The most remarkable things are the Fill mode, the wireframe mode and the point mode, which are used to change the mode the meshes are shown at the game window.

### Profiler
Mainly, the user can look at the memory usage and the framerate within the profiler window.

### Hardware
The hardware window shows the capabilities of the hardware used by the user.

### Explorer
At the explorer window the user can access its Assets directory. 
The explorer will only show folders, .fbx, .png and .tga.

## License
MIT License

Copyright (c) 2017 <NAME> and <NAME>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
{'fraction_non_alphanumeric': 0.11513513513513514, 'fraction_numerical': 0.0041081081081081085, 'mean_word_length': 4.403621495327103, 'pattern_counts': {'":': 0, '<': 12, '<?xml version=': 0, '>': 12, 'https://': 16, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '843713', 'n_tokens_mistral': 2794, 'n_tokens_neox': 2647, 'n_words': 1236}