Improve waving defintions

- Allow more drawtypes to use waving
- Don't hardcode waving type, defined by nodedef
- Make leaves_with_apples wave :)
This commit is contained in:
BlockMen 2015-12-19 13:42:06 +01:00
parent 3264b59fc7
commit 0d27cd1c2a
9 changed files with 83 additions and 59 deletions

View File

@ -204,3 +204,8 @@ function core.raillike_group(name)
end end
return id return id
end end
local waving_groups = {leaves = 1, plants = 2}
function core.get_waving_group(name)
return waving_groups[name] or 0
end

View File

@ -2335,6 +2335,9 @@ These functions return the leftover itemstack.
* Returns rating of the connect_to_raillike group corresponding to name * Returns rating of the connect_to_raillike group corresponding to name
* If name is not yet the name of a connect_to_raillike group, a new group id * If name is not yet the name of a connect_to_raillike group, a new group id
* is created, with that name * is created, with that name
* `core.get_waving_group(name)`: returns a rating
* name can be "leaves" or "plants"
* returned rating defines which kind of waving is used by shaders
* `minetest.get_content_id(name)`: returns an integer * `minetest.get_content_id(name)`: returns an integer
* Gets the internal content ID of `name` * Gets the internal content ID of `name`
* `minetest.get_name_from_content_id(content_id)`: returns a string * `minetest.get_name_from_content_id(content_id)`: returns a string

View File

