Private nodemeta (#5702)
[oweals/minetest.git] / src / content_cso.cpp
index 20eb88b7d41161ce311211c9dfe5b9089884cabe..aca71212b648f5e678456680faab173910db7ea4 100644 (file)
@@ -19,21 +19,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 #include "content_cso.h"
 #include <IBillboardSceneNode.h>
-#include "tile.h"
-#include "environment.h"
-#include "gamedef.h"
-#include "log.h"
+#include "client/tile.h"
+#include "clientenvironment.h"
+#include "client.h"
 #include "map.h"
 
-static void setBillboardTextureMatrix(scene::IBillboardSceneNode *bill,
-               float txs, float tys, int col, int row)
-{
-       video::SMaterial& material = bill->getMaterial(0);
-       core::matrix4& matrix = material.getTextureMatrix(0);
-       matrix.setTextureTranslate(txs*col, tys*row);
-       matrix.setTextureScale(txs, tys);
-}
-
 class SmokePuffCSO: public ClientSimpleObject
 {
        float m_age;
@@ -48,7 +38,7 @@ public:
                m_spritenode = smgr->addBillboardSceneNode(
                                NULL, v2f(1,1), pos, -1);
                m_spritenode->setMaterialTexture(0,
-                               env->getGameDef()->tsrc()->getTextureRaw("smoke_puff.png"));
+                               env->getGameDef()->tsrc()->getTextureForMesh("smoke_puff.png"));
                m_spritenode->setMaterialFlag(video::EMF_LIGHTING, false);
                m_spritenode->setMaterialFlag(video::EMF_BILINEAR_FILTER, false);
                //m_spritenode->setMaterialType(video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF);
@@ -58,13 +48,12 @@ public:
                m_spritenode->setVisible(true);
                m_spritenode->setSize(size);
                /* Update brightness */
-               u8 light = 64;
-               try{
-                       MapNode n = env->getMap().getNode(floatToInt(pos, BS));
-                       light = decode_light(n.getLightBlend(env->getDayNightRatio(),
-                                       env->getGameDef()->ndef()));
-               }
-               catch(InvalidPositionException &e){}
+               u8 light;
+               bool pos_ok;
+               MapNode n = env->getMap().getNodeNoEx(floatToInt(pos, BS), &pos_ok);
+               light = pos_ok ? decode_light(n.getLightBlend(env->getDayNightRatio(),
+                                                       env->getGameDef()->ndef()))
+                              : 64;
                video::SColor color(255,light,light,light);
                m_spritenode->setColor(color);
        }