Changed Scene to World

This commit is contained in:
Chewico 2026-01-22 17:38:25 +01:00
parent f246d0e227
commit 9e6ee7b2e2
40 changed files with 97 additions and 99 deletions

View File

@ -8,7 +8,7 @@
#ifdef DEER_RENDER #ifdef DEER_RENDER
#include "DeerRender/Render/FrameBuffer.h" #include "DeerRender/Render/FrameBuffer.h"
#include "DeerRender/Scene.h" #include "DeerRender/World.h"
#endif #endif
#include <algorithm> #include <algorithm>
@ -63,7 +63,7 @@ namespace Deer {
// Obtains the entity that is on the root of the environment // Obtains the entity that is on the root of the environment
inline Entity& getRoot() { return getEntity(0); } inline Entity& getRoot() { return getEntity(0); }
#ifdef DEER_RENDER #ifdef DEER_RENDER
void render(const SceneCamera& camera); void render(const WorldCamera& camera);
#endif #endif
Scope<entt::registry> m_registry; Scope<entt::registry> m_registry;

View File

@ -3,13 +3,11 @@
namespace Deer { namespace Deer {
class EntityEnvironment; class EntityEnvironment;
class SceneCamera; class WorldCamera;
class GizmoRenderer; class GizmoRenderer;
// A scene is a 3d simulation with its environment and voxel world in case namespace World {
// of initialized, here things can be simulated // Clears all the assets and memory the World had conained
namespace Scene {
// Clears all the assets and memory the Scene had conained
void clear(); void clear();
// This is the cycle to execution of scripts and physics // This is the cycle to execution of scripts and physics
@ -23,10 +21,10 @@ namespace Deer {
#ifdef DEER_RENDER #ifdef DEER_RENDER
// This function renders with the default camera in the environment // This function renders with the default camera in the environment
void render(); void render();
void render(const SceneCamera&); void render(const WorldCamera&);
extern GizmoRenderer gizmoRenderer; extern GizmoRenderer gizmoRenderer;
#endif #endif
extern EntityEnvironment environment; extern EntityEnvironment environment;
} // namespace Scene } // namespace World
} // namespace Deer } // namespace Deer

View File

@ -0,0 +1,2 @@
#pragma once
#include "DeerCore/EntityEnviroment.h"

View File

@ -1,2 +0,0 @@
#pragma once
#include "DeerCore/Enviroment.h"

View File

@ -1,5 +1,5 @@
#pragma once #pragma once
#include "DeerRender/Enviroment.h" #include "DeerRender/EntityEnviroment.h"
#include "DeerRender/Render/FrameBuffer.h" #include "DeerRender/Render/FrameBuffer.h"
#include "DeerRender/Tools/Memory.h" #include "DeerRender/Tools/Memory.h"

View File

@ -1,13 +1,13 @@
#pragma once #pragma once
#include "DeerCore/Scene.h" #include "DeerCore/World.h"
#include "DeerRender/Components.h" #include "DeerRender/Components.h"
namespace Deer { namespace Deer {
struct SceneCamera { struct WorldCamera {
TransformComponent transform; TransformComponent transform;
CameraComponent camera; CameraComponent camera;
SceneCamera() {} WorldCamera() {}
SceneCamera(TransformComponent _transform, CameraComponent _camera) : transform(_transform), camera(_camera) {} WorldCamera(TransformComponent _transform, CameraComponent _camera) : transform(_transform), camera(_camera) {}
}; };
} // namespace Deer } // namespace Deer

View File

@ -1,27 +0,0 @@
#pragma once
#include "cereal/cereal.hpp"
#include "cereal/types/string.hpp"
#include "cereal/types/vector.hpp"
// Serialization Vars
#include "DeerCore/Scene/Serialization/SerializationGlobalVars.h"
// GENERICS
#include "DeerCore/Scene/Serialization/QuatSerialization.h"
#include "DeerCore/Scene/Serialization/Vec3Serialization.h"
// SCENE SPECIFIC
#include "DeerCore/Scene/Serialization/EntityEnvironmentSerialization.h"
#include "DeerCore/Scene/Serialization/EntitySerialization.h"
// COMPONENTS SPECIFIC
#include "DeerCore/Scene/Serialization/Components/RelationshipComponentSerialization.h"
#include "DeerCore/Scene/Serialization/Components/TransformComponentSerialization.h"
// RENDER SPECIFIC
#ifdef DEER_RENDER
#include "DeerRender/Scene/Serialization/Components/CameraSerializationComponent.h"
#include "DeerRender/Scene/Serialization/Components/MeshRenderComponentSerialization.h"
#include "DeerRender/Scene/Serialization/Components/TextureBindingSerializationComponent.h"
#endif

View File

@ -1,5 +1,5 @@
#include "DeerCore/Components.h" #include "DeerCore/Components.h"
#include "DeerCore/Enviroment.h" #include "DeerCore/EntityEnviroment.h"
#include "DeerCore/Log.h" #include "DeerCore/Log.h"
namespace Deer { namespace Deer {

View File

@ -1,4 +1,4 @@
#include "DeerCore/Enviroment.h" #include "DeerCore/EntityEnviroment.h"
#include "DeerCore/Application.h" #include "DeerCore/Application.h"
#include "DeerCore/Components.h" #include "DeerCore/Components.h"

View File

@ -1,4 +1,4 @@
#include "DeerCore/Enviroment.h" #include "DeerCore/EntityEnviroment.h"
namespace Deer { namespace Deer {
Scope<EntityEnvironment> ResourceBuilder<EntityEnvironment>::buildResource(const BaseDataType& baseData) { Scope<EntityEnvironment> ResourceBuilder<EntityEnvironment>::buildResource(const BaseDataType& baseData) {

View File

@ -1,8 +1,8 @@
#pragma once #pragma once
#include "DeerCore/Components.h" #include "DeerCore/Components.h"
#include "DeerCore/Enviroment.h" #include "DeerCore/EntityEnviroment.h"
#include "DeerCore/Scene/Serialization/SerializationGlobalVars.h" #include "DeerCore/World/Serialization/SerializationGlobalVars.h"
#include "EntitySerializationStruct.h" #include "EntitySerializationStruct.h"
namespace Deer { namespace Deer {

View File

@ -2,7 +2,7 @@
#include <cstdint> #include <cstdint>
#include <vector> #include <vector>
#include "DeerCore/Enviroment.h" #include "DeerCore/EntityEnviroment.h"
#include "EntitySerializationStruct.h" #include "EntitySerializationStruct.h"
namespace Deer { namespace Deer {

View File

@ -0,0 +1,27 @@
#pragma once
#include "cereal/cereal.hpp"
#include "cereal/types/string.hpp"
#include "cereal/types/vector.hpp"
// Serialization Vars
#include "DeerCore/World/Serialization/SerializationGlobalVars.h"
// GENERICS
#include "DeerCore/World/Serialization/QuatSerialization.h"
#include "DeerCore/World/Serialization/Vec3Serialization.h"
// SCENE SPECIFIC
#include "DeerCore/World/Serialization/EntityEnvironmentSerialization.h"
#include "DeerCore/World/Serialization/EntitySerialization.h"
// COMPONENTS SPECIFIC
#include "DeerCore/World/Serialization/Components/RelationshipComponentSerialization.h"
#include "DeerCore/World/Serialization/Components/TransformComponentSerialization.h"
// RENDER SPECIFIC
#ifdef DEER_RENDER
#include "DeerRender/World/Serialization/Components/CameraSerializationComponent.h"
#include "DeerRender/World/Serialization/Components/MeshRenderComponentSerialization.h"
#include "DeerRender/World/Serialization/Components/TextureBindingSerializationComponent.h"
#endif

View File

@ -1,10 +1,10 @@
#include "DeerCore/Scene.h" #include "DeerCore/World.h"
#include "DeerCore/Components.h" #include "DeerCore/Components.h"
#include "DeerCore/Enviroment.h" #include "DeerCore/EntityEnviroment.h"
#include "DeerCore/Log.h" #include "DeerCore/Log.h"
#include "DeerCore/Scene/SceneData.h"
#include "DeerCore/Tools/Memory.h" #include "DeerCore/Tools/Memory.h"
#include "DeerCore/World/WorldData.h"
#ifdef DEER_RENDER #ifdef DEER_RENDER
#include "DeerRender/FrameBuffer.h" #include "DeerRender/FrameBuffer.h"
@ -13,7 +13,7 @@
#endif #endif
namespace Deer { namespace Deer {
void Scene::clear() { void World::clear() {
environment.clear(); environment.clear();
#ifdef DEER_RENDER #ifdef DEER_RENDER
@ -24,19 +24,19 @@ namespace Deer {
#endif #endif
} }
bool Scene::getExecutingState() { bool World::getExecutingState() {
return isExecuting; return isExecuting;
} }
void Scene::initExecution() { void World::initExecution() {
DEER_CORE_ASSERT(!isExecuting, "Deer scene is already executing"); DEER_CORE_ASSERT(!isExecuting, "Deer scene is already executing");
isExecuting = true; isExecuting = true;
} }
void Scene::tickExecution() { void World::tickExecution() {
} }
void Scene::endExecution() { void World::endExecution() {
DEER_CORE_ASSERT(isExecuting, "Deer scene is not executing"); DEER_CORE_ASSERT(isExecuting, "Deer scene is not executing");
isExecuting = false; isExecuting = false;
} }

View File

@ -1,10 +1,10 @@
#include "DeerCore/Enviroment.h" #include "DeerCore/EntityEnviroment.h"
#include "DeerCore/Tools/Memory.h" #include "DeerCore/Tools/Memory.h"
namespace Deer { namespace Deer {
namespace Scene { namespace World {
EntityEnvironment environment; EntityEnvironment environment;
bool isExecuting = false; bool isExecuting = false;
} // namespace Scene } // namespace World
} // namespace Deer } // namespace Deer

View File

@ -4,9 +4,9 @@
namespace Deer { namespace Deer {
class EntityEnvironment; class EntityEnvironment;
namespace Scene { namespace World {
extern EntityEnvironment environment; extern EntityEnvironment environment;
extern bool isExecuting; extern bool isExecuting;
} // namespace Scene } // namespace World
} // namespace Deer } // namespace Deer

View File

@ -1,4 +1,4 @@
#include "DeerRender/Enviroment.h" #include "DeerRender/EntityEnviroment.h"
#include "DeerRender/Application.h" #include "DeerRender/Application.h"
@ -13,7 +13,7 @@
#include "DeerRender/Log.h" #include "DeerRender/Log.h"
namespace Deer { namespace Deer {
void EntityEnvironment::render(const SceneCamera& camera) { void EntityEnvironment::render(const WorldCamera& camera) {
glm::mat4 camMatrix = glm::inverse(camera.transform.getMatrix()); glm::mat4 camMatrix = glm::inverse(camera.transform.getMatrix());
glm::mat4 projectionMatrix = camera.camera.getMatrix(); glm::mat4 projectionMatrix = camera.camera.getMatrix();
glm::mat4 invertZ = glm::scale(glm::mat4(1.0f), glm::vec3(1, 1, -1)); glm::mat4 invertZ = glm::scale(glm::mat4(1.0f), glm::vec3(1, 1, -1));

View File

@ -1,25 +1,25 @@
#include "DeerRender/Scene.h" #include "DeerRender/World.h"
#include "DeerRender/Components.h" #include "DeerRender/Components.h"
#include "DeerRender/Enviroment.h" #include "DeerRender/EntityEnviroment.h"
#include "DeerRender/Render/RenderCommand.h" #include "DeerRender/Render/RenderCommand.h"
#include "DeerRender/Scene.h" #include "DeerRender/World.h"
namespace Deer { namespace Deer {
void Scene::render() { void World::render() {
uint32_t mainCamera = environment.tryGetMainCamera(); uint32_t mainCamera = environment.tryGetMainCamera();
if (mainCamera == 0) if (mainCamera == 0)
return; return;
Entity& m_cameraEntity = environment.getEntity(mainCamera); Entity& m_cameraEntity = environment.getEntity(mainCamera);
SceneCamera sceneCamera; WorldCamera sceneCamera;
sceneCamera.camera = m_cameraEntity.getComponent<CameraComponent>(); sceneCamera.camera = m_cameraEntity.getComponent<CameraComponent>();
sceneCamera.transform = m_cameraEntity.getComponent<TransformComponent>(); sceneCamera.transform = m_cameraEntity.getComponent<TransformComponent>();
Scene::render(sceneCamera); World::render(sceneCamera);
} }
void Scene::render(const SceneCamera& sceneCamera) { void World::render(const WorldCamera& sceneCamera) {
RenderCommand::setDepthBuffer(true); RenderCommand::setDepthBuffer(true);
environment.render(sceneCamera); environment.render(sceneCamera);

View File

@ -1,14 +1,14 @@
#pragma once #pragma once
#include "GenericRefStructs.h" #include "GenericRefStructs.h"
#include <string> #include <string>
// #include "DeerRender/Scene.h" // #include "DeerRender/World.h"
namespace Deer { namespace Deer {
class SceneCamera; class WorldCamera;
namespace StudioAPI { namespace StudioAPI {
struct EntityEnvironmentStruct : EntityEnvironmentHandleStruct { struct EntityEnvironmentStruct : EntityEnvironmentHandleStruct {
void render(FrameBufferHandleStruct, SceneCamera&); void render(FrameBufferHandleStruct, WorldCamera&);
EntityHandleStruct getRootEntity(); EntityHandleStruct getRootEntity();
EntityHandleStruct getEntity(int); EntityHandleStruct getEntity(int);

View File

@ -3,7 +3,7 @@
#include "glm/gtc/quaternion.hpp" #include "glm/gtc/quaternion.hpp"
#include "DeerRender/Components.h" #include "DeerRender/Components.h"
#include "DeerRender/Scene.h" #include "DeerRender/World.h"
namespace Deer { namespace Deer {
namespace StudioAPI { namespace StudioAPI {
@ -26,7 +26,7 @@ namespace Deer {
void transform_construct(TransformComponent*); void transform_construct(TransformComponent*);
void camera_construct(CameraComponent*); void camera_construct(CameraComponent*);
void sceneCamera_Construct(SceneCamera*); void sceneCamera_Construct(WorldCamera*);
glm::vec3 transform_relative(glm::vec3, TransformComponent*); glm::vec3 transform_relative(glm::vec3, TransformComponent*);

View File

@ -15,7 +15,7 @@ namespace Deer {
REGISTER_GLOBAL_FUNC("EntityEnvironment createLoadEntityEnvironment(const string&in envId)", StudioAPI::createLoadEntityEnvironment); REGISTER_GLOBAL_FUNC("EntityEnvironment createLoadEntityEnvironment(const string&in envId)", StudioAPI::createLoadEntityEnvironment);
scriptEngine->SetDefaultNamespace(""); scriptEngine->SetDefaultNamespace("");
REGISTER_OBJECT_METHOD("EntityEnvironment", "void render(FrameBuffer, SceneCamera&in)", StudioAPI::EntityEnvironmentStruct, render); REGISTER_OBJECT_METHOD("EntityEnvironment", "void render(FrameBuffer, WorldCamera&in)", StudioAPI::EntityEnvironmentStruct, render);
REGISTER_OBJECT_METHOD("EntityEnvironment", "Entity getRootEntity()", StudioAPI::EntityEnvironmentStruct, getRootEntity); REGISTER_OBJECT_METHOD("EntityEnvironment", "Entity getRootEntity()", StudioAPI::EntityEnvironmentStruct, getRootEntity);
REGISTER_OBJECT_METHOD("EntityEnvironment", "Entity getEntity(int)", StudioAPI::EntityEnvironmentStruct, getEntity); REGISTER_OBJECT_METHOD("EntityEnvironment", "Entity getEntity(int)", StudioAPI::EntityEnvironmentStruct, getEntity);
} }

View File

@ -27,9 +27,9 @@ namespace Deer {
AS_CHECK(scriptEngine->RegisterObjectProperty("Camera", "float nearZ", asOFFSET(CameraComponent, nearZ))); AS_CHECK(scriptEngine->RegisterObjectProperty("Camera", "float nearZ", asOFFSET(CameraComponent, nearZ)));
AS_CHECK(scriptEngine->RegisterObjectProperty("Camera", "float farZ", asOFFSET(CameraComponent, farZ))); AS_CHECK(scriptEngine->RegisterObjectProperty("Camera", "float farZ", asOFFSET(CameraComponent, farZ)));
AS_CHECK(scriptEngine->RegisterObjectType("SceneCamera", sizeof(SceneCamera), asOBJ_VALUE | asOBJ_POD | asGetTypeTraits<SceneCamera>())); AS_CHECK(scriptEngine->RegisterObjectType("WorldCamera", sizeof(WorldCamera), asOBJ_VALUE | asOBJ_POD | asGetTypeTraits<WorldCamera>()));
AS_CHECK(scriptEngine->RegisterObjectProperty("SceneCamera", "Camera camera", asOFFSET(SceneCamera, camera))); AS_CHECK(scriptEngine->RegisterObjectProperty("WorldCamera", "Camera camera", asOFFSET(WorldCamera, camera)));
AS_CHECK(scriptEngine->RegisterObjectProperty("SceneCamera", "Transform transform", asOFFSET(SceneCamera, transform))); AS_CHECK(scriptEngine->RegisterObjectProperty("WorldCamera", "Transform transform", asOFFSET(WorldCamera, transform)));
} }
void AngelScriptEngine::registerMathFunctions() { void AngelScriptEngine::registerMathFunctions() {
@ -49,7 +49,7 @@ namespace Deer {
REGISTER_EXT_OBJECT_CONSTRUCTOR("Transform", "void f()", StudioAPI::transform_construct); REGISTER_EXT_OBJECT_CONSTRUCTOR("Transform", "void f()", StudioAPI::transform_construct);
REGISTER_EXT_OBJECT_CONSTRUCTOR("Camera", "void f()", StudioAPI::camera_construct); REGISTER_EXT_OBJECT_CONSTRUCTOR("Camera", "void f()", StudioAPI::camera_construct);
REGISTER_EXT_OBJECT_CONSTRUCTOR("SceneCamera", "void f()", StudioAPI::sceneCamera_Construct); REGISTER_EXT_OBJECT_CONSTRUCTOR("WorldCamera", "void f()", StudioAPI::sceneCamera_Construct);
REGISTER_EXT_OBJECT_METHOD("Transform", "vec3 relative(vec3)", StudioAPI::transform_relative); REGISTER_EXT_OBJECT_METHOD("Transform", "vec3 relative(vec3)", StudioAPI::transform_relative);
} }

View File

@ -2,8 +2,8 @@
#include "DeerStudio/AngelScriptEngine.h" #include "DeerStudio/AngelScriptEngine.h"
#include "DeerRender/DataStore.h" #include "DeerRender/DataStore.h"
#include "DeerRender/Scene.h"
#include "DeerRender/Tools/Path.h" #include "DeerRender/Tools/Path.h"
#include "DeerRender/World.h"
#include "DeerRender/Application.h" #include "DeerRender/Application.h"
@ -44,7 +44,7 @@ namespace Deer {
AngelScriptEngine::deinitialize(); AngelScriptEngine::deinitialize();
RenderUtils::deinitializeRenderUtils(); RenderUtils::deinitializeRenderUtils();
Scene::clear(); World::clear();
Application::shutdownWindow(); Application::shutdownWindow();
Log::shutdown(); Log::shutdown();

View File

@ -2,14 +2,14 @@
#include "DeerStudio/AngelScriptEngine.h" #include "DeerStudio/AngelScriptEngine.h"
#include "DeerRender/Components.h" #include "DeerRender/Components.h"
#include "DeerRender/Enviroment.h" #include "DeerRender/EntityEnviroment.h"
#include "DeerRender/Scene.h" #include "DeerRender/World.h"
#include "DeerRender/Resource.h" #include "DeerRender/Resource.h"
#include <vector> #include <vector>
#define GET_ENV(env) ((env < 0) ? Scene::environment : Deer::Resource<EntityEnvironment>::unsafeFromId(environmentId).getData()) #define GET_ENV(env) ((env < 0) ? World::environment : Deer::Resource<EntityEnvironment>::unsafeFromId(environmentId).getData())
#define GET_ENTITY(env, id) GET_ENV(env).getEntity(id) #define GET_ENTITY(env, id) GET_ENV(env).getEntity(id)
#define GET_MESH_COMPONENT(env, id) \ #define GET_MESH_COMPONENT(env, id) \
@ -48,7 +48,7 @@ namespace Deer {
EntityEnvironment* EntityHandleStruct::getEntityEntityEnvironment() { EntityEnvironment* EntityHandleStruct::getEntityEntityEnvironment() {
if (environmentId < 0) if (environmentId < 0)
return &Scene::environment; return &World::environment;
return &Resource<EntityEnvironment>::unsafeFromId(environmentId).getData(); return &Resource<EntityEnvironment>::unsafeFromId(environmentId).getData();
} }
@ -93,7 +93,7 @@ namespace Deer {
bool EntityStruct::exists() { bool EntityStruct::exists() {
ASSERT_ENTITY("exists()", return false); ASSERT_ENTITY("exists()", return false);
return Scene::environment.entityExists(entityId); return World::environment.entityExists(entityId);
} }
void EntityStruct::setParent(EntityHandleStruct parent_struct) { void EntityStruct::setParent(EntityHandleStruct parent_struct) {
@ -198,7 +198,7 @@ namespace Deer {
EntityEnvironment* env; EntityEnvironment* env;
if (environmentId < 0) if (environmentId < 0)
env = &Scene::environment; env = &World::environment;
else else
env = &Resource<EntityEnvironment>::unsafeFromId(environmentId).getData(); env = &Resource<EntityEnvironment>::unsafeFromId(environmentId).getData();

View File

@ -1,27 +1,27 @@
#include "DeerRender/Enviroment.h" #include "DeerRender/EntityEnviroment.h"
#include "DeerRender/Resource.h" #include "DeerRender/Resource.h"
#include "DeerRender/Scene.h"
#include "DeerRender/Tools/Memory.h" #include "DeerRender/Tools/Memory.h"
#include "DeerRender/World.h"
#include "DeerStudio/StudioAPI/EntityEnvironment.h" #include "DeerStudio/StudioAPI/EntityEnvironment.h"
#include "DeerRender/FrameBuffer.h" #include "DeerRender/FrameBuffer.h"
#include "DeerRender/Scene.h" #include "DeerRender/World.h"
#include <vector> #include <vector>
namespace Deer { namespace Deer {
namespace StudioAPI { namespace StudioAPI {
// The first element has to allways point to the main scene env // The first element has to allways point to the main scene env
std::vector<EntityEnvironment*> environments{&Scene::environment}; std::vector<EntityEnvironment*> environments{&World::environment};
void EntityEnvironmentStruct::render(FrameBufferHandleStruct frameBuffer_handle, SceneCamera& sc) { void EntityEnvironmentStruct::render(FrameBufferHandleStruct frameBuffer_handle, WorldCamera& sc) {
Resource<FrameBuffer> frameBufferResource = Resource<FrameBuffer>::unsafeFromId(frameBuffer_handle.frameBufferId); Resource<FrameBuffer> frameBufferResource = Resource<FrameBuffer>::unsafeFromId(frameBuffer_handle.frameBufferId);
FrameBuffer& frameBuffer = frameBufferResource.getData(); FrameBuffer& frameBuffer = frameBufferResource.getData();
EntityEnvironment* envPtr = nullptr; EntityEnvironment* envPtr = nullptr;
if (environmentId < 0) { if (environmentId < 0) {
envPtr = &Scene::environment; envPtr = &World::environment;
} else { } else {
Resource<EntityEnvironment> environmentResource = Resource<EntityEnvironment>::unsafeFromId(environmentId); Resource<EntityEnvironment> environmentResource = Resource<EntityEnvironment>::unsafeFromId(environmentId);
envPtr = &environmentResource.getData(); envPtr = &environmentResource.getData();

View File

@ -49,8 +49,8 @@ namespace Deer {
void camera_construct(CameraComponent* mem) { void camera_construct(CameraComponent* mem) {
new (mem) CameraComponent(); new (mem) CameraComponent();
} }
void sceneCamera_Construct(SceneCamera* mem) { void sceneCamera_Construct(WorldCamera* mem) {
new (mem) SceneCamera(); new (mem) WorldCamera();
} }
} // namespace StudioAPI } // namespace StudioAPI

View File

@ -1,6 +1,6 @@
class RenderService : Service { class RenderService : Service {
EntityEnvir nment env; EntityEnvir nment env;
SceneCamera sceneCamera; WorldCamera sceneCamera;
MeshComponent meshC; MeshComponent meshC;
Entity child; Entity child;

View File

@ -1,6 +1,6 @@
class ViewportPanel : Panel { class ViewportPanel : Panel {
FrameBuffer frameBuffer; FrameBuffer frameBuffer;
SceneCamera sceneCamera; WorldCamera sceneCamera;
EntityEnvir nment mainEnv; EntityEnvir nment mainEnv;
float pitch = 0; float pitch = 0;