@ -2,14 +2,14 @@
# www.blender.org # www.blender.org
mtllib default_leaves_apple.mtl mtllib default_leaves_apple.mtl
o Cube_Cube.001 o Cube_Cube.001
v -0.494900 0.507706 0.497315 v -0.494900 -0.492294 -0.498102
v -0.494900 0.507706 -0.498102 v -0.494900 -0.492294 0.497315
v -0.494900 -0.497234 -0.498102 v 0.497295 0.502766 -0.498102
v -0.494900 -0.497234 0.497315 v 0.497295 0.502766 0.497315
v 0.497295 0.507706 -0.498102 v 0.497295 -0.492294 0.497315
v 0.497295 -0.497234 -0.498102 v -0.494900 0.502766 -0.498102
v 0.497295 0.507706 0.497315 v 0.497295 -0.492294 -0.498102
v 0.497295 -0.497234 0.497315 v -0.494900 0.502766 0.497315
v 0.158101 0.160790 -0.112246 v 0.158101 0.160790 -0.112246
v 0.158101 -0.131804 -0.112246 v 0.158101 -0.131804 -0.112246
v 0.158101 0.160790 0.180347 v 0.158101 0.160790 0.180347
@ -26,6 +26,22 @@ v 0.047132 0.159064 0.069418
v 0.047132 0.279774 0.069418 v 0.047132 0.279774 0.069418
v 0.047132 0.159064 -0.002894 v 0.047132 0.159064 -0.002894
v 0.047132 0.279774 -0.002894 v 0.047132 0.279774 -0.002894
v 0.503668 -0.490861 -0.498102
v -0.494900 -0.497234 -0.498102
v 0.503668 0.501334 -0.498102
v 0.497295 -0.492472 0.502076
v -0.501272 0.501333 -0.498102
v 0.497295 -0.492472 -0.502863
v -0.501272 0.501334 0.497315
v -0.494900 -0.497234 0.497315
v -0.501272 -0.490862 0.497315
v 0.497295 0.502944 0.502076
v 0.503668 0.501333 0.497315
v -0.494900 0.507706 0.497315
v 0.503668 -0.490862 0.497315
v 0.497295 0.502944 -0.502863
v -0.501272 -0.490862 -0.498102
v -0.494900 0.507706 -0.498102
vt 0.499998 0.999901 vt 0.499998 0.999901
vt -0.000002 0.999897 vt -0.000002 0.999897
vt 0.000002 -0.000002 vt 0.000002 -0.000002
@ -51,30 +67,30 @@ vt 0.875000 0.687500
vt 0.625000 0.687500 vt 0.625000 0.687500
vt 0.875000 0.687429 vt 0.875000 0.687429
vn -1.000000 0.000000 0.000000 vn -1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000 vn -0.000000 0.000000 -1.000000
vn 1.000000 0.000000 0.000000 vn 1.000000 0.000000 0.000000
vn 0.000000 -0.000000 1.000000 vn -0.000000 -0.000000 1.000000
vn 0.000000 1.000000 -0.000000
vn 0.000000 -1.000000 -0.000000 vn 0.000000 -1.000000 -0.000000
vn 0.000000 1.000000 0.000000
usemtl None usemtl None
s off s off
f 1/1/1 2/2/1 3/3/1 4/4/1 f 36/1/1 40/2/1 26/3/1 32/4/1
f 2/4/2 5/5/2 6/6/2 3/3/2 f 39/4/2 29/5/2 27/6/2 25/3/2
f 5/4/3 7/5/3 8/6/3 6/3/3 f 30/4/3 38/5/3 34/6/3 28/3/3
f 7/4/4 1/5/4 4/6/4 8/3/4 f 37/4/4 35/5/4 31/6/4 33/3/4
f 4/2/5 3/3/5 6/4/5 8/1/5 f 4/2/5 3/3/5 6/4/5 8/1/5
f 2/4/6 1/1/6 7/2/6 5/3/6 f 2/4/6 1/1/6 7/2/6 5/3/6
f 18/7/1 20/8/1 19/9/1 17/10/1 f 18/7/1 20/8/1 19/9/1 17/10/1
f 20/7/2 24/8/2 23/9/2 19/10/2 f 20/7/2 24/8/2 23/9/2 19/10/2
f 24/11/3 22/7/3 21/8/3 23/12/3 f 24/11/3 22/7/3 21/8/3 23/12/3
f 22/11/4 18/13/4 17/14/4 21/12/4 f 22/11/4 18/13/4 17/14/4 21/12/4
f 22/10/6 24/15/6 20/16/6 18/9/6 f 22/10/5 24/15/5 20/16/5 18/9/5
usemtl None_NONE usemtl None_NONE
f 17/3/5 19/3/5 23/3/5 21/3/5 f 17/3/6 19/3/6 23/3/6 21/3/6
usemtl None_torches_torch.png usemtl None_torches_torch.png
f 10/17/1 12/18/1 11/19/1 9/20/1 f 10/17/1 12/18/1 11/19/1 9/20/1
f 12/20/2 16/17/2 15/18/2 11/19/2 f 12/20/2 16/17/2 15/18/2 11/19/2
f 16/17/3 14/18/3 13/19/3 15/20/3 f 16/17/3 14/18/3 13/19/3 15/20/3
f 14/18/4 10/19/4 9/20/4 13/17/4 f 14/18/4 10/19/4 9/20/4 13/17/4
f 9/21/5 11/22/5 15/23/5 13/18/5 f 9/21/6 11/22/6 15/23/6 13/18/6
f 14/17/6 16/18/6 12/21/6 10/24/6 f 14/17/5 16/18/5 12/21/5 10/24/5

View File

