From owner-svn-ports-all@FreeBSD.ORG Sat Nov 15 12:20:44 2014 Return-Path: Delivered-To: svn-ports-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DB0911FF; Sat, 15 Nov 2014 12:20:44 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C6C0719D; Sat, 15 Nov 2014 12:20:44 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id sAFCKiGp079815; Sat, 15 Nov 2014 12:20:44 GMT (envelope-from makc@FreeBSD.org) Received: (from makc@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id sAFCKiL3079807; Sat, 15 Nov 2014 12:20:44 GMT (envelope-from makc@FreeBSD.org) Message-Id: <201411151220.sAFCKiL3079807@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: makc set sender to makc@FreeBSD.org using -f From: Max Brazhnikov Date: Sat, 15 Nov 2014 12:20:44 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r372595 - in head/games/dustrac: . files X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Nov 2014 12:20:45 -0000 Author: makc Date: Sat Nov 15 12:20:43 2014 New Revision: 372595 URL: https://svnweb.freebsd.org/changeset/ports/372595 QAT: https://qat.redports.org/buildarchive/r372595/ Log: games/dustrac: - Update to 1.8.1 - Remove upstreamed patches - Add upstream patch to fix build on 10.x - Remove option for Qt 4 (support has been ended upstream) Added: head/games/dustrac/files/patch-git6a7c41 (contents, props changed) Deleted: head/games/dustrac/files/patch-CMakeLists.txt head/games/dustrac/files/patch-src__editor__CMakeLists.txt head/games/dustrac/files/patch-src__game__CMakeLists.txt Modified: head/games/dustrac/Makefile head/games/dustrac/distinfo Modified: head/games/dustrac/Makefile ============================================================================== --- head/games/dustrac/Makefile Sat Nov 15 11:28:29 2014 (r372594) +++ head/games/dustrac/Makefile Sat Nov 15 12:20:43 2014 (r372595) @@ -1,8 +1,7 @@ # $FreeBSD$ PORTNAME= dustrac -PORTVERSION= 1.7.2 -PORTREVISION= 1 +PORTVERSION= 1.8.1 CATEGORIES= games MASTER_SITES= SF/${PORTNAME}/src @@ -11,28 +10,16 @@ COMMENT= 2D top-view racing game LIB_DEPENDS= libvorbisfile.so:${PORTSDIR}/audio/libvorbis -USES= compiler:c++11-lib cmake openal pkgconfig zip +USES= compiler:c++11-lib cmake:outsource openal pkgconfig USE_GL= glu -_USE_QT4= corelib opengl xml linguist_build \ - moc_build qmake_build rcc_build uic_build -_USE_QT5= core opengl xml widgets \ +USE_QT5= core opengl xml widgets \ buildtools_build linguisttools_build qmake_build CMAKE_ARGS= -DReleaseBuild=on \ -DDATA_PATH=${DATADIR} \ -DDOC_PATH=${DOCSDIR} -LDFLAGS= -L${LOCALBASE}/lib +LDFLAGS+= -L${LOCALBASE}/lib -OPTIONS_DEFINE= DOCS DEBUG -OPTIONS_SINGLE= TOOLKIT -OPTIONS_SINGLE_TOOLKIT= QT4 QT5 -OPTIONS_DEFAULT= QT5 - -TOOLKIT_DESC= Qt toolkit -DEBUG_CMAKE_ON= -DDebugBuild=on -QT4_USE= ${_USE_QT4:S/^/QT4=/} -QT5_USE= ${_USE_QT5:S/^/QT5=/} -QT5_CMAKE_ON= -DUseQt5=on -QT5_CMAKE_OFF= -DUseQt5=off +OPTIONS_DEFINE= DOCS STRIP_FILES= bin/dustrac-game \ bin/dustrac-editor Modified: head/games/dustrac/distinfo ============================================================================== --- head/games/dustrac/distinfo Sat Nov 15 11:28:29 2014 (r372594) +++ head/games/dustrac/distinfo Sat Nov 15 12:20:43 2014 (r372595) @@ -1,2 +1,2 @@ -SHA256 (dustrac-1.7.2.zip) = 2eaa4b98c77936cbbc0c34120b3e1a32a48612886254f8ea85ed042034e4268b -SIZE (dustrac-1.7.2.zip) = 26450932 +SHA256 (dustrac-1.8.1.tar.gz) = ec0496a91cfa9dfa11225d3a0dd1b2c39250ead88cf062b7d0a00ad16352e289 +SIZE (dustrac-1.8.1.tar.gz) = 25828452 Added: head/games/dustrac/files/patch-git6a7c41 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/games/dustrac/files/patch-git6a7c41 Sat Nov 15 12:20:43 2014 (r372595) @@ -0,0 +1,451 @@ +diff --git CMakeLists.txt CMakeLists.txt +index 5921d71..1692ee0 100644 +--- CMakeLists.txt ++++ CMakeLists.txt +@@ -39,6 +39,9 @@ endif() + if(CMAKE_COMPILER_IS_GNUCXX OR MINGW) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -W -Wall -O3 -pedantic") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fomit-frame-pointer -finline-functions -ffast-math") ++elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") ++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -W -Wall -O3 -pedantic") ++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fomit-frame-pointer -finline-functions -ffast-math") + endif() + + set(GAME_BINARY_NAME "dustrac-game") +diff --git src/game/MiniCore/CMakeLists.txt src/game/MiniCore/CMakeLists.txt +index 5144d1a..286cfc9 100644 +--- src/game/MiniCore/CMakeLists.txt ++++ src/game/MiniCore/CMakeLists.txt +@@ -29,6 +29,7 @@ Graphics/mcglobjectbase.cc + Graphics/mcglpointparticlerenderer.cc + Graphics/mcglscene.cc + Graphics/mcglshaderprogram.cc ++Graphics/mcrenderlayer.cc + Graphics/mcshaders.hh + Graphics/mcshaders30.hh + Graphics/mcshadersGLES.hh +diff --git src/game/MiniCore/Graphics/mcrenderlayer.cc src/game/MiniCore/Graphics/mcrenderlayer.cc +new file mode 100644 +index 0000000..c5f9016 +--- /dev/null ++++ src/game/MiniCore/Graphics/mcrenderlayer.cc +@@ -0,0 +1,52 @@ ++// This file belongs to the "MiniCore" game engine. ++// Copyright (C) 2014 Jussi Lind ++// ++// This program is free software; you can redistribute it and/or ++// modify it under the terms of the GNU General Public License ++// as published by the Free Software Foundation; either version 2 ++// of the License, or (at your option) any later version. ++// ++// This program is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++// ++// You should have received a copy of the GNU General Public License ++// along with this program; if not, write to the Free Software ++// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, ++// MA 02110-1301, USA. ++// ++ ++#include "mcrenderlayer.hh" ++#include "mccamera.hh" ++#include "mcobject.hh" ++ ++MCRenderLayer::MCRenderLayer() ++ : m_depthTestEnabled(false) ++{ ++} ++ ++void MCRenderLayer::setDepthTestEnabled(bool enable) ++{ ++ m_depthTestEnabled = enable; ++} ++ ++bool MCRenderLayer::depthTestEnabled() const ++{ ++ return m_depthTestEnabled; ++} ++ ++MCRenderLayer::ObjectSet & MCRenderLayer::objectSet() ++{ ++ return m_objectSet; ++} ++ ++MCRenderLayer::CameraBatchMap & MCRenderLayer::objectBatches() ++{ ++ return m_objectBatches; ++} ++ ++MCRenderLayer::CameraBatchMap & MCRenderLayer::particleBatches() ++{ ++ return m_particleBatches; ++} +diff --git src/game/MiniCore/Graphics/mcrenderlayer.hh src/game/MiniCore/Graphics/mcrenderlayer.hh +new file mode 100644 +index 0000000..0b2fae4 +--- /dev/null ++++ src/game/MiniCore/Graphics/mcrenderlayer.hh +@@ -0,0 +1,63 @@ ++// This file belongs to the "MiniCore" game engine. ++// Copyright (C) 2014 Jussi Lind ++// ++// This program is free software; you can redistribute it and/or ++// modify it under the terms of the GNU General Public License ++// as published by the Free Software Foundation; either version 2 ++// of the License, or (at your option) any later version. ++// ++// This program is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++// ++// You should have received a copy of the GNU General Public License ++// along with this program; if not, write to the Free Software ++// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, ++// MA 02110-1301, USA. ++// ++ ++#ifndef MCRENDERLAYER_HH ++#define MCRENDERLAYER_HH ++ ++#include ++#include ++#include ++ ++class MCCamera; ++class MCObject; ++ ++class MCRenderLayer ++{ ++public: ++ ++ MCRenderLayer(); ++ ++ void setDepthTestEnabled(bool enable); ++ ++ bool depthTestEnabled() const; ++ ++ typedef std::unordered_set ObjectSet; ++ ++ ObjectSet & objectSet(); ++ ++ typedef int ObjectTypeId; ++ typedef std::map > BatchMap; ++ typedef std::map CameraBatchMap; ++ ++ CameraBatchMap & objectBatches(); ++ ++ CameraBatchMap & particleBatches(); ++ ++private: ++ ++ bool m_depthTestEnabled; ++ ++ ObjectSet m_objectSet; ++ ++ CameraBatchMap m_objectBatches; ++ ++ CameraBatchMap m_particleBatches; ++}; ++ ++#endif // MCRENDERLAYER_HH +diff --git src/game/MiniCore/Graphics/mcworldrenderer.cc src/game/MiniCore/Graphics/mcworldrenderer.cc +index 41e6607..ab8cb8a 100644 +--- src/game/MiniCore/Graphics/mcworldrenderer.cc ++++ src/game/MiniCore/Graphics/mcworldrenderer.cc +@@ -31,10 +31,6 @@ + + MCWorldRenderer::MCWorldRenderer() + { +- for (unsigned i = 0; i < MCWorld::MaxLayers; i++) +- { +- m_depthTestEnabled[i] = false; +- } + } + + void MCWorldRenderer::registerPointParticleRenderer(MCUint typeId, MCGLPointParticleRenderer & renderer) +@@ -61,13 +57,15 @@ void MCWorldRenderer::buildBatches(MCCamera * camera) + // Grouping the objects like this reduces texture switches etc and increases + // overall performance. + +- for (int i = 0; i < MCWorld::MaxLayers; i++) ++ auto layerIter = m_layers.begin(); ++ while (layerIter != m_layers.end()) + { +- m_objectBatches[camera][i].clear(); +- m_particleBatches[camera][i].clear(); ++ MCRenderLayer & layer = layerIter->second; + +- const auto end = m_layers[i].end(); +- for (auto objectIter = m_layers[i].begin(); objectIter != end; objectIter++) ++ layer.objectBatches().clear(); ++ layer.particleBatches().clear(); ++ ++ for (auto objectIter = layer.objectSet().begin(); objectIter != layer.objectSet().end(); objectIter++) + { + MCObject & object = **objectIter; + if (object.isRenderable()) +@@ -83,7 +81,7 @@ void MCWorldRenderer::buildBatches(MCCamera * camera) + bbox.translate(MCVector2dF(object.location())); + if (!camera || camera->isVisible(bbox)) + { +- m_objectBatches[camera][i][object.typeID()].push_back(&object); ++ layer.objectBatches()[camera][object.typeID()].push_back(&object); + } + } + } +@@ -93,7 +91,7 @@ void MCWorldRenderer::buildBatches(MCCamera * camera) + { + if (camera->isVisible(object.bbox())) + { +- m_particleBatches[camera][i][object.typeID()].push_back(&object); ++ layer.particleBatches()[camera][object.typeID()].push_back(&object); + } + else + { +@@ -120,12 +118,14 @@ void MCWorldRenderer::buildBatches(MCCamera * camera) + } + else + { +- m_particleBatches[camera][i][object.typeID()].push_back(&object); ++ layer.particleBatches()[camera][object.typeID()].push_back(&object); + } + } + } + } + } ++ ++ layerIter++; + } + } + +@@ -135,11 +135,14 @@ void MCWorldRenderer::renderBatches(MCCamera * camera) + // layer-specific. + + bool depthTest = false; +- for (int layer = 0; layer < MCWorld::MaxLayers; layer++) ++ auto layerIter = m_layers.begin(); ++ while (layerIter != m_layers.end()) + { ++ MCRenderLayer & layer = layerIter->second; ++ + // The depth test is enabled/disabled separately on + // each object layer. +- if (m_depthTestEnabled[layer] && !depthTest) ++ if (layer.depthTestEnabled() && !depthTest) + { + glEnable(GL_DEPTH_TEST); + depthTest = true; +@@ -152,13 +155,15 @@ void MCWorldRenderer::renderBatches(MCCamera * camera) + + renderObjectBatches(camera, layer); + renderParticleBatches(camera, layer); ++ ++ layerIter++; + } + } + +-void MCWorldRenderer::renderObjectBatches(MCCamera * camera, int layer) ++void MCWorldRenderer::renderObjectBatches(MCCamera * camera, MCRenderLayer & layer) + { +- auto iter = m_objectBatches[camera][layer].begin(); +- const auto end = m_objectBatches[camera][layer].end(); ++ auto iter = layer.objectBatches()[camera].begin(); ++ const auto end = layer.objectBatches()[camera].end(); + while (iter != end) + { + const int itemCountInBatch = iter->second.size(); +@@ -185,11 +190,11 @@ void MCWorldRenderer::renderObjectBatches(MCCamera * camera, int layer) + } + } + +-void MCWorldRenderer::renderParticleBatches(MCCamera * camera, int layer) ++void MCWorldRenderer::renderParticleBatches(MCCamera * camera, MCRenderLayer & layer) + { + // Render particle batches +- auto batchIter = m_particleBatches[camera][layer].begin(); +- const auto end = m_particleBatches[camera][layer].end(); ++ auto batchIter = layer.particleBatches()[camera].begin(); ++ const auto end = layer.particleBatches()[camera].end(); + while (batchIter != end) + { + if (!batchIter->second.size()) +@@ -233,17 +238,20 @@ void MCWorldRenderer::renderShadows(MCCamera * camera) + { + glDisable(GL_DEPTH_TEST); + +- for (int i = 0; i < MCWorld::MaxLayers; i++) ++ auto layerIter = m_layers.begin(); ++ while (layerIter != m_layers.end()) + { ++ MCRenderLayer & layer = layerIter->second; ++ + // Render batches +- auto iter = m_objectBatches[camera][i].begin(); +- const auto end = m_objectBatches[camera][i].end(); +- while (iter != end) ++ auto batchIter = layer.objectBatches()[camera].begin(); ++ const auto end = layer.objectBatches()[camera].end(); ++ while (batchIter != end) + { +- const int itemCountInBatch = iter->second.size(); ++ const int itemCountInBatch = batchIter->second.size(); + if (itemCountInBatch > 0) + { +- MCObject * object = iter->second[0]; ++ MCObject * object = batchIter->second[0]; + std::shared_ptr view = object->shape()->view(); + if (view && view->hasShadow()) + { +@@ -252,10 +260,10 @@ void MCWorldRenderer::renderShadows(MCCamera * camera) + + for (int i = 1; i < itemCountInBatch - 1; i++) + { +- iter->second[i]->renderShadow(camera); ++ batchIter->second[i]->renderShadow(camera); + } + +- object = iter->second[itemCountInBatch - 1]; ++ object = batchIter->second[itemCountInBatch - 1]; + object->renderShadow(camera); + + view = object->shape()->view(); +@@ -263,31 +271,26 @@ void MCWorldRenderer::renderShadows(MCCamera * camera) + } + } + +- iter++; ++ batchIter++; + } ++ ++ layerIter++; + } + } + + void MCWorldRenderer::enableDepthTestOnLayer(int layer, bool enable) + { +- if (layer < MCWorld::MaxLayers) +- { +- m_depthTestEnabled[layer] = enable; +- } ++ m_layers[layer].setDepthTestEnabled(enable); + } + + void MCWorldRenderer::addToLayerMap(MCObject & object) + { +- const int layerIndex = +- object.renderLayer() >= MCWorld::MaxLayers ? MCWorld::MaxLayers - 1 : object.renderLayer(); +- m_layers[layerIndex].insert(&object); ++ m_layers[object.renderLayer()].objectSet().insert(&object); + } + + void MCWorldRenderer::removeFromLayerMap(MCObject & object) + { +- const int layerIndex = +- object.renderLayer() >= MCWorld::MaxLayers ? MCWorld::MaxLayers - 1 : object.renderLayer(); +- m_layers[layerIndex].erase(&object); ++ m_layers[object.renderLayer()].objectSet().erase(&object); + } + + void MCWorldRenderer::addParticleVisibilityCamera(MCCamera & camera) +@@ -302,8 +305,5 @@ void MCWorldRenderer::removeParticleVisibilityCameras() + + void MCWorldRenderer::clear() + { +- for (int i = 0; i < MCWorld::MaxLayers; i++) +- { +- m_layers[i].clear(); +- } ++ m_layers.clear(); + } +diff --git src/game/MiniCore/Graphics/mcworldrenderer.hh src/game/MiniCore/Graphics/mcworldrenderer.hh +index 0a45a49..287af58 100644 +--- src/game/MiniCore/Graphics/mcworldrenderer.hh ++++ src/game/MiniCore/Graphics/mcworldrenderer.hh +@@ -20,6 +20,7 @@ + #ifndef MCWORLDRENDERER_HH + #define MCWORLDRENDERER_HH + ++#include "mcrenderlayer.hh" + #include "mctypes.hh" + #include "mcworld.hh" + +@@ -72,24 +73,17 @@ private: + + void renderBatches(MCCamera * camera = nullptr); + +- void renderObjectBatches(MCCamera * camera, int layer); ++ void renderObjectBatches(MCCamera * camera, MCRenderLayer & layer); + +- void renderParticleBatches(MCCamera * camera, int layer); ++ void renderParticleBatches(MCCamera * camera, MCRenderLayer & layer); + +- typedef std::unordered_set LayerSet; +- LayerSet m_layers[MCWorld::MaxLayers]; +- +- typedef std::map > BatchMap; +- typedef std::map CameraBatchMap; +- +- CameraBatchMap m_objectBatches; +- CameraBatchMap m_particleBatches; +- +- bool m_depthTestEnabled[MCWorld::MaxLayers]; ++ typedef int LayerId; ++ std::map m_layers; + + std::vector m_visibilityCameras; + +- typedef std::map ParticleRendererMap; ++ typedef int ParticleTypeId; ++ typedef std::map ParticleRendererMap; + ParticleRendererMap m_particleRenderers; + }; + +diff --git src/game/checkeredflag.cpp src/game/checkeredflag.cpp +index 10fd62d..67bb608 100644 +--- src/game/checkeredflag.cpp ++++ src/game/checkeredflag.cpp +@@ -23,7 +23,6 @@ + static const int FLAG_W = 32; + static const int FLAG_H = 24; + static const int V_SPACING = 20; +-static const float APPEARANCE_SPEED = 0.05f; + + CheckeredFlag::CheckeredFlag() + : m_surface(MCAssetManager::surfaceManager().surface("checkeredFlag")) +diff --git src/game/game.cpp src/game/game.cpp +index db4a55a..5ad81ac 100644 +--- src/game/game.cpp ++++ src/game/game.cpp +@@ -44,8 +44,7 @@ + + #include + +-static const unsigned int MAX_PLAYERS = 2; +-static const float DEFAULT_VOLUME = 0.5; ++static const unsigned int MAX_PLAYERS = 2; + + Game * Game::m_instance = nullptr; + +diff --git src/game/game.pro src/game/game.pro +index 055d28c..a73daae 100644 +--- src/game/game.pro ++++ src/game/game.pro +@@ -152,6 +152,7 @@ HEADERS += \ + MiniCore/Graphics/mcshaders.hh \ + MiniCore/Graphics/mcshaders30.hh \ + MiniCore/Graphics/mcshadersGLES.hh \ ++ MiniCore/Graphics/mcrenderlayer.hh \ + MiniCore/Graphics/mcshapeview.hh \ + MiniCore/Graphics/mcsurface.hh \ + MiniCore/Graphics/mcsurfaceconfigloader.hh \ +@@ -292,6 +293,7 @@ SOURCES += \ + MiniCore/Graphics/mcmeshmanager.cc \ + MiniCore/Graphics/mcmeshobjectdata.cc \ + MiniCore/Graphics/mcmeshview.cc \ ++ MiniCore/Graphics/mcrenderlayer.cc \ + MiniCore/Graphics/mcsurface.cc \ + MiniCore/Graphics/mcsurfaceconfigloader.cc \ + MiniCore/Graphics/mcsurfacemanager.cc \