Skip to content

Commit 94c294b

Browse files
authoredJul 2, 2017
Irrlicht cleanup: cleanup various object to use RenderingEngine (#6088)
* Irrlicht cleanup: cleanup various object to use RenderingEngine * CAO doesn't need scenemanager in addToScene * Camera doesn't need VideoDriver pointer or SceneManager in constructor * Hud doesn't need driver & scene manager in constructor * Hud doesn't need scenemanager pointer * Tile.h doesn't need IrrlichtDevice header (just SMaterial) * WieldMeshSceneNode: only take scene, we always use scene root node as parent
1 parent 51104d9 commit 94c294b

13 files changed

+37
-52
lines changed
 

Diff for: ‎src/camera.cpp

+4-9
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
3838

3939
#define CAMERA_OFFSET_STEP 200
4040

41-
#include "nodedef.h"
42-
43-
Camera::Camera(scene::ISceneManager* smgr, MapDrawControl& draw_control,
44-
Client *client):
41+
Camera::Camera(MapDrawControl &draw_control, Client *client):
4542
m_draw_control(draw_control),
4643
m_client(client)
4744
{
48-
//dstream<<FUNCTION_NAME<<std::endl;
49-
50-
m_driver = smgr->getVideoDriver();
45+
scene::ISceneManager *smgr = RenderingEngine::get_scene_manager();
5146
// note: making the camera node a child of the player node
5247
// would lead to unexpected behaviour, so we don't do that.
5348
m_playernode = smgr->addEmptySceneNode(smgr->getRootSceneNode());
@@ -59,7 +54,7 @@ Camera::Camera(scene::ISceneManager* smgr, MapDrawControl& draw_control,
5954
// all other 3D scene nodes and before the GUI.
6055
m_wieldmgr = smgr->createNewSceneManager();
6156
m_wieldmgr->addCameraSceneNode();
62-
m_wieldnode = new WieldMeshSceneNode(m_wieldmgr->getRootSceneNode(), m_wieldmgr, -1, false);
57+
m_wieldnode = new WieldMeshSceneNode(m_wieldmgr, -1, false);
6358
m_wieldnode->setItem(ItemStack(), m_client);
6459
m_wieldnode->drop(); // m_wieldmgr grabbed it
6560

@@ -643,7 +638,7 @@ void Camera::drawNametags()
643638
utf8_to_wide(nametag_colorless).c_str());
644639
f32 zDiv = transformed_pos[3] == 0.0f ? 1.0f :
645640
core::reciprocal(transformed_pos[3]);
646-
v2u32 screensize = m_driver->getScreenSize();
641+
v2u32 screensize = RenderingEngine::get_video_driver()->getScreenSize();
647642
v2s32 screen_pos;
648643
screen_pos.X = screensize.X *
649644
(0.5 * transformed_pos[0] * zDiv + 0.5) - textsize.Width / 2;

Diff for: ‎src/camera.h

+1-3
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,7 @@ enum CameraMode {CAMERA_MODE_FIRST, CAMERA_MODE_THIRD, CAMERA_MODE_THIRD_FRONT};
6060
class Camera
6161
{
6262
public:
63-
Camera(scene::ISceneManager* smgr, MapDrawControl& draw_control,
64-
Client *client);
63+
Camera(MapDrawControl &draw_control, Client *client);
6564
~Camera();
6665

6766
// Get camera scene node.
@@ -181,7 +180,6 @@ class Camera
181180
MapDrawControl& m_draw_control;
182181

183182
Client *m_client;
184-
video::IVideoDriver *m_driver;
185183

186184
// Absolute camera position
187185
v3f m_camera_position;

Diff for: ‎src/client/tile.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
2323
#include "irrlichttypes.h"
2424
#include "irr_v3d.h"
2525
#include <ITexture.h>
26-
#include <IrrlichtDevice.h>
2726
#include <string>
2827
#include <vector>
28+
#include <SMaterial.h>
2929
#include "util/numeric.h"
3030

3131
class IGameDef;

Diff for: ‎src/clientenvironment.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,7 @@ u16 ClientEnvironment::addActiveObject(ClientActiveObject *object)
456456
infostream<<"ClientEnvironment::addActiveObject(): "
457457
<<"added (id="<<object->getId()<<")"<<std::endl;
458458
m_active_objects[object->getId()] = object;
459-
object->addToScene(RenderingEngine::get_scene_manager(), m_texturesource);
459+
object->addToScene(m_texturesource);
460460
{ // Update lighting immediately
461461
u8 light = 0;
462462
bool pos_ok;

Diff for: ‎src/clientobject.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
2222

2323
#include "irrlichttypes_extrabloated.h"
2424
#include "activeobject.h"
25-
#include <map>
2625
#include <unordered_map>
2726

2827
class ClientEnvironment;
@@ -39,7 +38,7 @@ class ClientActiveObject : public ActiveObject
3938
ClientActiveObject(u16 id, Client *client, ClientEnvironment *env);
4039
virtual ~ClientActiveObject();
4140

42-
virtual void addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc) {};
41+
virtual void addToScene(ITextureSource *tsrc) {};
4342
virtual void removeFromScene(bool permanent) {}
4443
// 0 <= light_at_pos <= LIGHT_SUN
4544
virtual void updateLight(u8 light_at_pos){}

Diff for: ‎src/content_cao.cpp

+17-17
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
2222
#include <IBillboardSceneNode.h>
2323
#include <IMeshManipulator.h>
2424
#include <IAnimatedMeshSceneNode.h>
25-
#include <IBoneSceneNode.h>
2625
#include "content_cao.h"
2726
#include "util/numeric.h" // For IntervalLimiter
2827
#include "util/serialize.h"
@@ -43,8 +42,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
4342
#include "map.h"
4443
#include "camera.h" // CameraModes
4544
#include "wieldmesh.h"
46-
#include "log.h"
4745
#include <algorithm>
46+
#include "client/renderingengine.h"
4847

4948
class Settings;
5049
struct ToolCapabilities;
@@ -128,7 +127,7 @@ class TestCAO : public ClientActiveObject
128127

129128
static ClientActiveObject* create(Client *client, ClientEnvironment *env);
130129

131-
void addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc);
130+
void addToScene(ITextureSource *tsrc);
132131
void removeFromScene(bool permanent);
133132
void updateLight(u8 light_at_pos);
134133
v3s16 getLightPosition();
@@ -164,7 +163,7 @@ ClientActiveObject* TestCAO::create(Client *client, ClientEnvironment *env)
164163
return new TestCAO(client, env);
165164
}
166165

167-
void TestCAO::addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc)
166+
void TestCAO::addToScene(ITextureSource *tsrc)
168167
{
169168
if(m_node != NULL)
170169
return;
@@ -193,7 +192,7 @@ void TestCAO::addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc)
193192
// Add to mesh
194193
mesh->addMeshBuffer(buf);
195194
buf->drop();
196-
m_node = smgr->addMeshSceneNode(mesh, NULL);
195+
m_node = RenderingEngine::get_scene_manager()->addMeshSceneNode(mesh, NULL);
197196
mesh->drop();
198197
updateNodePos();
199198
}
@@ -270,7 +269,7 @@ class ItemCAO : public ClientActiveObject
270269