@ -1,7 +1,7 @@
minetest.register_node("default:junglegrass", { minetest.register_node("default:junglegrass", {
description = "Jungle Grass", description = "Jungle Grass",
drawtype = "plantlike", drawtype = "plantlike",
waving = 1, waving = core.get_waving_group("plants"),
visual_scale = 1.3, visual_scale = 1.3,
tiles = {"default_junglegrass.png"}, tiles = {"default_junglegrass.png"},
inventory_image = "default_junglegrass.png", inventory_image = "default_junglegrass.png",
@ -21,7 +21,7 @@ minetest.register_node("default:junglegrass", {
minetest.register_node("default:dry_shrub", { minetest.register_node("default:dry_shrub", {
description = "Dry Shrub", description = "Dry Shrub",
drawtype = "plantlike", drawtype = "plantlike",
waving = 1, waving = core.get_waving_group("plants"),
visual_scale = 1.0, visual_scale = 1.0,
tiles = {"default_dry_shrub.png"}, tiles = {"default_dry_shrub.png"},
inventory_image = "default_dry_shrub.png", inventory_image = "default_dry_shrub.png",
@ -41,7 +41,7 @@ minetest.register_node("default:dry_shrub", {
minetest.register_node("default:grass_5", { minetest.register_node("default:grass_5", {
description = "Grass", description = "Grass",
drawtype = "plantlike", drawtype = "plantlike",
waving = 1, waving = core.get_waving_group("plants"),
tiles = {"default_grass_5.png"}, tiles = {"default_grass_5.png"},
inventory_image = "default_grass_3.png", inventory_image = "default_grass_3.png",
--wield_image = "default_grass_3.png", --wield_image = "default_grass_3.png",
@ -68,7 +68,7 @@ minetest.register_node("default:grass_5", {
minetest.register_node("default:dry_grass_5", { minetest.register_node("default:dry_grass_5", {
description = "Dry Grass", description = "Dry Grass",
drawtype = "plantlike", drawtype = "plantlike",
waving = 1, waving = core.get_waving_group("plants"),
tiles = {"default_dry_grass_5.png"}, tiles = {"default_dry_grass_5.png"},
inventory_image = "default_dry_grass_3.png", inventory_image = "default_dry_grass_3.png",
--wield_image = "default_dry_grass_3.png", --wield_image = "default_dry_grass_3.png",
@ -96,7 +96,7 @@ for i = 1, 4 do
minetest.register_node("default:grass_" .. i, { minetest.register_node("default:grass_" .. i, {
description = "Grass", description = "Grass",
drawtype = "plantlike", drawtype = "plantlike",
waving = 1, waving = core.get_waving_group("plants"),
tiles = {"default_grass_" .. i .. ".png"}, tiles = {"default_grass_" .. i .. ".png"},
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
@ -115,7 +115,7 @@ for i = 1, 4 do
minetest.register_node("default:dry_grass_" .. i, { minetest.register_node("default:dry_grass_" .. i, {
description = "Dry Grass", description = "Dry Grass",
drawtype = "plantlike", drawtype = "plantlike",
waving = 1, waving = core.get_waving_group("plants"),
tiles = {"default_dry_grass_" .. i .. ".png"}, tiles = {"default_dry_grass_" .. i .. ".png"},
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,

View File

@ -1,7 +1,7 @@
local leaves_def = { local leaves_def = {
description = "Leaves", description = "Leaves",
drawtype = "allfaces_optional", drawtype = "allfaces_optional",
waving = 1, waving = core.get_waving_group("leaves"),
visual_scale = 1.3, visual_scale = 1.3,
tiles = {"default_leaves.png"}, tiles = {"default_leaves.png"},
special_tiles = {"default_leaves_simple.png"}, special_tiles = {"default_leaves_simple.png"},
@ -73,17 +73,7 @@ default.register_leaves("default:acacia_leaves", {
-- Leaves with apple -- Leaves with apple
if core.setting_getbool("enable_shaders") and core.setting_getbool("enable_waving_leaves") == true then minetest.register_node("default:leaves_with_apple", {
default.register_leaves("default:leaves_with_apple", {
description = "Leaves",
tiles = {"default_apple.png^default_leaves.png"},
special_tiles = {"default_leaves_simple.png"},
drop = "default:apple",
after_place_node = function(...)
end,
})
else
minetest.register_node("default:leaves_with_apple", {
description = "Leaves with Apple", description = "Leaves with Apple",
drawtype = "mesh", drawtype = "mesh",
mesh = "leaves_with_apple.obj", mesh = "leaves_with_apple.obj",
@ -93,8 +83,8 @@ else
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false, is_ground_content = false,
drop = "default:apple", drop = "default:apple",
waving = core.get_waving_group("leaves"),
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1, fuel = 2, groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1, fuel = 2,
not_in_creative_inventory = 1}, not_in_creative_inventory = 1},
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
}) })
end

View File

@ -277,7 +277,7 @@ farming.register_plant = function(name, def)
nodegroups[pname] = i nodegroups[pname] = i
minetest.register_node(":" .. mname .. ":" .. pname .. "_" .. i, { minetest.register_node(":" .. mname .. ":" .. pname .. "_" .. i, {
drawtype = def.drawtype or "plantlike", drawtype = def.drawtype or "plantlike",
waving = 1, waving = def.waving or 0,
tiles = {mname .. "_" .. pname .. "_" .. i .. ".png"}, tiles = {mname .. "_" .. pname .. "_" .. i .. ".png"},
paramtype = "light", paramtype = "light",
walkable = false, walkable = false,

View File

@ -6,7 +6,8 @@ farming.register_plant("farming:wheat", {
steps = 8, steps = 8,
minlight = 13, minlight = 13,
maxlight = default.LIGHT_MAX, maxlight = default.LIGHT_MAX,
fertility = {"grassland"} fertility = {"grassland"},
waving = core.get_waving_group("plants"),
}) })
-- Cotton -- Cotton
@ -28,5 +29,6 @@ farming.register_plant("farming:potato", {
minlight = 13, minlight = 13,
maxlight = default.LIGHT_MAX, maxlight = default.LIGHT_MAX,
fertility = {"grassland"}, fertility = {"grassland"},
on_use = minetest.item_eat(1) on_use = minetest.item_eat(1),
waving = core.get_waving_group("plants"),
}) })

View File

@ -39,7 +39,7 @@ local function add_simple_flower(name, desc, box, f_groups)
minetest.register_node("flowers:" .. name, { minetest.register_node("flowers:" .. name, {
description = desc, description = desc,
drawtype = "plantlike", drawtype = "plantlike",
waving = 1, waving = core.get_waving_group("plants"),
tiles = {"flowers_" .. name .. ".png"}, tiles = {"flowers_" .. name .. ".png"},
inventory_image = "flowers_" .. name .. ".png", inventory_image = "flowers_" .. name .. ".png",
wield_image = "flowers_" .. name .. ".png", wield_image = "flowers_" .. name .. ".png",

View File

@ -809,6 +809,10 @@ void CNodeDefManager::updateTextures(IGameDef *gamedef,
u32 size = m_content_features.size(); u32 size = m_content_features.size();
// TILE_MATERIAL_* offset, used for waving parameter
// e.g. use TILE_MATERIAL_WAVING_PLANTS = f->waving + offset (which is 5)
const u8 offset = 3;
for (u32 i = 0; i < size; i++) { for (u32 i = 0; i < size; i++) {
ContentFeatures *f = &m_content_features[i]; ContentFeatures *f = &m_content_features[i];
@ -893,23 +897,27 @@ void CNodeDefManager::updateTextures(IGameDef *gamedef,
for (u32 i = 0; i < 6; i++) for (u32 i = 0; i < 6; i++)
tiledef[i].name += std::string("^[noalpha"); tiledef[i].name += std::string("^[noalpha");
} }
if (f->waving == 1) if (f->waving > 0)
material_type = TILE_MATERIAL_WAVING_LEAVES; material_type = offset + f->waving;
break; break;
case NDT_PLANTLIKE: case NDT_PLANTLIKE:
case NDT_CROPLIKE: case NDT_CROPLIKE:
f->solidness = 0; f->solidness = 0;
f->backface_culling = false; f->backface_culling = false;
if (f->waving == 1) if (f->waving > 0)
material_type = TILE_MATERIAL_WAVING_PLANTS; material_type = offset + f->waving;
break; break;
case NDT_FIRELIKE: case NDT_FIRELIKE:
f->backface_culling = false; f->backface_culling = false;
f->solidness = 0; f->solidness = 0;
if (f->waving > 0)
material_type = offset + f->waving;
break; break;
case NDT_MESH: case NDT_MESH:
f->solidness = 0; f->solidness = 0;
f->backface_culling = false; f->backface_culling = false;
if (f->waving > 0)
material_type = offset + f->waving;
break; break;
case NDT_TORCHLIKE: case NDT_TORCHLIKE:
case NDT_SIGNLIKE: case NDT_SIGNLIKE: