Pārlūkot izejas kodu

samples: core: add default camera

Daniele Bartolini 6 mēneši atpakaļ
vecāks
revīzija
ca2b2d2db1

+ 30 - 0
samples/01-physics/levels/test.level

@@ -915,6 +915,36 @@ units = [
 		}
 		prefab = "units/cube"
 	}
+	{
+		_guid = "b1cbf05e-c348-41a0-8677-eff4e1d35987"
+		_type = "unit"
+		editor = {
+			name = "camera"
+		}
+		modified_components = {
+			#1d578001-d96b-4b0e-90a9-181b32161a7d = {
+				data = {
+					position = [
+						0
+						-30
+						6.5
+					]
+					rotation = [
+						0
+						0
+						0
+						1
+					]
+					scale = [
+						1
+						1
+						1
+					]
+				}
+			}
+		}
+		prefab = "core/units/camera"
+	}
 	{
 		_guid = "b38e2246-4aa1-4fea-954b-71c21b39415f"
 		_type = "unit"

+ 33 - 3
samples/core/editors/levels/empty.level

@@ -13,9 +13,9 @@ units = [
 			#3f6f6b7c-b4cf-4173-aab0-288a63d7c73a = {
 				data = {
 					position = [
-						0
-						-10
-						10
+						12
+						6.5
+						14
 					]
 					rotation = [
 						0.35355433800000002
@@ -48,4 +48,34 @@ units = [
 		}
 		prefab = "core/renderer/default_shading_environment"
 	}
+	{
+		_guid = "d19b201e-b7c8-4d62-8522-cc6a1325a3ef"
+		_type = "unit"
+		editor = {
+			name = "camera"
+		}
+		modified_components = {
+			#1d578001-d96b-4b0e-90a9-181b32161a7d = {
+				data = {
+					position = [
+						0
+						-15
+						6.5
+					]
+					rotation = [
+						-0.17364817766693033
+						0
+						0
+						0.98480775301220802
+					]
+					scale = [
+						1
+						1
+						1
+					]
+				}
+			}
+		}
+		prefab = "core/units/camera"
+	}
 ]

+ 9 - 6
samples/core/game/game.lua

@@ -18,12 +18,6 @@ function GameBase.init()
 	-- Create world.
 	GameBase.world = Device.create_world()
 
-	-- Create default camera.
-	GameBase.camera_unit = World.spawn_unit(GameBase.world, "core/units/camera")
-	local scene_graph = World.scene_graph(GameBase.world)
-	local camera_transform = SceneGraph.instance(scene_graph, GameBase.camera_unit)
-	SceneGraph.set_local_position(scene_graph, camera_transform, Vector3(0, -30, 6.5))
-
 	if GameBase.game and GameBase.game.init then
 		GameBase.game.init()
 	end
@@ -40,6 +34,15 @@ function GameBase.init()
 		end
 	end
 
+	-- Create default camera if it doesn't exist.
+	GameBase.camera_unit = World.unit_by_name(GameBase.world, "camera")
+	if GameBase.camera_unit == nil then
+		GameBase.camera_unit = World.spawn_unit(GameBase.world, "core/units/camera")
+		local scene_graph = World.scene_graph(GameBase.world)
+		local camera_transform = SceneGraph.instance(scene_graph, GameBase.camera_unit)
+		SceneGraph.set_local_position(scene_graph, camera_transform, Vector3(0, -15, 6.5))
+	end
+
 	if GameBase.game and GameBase.game.level_loaded then
 		GameBase.game.level_loaded()
 	end