271270
static ClientActiveObject* create(Client *client, ClientEnvironment *env);
272271

273-
void addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc);
272+
void addToScene(ITextureSource *tsrc);
274273
void removeFromScene(bool permanent);
275274
void updateLight(u8 light_at_pos);
276275
v3s16 getLightPosition();
@@ -326,7 +325,7 @@ ClientActiveObject* ItemCAO::create(Client *client, ClientEnvironment *env)
326325
return new ItemCAO(client, env);
327326
}
328327

329-
void ItemCAO::addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc)
328+
void ItemCAO::addToScene(ITextureSource *tsrc)
330329
{
331330
if(m_node != NULL)
332331
return;
@@ -360,7 +359,7 @@ void ItemCAO::addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc)
360359
// Add to mesh
361360
mesh->addMeshBuffer(buf);
362361
buf->drop();
363-
m_node = smgr->addMeshSceneNode(mesh, NULL);
362+
m_node = RenderingEngine::get_scene_manager()->addMeshSceneNode(mesh, NULL);
364363
mesh->drop();
365364
updateNodePos();
366365

@@ -717,9 +716,9 @@ void GenericCAO::removeFromScene(bool permanent)
717716
}
718717
}
719718

720-
void GenericCAO::addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc)
719+
void GenericCAO::addToScene(ITextureSource *tsrc)
721720
{
722-
m_smgr = smgr;
721+
m_smgr = RenderingEngine::get_scene_manager();
723722

724723
if (getSceneNode() != NULL) {
725724
return;
@@ -733,7 +732,7 @@ void GenericCAO::addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc)
733732

734733
if (m_prop.visual == "sprite") {
735734
infostream<<"GenericCAO::addToScene(): single_sprite"<<std::endl;
736-
m_spritenode = smgr->addBillboardSceneNode(
735+
m_spritenode = RenderingEngine::get_scene_manager()->addBillboardSceneNode(
737736
NULL, v2f(1, 1), v3f(0,0,0), -1);
738737
m_spritenode->grab();
739738
m_spritenode->setMaterialTexture(0,
@@ -796,7 +795,7 @@ void GenericCAO::addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc)
796795
mesh->addMeshBuffer(buf);
797796
buf->drop();
798797
}
799-
m_meshnode = smgr->addMeshSceneNode(mesh, NULL);
798+
m_meshnode = RenderingEngine::get_scene_manager()->addMeshSceneNode(mesh, NULL);
800799
m_meshnode->grab();
801800
mesh->drop();
802801
// Set it to use the materials of the meshbuffers directly.
@@ -806,7 +805,7 @@ void GenericCAO::addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc)
806805
else if(m_prop.visual == "cube") {
807806
infostream<<"GenericCAO::addToScene(): cube"<<std::endl;
808807
scene::IMesh *mesh = createCubeMesh(v3f(BS,BS,BS));
809-
m_meshnode = smgr->addMeshSceneNode(mesh, NULL);
808+
m_meshnode = RenderingEngine::get_scene_manager()->addMeshSceneNode(mesh, NULL);
810809
m_meshnode->grab();
811810
mesh->drop();
812811

@@ -826,7 +825,8 @@ void GenericCAO::addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc)
826825
scene::IAnimatedMesh *mesh = m_client->getMesh(m_prop.mesh);
827826
if(mesh)
828827
{
829-
m_animated_meshnode = smgr->addAnimatedMeshSceneNode(mesh, NULL);
828+
m_animated_meshnode = RenderingEngine::get_scene_manager()->
829+
addAnimatedMeshSceneNode(mesh, NULL);
830830
m_animated_meshnode->grab();
831831
mesh->drop(); // The scene node took hold of it
832832
m_animated_meshnode->animateJoints(); // Needed for some animations
@@ -865,8 +865,8 @@ void GenericCAO::addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc)
865865
infostream << "serialized form: " << m_prop.wield_item << std::endl;
866866
item.deSerialize(m_prop.wield_item, m_client->idef());
867867
}
868-
m_wield_meshnode = new WieldMeshSceneNode(smgr->getRootSceneNode(),
869-
smgr, -1);
868+
m_wield_meshnode = new WieldMeshSceneNode(
869+
RenderingEngine::get_scene_manager(), -1);
870870
m_wield_meshnode->setItem(item, m_client);
871871

