#pragma once /* * Copyright (c) Contributors to the Open 3D Engine Project. * For complete copyright and license terms please see the LICENSE at the root of this distribution. * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #include #include #include #include #include namespace AZ { namespace SceneAPI { namespace Containers { // Scenes are used to store the scene's graph the hierarchy and the manifest for meta data as well // as a history of the files used to construct both. class SCENE_CORE_API Scene { public: AZ_TYPE_INFO(Scene, "{1F2E6142-B0D8-42C6-A6E5-CD726DAA9EF0}"); Scene() = default; explicit Scene(const AZStd::string& name); explicit Scene(AZStd::string&& name); void SetSource(const AZStd::string& filename, const Uuid& guid); void SetSource(AZStd::string&& filename, const Uuid& guid); const AZStd::string& GetSourceFilename() const; AZStd::string_view GetSourceExtension() const; const Uuid& GetSourceGuid() const; void SetWatchFolder(const AZStd::string& watchFolder); const AZStd::string& GetWatchFolder() const; void SetManifestFilename(const AZStd::string& name); void SetManifestFilename(AZStd::string&& name); const AZStd::string& GetManifestFilename() const; bool HasDimension() const; SceneGraph& GetGraph(); const SceneGraph& GetGraph() const; SceneManifest& GetManifest(); const SceneManifest& GetManifest() const; const AZStd::string& GetName() const; enum class SceneOrientation {YUp, ZUp, XUp, NegYUp, NegZUp, NegXUp}; void SetOriginalSceneOrientation(SceneOrientation orientation); void SetSceneDimension(Vector3 dimension); void SetSceneVertices(uint32_t vertices); SceneOrientation GetOriginalSceneOrientation() const; Vector3& GetSceneDimension(); uint32_t GetSceneVertices() const; static void Reflect(ReflectContext* context); private: // Disabling export warnings for private methods, clients wont have access to them AZ_PUSH_DISABLE_WARNING(4251, "-Wunknown-warning-option") AZStd::string m_name; AZStd::string m_manifestFilename; AZStd::string m_sourceFilename; AZStd::string m_watchFolder; Uuid m_sourceGuid; SceneGraph m_graph; SceneManifest m_manifest; SceneOrientation m_originalOrientation = SceneOrientation::YUp; Vector3 m_sceneDimension; uint32_t m_vertices; bool m_hasDimension{ false }; AZ_POP_DISABLE_WARNING }; } // Containers } // SceneAPI } // AZ