SLProject  4.2.000
A platform independent 3D computer graphics framework for desktop OS, Android, iOS and online in web browsers
AppDemoSceneMinimal.cpp
Go to the documentation of this file.
1 /**
2  * \file AppDemoSceneMinimal.cpp
3  * \brief Implementation for an SLScene inherited class
4  * \details For more info about App framework and the scene assembly see:
5  * https://cpvrlab.github.io/SLProject4/app-framework.html
6  * \date May 2024
7  * \authors Marcus Hudritsch, Marino von Wattenwyl
8  * \copyright http://opensource.org/licenses/GPL-3.0
9  * \remarks Please use clangformat to format the code. See more code style on
10  * https://github.com/cpvrlab/SLProject4/wiki/SLProject-Coding-Style
11 */
12 
13 #include <AppDemoSceneMinimal.h>
14 #include <AppCommon.h>
15 #include <SLAssetLoader.h>
16 #include <SLLightSpot.h>
17 #include <SLRectangle.h>
18 
19 //-----------------------------------------------------------------------------
21 {
22  info("Minimal scene with a texture mapped rectangle with a point light source.\n"
23  "You can find all other test scenes in the menu File > Load Test Scenes."
24  "You can jump to the next scene with the Shift-Alt-CursorRight.\n"
25  "You can open various info windows under the menu Infos. You can drag, dock and stack them on all sides.\n"
26  "You can rotate the scene with click and drag on the left mouse button (LMB).\n"
27  "You can zoom in/out with the mousewheel. You can pan with click and drag on the middle mouse button (MMB).\n");
28 }
29 //-----------------------------------------------------------------------------
30 //! All assets the should be loaded in parallel must be registered in here.
32 {
35  "earth2048_C.png");
36 }
37 //-----------------------------------------------------------------------------
38 //! After parallel loading of the assets the scene gets assembled in here.
40 {
41  // Create a scene group node
42  SLNode* scene = new SLNode("scene node");
43  root3D(scene);
44 
45  // Create materials
46  SLMaterial* m1 = new SLMaterial(am, "m1", _texC);
47 
48  // Create a light source node
49  SLLightSpot* light1 = new SLLightSpot(am, this, 0.3f);
50  light1->translation(0, 0, 5);
51  light1->name("light node");
52  scene->addChild(light1);
53 
54  // Create meshes and nodes
55  SLMesh* rectMesh = new SLRectangle(am,
56  SLVec2f(-5, -5),
57  SLVec2f(5, 5),
58  25,
59  25,
60  "rectangle mesh",
61  m1);
62  SLNode* rectNode = new SLNode(rectMesh, "rectangle node");
63  scene->addChild(rectNode);
64 
65  // Set background color and the root scene node
66  sv->sceneViewCamera()->background().colors(SLCol4f(0.7f, 0.7f, 0.7f),
67  SLCol4f(0.2f, 0.2f, 0.2f));
68  // Save energy
69  sv->doWaitOnIdle(true);
70 }
71 //-----------------------------------------------------------------------------
The AppCommon class holds the top-level instances of the app-demo.
Class declaration for an SLScene inherited class.
SLVec2< SLfloat > SLVec2f
Definition: SLVec2.h:141
SLVec4< SLfloat > SLCol4f
Definition: SLVec4.h:237
static SLstring texturePath
Path to texture images.
Definition: AppCommon.h:86
void registerAssetsToLoad(SLAssetLoader &al) override
All scene specific assets have to be registered for async loading in here.
void assemble(SLAssetManager *am, SLSceneView *sv) override
After parallel loading of the assets the scene gets assembled in here.
void addTextureToLoad(SLGLTexture *&texture, const SLstring &path, SLint min_filter=GL_LINEAR_MIPMAP_LINEAR, SLint mag_filter=GL_LINEAR, SLTextureType type=TT_unknown, SLint wrapS=GL_REPEAT, SLint wrapT=GL_REPEAT)
Add 2D textures with internal image allocation.
Toplevel holder of the assets meshes, materials, textures and shaders.
void colors(const SLCol4f &uniformColor)
Sets a uniform background color.
SLBackground & background()
Definition: SLCamera.h:165
SLLightSpot class for a spot light source.
Definition: SLLightSpot.h:36
Defines a standard CG material with textures and a shader program.
Definition: SLMaterial.h:56
An SLMesh object is a triangulated mesh, drawn with one draw call.
Definition: SLMesh.h:134
SLNode represents a node in a hierarchical scene graph.
Definition: SLNode.h:147
void addChild(SLNode *child)
Definition: SLNode.cpp:207
void translation(const SLVec3f &pos, SLTransformSpace relativeTo=TS_parent)
Definition: SLNode.cpp:828
void name(const SLstring &Name)
Definition: SLObject.h:34
SLRectangle creates a rectangular mesh with a certain resolution.
Definition: SLRectangle.h:29
The SLScene class represents the top level instance holding the scene structure.
Definition: SLScene.h:47
SLNode * root3D()
Definition: SLScene.h:99
friend class SLNode
Definition: SLScene.h:48
SLstring & info()
Definition: SLScene.h:102
SceneView class represents a dynamic real time 3D view onto the scene.
Definition: SLSceneView.h:69
void doWaitOnIdle(SLbool doWI)
Definition: SLSceneView.h:149
SLCamera * sceneViewCamera()
Definition: SLSceneView.h:169