872872
m_wield_meshnode->setScale(
@@ -1050,7 +1050,7 @@ void GenericCAO::step(float dtime, ClientEnvironment *env)
10501050
}
10511051

10521052
removeFromScene(false);
1053-
addToScene(m_smgr, m_client->tsrc());
1053+
addToScene(m_client->tsrc());
10541054

10551055
// Attachments, part 2: Now that the parent has been refreshed, put its attachments back
10561056
for (std::vector<u16>::size_type i = 0; i < m_children.size(); i++) {

Diff for: ‎src/content_cao.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ class GenericCAO : public ClientActiveObject
168168

169169
void removeFromScene(bool permanent);
170170

171-
void addToScene(scene::ISceneManager *smgr, ITextureSource *tsrc);
171+
void addToScene(ITextureSource *tsrc);
172172

173173
inline void expireVisuals()
174174
{

Diff for: ‎src/game.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -1914,7 +1914,7 @@ bool Game::createClient(const std::string &playername,
19141914

19151915
/* Camera
19161916
*/
1917-
camera = new Camera(smgr, *draw_control, client);
1917+
camera = new Camera(*draw_control, client);
19181918
if (!camera || !camera->successfullyCreated(*error_message))
19191919
return false;
19201920
client->setCamera(camera);
@@ -1971,7 +1971,7 @@ bool Game::createClient(const std::string &playername,
19711971
player->hurt_tilt_timer = 0;
19721972
player->hurt_tilt_strength = 0;
19731973

1974-
hud = new Hud(driver, smgr, guienv, client, player, local_inventory);
1974+
hud = new Hud(guienv, client, player, local_inventory);
19751975

19761976
if (!hud) {
19771977
*error_message = "Memory error: could not create HUD";

Diff for: ‎src/hud.cpp

+4-5
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,10 @@ with this program; if not, write to the Free Software Foundation, Inc.,
4040
#include "touchscreengui.h"
4141
#endif
4242

43-
Hud::Hud(video::IVideoDriver *driver, scene::ISceneManager* smgr,
44-
gui::IGUIEnvironment* guienv, Client *client, LocalPlayer *player,
43+
Hud::Hud(gui::IGUIEnvironment *guienv, Client *client, LocalPlayer *player,
4544
Inventory *inventory)
4645
{
47-
this->driver = driver;
48-
this->smgr = smgr;
46+
driver = RenderingEngine::get_video_driver();
4947
this->guienv = guienv;
5048
this->client = client;
5149
this->player = player;
@@ -339,7 +337,8 @@ void Hud::drawLuaElements(const v3s16 &camera_offset)
339337
v3f p_pos = player->getPosition() / BS;
340338
v3f w_pos = e->world_pos * BS;
341339
float distance = floor(10 * p_pos.getDistanceFrom(e->world_pos)) / 10;
342-
scene::ICameraSceneNode* camera = smgr->getActiveCamera();
340+
scene::ICameraSceneNode* camera =
341+
RenderingEngine::get_scene_manager()->getActiveCamera();
343342
w_pos -= intToFloat(camera_offset, BS);
344343
core::matrix4 trans = camera->getProjectionMatrix();
345344
trans *= camera->getViewMatrix();

Diff for: ‎src/hud.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,7 @@ class Hud {
120120
std::string hotbar_selected_image = "";
121121
bool use_hotbar_selected_image = false;
122122

123-
Hud(video::IVideoDriver *driver,scene::ISceneManager* smgr,
124-
gui::IGUIEnvironment* guienv, Client *client, LocalPlayer *player,
123+
Hud(gui::IGUIEnvironment *guienv, Client *client, LocalPlayer *player,
125124
Inventory *inventory);
126125
~Hud();
127126

Diff for: ‎src/nodedef.h

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
3030
#ifndef SERVER
3131
#include "client/tile.h"
3232
#include "shader.h"
33+
#include <IMeshManipulator.h>
3334
class Client;
3435
#endif
3536
#include "itemgroup.h"

Diff for: ‎src/wieldmesh.cpp

+2-7
Original file line numberDiff line numberDiff line change
@@ -192,13 +192,8 @@ class ExtrusionMeshCache: public IReferenceCounted
192192
ExtrusionMeshCache *g_extrusion_mesh_cache = NULL;
193193

194194

195-
WieldMeshSceneNode::WieldMeshSceneNode(
196-
scene::ISceneNode *parent,
197-
scene::ISceneManager *mgr,
198-
s32 id,
199-
bool lighting
200-
):
201-
scene::ISceneNode(parent, mgr, id),
195+
WieldMeshSceneNode::WieldMeshSceneNode(scene::ISceneManager *mgr, s32 id, bool lighting):
196+
scene::ISceneNode(mgr->getRootSceneNode(), mgr, id),
202197
m_material_type(video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF),
203198
m_lighting(lighting)
204199
{

Diff for: ‎src/wieldmesh.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ struct ItemMesh
7474
class WieldMeshSceneNode : public scene::ISceneNode
7575
{
7676
public:
77-
WieldMeshSceneNode(scene::ISceneNode *parent, scene::ISceneManager *mgr,
78-
s32 id = -1, bool lighting = false);
77+
WieldMeshSceneNode(scene::ISceneManager *mgr, s32 id = -1, bool lighting = false);
7978
virtual ~WieldMeshSceneNode();
8079

8180
void setCube(const ContentFeatures &f, v3f wield_scale);

0 commit comments

Comments
 (0)
Please sign in to comment.