/*
Minetest-c55
-Copyright (C) 2010 celeron55, Perttu Ahola <celeron55@gmail.com>
+Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com>
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
Initializes all kind of stuff in here.
Many things depend on this.
- irrlicht: Used for getting texture ids.
+ This accesses g_texturesource; if it is non-NULL, textures are set.
+
+ Client first calls this with g_texturesource=NULL to run some
+ unit tests and stuff, then it runs this again with g_texturesource
+ defined to get the textures.
+
+ Server only calls this once with g_texturesource=NULL.
*/
-void init_mapnode(IIrrlichtWrapper *irrlicht);
+void init_mapnode();
// Initializes g_content_inventory_texture_paths
void init_content_inventory_texture_paths();
5: front
*/
TileSpec tiles[6];
-
+
+ // TODO: Somehow specify inventory image
//std::string inventory_image_path;
- TextureSpec inventory_texture;
+ //TextureSpec inventory_texture;
+ //u32 inventory_texture_id;
+ video::ITexture *inventory_texture;
bool is_ground_content; //TODO: Remove, use walkable instead
bool light_propagates;
bool diggable;
bool buildable_to;
enum LiquidType liquid_type;
- bool wall_mounted; // If true, param2 is set to direction when placed
+ // If true, param2 is set to direction when placed
+ // NOTE: the direction format is quite inefficient and should be changed
+ bool wall_mounted;
+
+ // Inventory item string as which the node appears in inventory when dug.
+ // Mineral overrides this.
+ std::string dug_item;
//TODO: Move more properties here
{
translate_to = NULL;
param_type = CPT_NONE;
+ inventory_texture = NULL;
is_ground_content = false;
light_propagates = false;
sunlight_propagates = false;
buildable_to = false;
liquid_type = LIQUID_NONE;
wall_mounted = false;
+ dug_item = "";
}
~ContentFeatures();
- void setAllTextures(const TextureSpec &spec, u8 alpha=255)
+ /*
+ Quickhands for simple materials
+ */
+
+ void setTexture(u16 i, std::string name, u8 alpha=255);
+
+ void setAllTextures(std::string name, u8 alpha=255)
{
for(u16 i=0; i<6; i++)
{
- tiles[i].spec = spec;
- tiles[i].alpha = alpha;
+ setTexture(i, name, alpha);
}
-
- // Set this too so it can be left as is most times
- /*if(inventory_image_path == "")
- inventory_image_path = porting::getDataPath(imgname.c_str());*/
-
- if(inventory_texture.empty())
- inventory_texture = spec;
}
- void setTexture(u16 i, const TextureSpec &spec, u8 alpha=255)
+
+ /*void setTexture(u16 i, AtlasPointer p, u8 alpha=255)
{
- tiles[i].spec = spec;
- tiles[i].alpha = alpha;
+ tiles[i].texture = p;
+ if(alpha != 255)
+ {
+ tiles[i].alpha = alpha;
+ tiles[i].material_type = MATERIAL_ALPHA_VERTEX;
+ }
}
+ void setAllTextures(AtlasPointer p, u8 alpha=255)
+ {
+ for(u16 i=0; i<6; i++)
+ {
+ setTexture(i, p, alpha);
+ }
+ }*/
- void setInventoryTexture(const TextureSpec &spec)
+ void setTile(u16 i, const TileSpec &tile)
{
- inventory_texture = spec;
+ tiles[i] = tile;
}
-
- /*void setInventoryImage(std::string imgname)
+ void setAllTiles(const TileSpec &tile)
{
- inventory_image_path = porting::getDataPath(imgname.c_str());
- }*/
+ for(u16 i=0; i<6; i++)
+ {
+ setTile(i, tile);
+ }
+ }
+
+ void setInventoryTexture(std::string imgname);
+
+ void setInventoryTextureCube(std::string top,
+ std::string left, std::string right);
};
/*
union
{
- u8 param2;
-
/*
- Direction for torches and other stuff.
- Format is freeform. e.g. packDir or encode_dirs can be used.
+ The second parameter. Initialized to 0.
+ Direction for torches and flowing water.
*/
+ u8 param2;
u8 dir;
};