Config增加FPS配置
This commit is contained in:
		
							parent
							
								
									cca05d9c47
								
							
						
					
					
						commit
						dda7e17347
					
				|  | @ -9,9 +9,10 @@ using namespace std::chrono; | ||||||
| e2d::Game * e2d::Game::_instance = nullptr; | e2d::Game * e2d::Game::_instance = nullptr; | ||||||
| 
 | 
 | ||||||
| e2d::Game::Game() | e2d::Game::Game() | ||||||
| 	: _ended(true) | 	: _quit(true) | ||||||
| 	, _paused(false) | 	, _paused(false) | ||||||
| 	, _config(nullptr) | 	, _config() | ||||||
|  | 	, _frameInterval(_config.getFrameInterval()) | ||||||
| { | { | ||||||
| 	CoInitialize(nullptr); | 	CoInitialize(nullptr); | ||||||
| 
 | 
 | ||||||
|  | @ -20,8 +21,6 @@ e2d::Game::Game() | ||||||
| 
 | 
 | ||||||
| e2d::Game::~Game() | e2d::Game::~Game() | ||||||
| { | { | ||||||
| 	GC::getInstance()->safeRelease(_config); |  | ||||||
| 
 |  | ||||||
| 	CoUninitialize(); | 	CoUninitialize(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -68,25 +67,21 @@ void e2d::Game::start() | ||||||
| 	window->poll(); | 	window->poll(); | ||||||
| 
 | 
 | ||||||
| 	// ¿ªÊ¼ÓÎÏ·
 | 	// ¿ªÊ¼ÓÎÏ·
 | ||||||
| 	Duration frameInterval(15), interval; | 	Duration interval; | ||||||
| 	int wait = 0; | 	int wait = 0; | ||||||
| 	 | 	 | ||||||
| 	_ended = false; | 	_quit = false; | ||||||
| 	_last = _now = Time::now(); | 	_last = _now = Time::now(); | ||||||
| 
 | 
 | ||||||
| 	while (!_ended) | 	while (!_quit) | ||||||
| 	{ | 	{ | ||||||
| 		_now = Time::now(); | 		_now = Time::now(); | ||||||
| 		interval = _now - _last; | 		interval = _now - _last; | ||||||
| 
 | 
 | ||||||
| 		if (frameInterval < interval) | 		if (_frameInterval < interval) | ||||||
| 		{ | 		{ | ||||||
| 			_last += interval; | 			_last = _now; | ||||||
| 
 | 
 | ||||||
| 			if (_config) |  | ||||||
| 			{ |  | ||||||
| 				_config->_update(); |  | ||||||
| 			} |  | ||||||
| 			input->update(); | 			input->update(); | ||||||
| 			timer->update(); | 			timer->update(); | ||||||
| 			actionManager->update(); | 			actionManager->update(); | ||||||
|  | @ -97,7 +92,7 @@ void e2d::Game::start() | ||||||
| 		} | 		} | ||||||
| 		else | 		else | ||||||
| 		{ | 		{ | ||||||
| 			wait = (frameInterval - interval).milliseconds() - 1; | 			wait = (_frameInterval - interval).milliseconds() - 1; | ||||||
| 			if (wait > 1) | 			if (wait > 1) | ||||||
| 			{ | 			{ | ||||||
| 				std::this_thread::sleep_for(milliseconds(wait)); | 				std::this_thread::sleep_for(milliseconds(wait)); | ||||||
|  | @ -113,7 +108,7 @@ void e2d::Game::pause() | ||||||
| 
 | 
 | ||||||
| void e2d::Game::resume() | void e2d::Game::resume() | ||||||
| { | { | ||||||
| 	if (_paused && !_ended) | 	if (_paused && !_quit) | ||||||
| 	{ | 	{ | ||||||
| 		_last = _now = Time::now(); | 		_last = _now = Time::now(); | ||||||
| 		Timer::getInstance()->updateTime(); | 		Timer::getInstance()->updateTime(); | ||||||
|  | @ -127,21 +122,24 @@ bool e2d::Game::isPaused() | ||||||
| 	return _paused; | 	return _paused; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Game::setConfig(Config* config) | void e2d::Game::setConfig(const Config& config) | ||||||
| { | { | ||||||
| 	if (config && _config != config) |  | ||||||
| 	{ |  | ||||||
| 		if (_config) _config->release(); |  | ||||||
| 	_config = config; | 	_config = config; | ||||||
| 		_config->_unconfigured = true; | 	 | ||||||
| 		_config->retain(); | 	if (_config.isSoundEnabled()) | ||||||
|  | 	{ | ||||||
|  | 		Player::getInstance()->getXAudio2()->StartEngine(); | ||||||
| 	} | 	} | ||||||
|  | 	else | ||||||
|  | 	{ | ||||||
|  | 		Player::getInstance()->getXAudio2()->StopEngine(); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	_frameInterval = Duration(_config.getFrameInterval()); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::Config* e2d::Game::getConfig() | const e2d::Config& e2d::Game::getConfig() | ||||||
| { | { | ||||||
| 	if (!_config) |  | ||||||
| 		_config = new (e2d::autorelease) Config(); |  | ||||||
| 	return _config; | 	return _config; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -152,7 +150,7 @@ e2d::Duration e2d::Game::getTotalDuration() const | ||||||
| 
 | 
 | ||||||
| void e2d::Game::quit() | void e2d::Game::quit() | ||||||
| { | { | ||||||
| 	_ended = true;	// 这个变量将控制游戏是否结束
 | 	_quit = true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Game::cleanup() | void e2d::Game::cleanup() | ||||||
|  |  | ||||||
|  | @ -37,10 +37,8 @@ void e2d::Renderer::destroyInstance() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::Renderer::Renderer() | e2d::Renderer::Renderer() | ||||||
| 	: _renderTimes(0) | 	: _lastRenderTime(0) | ||||||
| 	, _lastRenderTime(0) |  | ||||||
| 	, _fpsFormat(nullptr) | 	, _fpsFormat(nullptr) | ||||||
| 	, _fpsLayout(nullptr) |  | ||||||
| 	, _renderTarget(nullptr) | 	, _renderTarget(nullptr) | ||||||
| 	, _solidBrush(nullptr) | 	, _solidBrush(nullptr) | ||||||
| 	, _textRenderer(nullptr) | 	, _textRenderer(nullptr) | ||||||
|  | @ -54,7 +52,6 @@ e2d::Renderer::Renderer() | ||||||
| e2d::Renderer::~Renderer() | e2d::Renderer::~Renderer() | ||||||
| { | { | ||||||
| 	SafeRelease(_fpsFormat); | 	SafeRelease(_fpsFormat); | ||||||
| 	SafeRelease(_fpsLayout); |  | ||||||
| 	SafeRelease(_textRenderer); | 	SafeRelease(_textRenderer); | ||||||
| 	SafeRelease(_solidBrush); | 	SafeRelease(_solidBrush); | ||||||
| 	SafeRelease(_renderTarget); | 	SafeRelease(_renderTarget); | ||||||
|  | @ -131,7 +128,7 @@ void e2d::Renderer::render() | ||||||
| 	SceneManager::getInstance()->render(); | 	SceneManager::getInstance()->render(); | ||||||
| 
 | 
 | ||||||
| 	// äÖȾ FPS
 | 	// äÖȾ FPS
 | ||||||
| 	if (Game::getInstance()->getConfig()->isFpsShow()) | 	if (Game::getInstance()->getConfig().isFpsShow()) | ||||||
| 	{ | 	{ | ||||||
| 		_renderFps(); | 		_renderFps(); | ||||||
| 	} | 	} | ||||||
|  | @ -155,20 +152,17 @@ void e2d::Renderer::render() | ||||||
| 
 | 
 | ||||||
| void e2d::Renderer::_renderFps() | void e2d::Renderer::_renderFps() | ||||||
| { | { | ||||||
| 	++_renderTimes; |  | ||||||
| 
 |  | ||||||
| 	double duration = Game::getInstance()->getTotalDuration().seconds(); | 	double duration = Game::getInstance()->getTotalDuration().seconds(); | ||||||
| 	double delay = duration - _lastRenderTime; | 	if (duration == _lastRenderTime) | ||||||
| 	if (delay >= 0.1) | 		return; | ||||||
| 	{ | 
 | ||||||
| 		String fpsText = String::format(L"FPS: %.1lf", (1 / delay) * _renderTimes); | 	String fpsText = String::format(L"FPS: %.1lf", (1.0 / (duration - _lastRenderTime))); | ||||||
| 	_lastRenderTime = duration; | 	_lastRenderTime = duration; | ||||||
| 		_renderTimes = 0; |  | ||||||
| 
 | 
 | ||||||
| 	auto writeFactory = Renderer::getWriteFactory(); | 	auto writeFactory = Renderer::getWriteFactory(); | ||||||
| 	if (!_fpsFormat) | 	if (!_fpsFormat) | ||||||
| 	{ | 	{ | ||||||
| 			writeFactory->CreateTextFormat( | 		HRESULT hr = writeFactory->CreateTextFormat( | ||||||
| 			L"", | 			L"", | ||||||
| 			nullptr, | 			nullptr, | ||||||
| 			DWRITE_FONT_WEIGHT_NORMAL, | 			DWRITE_FONT_WEIGHT_NORMAL, | ||||||
|  | @ -178,25 +172,28 @@ void e2d::Renderer::_renderFps() | ||||||
| 			L"", | 			L"", | ||||||
| 			&_fpsFormat | 			&_fpsFormat | ||||||
| 		); | 		); | ||||||
| 		} |  | ||||||
| 
 | 
 | ||||||
| 		if (_fpsFormat) | 		if (SUCCEEDED(hr)) | ||||||
| 		{ | 		{ | ||||||
| 			_fpsFormat->SetWordWrapping(DWRITE_WORD_WRAPPING_NO_WRAP); | 			_fpsFormat->SetWordWrapping(DWRITE_WORD_WRAPPING_NO_WRAP); | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			return; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 			SafeRelease(_fpsLayout); | 	IDWriteTextLayout * fpsLayout = nullptr; | ||||||
| 			writeFactory->CreateTextLayout( | 	HRESULT hr = writeFactory->CreateTextLayout( | ||||||
| 		(const WCHAR *)fpsText, | 		(const WCHAR *)fpsText, | ||||||
| 		(UINT32)fpsText.getLength(), | 		(UINT32)fpsText.getLength(), | ||||||
| 		_fpsFormat, | 		_fpsFormat, | ||||||
| 		0, | 		0, | ||||||
| 		0, | 		0, | ||||||
| 				&_fpsLayout | 		&fpsLayout | ||||||
| 	); | 	); | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	if (_fpsLayout) | 	if (SUCCEEDED(hr)) | ||||||
| 	{ | 	{ | ||||||
| 		_renderTarget->SetTransform(D2D1::Matrix3x2F::Identity()); | 		_renderTarget->SetTransform(D2D1::Matrix3x2F::Identity()); | ||||||
| 		_solidBrush->SetOpacity(1.0f); | 		_solidBrush->SetOpacity(1.0f); | ||||||
|  | @ -210,8 +207,10 @@ void e2d::Renderer::_renderFps() | ||||||
| 			D2D1_LINE_JOIN_ROUND | 			D2D1_LINE_JOIN_ROUND | ||||||
| 		); | 		); | ||||||
| 
 | 
 | ||||||
| 		_fpsLayout->Draw(nullptr, textRenderer, 10, 0); | 		fpsLayout->Draw(nullptr, textRenderer, 10, 0); | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	SafeRelease(fpsLayout); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::Color e2d::Renderer::getBackgroundColor() | e2d::Color e2d::Renderer::getBackgroundColor() | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ e2d::Collider::Collider(Node * parent) | ||||||
| 	, _shape(Collider::Shape::None) | 	, _shape(Collider::Shape::None) | ||||||
| 	, _notify(true) | 	, _notify(true) | ||||||
| { | { | ||||||
| 	_shape = Game::getInstance()->getConfig()->getDefaultColliderShape(); | 	_shape = Game::getInstance()->getConfig().getDefaultColliderShape(); | ||||||
| 	CollisionManager::getInstance()->__addCollider(this); | 	CollisionManager::getInstance()->__addCollider(this); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -5,12 +5,12 @@ e2d::Config::Config() | ||||||
| 	: _gameName() | 	: _gameName() | ||||||
| 	, _defaultNodePivot() | 	, _defaultNodePivot() | ||||||
| 	, _soundEnabled(true) | 	, _soundEnabled(true) | ||||||
|  | 	, _frameInterval(15) | ||||||
| 	, _showFps(false) | 	, _showFps(false) | ||||||
| 	, _outlineVisible(false) | 	, _outlineVisible(false) | ||||||
| 	, _collisionEnabled(false) | 	, _collisionEnabled(false) | ||||||
| 	, _colliderVisible(false) | 	, _colliderVisible(false) | ||||||
| 	, _defaultColliderShape(Collider::Shape::None) | 	, _defaultColliderShape(Collider::Shape::None) | ||||||
| 	, _unconfigured(true) |  | ||||||
| { | { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -28,6 +28,11 @@ void e2d::Config::showFps(bool show) | ||||||
| 	_showFps = show; | 	_showFps = show; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void e2d::Config::setFrameInterval(int interval) | ||||||
|  | { | ||||||
|  | 	_frameInterval = interval; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void e2d::Config::setOutlineVisible(bool visible) | void e2d::Config::setOutlineVisible(bool visible) | ||||||
| { | { | ||||||
| 	_outlineVisible = visible; | 	_outlineVisible = visible; | ||||||
|  | @ -35,11 +40,7 @@ void e2d::Config::setOutlineVisible(bool visible) | ||||||
| 
 | 
 | ||||||
| void e2d::Config::setSoundEnabled(bool enabled) | void e2d::Config::setSoundEnabled(bool enabled) | ||||||
| { | { | ||||||
| 	if (_soundEnabled != enabled) |  | ||||||
| 	{ |  | ||||||
| 	_soundEnabled = enabled; | 	_soundEnabled = enabled; | ||||||
| 		_unconfigured = true; |  | ||||||
| 	} |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Config::setCollisionEnabled(bool enabled) | void e2d::Config::setCollisionEnabled(bool enabled) | ||||||
|  | @ -80,6 +81,11 @@ bool e2d::Config::isFpsShow() const | ||||||
| 	return _showFps; | 	return _showFps; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | int e2d::Config::getFrameInterval() const | ||||||
|  | { | ||||||
|  | 	return _frameInterval; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| bool e2d::Config::isOutlineVisible() const | bool e2d::Config::isOutlineVisible() const | ||||||
| { | { | ||||||
| 	return _outlineVisible; | 	return _outlineVisible; | ||||||
|  | @ -104,20 +110,3 @@ bool e2d::Config::isColliderVisible() const | ||||||
| { | { | ||||||
| 	return _colliderVisible; | 	return _colliderVisible; | ||||||
| } | } | ||||||
| 
 |  | ||||||
| void e2d::Config::_update() |  | ||||||
| { |  | ||||||
| 	if (!_unconfigured) |  | ||||||
| 		return; |  | ||||||
| 
 |  | ||||||
| 	_unconfigured = false; |  | ||||||
| 
 |  | ||||||
| 	if (_soundEnabled) |  | ||||||
| 	{ |  | ||||||
| 		Player::getInstance()->getXAudio2()->StartEngine(); |  | ||||||
| 	} |  | ||||||
| 	else |  | ||||||
| 	{ |  | ||||||
| 		Player::getInstance()->getXAudio2()->StopEngine(); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  | @ -20,13 +20,13 @@ void e2d::Scene::render() | ||||||
| { | { | ||||||
| 	_root->_render(); | 	_root->_render(); | ||||||
| 
 | 
 | ||||||
| 	if (Game::getInstance()->getConfig()->isOutlineVisible()) | 	if (Game::getInstance()->getConfig().isOutlineVisible()) | ||||||
| 	{ | 	{ | ||||||
| 		Renderer::getInstance()->getRenderTarget()->SetTransform(D2D1::Matrix3x2F::Identity()); | 		Renderer::getInstance()->getRenderTarget()->SetTransform(D2D1::Matrix3x2F::Identity()); | ||||||
| 		_root->_renderOutline(); | 		_root->_renderOutline(); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if (Game::getInstance()->getConfig()->isColliderVisible()) | 	if (Game::getInstance()->getConfig().isColliderVisible()) | ||||||
| 	{ | 	{ | ||||||
| 		Renderer::getInstance()->getRenderTarget()->SetTransform(D2D1::Matrix3x2F::Identity()); | 		Renderer::getInstance()->getRenderTarget()->SetTransform(D2D1::Matrix3x2F::Identity()); | ||||||
| 		_root->_renderCollider(); | 		_root->_renderCollider(); | ||||||
|  |  | ||||||
|  | @ -46,7 +46,7 @@ void e2d::CollisionManager::__removeCollider(Collider * collider) | ||||||
| void e2d::CollisionManager::__updateCollider(Collider* collider) | void e2d::CollisionManager::__updateCollider(Collider* collider) | ||||||
| { | { | ||||||
| 	if (Game::getInstance()->isPaused() || | 	if (Game::getInstance()->isPaused() || | ||||||
| 		!Game::getInstance()->getConfig()->isCollisionEnabled() || | 		!Game::getInstance()->getConfig().isCollisionEnabled() || | ||||||
| 		SceneManager::getInstance()->isTransitioning() || | 		SceneManager::getInstance()->isTransitioning() || | ||||||
| 		!collider->isCollisionNotify()) | 		!collider->isCollisionNotify()) | ||||||
| 		return; | 		return; | ||||||
|  |  | ||||||
|  | @ -69,7 +69,7 @@ e2d::Node::Node() | ||||||
| 	, _extrapolate(Property::Origin) | 	, _extrapolate(Property::Origin) | ||||||
| { | { | ||||||
| 	// 设置默认中心点位置
 | 	// 设置默认中心点位置
 | ||||||
| 	Point defPivot = Game::getInstance()->getConfig()->getNodeDefaultPivot(); | 	Point defPivot = Game::getInstance()->getConfig().getNodeDefaultPivot(); | ||||||
| 	this->_pivotX = float(defPivot.x); | 	this->_pivotX = float(defPivot.x); | ||||||
| 	this->_pivotY = float(defPivot.y); | 	this->_pivotY = float(defPivot.y); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -12,7 +12,7 @@ e2d::String e2d::Path::getDataPath() | ||||||
| 	{ | 	{ | ||||||
| 		// 设置数据的保存路径
 | 		// 设置数据的保存路径
 | ||||||
| 		String localAppDataPath = Path::getLocalAppDataPath(); | 		String localAppDataPath = Path::getLocalAppDataPath(); | ||||||
| 		String gameName = Game::getInstance()->getConfig()->getGameName(); | 		String gameName = Game::getInstance()->getConfig().getGameName(); | ||||||
| 		if (!localAppDataPath.isEmpty() && !gameName.isEmpty()) | 		if (!localAppDataPath.isEmpty() && !gameName.isEmpty()) | ||||||
| 		{ | 		{ | ||||||
| 			dataPath = localAppDataPath + L"\\Easy2DGameData\\" << gameName << L"\\"; | 			dataPath = localAppDataPath + L"\\Easy2DGameData\\" << gameName << L"\\"; | ||||||
|  | @ -35,7 +35,7 @@ e2d::String e2d::Path::getTempPath() | ||||||
| 	{ | 	{ | ||||||
| 		// 设置临时文件保存路径
 | 		// 设置临时文件保存路径
 | ||||||
| 		wchar_t path[_MAX_PATH]; | 		wchar_t path[_MAX_PATH]; | ||||||
| 		String gameName = Game::getInstance()->getConfig()->getGameName(); | 		String gameName = Game::getInstance()->getConfig().getGameName(); | ||||||
| 
 | 
 | ||||||
| 		if (0 != ::GetTempPath(_MAX_PATH, path) && !gameName.isEmpty()) | 		if (0 != ::GetTempPath(_MAX_PATH, path) && !gameName.isEmpty()) | ||||||
| 		{ | 		{ | ||||||
|  |  | ||||||
|  | @ -40,11 +40,11 @@ public: | ||||||
| 
 | 
 | ||||||
| 	// 修改游戏配置
 | 	// 修改游戏配置
 | ||||||
| 	void setConfig( | 	void setConfig( | ||||||
| 		Config* config | 		const Config& config | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	// 获取游戏配置
 | 	// 获取游戏配置
 | ||||||
| 	Config* getConfig(); | 	const Config& getConfig(); | ||||||
| 
 | 
 | ||||||
| 	// 获取游戏总时长
 | 	// 获取游戏总时长
 | ||||||
| 	Duration getTotalDuration() const; | 	Duration getTotalDuration() const; | ||||||
|  | @ -57,12 +57,13 @@ private: | ||||||
| 	E2D_DISABLE_COPY(Game); | 	E2D_DISABLE_COPY(Game); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
| 	bool		_ended; | 	bool		_quit; | ||||||
| 	bool		_paused; | 	bool		_paused; | ||||||
| 	Config*		_config; | 	Config		_config; | ||||||
| 	Time		_start; | 	Time		_start; | ||||||
| 	Time		_now; | 	Time		_now; | ||||||
| 	Time		_last; | 	Time		_last; | ||||||
|  | 	Duration	_frameInterval; | ||||||
| 
 | 
 | ||||||
| 	static Game * _instance; | 	static Game * _instance; | ||||||
| }; | }; | ||||||
|  | @ -335,12 +336,10 @@ private: | ||||||
| 	void _renderFps(); | 	void _renderFps(); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
| 	int						_renderTimes; |  | ||||||
| 	double					_lastRenderTime; | 	double					_lastRenderTime; | ||||||
| 	D2D1_COLOR_F			_clearColor; | 	D2D1_COLOR_F			_clearColor; | ||||||
| 	TextRenderer*			_textRenderer; | 	TextRenderer*			_textRenderer; | ||||||
| 	IDWriteTextFormat*		_fpsFormat; | 	IDWriteTextFormat*		_fpsFormat; | ||||||
| 	IDWriteTextLayout*		_fpsLayout; |  | ||||||
| 	ID2D1SolidColorBrush*	_solidBrush; | 	ID2D1SolidColorBrush*	_solidBrush; | ||||||
| 	ID2D1HwndRenderTarget*	_renderTarget; | 	ID2D1HwndRenderTarget*	_renderTarget; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1045,14 +1045,9 @@ protected: | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class Game; |  | ||||||
| 
 |  | ||||||
| // 游戏配置
 | // 游戏配置
 | ||||||
| class Config : | class Config | ||||||
| 	public Ref |  | ||||||
| { | { | ||||||
| 	friend class Game; |  | ||||||
| 
 |  | ||||||
| public: | public: | ||||||
| 	Config(); | 	Config(); | ||||||
| 
 | 
 | ||||||
|  | @ -1070,6 +1065,12 @@ public: | ||||||
| 		bool show | 		bool show | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
|  | 	// 设置帧率刷新间隔
 | ||||||
|  | 	// 默认:15
 | ||||||
|  | 	void setFrameInterval( | ||||||
|  | 		int interval | ||||||
|  | 	); | ||||||
|  | 
 | ||||||
| 	// 显示或隐藏节点轮廓
 | 	// 显示或隐藏节点轮廓
 | ||||||
| 	// 默认:隐藏
 | 	// 默认:隐藏
 | ||||||
| 	void setOutlineVisible( | 	void setOutlineVisible( | ||||||
|  | @ -1115,6 +1116,9 @@ public: | ||||||
| 	// 获取 FPS 显示状态
 | 	// 获取 FPS 显示状态
 | ||||||
| 	bool isFpsShow() const; | 	bool isFpsShow() const; | ||||||
| 
 | 
 | ||||||
|  | 	// 获取帧率刷新间隔
 | ||||||
|  | 	int getFrameInterval() const; | ||||||
|  | 
 | ||||||
| 	// 获取节点轮廓显示状态
 | 	// 获取节点轮廓显示状态
 | ||||||
| 	bool isOutlineVisible() const; | 	bool isOutlineVisible() const; | ||||||
| 
 | 
 | ||||||
|  | @ -1131,15 +1135,12 @@ public: | ||||||
| 	bool isColliderVisible() const; | 	bool isColliderVisible() const; | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
| 	virtual void _update(); |  | ||||||
| 
 |  | ||||||
| protected: |  | ||||||
| 	bool			_unconfigured; |  | ||||||
| 	bool			_showFps; | 	bool			_showFps; | ||||||
| 	bool			_soundEnabled; | 	bool			_soundEnabled; | ||||||
| 	bool			_outlineVisible; | 	bool			_outlineVisible; | ||||||
| 	bool			_collisionEnabled; | 	bool			_collisionEnabled; | ||||||
| 	bool			_colliderVisible; | 	bool			_colliderVisible; | ||||||
|  | 	int				_frameInterval; | ||||||
| 	String			_gameName; | 	String			_gameName; | ||||||
| 	Point			_defaultNodePivot; | 	Point			_defaultNodePivot; | ||||||
| 	Collider::Shape	_defaultColliderShape; | 	Collider::Shape	_defaultColliderShape; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue