[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/games/kolf-ng
From: Huan Zeng <zh.issac () gmail ! com>
Date: 2009-06-24 14:38:13
Message-ID: 1245854293.587622.17729.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 986320 by hzeng:
prepare for terrain's rendering in 2d view.
M +11 -0 3d/renderstatemanager.cpp
M +2 -0 3d/renderstatemanager.h
M +1 -1 courses/test1-terrain.kolf
M +2 -0 elements/object-environment.cpp
M +5 -0 elements/scene.cpp
M +4 -0 elements/scene.h
M +11 -0 engine/game-editor.cpp
M +1 -0 engine/game-editor.h
M +2 -0 engine/kolf-editorui.rc
M +15 -5 interface/view3d.cpp
M +2 -0 interface/view3d.h
--- trunk/playground/games/kolf-ng/3d/renderstatemanager.cpp #986319:986320
@@ -32,6 +32,7 @@
disableBlendingState();
disableLightState();
disableWireframeState();
+ enableTextureState();
setGlobalBackgroundColor(Qt::white);
setGlobalDrawingColor(Qt::green);
}
@@ -80,6 +81,11 @@
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
}
+void Kolf::RenderStateManager::enableTextureState()
+{
+ glEnable(GL_TEXTURE_2D);
+}
+
void Kolf::RenderStateManager::disableBlendingState()
{
glDisable(GL_BLEND);
@@ -100,6 +106,11 @@
glPolygonMode(GL_FRONT, GL_POLYGON);
}
+void Kolf::RenderStateManager::disableTextureState()
+{
+ glDisable(GL_TEXTURE_2D);
+}
+
void Kolf::RenderStateManager::setTopViewport()
{
gluLookAt(500, 500, 2000, 500, 500, 0, 0, 1, 0);
--- trunk/playground/games/kolf-ng/3d/renderstatemanager.h #986319:986320
@@ -37,11 +37,13 @@
void enableDepthState();
void enableLightState();
void enableWireframeState();
+ void enableTextureState();
void disableBlendingState();
void disableDepthState();
void disableLightState();
void disableWireframeState();
+ void disableTextureState();
void setTopViewport();
void setFrontPerspectiveViewport();
--- trunk/playground/games/kolf-ng/courses/test1-terrain.kolf #986319:986320
@@ -15,7 +15,7 @@
Type=Kolf::EnvironmentObject
CourseBoundary=false
PathToHeightmap=test1-heightmap.bmp
-PathToTexture=grass_256.jpg
+PathToTexture=test1-texture.bmp
Position=0,0,0
--- trunk/playground/games/kolf-ng/elements/object-environment.cpp #986319:986320
@@ -165,6 +165,8 @@
void Kolf::EnvironmentObject::paint(QPainter* painter, const \
QStyleOptionGraphicsItem* option, QWidget* widget) {
+ Q_UNUSED(option);
+ Q_UNUSED(widget);
m_item = m_geometry->picture();
if(!m_item)
return;
--- trunk/playground/games/kolf-ng/elements/scene.cpp #986319:986320
@@ -111,6 +111,11 @@
emit newHole();
}
+void Kolf::Scene::askForSnapshot()
+{
+ emit snapshot();
+}
+
void Kolf::Scene::timerEvent(QTimerEvent* event)
{
//filter events that we do not want
--- trunk/playground/games/kolf-ng/elements/scene.h #986319:986320
@@ -47,6 +47,8 @@
void removeObject(Kolf::Object* object);
void clear();
void holeChanged();
+ void askForSnapshot();
+
Q_SIGNALS:
void objectAdded(Kolf::Object* object);
void objectChanged(Kolf::Object* object);
@@ -56,6 +58,8 @@
void nextFrameSimulated();
void turnEnded();
void newHole();
+ void snapshot();
+
protected:
virtual void timerEvent(QTimerEvent* event);
private Q_SLOTS:
--- trunk/playground/games/kolf-ng/engine/game-editor.cpp #986319:986320
@@ -67,6 +67,12 @@
//undo and redo
m_undoAction = KStandardAction::undo(0, "", actionCollection());
m_redoAction = KStandardAction::redo(0, "", actionCollection());
+ //take a snapshot for this scene, used as the backdrop of the 2d view
+ const KIcon snapshotIcon("take snapshot");
+ KAction* snapshotAct = new KAction(snapshotIcon, i18n("Take Snapshot"), \
actionCollection()); + snapshotAct->setToolTip(i18n("Take a snapshot as the backdrop \
for 2d view")); + actionCollection()->addAction("kolf_take_snapshot", snapshotAct);
+ connect(snapshotAct, SIGNAL(triggered()), this, SLOT(actionSnapshot()));
}
bool Kolf::EditorGame::startGame()
@@ -122,6 +128,7 @@
//show par player ball for editing
parPlayer()->ball()->show();
//FIXME: pushState does not work for the ball - We somehow have to communicate the \
ball position change back to the environment object. \
+ Kolf::Scene::instance()->holeChanged(); }
//activate overlays
for (int i = 0; i < view()->objectCount(); ++i)
@@ -172,4 +179,8 @@
m_saveAction->setEnabled(!clean);
}
+void Kolf::EditorGame::actionSnapshot()
+{
+ Kolf::Scene::instance()->askForSnapshot();
+}
#include "game-editor.moc"
--- trunk/playground/games/kolf-ng/engine/game-editor.h #986319:986320
@@ -50,6 +50,7 @@
void actionGoToNextHole();
void actionSave();
void cleanChanged(bool clean);
+ void actionSnapshot();
private:
void setupActions();
--- trunk/playground/games/kolf-ng/engine/kolf-editorui.rc #986319:986320
@@ -10,5 +10,7 @@
<Separator/>
<Action name="edit_undo" />
<Action name="edit_redo" />
+ <Separator/>
+ <Action name="kolf_take_snapshot" />
</ToolBar>
</gui>
--- trunk/playground/games/kolf-ng/interface/view3d.cpp #986319:986320
@@ -30,6 +30,7 @@
#include <QString>
#include <QTimer>
#include <QVector>
+#include <QFileDialog>
Kolf::View3D::View3D(Kolf::View* parent)
: QGLWidget(parent)
@@ -41,6 +42,7 @@
setMinimumSize(100, 100);
connect(m_timer, SIGNAL(timeout()), this, SLOT(updateGL()));
connect(Kolf::Scene::instance(), SIGNAL(newHole()), this, SLOT(newStuffArrival()));
+ connect(Kolf::Scene::instance(), SIGNAL(snapshot()), this, SLOT(snapshot()));
}
Kolf::View3D::~View3D()
@@ -64,8 +66,7 @@
qDebug("View3D:initializeGL");
m_rsm->setDefaultRenderState();
m_rsm->setGlobalBackgroundColor(Qt::black);
- //m_rsm->enableWireframeState();
- glEnable(GL_TEXTURE_2D);
+ m_rsm->enableWireframeState();
}
void Kolf::View3D::paintGL()
@@ -75,8 +76,8 @@
drawStaticObjects();
drawAnimatedObjects();
+ drawLandscape();
drawBall();
- drawLandscape();
glFlush();
}
@@ -88,8 +89,8 @@
double aspect = (double)w/h;
gluPerspective(30, aspect, 1, 3000);
//Sets the viewport to a top view, front perspective also avaliable ATM.
- m_rsm->setTopViewport();
- //m_rsm->setFrontPerspectiveViewport();
+ //m_rsm->setTopViewport();
+ m_rsm->setFrontPerspectiveViewport();
//m_rsm->setBackPerspectiveViewport();
//m_rsm->setLeftPerspectiveViewport();
//m_rsm->setRightPerspectiveViewport();
@@ -230,4 +231,13 @@
hasNewStuff = true;
}
}
+
+void Kolf::View3D::snapshot()
+{
+ QImage img = grabFrameBuffer( );
+ QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"), \
"./untitled.png", + tr("Images (*.png *.xpm *.jpg)"));
+ //to be continue
+
+}
#include "view3d.moc"
--- trunk/playground/games/kolf-ng/interface/view3d.h #986319:986320
@@ -50,9 +50,11 @@
void drawStaticObjects();
void initializeObjects();
void loadTerrainTexture();
+
private Q_SLOTS:
void getNewStuff();
void newStuffArrival();
+ void snapshot();
private:
Kolf::View* m_parent;
Kolf::RenderStateManager* m_rsm;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic