/* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "stdafx.h" #include "scene/eu7/eu7_section.h" #include #include namespace scene::eu7 { std::pair section_row_column( glm::dvec3 const &world_location ) { auto const column { static_cast( std::floor( world_location.x / static_cast( kSectionSizeM ) + kRegionSideSectionCount / 2 ) ) }; auto const row { static_cast( std::floor( world_location.z / static_cast( kSectionSizeM ) + kRegionSideSectionCount / 2 ) ) }; return { std::clamp( row, 0, kRegionSideSectionCount - 1 ), std::clamp( column, 0, kRegionSideSectionCount - 1 ) }; } std::size_t section_index( glm::dvec3 const &world_location ) { auto const [row, column] { section_row_column( world_location ) }; return section_index( row, column ); } std::size_t section_index( int const row, int const column ) { return ( static_cast( row ) * static_cast( kRegionSideSectionCount ) + static_cast( column ) ); } } // namespace scene::eu7