Commit is being made to allow additions of GPL3+ code previously un-addable. With these changes, contributions back to cuberite are possible with the backporting exemtion, as well as adding stuff in minetest with minetest code properly being read through and implimented to upgrade it to GPL3 from GPL2. project still has Apache2.0 license and credits to all its contributers, but now has the freedom of GPL3+ and all the code that can be implimented and shared with it.
73 lines
1.6 KiB
C++
73 lines
1.6 KiB
C++
|
|
/*
|
|
* Copyright 2011-2022 Cuberite Contributors
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
#pragma once
|
|
|
|
#include <QObject>
|
|
#include <QRunnable>
|
|
#include <memory>
|
|
|
|
|
|
|
|
|
|
// fwd:
|
|
class Region;
|
|
typedef std::shared_ptr<Region> RegionPtr;
|
|
|
|
class ChunkSource;
|
|
typedef std::shared_ptr<ChunkSource> ChunkSourcePtr;
|
|
|
|
|
|
|
|
|
|
|
|
class RegionLoader :
|
|
public QObject,
|
|
public QRunnable
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
RegionLoader(int a_RegionX, int a_RegionZ, RegionPtr a_Region, ChunkSourcePtr a_ChunkSource);
|
|
virtual ~RegionLoader() {}
|
|
|
|
/** Signals to all loaders that the app is shutting down and the loading should be aborted. */
|
|
static void shutdown() { m_IsShuttingDown = true; }
|
|
|
|
signals:
|
|
void loaded(int a_RegionX, int a_RegionZ);
|
|
|
|
protected:
|
|
virtual void run() override;
|
|
|
|
private:
|
|
/** Coords of the region to be loaded. */
|
|
int m_RegionX, m_RegionZ;
|
|
|
|
/** The region to be loaded. */
|
|
RegionPtr m_Region;
|
|
|
|
/** The chunk source to be used for individual chunks within the region. */
|
|
ChunkSourcePtr m_ChunkSource;
|
|
|
|
/** Flag that is set upon app exit to terminate the queued loaders faster. */
|
|
static volatile bool m_IsShuttingDown;
|
|
};
|
|
|
|
|
|
|
|
|