Mod updates
|
@ -1,3 +1,13 @@
|
|||
--------------------------------------------------
|
||||
Ver. 2.2 (Devel) [27.11.2020]
|
||||
|
||||
Added posibility to take flowing liquid
|
||||
- Source node is taken from flowing (searched in liquid_range)
|
||||
|
||||
Settings added (settingtypes.txt)
|
||||
- bucket_get_flowing (Default = true) - Flowing liwuid can be taken
|
||||
|
||||
--------------------------------------------------
|
||||
Ver. 2.0 [14.11.2020]
|
||||
|
||||
Settings added (settingtypes.txt)
|
||||
|
|
|
@ -8,6 +8,7 @@ Fork of **Minetest Game mod: bucket**
|
|||
- flowing is only one block to prevent flooding with one bucket
|
||||
- If "bucket water" gets in contact with normal water or river water, then the bucket water changes to this type.
|
||||
- If "bucket lava" gets in contact with water, or default lava, the bucket lava changes to default type - this can result in lava flooding. Just don't mess up with lava :)
|
||||
- liquid can be taken from flowing liquid - you don't have to look for source
|
||||
|
||||
**Working with other mods:**
|
||||
|
||||
|
|
|
@ -43,6 +43,7 @@ minetest.override_item(Liquid_name.water.bucket_source, {
|
|||
description = S("Bucket Water Source"),
|
||||
liquid_alternative_flowing = Liquid_name.water.bucket_flowing,
|
||||
liquid_alternative_source = Liquid_name.water.bucket_source,
|
||||
liquid_renewable = false,
|
||||
})
|
||||
|
||||
minetest.register_node(Liquid_name.water.bucket_flowing, water_flowing_def)
|
||||
|
@ -51,6 +52,7 @@ minetest.override_item(Liquid_name.water.bucket_flowing, {
|
|||
liquid_alternative_flowing = Liquid_name.water.bucket_flowing,
|
||||
liquid_alternative_source = Liquid_name.water.bucket_source,
|
||||
liquid_range = bucket_water_range,
|
||||
liquid_renewable = false,
|
||||
})
|
||||
|
||||
minetest.register_node(Liquid_name.lava.bucket_source, lava_source_def)
|
||||
|
@ -58,6 +60,7 @@ minetest.override_item(Liquid_name.lava.bucket_source, {
|
|||
description = S("Bucket Lava Source"),
|
||||
liquid_alternative_flowing = Liquid_name.lava.bucket_flowing,
|
||||
liquid_alternative_source = Liquid_name.lava.bucket_source,
|
||||
liquid_renewable = false,
|
||||
})
|
||||
|
||||
minetest.register_node(Liquid_name.lava.bucket_flowing, lava_flowing_def)
|
||||
|
@ -66,6 +69,7 @@ minetest.override_item(Liquid_name.lava.bucket_flowing, {
|
|||
liquid_alternative_flowing = Liquid_name.lava.bucket_flowing,
|
||||
liquid_alternative_source = Liquid_name.lava.bucket_source,
|
||||
liquid_range = bucket_lava_range,
|
||||
liquid_renewable = false,
|
||||
})
|
||||
|
||||
|
||||
|
|
|
@ -21,7 +21,24 @@ minetest.register_alias("bucket_lava", bucket.lava)
|
|||
-- define bucket liquids and Liquid_name
|
||||
dofile(minetest.get_modpath("bucket") .. "/bucket_liquids.lua")
|
||||
|
||||
-- according to source (liquid type) assign bucket with "bucket" liquid
|
||||
-- with this you can override the mod setting
|
||||
bucket.giving_back={
|
||||
-- return bucket for standard water and lava
|
||||
[Liquid_name.lava.source]=bucket.lava,
|
||||
[Liquid_name.water.source]=bucket.water,
|
||||
-- return bucket for river water
|
||||
[Liquid_name.water.river_source ]=bucket.water,
|
||||
-- return bucket for bucket water and lava
|
||||
[Liquid_name.lava.bucket_source]=bucket.lava,
|
||||
[Liquid_name.water.bucket_source]=bucket.water,
|
||||
}
|
||||
|
||||
-- if true, the flowing water can be taken in the bucket
|
||||
-- load settingtypes
|
||||
local get_flowing_liquid = minetest.settings:get_bool("bucket_get_flowing", true)
|
||||
|
||||
-- craft empty bucket
|
||||
minetest.register_craft({
|
||||
output = bucket.empty.." 1",
|
||||
recipe = {
|
||||
|
@ -56,8 +73,6 @@ end
|
|||
-- Needed to avoid creating holes in sloping rivers.
|
||||
-- This function can be called from any mod (that depends on bucket).
|
||||
|
||||
-- this is function from original bucket
|
||||
-- for compatibility, if used by another mod. (not tested)
|
||||
function bucket.register_liquid(source, flowing, itemname, inventory_image, name,
|
||||
groups, force_renew)
|
||||
bucket.liquids[source] = {
|
||||
|
@ -147,25 +162,38 @@ minetest.register_craftitem(bucket.empty, {
|
|||
local liquiddef = bucket.liquids[node.name]
|
||||
local item_count = user:get_wielded_item():get_count()
|
||||
|
||||
-- node.name == liquiddef.flowing return water even from flowing liquid
|
||||
-- get_flowing_liquid - if this is enabled
|
||||
if liquiddef ~= nil
|
||||
and liquiddef.itemname ~= nil
|
||||
and node.name == liquiddef.source then
|
||||
and (node.name == liquiddef.source
|
||||
or (node.name == liquiddef.flowing and get_flowing_liquid)) then
|
||||
if check_protection(pointed_thing.under,
|
||||
user:get_player_name(),
|
||||
"take ".. node.name) then
|
||||
return
|
||||
end
|
||||
|
||||
-- find source for the flowing liquid
|
||||
if node.name == liquiddef.flowing then
|
||||
-- source_dist max. distance from flowing node, if Nil, the max. = 8 is used
|
||||
local source_dist = tonumber(minetest.registered_nodes[liquiddef.flowing].liquid_range) or 8
|
||||
-- Find source node position
|
||||
local source_pos = minetest.find_node_near(pointed_thing.under, source_dist, liquiddef.source) -- position of the source node
|
||||
-- If found, then replace with flowing node
|
||||
if source_pos ~= nil then
|
||||
minetest.set_node(source_pos, {name = liquiddef.flowing})
|
||||
else
|
||||
-- if source not found, then do nothing
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- default set to return filled bucket
|
||||
local giving_back
|
||||
-- according to source (liquid type) assign bucket with "bucket" liquid
|
||||
local giving_back={
|
||||
[Liquid_name.lava.source]=bucket.lava,
|
||||
[Liquid_name.water.source]=bucket.water,
|
||||
[Liquid_name.water.river_source ]=bucket.water,
|
||||
[Liquid_name.lava.bucket_source]=bucket.lava,
|
||||
[Liquid_name.water.bucket_source]=bucket.water,
|
||||
}
|
||||
local giving_back = bucket.giving_back
|
||||
--minetest.log(dump(giving_back[liquiddef.source]))
|
||||
|
||||
-- giving_back from original bucket
|
||||
if giving_back[liquiddef.source] == nil then
|
||||
giving_back[liquiddef.source]=liquiddef.itemname
|
||||
|
@ -220,7 +248,8 @@ bucket.register_liquid(
|
|||
bucket.water,
|
||||
"bucket_water.png",
|
||||
S("Water Bucket"),
|
||||
{tool = 1, water_bucket = 1}
|
||||
{tool = 1, water_bucket = 1},
|
||||
false
|
||||
)
|
||||
|
||||
-- River water source is 'liquid_renewable = false' to avoid horizontal spread
|
||||
|
@ -236,7 +265,7 @@ bucket.register_liquid(
|
|||
"bucket_river_water.png",
|
||||
S("River Water Bucket"),
|
||||
{tool = 1, water_bucket = 1},
|
||||
true
|
||||
false
|
||||
)
|
||||
|
||||
bucket.register_liquid(
|
||||
|
@ -245,7 +274,8 @@ bucket.register_liquid(
|
|||
bucket.lava,
|
||||
"bucket_lava.png",
|
||||
S("Lava Bucket"),
|
||||
{tool = 1}
|
||||
{tool = 1},
|
||||
false
|
||||
)
|
||||
|
||||
-- Unified bucket
|
||||
|
@ -267,7 +297,8 @@ bucket.register_liquid(
|
|||
bucket.lava,
|
||||
"bucket_lava.png",
|
||||
S("Lava Bucket"),
|
||||
{tool = 1}
|
||||
{tool = 1},
|
||||
false
|
||||
)
|
||||
|
||||
----
|
||||
|
|
|
@ -3,3 +3,7 @@ bucket_water_flowing_range (Bucket water flowing range) int 1
|
|||
|
||||
# How far will lava from bucket flow
|
||||
bucket_lava_flowing_range (Bucket lava flowing range) int 1
|
||||
|
||||
# If true, then liquid can be taken even from flowing one
|
||||
# (not only from source)
|
||||
bucket_get_flowing (Flowing liwuid can be taken) bool true
|
||||
|
|
|
@ -18,12 +18,12 @@ local singleplayer = core.is_singleplayer()
|
|||
|
||||
local reg_items = core.registered_items
|
||||
local reg_tools = core.registered_tools
|
||||
local reg_entities = core.registered_entities
|
||||
local reg_aliases = core.registered_aliases
|
||||
|
||||
local log = core.log
|
||||
local after = core.after
|
||||
local clr = core.colorize
|
||||
local sound_play = core.sound_play
|
||||
local parse_json = core.parse_json
|
||||
local write_json = core.write_json
|
||||
local chat_send = core.chat_send_player
|
||||
|
@ -217,6 +217,11 @@ local group_names = {
|
|||
["color_dark_green,dye"] = S"Any dark green dye",
|
||||
}
|
||||
|
||||
craftguide.model_alias = {
|
||||
["boats:boat"] = {name = "boats:boat", drawtype = "entity"},
|
||||
--["carts:cart"] = {name = "carts:cart", drawtype = "entity"}, -- the cart animation is broken
|
||||
}
|
||||
|
||||
local function err(str)
|
||||
return log("error", str)
|
||||
end
|
||||
|
@ -1173,9 +1178,21 @@ local function get_title_fs(query_item, favs, lang_code, fs, spacing)
|
|||
"style_type[label;font=normal]")
|
||||
|
||||
local def = reg_items[query_item]
|
||||
local model_alias = craftguide.model_alias[query_item]
|
||||
|
||||
if def.drawtype == "mesh" then
|
||||
local tiles = def.tiles or def.textures
|
||||
if def.drawtype == "mesh" or model_alias then
|
||||
if model_alias then
|
||||
if model_alias.drawtype == "entity" then
|
||||
def = reg_entities[model_alias.name]
|
||||
local init_props = def.initial_properties
|
||||
def.textures = init_props and init_props.textures or def.textures
|
||||
def.mesh = init_props and init_props.mesh or def.mesh
|
||||
else
|
||||
def = reg_items[model_alias.name]
|
||||
end
|
||||
end
|
||||
|
||||
local tiles = def.tiles or def.textures or {}
|
||||
local t = {}
|
||||
|
||||
for _, v in ipairs(tiles) do
|
||||
|
|
|
@ -8,7 +8,7 @@ local use_cmi = minetest.global_exists("cmi")
|
|||
|
||||
mobs = {
|
||||
mod = "redo",
|
||||
version = "20201115",
|
||||
version = "20201130",
|
||||
intllib = S,
|
||||
invis = minetest.global_exists("invisibility") and invisibility or {}
|
||||
}
|
||||
|
@ -58,6 +58,7 @@ local mobs_drop_items = settings:get_bool("mobs_drop_items") ~= false
|
|||
local mobs_griefing = settings:get_bool("mobs_griefing") ~= false
|
||||
local spawn_protected = settings:get_bool("mobs_spawn_protected") ~= false
|
||||
local remove_far = settings:get_bool("remove_far_mobs") ~= false
|
||||
local mob_area_spawn = settings:get_bool("mob_area_spawn")
|
||||
local difficulty = tonumber(settings:get("mob_difficulty")) or 1.0
|
||||
local show_health = settings:get_bool("mob_show_health") ~= false
|
||||
local max_per_block = tonumber(settings:get("max_objects_per_block") or 99)
|
||||
|
@ -276,10 +277,10 @@ function mob_class:set_velocity(v)
|
|||
c_x, c_y = unpack(self:collision())
|
||||
end
|
||||
|
||||
local yaw = (self.object:get_yaw() or 0) + self.rotate
|
||||
local yaw = (self.object:get_yaw() or 0) + (self.rotate or 0)
|
||||
|
||||
-- nil check for velocity
|
||||
v = v or 0
|
||||
v = v or 0.01
|
||||
|
||||
-- check if standing in liquid with max viscosity of 7
|
||||
local visc = min(minetest.registered_nodes[self.standing_in].liquid_viscosity, 7)
|
||||
|
@ -291,8 +292,8 @@ function mob_class:set_velocity(v)
|
|||
v = v / (visc + 1)
|
||||
end
|
||||
|
||||
-- set velocity with hard limit of 10
|
||||
local vel = self.object:get_velocity()
|
||||
-- set velocity
|
||||
local vel = self.object:get_velocity() or 0
|
||||
|
||||
local new_vel = {
|
||||
x = (sin(yaw) * -v) + c_x,
|
||||
|
@ -3908,8 +3909,27 @@ function mobs:spawn_specific(name, nodes, neighbors, min_light, max_light, inter
|
|||
end
|
||||
end
|
||||
|
||||
-- returns position if we have enough space to spawn mob
|
||||
pos = can_spawn(pos, name)
|
||||
-- should we check mob area for obstructions ?
|
||||
if mob_area_spawn ~= true then
|
||||
|
||||
-- do we have enough height clearance to spawn mob?
|
||||
local ent = minetest.registered_entities[name]
|
||||
local height = max(1, math.ceil(
|
||||
(ent.collisionbox[5] or 0.25) - (ent.collisionbox[2] or -0.25) - 1))
|
||||
|
||||
for n = 0, height do
|
||||
|
||||
local pos2 = {x = pos.x, y = pos.y + n, z = pos.z}
|
||||
|
||||
if minetest.registered_nodes[node_ok(pos2).name].walkable == true then
|
||||
--print ("--- inside block", name, node_ok(pos2).name)
|
||||
return
|
||||
end
|
||||
end
|
||||
else
|
||||
-- returns position if we have enough space to spawn mob
|
||||
pos = can_spawn(pos, name)
|
||||
end
|
||||
|
||||
if pos then
|
||||
|
||||
|
|
|
@ -697,6 +697,9 @@ External Settings for "minetest.conf"
|
|||
function.
|
||||
'mob_nospawn_range' Minimum range a mob can spawn near player (def: 12)
|
||||
'mob_active_limit' Number of active mobs in game, 0 for unlimited
|
||||
'mob_area_spawn' When true will check surrounding area the size of the
|
||||
mob for obstructions before spawning, otherwise it
|
||||
defaults to checking the height of the mob only.
|
||||
|
||||
Players can override the spawn chance for each mob registered by adding a line
|
||||
to their minetest.conf file with a new value, the lower the value the more each
|
||||
|
|
|
@ -33,3 +33,6 @@ mob_nospawn_range (Mob no-spawn range) float 12.0
|
|||
|
||||
# Sets maximum number of active mobs in game (0 for unlimited)
|
||||
mob_active_limit (Mob Active Limit) float 0
|
||||
|
||||
# Enables area check when spawning mobs
|
||||
mob_area_spawn (Mob Area Spawn) bool false
|
||||
|
|
|
@ -145,15 +145,22 @@ petz.growth_timer = function(self, dtime)
|
|||
local pos = self.object:get_pos()
|
||||
pos.y = pos.y + 1.01 -- grows a litte up
|
||||
self.object:set_pos(pos)
|
||||
local vel = self.object:get_velocity()
|
||||
local obj
|
||||
if self.parents then -- for chicken only
|
||||
mokapi.remove_mob(self)
|
||||
obj = minetest.add_entity(pos, self.parents[math.random(1, #self.parents)])
|
||||
else
|
||||
obj = self
|
||||
petz.set_properties(self, {
|
||||
jump = false,
|
||||
is_baby = false,
|
||||
visual_size = self.visual_size,
|
||||
collisionbox = self.collisionbox
|
||||
})
|
||||
end
|
||||
local vel = obj:get_velocity()
|
||||
vel.y=vel.y + 4.0
|
||||
self.object:set_velocity(vel)
|
||||
petz.set_properties(self, {
|
||||
jump = false,
|
||||
is_baby = false,
|
||||
visual_size = self.visual_size,
|
||||
collisionbox = self.collisionbox
|
||||
})
|
||||
mokapi.make_sound("object", self.object, "petz_pop_sound", petz.settings.max_hear_distance)
|
||||
obj:set_velocity(vel)
|
||||
mokapi.make_sound("object", obj, "petz_pop_sound", petz.settings.max_hear_distance)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -27,8 +27,14 @@ petz.lay_egg = function(self)
|
|||
{x = pos.x + lay_range, y = pos.y + 1, z = pos.z + lay_range},
|
||||
"petz:ducky_nest")
|
||||
if #nearby_nodes > 1 then
|
||||
local nest_type
|
||||
if self.type == "hen" then
|
||||
nest_type = "chicken"
|
||||
else
|
||||
nest_type = "ducky"
|
||||
end
|
||||
local nest_to_lay = nearby_nodes[math.random(1, #nearby_nodes)]
|
||||
minetest.set_node(nest_to_lay, {name= "petz:"..self.type.."_nest_egg"})
|
||||
minetest.set_node(nest_to_lay, {name= "petz:"..nest_type.."_nest_egg"})
|
||||
petz.increase_egg_count(self)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -170,7 +170,10 @@ function petz.set_initial_properties(self, staticdata, dtime_s)
|
|||
self.gallop_exhausted = mobkit.remember(self, "gallop_exhausted", false)
|
||||
self.gallop_recover_time = mobkit.remember(self, "gallop_recover_time", petz.settings.gallop_recover_time)
|
||||
end
|
||||
if self.type == "pony" then
|
||||
if self.parents then
|
||||
self.is_baby = mobkit.remember(self, "is_baby", true)
|
||||
end
|
||||
if self.type == "pony" then --not in the previopus loop, cos also is mountable
|
||||
self.horseshoes = mobkit.remember(self, "horseshoes", 0)
|
||||
end
|
||||
if self.herd then
|
||||
|
@ -351,6 +354,10 @@ function petz.set_initial_properties(self, staticdata, dtime_s)
|
|||
petz.colorize(self, self.colorized)
|
||||
end
|
||||
end
|
||||
if self.type == "chicken" then
|
||||
mobkit.remember(self, "texture_no", 1)
|
||||
petz.set_properties(self, {textures = {self.textures[1]}})
|
||||
end
|
||||
if self.horseshoes and captured_mob == false then
|
||||
petz.horseshoes_speedup(self)
|
||||
end
|
||||
|
|
|
@ -23,7 +23,7 @@ petz.on_step = function(self, dtime)
|
|||
end
|
||||
--Tamagochi
|
||||
--Check the hungry
|
||||
if petz.settings.tamagochi_mode == true and self.owner and self.is_pet and petz.settings.tamagochi_hungry_warning > 0 and not(self.status=="sleep") then
|
||||
if petz.settings.tamagochi_mode == true and self.owner and self.is_pet and petz.settings.tamagochi_hungry_warning > 0 and not(self.status=="sleep") and petz.settings[self.type.."_follow"] then
|
||||
if not(self.tmp_follow_texture) then
|
||||
local items = string.split(petz.settings[self.type.."_follow"], ',')
|
||||
local item = petz.str_remove_spaces(items[1]) --the first one
|
||||
|
|
|
@ -98,6 +98,7 @@ has been captured=foi capturado.
|
|||
has been tamed.=foi domado.
|
||||
has starved to death!!!=morreu de fome!!!
|
||||
Saúde=Abraço
|
||||
Hen=Galinha
|
||||
Herding=Pastoreio
|
||||
Honey=Mel
|
||||
Honeycomb=Favo de mel
|
||||
|
@ -178,6 +179,7 @@ Roasted Goat Meat=Carne assada de caprino
|
|||
Roasted Lamb Chop=Costeleta de cordeiro assada
|
||||
Roasted Parrot=Papagaio Assado
|
||||
Roasted Porkchop=Costeleta de porco assada
|
||||
Rooster=Galo
|
||||
Saddle=Sela
|
||||
Saddlebag=Sacos de Sela
|
||||
Santa Killer=Papai Noel Assassino
|
||||
|
|
|
@ -98,6 +98,7 @@ has been captured=wurde gefangen
|
|||
has been tamed.=wurde gezähmt.
|
||||
has starved to death!!!=ist verhungert!!!
|
||||
Health=Gesundheit
|
||||
Hen=Henne
|
||||
Herding=Hüten
|
||||
Honey=Honig
|
||||
Honeycomb=Honigwabe
|
||||
|
@ -178,6 +179,7 @@ Roasted Goat Meat=Gebratenes Ziegenfleisch
|
|||
Roasted Lamb Chop=Gebratene Lammkeule
|
||||
Roasted Parrot=Gebratener Papagei
|
||||
Roasted Porkchop=Gebratenes Schweinekotelett
|
||||
Rooster=Hahn
|
||||
Saddle=Sattel
|
||||
Saddlebag=Satteltasche
|
||||
Santa Killer=Santa der Killer
|
||||
|
|
|
@ -98,6 +98,7 @@ has been captured=ha sido capturado
|
|||
has been tamed.=ha sido domesticado.
|
||||
has starved to death!!!=ha muerto de hambre!!!
|
||||
Health=Salud
|
||||
Hen=Gallina
|
||||
Herding=Pastoreo
|
||||
Honey=Miel
|
||||
Honeycomb=Panal
|
||||
|
@ -178,6 +179,7 @@ Roasted Goat Meat=Carne de cabrito asada
|
|||
Roasted Lamb Chop=Chuletilla de cordero asada
|
||||
Roasted Parrot=Loro tostado
|
||||
Roasted Porkchop=Chuleta de cerdo asada
|
||||
Rooster=Gallo
|
||||
Saddle=Silla de montar
|
||||
Saddlebag=Alforjas
|
||||
Santa Killer=Papá Noel asesino
|
||||
|
|
|
@ -98,6 +98,7 @@ has been captured=a été capturé
|
|||
has been tamed.=a été apprivoisé.
|
||||
has starved to death!!!=est mort de faim!!!
|
||||
Health=Santé
|
||||
Hen=Poule
|
||||
Herding=Troupeau
|
||||
Honey=Miel
|
||||
Honeycomb=Ruche
|
||||
|
@ -178,6 +179,7 @@ Roasted Goat Meat=Viande de chèvre rôtie
|
|||
Roasted Lamb Chop=Mouton rôti
|
||||
Roasted Parrot=Perroquet rôti
|
||||
Roasted Porkchop=Rôti de porc
|
||||
Rooster=Coq
|
||||
Saddle=Selle
|
||||
Saddlebag=Sac pour selle
|
||||
Santa Killer=Papa Noël tueur
|
||||
|
|
|
@ -98,6 +98,7 @@ has been captured=был пойман
|
|||
has been tamed.=был приручен.
|
||||
has starved to death!!!=Умер от голода!!!
|
||||
Health=Здоровье
|
||||
Hen=Курица
|
||||
Herding=выпас
|
||||
Honey=Мёд
|
||||
Honeycomb=Соты
|
||||
|
@ -178,6 +179,7 @@ Roasted Lamb Chop=Жареные отбивные из ягненка
|
|||
Roasted Goat Meat=Жареное козье мясо
|
||||
Roasted Parrot=Жареный попугай
|
||||
Roasted Porkchop=Жареная свиная отбивная
|
||||
Rooster=Рустер
|
||||
Saddle=Седло
|
||||
Saddlebag=Мешок
|
||||
Santa Killer=Злой Санта
|
||||
|
|
|
@ -204,7 +204,8 @@ minetest.register_node("petz:chicken_nest_egg", {
|
|||
},
|
||||
on_construct = function(pos)
|
||||
local timer = minetest.get_node_timer(pos)
|
||||
timer:start(math.random(400, 600))
|
||||
local hatch_egg_timing = petz.settings.hatch_egg_timing
|
||||
timer:start(math.random(hatch_egg_timing - (hatch_egg_timing*0.2), hatch_egg_timing+ (hatch_egg_timing*0.2)))
|
||||
end,
|
||||
on_timer = function(pos)
|
||||
local pos_above = {x = pos.x, y = pos.y +1, z= pos.z}
|
||||
|
@ -212,7 +213,9 @@ minetest.register_node("petz:chicken_nest_egg", {
|
|||
if not minetest.registered_entities["petz:chicken"] then
|
||||
return
|
||||
end
|
||||
minetest.add_entity(pos_above, "petz:chicken")
|
||||
local entity = minetest.add_entity(pos_above, "petz:chicken"):get_luaentity()
|
||||
entity.is_baby = mobkit.remember(entity, "is_baby", true) --it is a baby
|
||||
entity.growth_time = mobkit.remember(entity, "growth_time", 0.0) --the chicken to grow
|
||||
minetest.set_node(pos, {name= "petz:ducky_nest"})
|
||||
return true
|
||||
end
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
---
|
||||
--- Aquatic Behaviours
|
||||
---
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- ARBOREAL BRAIN
|
||||
--
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- Attack Player Behaviour
|
||||
--
|
||||
|
@ -102,8 +100,6 @@ end
|
|||
|
||||
function petz.lq_jumpattack(self,height,target)
|
||||
local phase=1
|
||||
local timer=0.5
|
||||
local tgtbox = target:get_properties().collisionbox
|
||||
local func=function(self)
|
||||
if not mobkit.is_alive(target) then return true end
|
||||
if self.isonground then
|
||||
|
@ -130,7 +126,6 @@ function petz.lq_jumpattack(self,height,target)
|
|||
-- calculate attack spot
|
||||
local yaw = self.object:get_yaw()
|
||||
local dir = minetest.yaw_to_dir(yaw)
|
||||
local apos = mobkit.pos_translate2d(pos,yaw,self.attack.range)
|
||||
local distance = vector.distance(pos, tgtpos)
|
||||
--minetest.chat_send_all(tostring(distance))
|
||||
if distance < 2.0 then
|
||||
|
@ -218,8 +213,3 @@ function mobkit.lq_flyattack(self, target)
|
|||
end
|
||||
mobkit.queue_low(self,func)
|
||||
end
|
||||
|
||||
function petz.rpg_damage(self)
|
||||
local attack = self.attack or nil
|
||||
local max_speed = max_speed or 0
|
||||
end
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
---
|
||||
--- Bee Behaviours
|
||||
---
|
||||
|
@ -126,7 +124,6 @@ function mobkit.lq_approach_behive(self)
|
|||
else
|
||||
return true
|
||||
end
|
||||
local pos = self.object:get_pos()
|
||||
--local y_distance = tpos.y - pos.y
|
||||
if mobkit.drive_to_pos(self, tpos, 1.5, 6.28, (self.view_range / 4) ) then
|
||||
mobkit.clear_queue_high(self)
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- Breed Behaviour
|
||||
--
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- WANDER FLY BEHAVIOUR (2 functions: HQ & LQ)
|
||||
--
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- FOLLOW BEHAVIOURS
|
||||
-- 2 types: for terrestrial and for flying/aquatic mobs.
|
||||
|
@ -103,3 +101,28 @@ function mobkit.flyto(self, target)
|
|||
self.object:set_yaw(new_yaw)
|
||||
self.object:set_velocity(velocity)
|
||||
end
|
||||
|
||||
function petz.follow_parents(self, pos)
|
||||
local tpos
|
||||
local ent_obj = mobkit.get_closest_entity(self, self.parents[1]) -- look for the mom to join with
|
||||
if not ent_obj then
|
||||
ent_obj = mobkit.get_closest_entity(self, self.parents[2]) -- look for the dad to join with
|
||||
end
|
||||
if ent_obj then
|
||||
local ent = ent_obj:get_luaentity()
|
||||
if ent then
|
||||
tpos = ent_obj:get_pos()
|
||||
local distance = vector.distance(pos, tpos)
|
||||
if distance > 5 then
|
||||
mobkit.hq_goto(self, 10, tpos)
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
else
|
||||
return false
|
||||
end
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
function petz.bh_look_at(self, player_pos, prty)
|
||||
if not(petz.settings.look_at) or not(self.head) or not(petz.is_standing(self)) or self.looking
|
||||
or not(math.random(1, petz.settings.look_at_random) == 1)
|
||||
|
@ -15,7 +13,7 @@ function petz.hq_look_at(self, player_pos, prty)
|
|||
local func = function(self)
|
||||
if not(self.looking) then
|
||||
local random_time = math.random(1, 2)
|
||||
local body_yaw = petz.move_head(self, player_pos)
|
||||
petz.move_head(self, player_pos)
|
||||
--if random_time == 1 then --move the body to fit the head
|
||||
--self.object:set_yaw(body_yaw)
|
||||
--end
|
||||
|
@ -57,7 +55,7 @@ function petz.move_head(self, tpos)
|
|||
self.head_rotation = vector.add(head_rotation, self.head.rotation_origin) --the offset for the rotation, depends on the blender model
|
||||
self.object:set_bone_position("head", self.head.position, self.head_rotation) --set the head movement
|
||||
--minetest.chat_send_all(tostring(mokapi.degrees_to_radians(yaw)))
|
||||
return mokapi.degrees_to_radians(body_yaw-yaw)
|
||||
return mokapi.degrees_to_radians(body_yaw-yaw) --returns body_yaw
|
||||
end
|
||||
|
||||
--this sets the mob to move it's head back to pointing forwards
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- Herding Behaviour
|
||||
--
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
function petz.bh_hunt(self, prty)
|
||||
if self.tamed == true then
|
||||
function petz.bh_hunt(self, prty, force)
|
||||
if self.tamed == true and not(force) then
|
||||
return
|
||||
end
|
||||
local preys_list = petz.settings[self.type.."_preys"]
|
||||
|
|
|
@ -70,9 +70,9 @@ function mobkit.lq_mountdriver(self)
|
|||
local auto_drive = false
|
||||
local func = function(self)
|
||||
if not(self.driver) then return true end
|
||||
local rot_steer, rot_view = math.pi/2, 0
|
||||
local rot_view = 0
|
||||
if self.player_rotation.y == 90 then
|
||||
rot_steer, rot_view = 0, math.pi/2
|
||||
rot_view = math.pi/2
|
||||
end
|
||||
local acce_y = 0
|
||||
local velo= {
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- Replace Behaviour
|
||||
--
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- Runaway from predator behaviour
|
||||
--
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- Teleport Behaviour
|
||||
--
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- Approach Torch Behaviour
|
||||
-- for moths (not finished!!!)
|
||||
|
|
|
@ -38,7 +38,7 @@ function petz.ant_brain(self)
|
|||
|
||||
-- hunt a prey (another queen in the case of a queen)
|
||||
if prty < 20 and self.ant_type == "queen" then
|
||||
petz.bh_hunt(self, 20)
|
||||
petz.bh_hunt(self, 20, true)
|
||||
end
|
||||
|
||||
if prty < 13 and self.ant_type == "queen" and not(self.anthill_founded) then --if queen, try to create a colony (anthill)
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- AQUATIC BRAIN
|
||||
--
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- BEE BRAIN
|
||||
--
|
||||
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- 1. HERBIBORE/FLYING MOBS BRAIN
|
||||
--
|
||||
|
||||
|
@ -100,6 +97,20 @@ function petz.herbivore_brain(self)
|
|||
end
|
||||
end
|
||||
|
||||
-- hunt a prey (another congener)
|
||||
if prty < 12 and self.aggressive then
|
||||
petz.bh_hunt(self, 12, true)
|
||||
end
|
||||
|
||||
--Baby petz follow their parents
|
||||
if prty < 10 then
|
||||
if petz.settings.parent_search and self.parents then
|
||||
if mobkit.timer(self, 5) then --each 5 seconds search for parents
|
||||
petz.follow_parents(self, pos)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--if prty < 7 and self.type == "moth" and mobkit.is_queue_empty_high(self) then --search for a squareball
|
||||
--local pos_torch_near = minetest.find_node_near(pos, self.view_range, "default:torch")
|
||||
--if pos_torch_near then
|
||||
|
@ -108,7 +119,7 @@ function petz.herbivore_brain(self)
|
|||
--end
|
||||
--end
|
||||
|
||||
--Replace nodes by others
|
||||
--Poop
|
||||
if prty < 7 then
|
||||
petz.poop(self, pos)
|
||||
end
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- MONSTER BRAIN
|
||||
--
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- PREDATOR BRAIN
|
||||
--
|
||||
|
@ -49,7 +47,7 @@ function petz.predator_brain(self)
|
|||
|
||||
-- hunt a prey
|
||||
if prty < 12 then -- if not busy with anything important
|
||||
petz.bh_hunt(self, 12)
|
||||
petz.bh_hunt(self, 12, false)
|
||||
end
|
||||
|
||||
if prty < 10 then
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- SEMIAQUATIC BRAIN
|
||||
--
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- Helpers Functions
|
||||
--
|
||||
|
|
|
@ -1,26 +1,26 @@
|
|||
local modpath, S = ...
|
||||
|
||||
assert(loadfile(modpath .. "/mobkit/bh_ant.lua"))(modpath)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_aquatic.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_arboreal.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_attack.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_bee.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_breed.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_fly.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_follow.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_herding.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_aquatic.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_arboreal.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_attack.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_bee.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_breed.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_fly.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_follow.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_herding.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_hunt.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_mount.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_replace.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_runaway.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_teleport.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_torch.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_replace.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_runaway.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_teleport.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_torch.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/br_ant.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/br_aquatic.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/br_bee.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/br_herbivore.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/br_monster.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/br_predator.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/br_semiaquatic.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/helper_functions.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_head.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/br_aquatic.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/br_bee.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/br_herbivore.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/br_monster.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/br_predator.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/br_semiaquatic.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/helper_functions.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_head.lua"))()
|
||||
|
|
Before Width: | Height: | Size: 73 B |
|
@ -0,0 +1,394 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?><COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
|
||||
<asset>
|
||||
<contributor>
|
||||
<author>VoxelShop User</author>
|
||||
<authoring_tool>VoxelShop V1.8.26
|
||||
</authoring_tool>
|
||||
</contributor>
|
||||
<created>2020-11-29T13:30:01</created>
|
||||
<modified>2020-11-29T13:30:01</modified>
|
||||
<unit meter="1" name="meter"/>
|
||||
<up_axis>Z_UP</up_axis>
|
||||
</asset>
|
||||
<library_images>
|
||||
<image id="petz_chick_texture0-image" name="petz_chick_texture0-image">
|
||||
<init_from>file://petz_chick_texture0.png</init_from>
|
||||
</image>
|
||||
</library_images>
|
||||
<library_effects>
|
||||
<effect id="lambert0-fx">
|
||||
<profile_COMMON>
|
||||
<newparam sid="petz_chick_texture0-surface">
|
||||
<surface type="2D">
|
||||
<init_from>petz_chick_texture0-image</init_from>
|
||||
</surface>
|
||||
</newparam>
|
||||
<newparam sid="petz_chick_texture0-sampler">
|
||||
<sampler2D>
|
||||
<source>petz_chick_texture0-surface</source>
|
||||
<wrap_s>WRAP</wrap_s>
|
||||
<wrap_t>WRAP</wrap_t>
|
||||
<minfilter>NEAREST</minfilter>
|
||||
<magfilter>NEAREST</magfilter>
|
||||
</sampler2D>
|
||||
</newparam>
|
||||
<technique sid="common">
|
||||
<lambert>
|
||||
<emission>
|
||||
<color>0 0 0 1</color>
|
||||
</emission>
|
||||
<ambient>
|
||||
<color>0 0 0 1</color>
|
||||
</ambient>
|
||||
<diffuse>
|
||||
<texture texcoord="TEX0" texture="petz_chick_texture0-sampler"/>
|
||||
</diffuse>
|
||||
</lambert>
|
||||
</technique>
|
||||
</profile_COMMON>
|
||||
</effect>
|
||||
</library_effects>
|
||||
<library_materials>
|
||||
<material id="lambert0-material" name="lambert0">
|
||||
<instance_effect url="#lambert0-fx"/>
|
||||
</material>
|
||||
</library_materials>
|
||||
<library_geometries>
|
||||
<geometry id="Plane-tex-mesh-0" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-0-positions">
|
||||
<float_array count="24" id="Plane-tex-mesh-0-positions-array">-6 -4 -8 -6 0 -10 -6 -4 -10 -6 0 -8 -4 -4 -8 -4 0 -10 -4 -4 -10 -4 0 -8</float_array>
|
||||
<technique_common>
|
||||
<accessor count="8" source="#Plane-tex-mesh-0-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-0-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-0-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-0-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-0-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-0-positions"/>
|
||||
</vertices>
|
||||
<triangles count="12" material="Plane-tex-mesh-0-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-0-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-0-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-1" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-1-positions">
|
||||
<float_array count="24" id="Plane-tex-mesh-1-positions-array">2 -4 -8 2 0 -10 2 -4 -10 2 0 -8 4 -4 -8 4 0 -10 4 -4 -10 4 0 -8</float_array>
|
||||
<technique_common>
|
||||
<accessor count="8" source="#Plane-tex-mesh-1-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-1-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-1-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-1-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-1-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-1-positions"/>
|
||||
</vertices>
|
||||
<triangles count="12" material="Plane-tex-mesh-1-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-1-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-1-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-2" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-2-positions">
|
||||
<float_array count="24" id="Plane-tex-mesh-2-positions-array">-2 -8 -6 -2 -6 -8 -2 -8 -8 -2 -6 -6 0 -8 -6 0 -6 -8 0 -8 -8 0 -6 -6</float_array>
|
||||
<technique_common>
|
||||
<accessor count="8" source="#Plane-tex-mesh-2-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-2-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-2-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-2-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-2-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-2-positions"/>
|
||||
</vertices>
|
||||
<triangles count="12" material="Plane-tex-mesh-2-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-2-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-2-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-3" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-3-positions">
|
||||
<float_array count="48" id="Plane-tex-mesh-3-positions-array">-2 2 -2 -2 4 -4 -2 2 -4 -2 4 -2 -4 -4 0 -4 2 -6 -4 -4 -6 -4 2 0 2 -4 0 2 2 -6 2 -4 -6 2 2 0 0 2 -2 0 4 -4 0 2 -4 0 4 -2</float_array>
|
||||
<technique_common>
|
||||
<accessor count="16" source="#Plane-tex-mesh-3-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-3-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-3-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-3-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-3-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-3-positions"/>
|
||||
</vertices>
|
||||
<triangles count="28" material="Plane-tex-mesh-3-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-3-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-3-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 4 0 5 1 6 2 4 0 7 1 5 2 9 1 8 0 10 2 11 1 8 0 9 2 13 1 12 0 14 2 15 1 12 0 13 2 5 1 10 0 6 2 9 1 10 0 5 2 1 1 14 0 2 2 13 1 14 0 1 2 12 0 3 1 0 2 12 0 15 1 3 2 8 0 7 1 4 2 8 0 11 1 7 2 10 0 4 1 6 2 10 0 8 1 4 2 14 1 9 0 5 2 2 1 14 0 5 2 11 1 9 0 14 2 7 1 2 0 5 2 12 1 11 0 14 2 0 1 2 0 7 2 11 1 12 0 7 2 12 1 0 0 7 2 3 1 13 0 1 2 15 1 13 0 3 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-4" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-4-positions">
|
||||
<float_array count="36" id="Plane-tex-mesh-4-positions-array">0 -2 -12 0 0 -14 0 -2 -16 0 2 -16 0 0 -12 0 2 -14 2 -2 -12 2 0 -14 2 -2 -16 2 2 -16 2 0 -12 2 2 -14</float_array>
|
||||
<technique_common>
|
||||
<accessor count="12" source="#Plane-tex-mesh-4-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-4-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-4-uvs-array">0.6667845 0.66643095 0.83309764 0.66643095 0.6667845 0.33380473</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-4-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-4-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-4-positions"/>
|
||||
</vertices>
|
||||
<triangles count="20" material="Plane-tex-mesh-4-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-4-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-4-uvs"/>
|
||||
<p>0 0 1 1 2 2 1 0 3 1 2 2 0 0 4 1 1 2 1 0 5 1 3 2 7 1 6 0 8 2 9 1 7 0 8 2 10 1 6 0 7 2 11 1 7 0 9 2 3 1 8 0 2 2 9 1 8 0 3 2 6 0 4 1 0 2 6 0 10 1 4 2 7 0 5 1 1 2 7 0 11 1 5 2 8 0 0 1 2 2 8 0 6 1 0 2 4 1 7 0 1 2 10 1 7 0 4 2 5 1 9 0 3 2 11 1 9 0 5 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-5" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-5-positions">
|
||||
<float_array count="24" id="Plane-tex-mesh-5-positions-array">-4 -6 -6 -4 2 -12 -4 -6 -12 -4 2 -6 2 -6 -6 2 2 -12 2 -6 -12 2 2 -6</float_array>
|
||||
<technique_common>
|
||||
<accessor count="8" source="#Plane-tex-mesh-5-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-5-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-5-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-5-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-5-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-5-positions"/>
|
||||
</vertices>
|
||||
<triangles count="12" material="Plane-tex-mesh-5-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-5-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-5-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-6" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-6-positions">
|
||||
<float_array count="36" id="Plane-tex-mesh-6-positions-array">-4 -2 -12 -4 0 -14 -4 -2 -16 -4 2 -16 -4 0 -12 -4 2 -14 -2 -2 -12 -2 0 -14 -2 -2 -16 -2 2 -16 -2 0 -12 -2 2 -14</float_array>
|
||||
<technique_common>
|
||||
<accessor count="12" source="#Plane-tex-mesh-6-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-6-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-6-uvs-array">0.6667845 0.66643095 0.83309764 0.66643095 0.6667845 0.33380473</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-6-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-6-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-6-positions"/>
|
||||
</vertices>
|
||||
<triangles count="20" material="Plane-tex-mesh-6-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-6-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-6-uvs"/>
|
||||
<p>0 0 1 1 2 2 1 0 3 1 2 2 0 0 4 1 1 2 1 0 5 1 3 2 7 1 6 0 8 2 9 1 7 0 8 2 10 1 6 0 7 2 11 1 7 0 9 2 3 1 8 0 2 2 9 1 8 0 3 2 6 0 4 1 0 2 6 0 10 1 4 2 7 0 5 1 1 2 7 0 11 1 5 2 8 0 0 1 2 2 8 0 6 1 0 2 4 1 7 0 1 2 10 1 7 0 4 2 5 1 9 0 3 2 11 1 9 0 5 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
</library_geometries>
|
||||
<library_visual_scenes>
|
||||
<visual_scene id="Scene" name="Scene">
|
||||
<node id="petz_chick.layer" name="petz_chick.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_chick.layer" url="#Plane-tex-mesh-0">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_chick.layer.001" name="petz_chick.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_chick.layer.001" url="#Plane-tex-mesh-1">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_chick.layer.002" name="petz_chick.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_chick.layer.002" url="#Plane-tex-mesh-2">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_chick.layer.003" name="petz_chick.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_chick.layer.003" url="#Plane-tex-mesh-3">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_chick.layer.004" name="petz_chick.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_chick.layer.004" url="#Plane-tex-mesh-4">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_chick.layer.005" name="petz_chick.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_chick.layer.005" url="#Plane-tex-mesh-5">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_chick.layer.006" name="petz_chick.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_chick.layer.006" url="#Plane-tex-mesh-6">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
</visual_scene>
|
||||
</library_visual_scenes>
|
||||
<scene>
|
||||
<instance_visual_scene url="#Scene"/>
|
||||
</scene>
|
||||
</COLLADA>
|
|
@ -0,0 +1,488 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?><COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
|
||||
<asset>
|
||||
<contributor>
|
||||
<author>VoxelShop User</author>
|
||||
<authoring_tool>VoxelShop V1.8.26
|
||||
</authoring_tool>
|
||||
</contributor>
|
||||
<created>2020-11-29T13:34:13</created>
|
||||
<modified>2020-11-29T13:34:13</modified>
|
||||
<unit meter="1" name="meter"/>
|
||||
<up_axis>Z_UP</up_axis>
|
||||
</asset>
|
||||
<library_images>
|
||||
<image id="petz_chicken_texture0-image" name="petz_chicken_texture0-image">
|
||||
<init_from>file://petz_chicken_texture0.png</init_from>
|
||||
</image>
|
||||
</library_images>
|
||||
<library_effects>
|
||||
<effect id="lambert0-fx">
|
||||
<profile_COMMON>
|
||||
<newparam sid="petz_chicken_texture0-surface">
|
||||
<surface type="2D">
|
||||
<init_from>petz_chicken_texture0-image</init_from>
|
||||
</surface>
|
||||
</newparam>
|
||||
<newparam sid="petz_chicken_texture0-sampler">
|
||||
<sampler2D>
|
||||
<source>petz_chicken_texture0-surface</source>
|
||||
<wrap_s>WRAP</wrap_s>
|
||||
<wrap_t>WRAP</wrap_t>
|
||||
<minfilter>NEAREST</minfilter>
|
||||
<magfilter>NEAREST</magfilter>
|
||||
</sampler2D>
|
||||
</newparam>
|
||||
<technique sid="common">
|
||||
<lambert>
|
||||
<emission>
|
||||
<color>0 0 0 1</color>
|
||||
</emission>
|
||||
<ambient>
|
||||
<color>0 0 0 1</color>
|
||||
</ambient>
|
||||
<diffuse>
|
||||
<texture texcoord="TEX0" texture="petz_chicken_texture0-sampler"/>
|
||||
</diffuse>
|
||||
</lambert>
|
||||
</technique>
|
||||
</profile_COMMON>
|
||||
</effect>
|
||||
</library_effects>
|
||||
<library_materials>
|
||||
<material id="lambert0-material" name="lambert0">
|
||||
<instance_effect url="#lambert0-fx"/>
|
||||
</material>
|
||||
</library_materials>
|
||||
<library_geometries>
|
||||
<geometry id="Plane-tex-mesh-0" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-0-positions">
|
||||
<float_array count="24" id="Plane-tex-mesh-0-positions-array">-2 2 -2 -2 4 -4 -2 2 -4 -2 4 -2 0 2 -2 0 4 -4 0 2 -4 0 4 -2</float_array>
|
||||
<technique_common>
|
||||
<accessor count="8" source="#Plane-tex-mesh-0-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-0-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-0-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-0-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-0-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-0-positions"/>
|
||||
</vertices>
|
||||
<triangles count="12" material="Plane-tex-mesh-0-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-0-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-0-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-1" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-1-positions">
|
||||
<float_array count="48" id="Plane-tex-mesh-1-positions-array">0 0 -14 0 2 -16 0 0 -16 0 2 -14 -4 0 -14 -4 2 -16 -4 0 -16 -4 2 -14 2 0 -14 2 2 -16 2 0 -16 2 2 -14 -2 0 -14 -2 2 -16 -2 0 -16 -2 2 -14</float_array>
|
||||
<technique_common>
|
||||
<accessor count="16" source="#Plane-tex-mesh-1-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-1-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-1-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-1-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-1-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-1-positions"/>
|
||||
</vertices>
|
||||
<triangles count="24" material="Plane-tex-mesh-1-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-1-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-1-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 4 0 5 1 6 2 4 0 7 1 5 2 9 1 8 0 10 2 11 1 8 0 9 2 13 1 12 0 14 2 15 1 12 0 13 2 1 1 10 0 2 2 9 1 10 0 1 2 5 1 14 0 6 2 13 1 14 0 5 2 8 0 3 1 0 2 8 0 11 1 3 2 12 0 7 1 4 2 12 0 15 1 7 2 10 0 0 1 2 2 10 0 8 1 0 2 14 0 4 1 6 2 14 0 12 1 4 2 3 1 9 0 1 2 11 1 9 0 3 2 7 1 13 0 5 2 15 1 13 0 7 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-2" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-2-positions">
|
||||
<float_array count="24" id="Plane-tex-mesh-2-positions-array">-6 -4 -8 -6 0 -10 -6 -4 -10 -6 0 -8 -4 -4 -8 -4 0 -10 -4 -4 -10 -4 0 -8</float_array>
|
||||
<technique_common>
|
||||
<accessor count="8" source="#Plane-tex-mesh-2-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-2-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-2-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-2-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-2-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-2-positions"/>
|
||||
</vertices>
|
||||
<triangles count="12" material="Plane-tex-mesh-2-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-2-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-2-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-3" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-3-positions">
|
||||
<float_array count="24" id="Plane-tex-mesh-3-positions-array">2 -4 -8 2 0 -10 2 -4 -10 2 0 -8 4 -4 -8 4 0 -10 4 -4 -10 4 0 -8</float_array>
|
||||
<technique_common>
|
||||
<accessor count="8" source="#Plane-tex-mesh-3-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-3-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-3-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-3-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-3-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-3-positions"/>
|
||||
</vertices>
|
||||
<triangles count="12" material="Plane-tex-mesh-3-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-3-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-3-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-4" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-4-positions">
|
||||
<float_array count="24" id="Plane-tex-mesh-4-positions-array">-2 -8 -6 -2 -6 -8 -2 -8 -8 -2 -6 -6 0 -8 -6 0 -6 -8 0 -8 -8 0 -6 -6</float_array>
|
||||
<technique_common>
|
||||
<accessor count="8" source="#Plane-tex-mesh-4-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-4-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-4-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-4-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-4-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-4-positions"/>
|
||||
</vertices>
|
||||
<triangles count="12" material="Plane-tex-mesh-4-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-4-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-4-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-5" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-5-positions">
|
||||
<float_array count="24" id="Plane-tex-mesh-5-positions-array">-4 -4 0 -4 2 -6 -4 -4 -6 -4 2 0 2 -4 0 2 2 -6 2 -4 -6 2 2 0</float_array>
|
||||
<technique_common>
|
||||
<accessor count="8" source="#Plane-tex-mesh-5-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-5-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-5-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-5-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-5-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-5-positions"/>
|
||||
</vertices>
|
||||
<triangles count="12" material="Plane-tex-mesh-5-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-5-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-5-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-6" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-6-positions">
|
||||
<float_array count="24" id="Plane-tex-mesh-6-positions-array">0 -2 -12 0 0 -16 0 -2 -16 0 0 -12 2 -2 -12 2 0 -16 2 -2 -16 2 0 -12</float_array>
|
||||
<technique_common>
|
||||
<accessor count="8" source="#Plane-tex-mesh-6-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-6-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-6-uvs-array">0.6667845 0.66643095 0.83309764 0.66643095 0.6667845 0.33380473</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-6-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-6-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-6-positions"/>
|
||||
</vertices>
|
||||
<triangles count="12" material="Plane-tex-mesh-6-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-6-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-6-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-7" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-7-positions">
|
||||
<float_array count="24" id="Plane-tex-mesh-7-positions-array">-4 -6 -6 -4 2 -12 -4 -6 -12 -4 2 -6 2 -6 -6 2 2 -12 2 -6 -12 2 2 -6</float_array>
|
||||
<technique_common>
|
||||
<accessor count="8" source="#Plane-tex-mesh-7-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-7-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-7-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-7-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-7-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-7-positions"/>
|
||||
</vertices>
|
||||
<triangles count="12" material="Plane-tex-mesh-7-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-7-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-7-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-8" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-8-positions">
|
||||
<float_array count="24" id="Plane-tex-mesh-8-positions-array">-4 -2 -12 -4 0 -16 -4 -2 -16 -4 0 -12 -2 -2 -12 -2 0 -16 -2 -2 -16 -2 0 -12</float_array>
|
||||
<technique_common>
|
||||
<accessor count="8" source="#Plane-tex-mesh-8-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-8-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-8-uvs-array">0.6667845 0.66643095 0.83309764 0.66643095 0.6667845 0.33380473</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-8-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-8-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-8-positions"/>
|
||||
</vertices>
|
||||
<triangles count="12" material="Plane-tex-mesh-8-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-8-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-8-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
</library_geometries>
|
||||
<library_visual_scenes>
|
||||
<visual_scene id="Scene" name="Scene">
|
||||
<node id="petz_chicken.layer" name="petz_chicken.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_chicken.layer" url="#Plane-tex-mesh-0">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_chicken.layer.001" name="petz_chicken.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_chicken.layer.001" url="#Plane-tex-mesh-1">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_chicken.layer.002" name="petz_chicken.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_chicken.layer.002" url="#Plane-tex-mesh-2">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_chicken.layer.003" name="petz_chicken.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_chicken.layer.003" url="#Plane-tex-mesh-3">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_chicken.layer.004" name="petz_chicken.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_chicken.layer.004" url="#Plane-tex-mesh-4">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_chicken.layer.005" name="petz_chicken.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_chicken.layer.005" url="#Plane-tex-mesh-5">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_chicken.layer.006" name="petz_chicken.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_chicken.layer.006" url="#Plane-tex-mesh-6">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_chicken.layer.007" name="petz_chicken.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_chicken.layer.007" url="#Plane-tex-mesh-7">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_chicken.layer.008" name="petz_chicken.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_chicken.layer.008" url="#Plane-tex-mesh-8">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
</visual_scene>
|
||||
</library_visual_scenes>
|
||||
<scene>
|
||||
<instance_visual_scene url="#Scene"/>
|
||||
</scene>
|
||||
</COLLADA>
|
|
@ -1,169 +0,0 @@
|
|||
mtllib petz_chicken.mtl
|
||||
o converted_out
|
||||
v 0.125 -0.5 -0.0625
|
||||
v 0.125 -0.5 7.45058e-09
|
||||
v 0.125 -0.4375 7.45058e-09
|
||||
v 0.125 -0.4375 -0.0625
|
||||
v 0.0625 -0.5 -0.0625
|
||||
v 0.0625 -0.5 7.45058e-09
|
||||
v 0.0625 -0.4375 7.45058e-09
|
||||
v 0.0625 -0.4375 -0.0625
|
||||
v -0 -0.5 -0.0625
|
||||
v -0 -0.5 1.86265e-08
|
||||
v -0 -0.4375 1.86265e-08
|
||||
v -0 -0.4375 -0.0625
|
||||
v -0.0625 -0.5 -0.0625
|
||||
v -0.0625 -0.5 1.86265e-08
|
||||
v -0.0625 -0.4375 1.86265e-08
|
||||
v -0.0625 -0.4375 -0.0625
|
||||
v 0.125 -0.4375 -0.125
|
||||
v 0.125 -0.4375 0.0625
|
||||
v 0.125 -0.25 0.0625
|
||||
v 0.125 -0.25 -0.125
|
||||
v -0.0625 -0.4375 -0.125
|
||||
v -0.0625 -0.4375 0.0625
|
||||
v -0.0625 -0.25 0.0625
|
||||
v -0.0625 -0.25 -0.125
|
||||
v 0.0625 -0.3125 0.0625
|
||||
v 0.0625 -0.3125 0.125
|
||||
v 0.0625 -0.25 0.125
|
||||
v 0.0625 -0.25 0.0625
|
||||
v -9.31323e-09 -0.3125 0.0625
|
||||
v -9.31323e-09 -0.3125 0.125
|
||||
v -9.31323e-09 -0.25 0.125
|
||||
v -9.31323e-09 -0.25 0.0625
|
||||
v 0.0625 -0.25 -0.1875
|
||||
v 0.0625 -0.25 -0.125
|
||||
v 0.0625 -0.1875 -0.125
|
||||
v 0.0625 -0.1875 -0.1875
|
||||
v -1.11759e-08 -0.25 -0.1875
|
||||
v -1.11759e-08 -0.25 -0.125
|
||||
v -1.11759e-08 -0.1875 -0.125
|
||||
v -1.11759e-08 -0.1875 -0.1875
|
||||
v 0.0625 -0.125 -0.125
|
||||
v 0.0625 -0.125 -0.0625
|
||||
v 0.0625 -0.0625 -0.0625
|
||||
v 0.0625 -0.0625 -0.125
|
||||
v 3.72529e-09 -0.125 -0.125
|
||||
v 3.72529e-09 -0.125 -0.0625
|
||||
v 3.72529e-09 -0.0625 -0.0625
|
||||
v 3.72529e-09 -0.0625 -0.125
|
||||
v 0.125 -0.25 -0.125
|
||||
v 0.125 -0.25 9.68575e-08
|
||||
v 0.125 -0.125 9.68575e-08
|
||||
v 0.125 -0.125 -0.125
|
||||
v -0.0625 -0.25 -0.125
|
||||
v -0.0625 -0.25 9.68575e-08
|
||||
v -0.0625 -0.125 9.68575e-08
|
||||
v -0.0625 -0.125 -0.125
|
||||
v -0.0625 -0.3125 -0.0625
|
||||
v -0.0625 -0.3125 0.0625
|
||||
v -0.0625 -0.25 0.0625
|
||||
v -0.0625 -0.25 -0.0625
|
||||
v -0.125 -0.3125 -0.0625
|
||||
v -0.125 -0.3125 0.0625
|
||||
v -0.125 -0.25 0.0625
|
||||
v -0.125 -0.25 -0.0625
|
||||
v -0.0625 -0.375 -0.0625
|
||||
v -0.0625 -0.375 0
|
||||
v -0.0625 -0.3125 0
|
||||
v -0.0625 -0.3125 -0.0625
|
||||
v -0.125 -0.375 -0.0625
|
||||
v -0.125 -0.375 0
|
||||
v -0.125 -0.3125 0
|
||||
v -0.125 -0.3125 -0.0625
|
||||
v 0.1875 -0.3125 -0.0625
|
||||
v 0.1875 -0.3125 0.0625
|
||||
v 0.1875 -0.25 0.0625
|
||||
v 0.1875 -0.25 -0.0625
|
||||
v 0.125 -0.3125 -0.0625
|
||||
v 0.125 -0.3125 0.0625
|
||||
v 0.125 -0.25 0.0625
|
||||
v 0.125 -0.25 -0.0625
|
||||
v 0.1875 -0.375 -0.0625
|
||||
v 0.1875 -0.375 0
|
||||
v 0.1875 -0.3125 0
|
||||
v 0.1875 -0.3125 -0.0625
|
||||
v 0.125 -0.375 -0.0625
|
||||
v 0.125 -0.375 0
|
||||
v 0.125 -0.3125 0
|
||||
v 0.125 -0.3125 -0.0625
|
||||
usemtl none
|
||||
s off
|
||||
g right_leg
|
||||
f 1 2 3 4
|
||||
f 5 6 7 8
|
||||
f 1 4 8 5
|
||||
f 2 3 7 6
|
||||
f 1 2 6 5
|
||||
f 4 3 7 8
|
||||
g left_leg
|
||||
f 9 10 11 12
|
||||
f 13 14 15 16
|
||||
f 9 12 16 13
|
||||
f 10 11 15 14
|
||||
f 9 10 14 13
|
||||
f 12 11 15 16
|
||||
g body
|
||||
f 17 18 19 20
|
||||
f 21 22 23 24
|
||||
f 17 20 24 21
|
||||
f 18 19 23 22
|
||||
f 17 18 22 21
|
||||
f 20 19 23 24
|
||||
g tail
|
||||
f 25 26 27 28
|
||||
f 29 30 31 32
|
||||
f 25 28 32 29
|
||||
f 26 27 31 30
|
||||
f 25 26 30 29
|
||||
f 28 27 31 32
|
||||
g beak
|
||||
f 33 34 35 36
|
||||
f 37 38 39 40
|
||||
f 33 36 40 37
|
||||
f 34 35 39 38
|
||||
f 33 34 38 37
|
||||
f 36 35 39 40
|
||||
g crest
|
||||
f 41 42 43 44
|
||||
f 45 46 47 48
|
||||
f 41 44 48 45
|
||||
f 42 43 47 46
|
||||
f 41 42 46 45
|
||||
f 44 43 47 48
|
||||
g head
|
||||
f 49 50 51 52
|
||||
f 53 54 55 56
|
||||
f 49 52 56 53
|
||||
f 50 51 55 54
|
||||
f 49 50 54 53
|
||||
f 52 51 55 56
|
||||
g left_wing_top
|
||||
f 57 58 59 60
|
||||
f 61 62 63 64
|
||||
f 57 60 64 61
|
||||
f 58 59 63 62
|
||||
f 57 58 62 61
|
||||
f 60 59 63 64
|
||||
g left_wing_bottom
|
||||
f 65 66 67 68
|
||||
f 69 70 71 72
|
||||
f 65 68 72 69
|
||||
f 66 67 71 70
|
||||
f 65 66 70 69
|
||||
f 68 67 71 72
|
||||
g right_wing_top
|
||||
f 73 74 75 76
|
||||
f 77 78 79 80
|
||||
f 73 76 80 77
|
||||
f 74 75 79 78
|
||||
f 73 74 78 77
|
||||
f 76 75 79 80
|
||||
g right_wing_bottom
|
||||
f 81 82 83 84
|
||||
f 85 86 87 88
|
||||
f 81 84 88 85
|
||||
f 82 83 87 86
|
||||
f 81 82 86 85
|
||||
f 84 83 87 88
|
|
@ -0,0 +1,676 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?><COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
|
||||
<asset>
|
||||
<contributor>
|
||||
<author>VoxelShop User</author>
|
||||
<authoring_tool>VoxelShop V1.8.26
|
||||
</authoring_tool>
|
||||
</contributor>
|
||||
<created>2020-11-25T23:02:01</created>
|
||||
<modified>2020-11-25T23:02:01</modified>
|
||||
<unit meter="1" name="meter"/>
|
||||
<up_axis>Z_UP</up_axis>
|
||||
</asset>
|
||||
<library_images>
|
||||
<image id="petz_cock_texture0-image" name="petz_cock_texture0-image">
|
||||
<init_from>file://petz_cock_texture0.png</init_from>
|
||||
</image>
|
||||
</library_images>
|
||||
<library_effects>
|
||||
<effect id="lambert0-fx">
|
||||
<profile_COMMON>
|
||||
<newparam sid="petz_cock_texture0-surface">
|
||||
<surface type="2D">
|
||||
<init_from>petz_cock_texture0-image</init_from>
|
||||
</surface>
|
||||
</newparam>
|
||||
<newparam sid="petz_cock_texture0-sampler">
|
||||
<sampler2D>
|
||||
<source>petz_cock_texture0-surface</source>
|
||||
<wrap_s>WRAP</wrap_s>
|
||||
<wrap_t>WRAP</wrap_t>
|
||||
<minfilter>NEAREST</minfilter>
|
||||
<magfilter>NEAREST</magfilter>
|
||||
</sampler2D>
|
||||
</newparam>
|
||||
<technique sid="common">
|
||||
<lambert>
|
||||
<emission>
|
||||
<color>0 0 0 1</color>
|
||||
</emission>
|
||||
<ambient>
|
||||
<color>0 0 0 1</color>
|
||||
</ambient>
|
||||
<diffuse>
|
||||
<texture texcoord="TEX0" texture="petz_cock_texture0-sampler"/>
|
||||
</diffuse>
|
||||
</lambert>
|
||||
</technique>
|
||||
</profile_COMMON>
|
||||
</effect>
|
||||
</library_effects>
|
||||
<library_materials>
|
||||
<material id="lambert0-material" name="lambert0">
|
||||
<instance_effect url="#lambert0-fx"/>
|
||||
</material>
|
||||
</library_materials>
|
||||
<library_geometries>
|
||||
<geometry id="Plane-tex-mesh-0" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-0-positions">
|
||||
<float_array count="24" id="Plane-tex-mesh-0-positions-array">-2 -14 -2 -2 -8 -4 -2 -14 -4 -2 -8 -2 0 -14 -2 0 -8 -4 0 -14 -4 0 -8 -2</float_array>
|
||||
<technique_common>
|
||||
<accessor count="8" source="#Plane-tex-mesh-0-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-0-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-0-uvs-array">0.11118968 0.8332155 0.22206509 0.8332155 0.11118968 0.66690236</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-0-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-0-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-0-positions"/>
|
||||
</vertices>
|
||||
<triangles count="12" material="Plane-tex-mesh-0-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-0-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-0-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-1" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-1-positions">
|
||||
<float_array count="24" id="Plane-tex-mesh-1-positions-array">-2 6 -2 -2 8 -6 -2 6 -6 -2 8 -2 0 6 -2 0 8 -6 0 6 -6 0 8 -2</float_array>
|
||||
<technique_common>
|
||||
<accessor count="8" source="#Plane-tex-mesh-1-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-1-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-1-uvs-array">0.77785635 0.8332155 0.8887318 0.8332155 0.77785635 0.66690236</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-1-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-1-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-1-positions"/>
|
||||
</vertices>
|
||||
<triangles count="12" material="Plane-tex-mesh-1-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-1-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-1-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-2" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-2-positions">
|
||||
<float_array count="24" id="Plane-tex-mesh-2-positions-array">-4 -6 -2 -4 4 -10 -4 -6 -10 -4 4 -2 2 -6 -2 2 4 -10 2 -6 -10 2 4 -2</float_array>
|
||||
<technique_common>
|
||||
<accessor count="8" source="#Plane-tex-mesh-2-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-2-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-2-uvs-array">0.77785635 0.8332155 0.8887318 0.8332155 0.77785635 0.66690236</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-2-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-2-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-2-positions"/>
|
||||
</vertices>
|
||||
<triangles count="12" material="Plane-tex-mesh-2-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-2-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-2-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-3" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-3-positions">
|
||||
<float_array count="24" id="Plane-tex-mesh-3-positions-array">-4 4 6 -4 10 -2 -4 4 -2 -4 10 6 2 4 6 2 10 -2 2 4 -2 2 10 6</float_array>
|
||||
<technique_common>
|
||||
<accessor count="8" source="#Plane-tex-mesh-3-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-3-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-3-uvs-array">0.77785635 0.8332155 0.8887318 0.8332155 0.77785635 0.66690236</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-3-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-3-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-3-positions"/>
|
||||
</vertices>
|
||||
<triangles count="12" material="Plane-tex-mesh-3-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-3-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-3-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-4" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-4-positions">
|
||||
<float_array count="24" id="Plane-tex-mesh-4-positions-array">2 -4 -4 2 4 -8 2 -4 -8 2 4 -4 4 -4 -4 4 4 -8 4 -4 -8 4 4 -4</float_array>
|
||||
<technique_common>
|
||||
<accessor count="8" source="#Plane-tex-mesh-4-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-4-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-4-uvs-array">0.11118968 0.33321548 0.22206509 0.33321548 0.11118968 0.16690236</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-4-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-4-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-4-positions"/>
|
||||
</vertices>
|
||||
<triangles count="12" material="Plane-tex-mesh-4-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-4-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-4-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-5" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-5-positions">
|
||||
<float_array count="24" id="Plane-tex-mesh-5-positions-array">-6 -4 -4 -6 4 -8 -6 -4 -8 -6 4 -4 -4 -4 -4 -4 4 -8 -4 -4 -8 -4 4 -4</float_array>
|
||||
<technique_common>
|
||||
<accessor count="8" source="#Plane-tex-mesh-5-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-5-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-5-uvs-array">0.11118968 0.33321548 0.22206509 0.33321548 0.11118968 0.16690236</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-5-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-5-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-5-positions"/>
|
||||
</vertices>
|
||||
<triangles count="12" material="Plane-tex-mesh-5-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-5-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-5-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-6" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-6-positions">
|
||||
<float_array count="48" id="Plane-tex-mesh-6-positions-array">0 -2 -10 0 0 -16 0 -2 -16 0 0 -10 -4 -2 -10 -4 0 -16 -4 -2 -16 -4 0 -10 2 -2 -10 2 0 -16 2 -2 -16 2 0 -10 -2 -2 -10 -2 0 -16 -2 -2 -16 -2 0 -10</float_array>
|
||||
<technique_common>
|
||||
<accessor count="16" source="#Plane-tex-mesh-6-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-6-uvs">
|
||||
<float_array count="24" id="Plane-tex-mesh-6-uvs-array">0.27794388 0.6667774 0.4443614 0.8331119 0.4443614 0.6667774 0.27786082 0.6668881 0.27786082 0.8332226 0.44427836 0.8332226 0.444523 0.8332155 0.5553984 0.8332155 0.444523 0.66690236 0.11118968 0.8332155 0.22206509 0.8332155 0.11118968 0.66690236</float_array>
|
||||
<technique_common>
|
||||
<accessor count="12" source="#Plane-tex-mesh-6-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-6-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-6-positions"/>
|
||||
</vertices>
|
||||
<triangles count="24" material="Plane-tex-mesh-6-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-6-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-6-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 3 3 4 1 5 4 0 5 1 6 2 4 3 7 4 5 5 9 1 8 0 10 2 11 4 8 3 9 5 13 1 12 0 14 2 15 4 12 3 13 5 1 7 10 6 2 8 9 7 10 6 1 8 5 7 14 6 6 8 13 7 14 6 5 8 8 9 3 10 0 11 8 9 11 10 3 11 12 9 7 10 4 11 12 9 15 10 7 11 10 1 0 0 2 2 10 5 8 4 0 3 14 1 4 0 6 2 14 5 12 4 4 3 3 0 9 1 1 2 11 4 9 5 3 3 7 0 13 1 5 2 15 4 13 5 7 3</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-7" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-7-positions">
|
||||
<float_array count="48" id="Plane-tex-mesh-7-positions-array">-6 -2 -2 -6 2 -4 -6 -2 -4 -6 2 -2 -6 -6 -8 -6 0 -10 -6 -6 -10 -6 0 -8 -4 -2 -2 -4 2 -4 -4 -2 -4 -4 2 -2 -4 -6 -8 -4 0 -10 -4 -6 -10 -4 0 -8</float_array>
|
||||
<technique_common>
|
||||
<accessor count="16" source="#Plane-tex-mesh-7-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-7-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-7-uvs-array">0.11118968 0.33321548 0.22206509 0.33321548 0.11118968 0.16690236</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-7-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-7-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-7-positions"/>
|
||||
</vertices>
|
||||
<triangles count="24" material="Plane-tex-mesh-7-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-7-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-7-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 4 0 5 1 6 2 4 0 7 1 5 2 9 1 8 0 10 2 11 1 8 0 9 2 13 1 12 0 14 2 15 1 12 0 13 2 5 1 14 0 6 2 13 1 14 0 5 2 1 1 10 0 2 2 9 1 10 0 1 2 12 0 7 1 4 2 12 0 15 1 7 2 8 0 3 1 0 2 8 0 11 1 3 2 10 0 0 1 2 2 10 0 8 1 0 2 14 0 4 1 6 2 14 0 12 1 4 2 3 1 9 0 1 2 11 1 9 0 3 2 7 1 13 0 5 2 15 1 13 0 7 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-8" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-8-positions">
|
||||
<float_array count="96" id="Plane-tex-mesh-8-positions-array">-2 10 6 -2 12 4 -2 10 4 -2 12 6 -2 10 2 -2 12 0 -2 10 0 -2 12 2 2 -2 -2 2 2 -4 2 -2 -4 2 2 -2 2 -6 -8 2 0 -10 2 -6 -10 2 0 -8 0 10 6 0 12 4 0 10 4 0 12 6 0 10 2 0 12 0 0 10 0 0 12 2 4 -2 -2 4 2 -4 4 -2 -4 4 2 -2 4 -6 -8 4 0 -10 4 -6 -10 4 0 -8</float_array>
|
||||
<technique_common>
|
||||
<accessor count="32" source="#Plane-tex-mesh-8-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-8-uvs">
|
||||
<float_array count="12" id="Plane-tex-mesh-8-uvs-array">0.77785635 0.8332155 0.8887318 0.8332155 0.77785635 0.66690236 0.11118968 0.33321548 0.22206509 0.33321548 0.11118968 0.16690236</float_array>
|
||||
<technique_common>
|
||||
<accessor count="6" source="#Plane-tex-mesh-8-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-8-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-8-positions"/>
|
||||
</vertices>
|
||||
<triangles count="48" material="Plane-tex-mesh-8-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-8-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-8-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 4 0 5 1 6 2 4 0 7 1 5 2 8 3 9 4 10 5 8 3 11 4 9 5 12 3 13 4 14 5 12 3 15 4 13 5 17 1 16 0 18 2 19 1 16 0 17 2 21 1 20 0 22 2 23 1 20 0 21 2 25 4 24 3 26 5 27 4 24 3 25 5 29 4 28 3 30 5 31 4 28 3 29 5 13 4 30 3 14 5 29 4 30 3 13 5 9 4 26 3 10 5 25 4 26 3 9 5 5 1 22 0 6 2 21 1 22 0 5 2 1 1 18 0 2 2 17 1 18 0 1 2 28 3 15 4 12 5 28 3 31 4 15 5 24 3 11 4 8 5 24 3 27 4 11 5 20 0 7 1 4 2 20 0 23 1 7 2 16 0 3 1 0 2 16 0 19 1 3 2 26 3 8 4 10 5 26 3 24 4 8 5 30 3 12 4 14 5 30 3 28 4 12 5 22 0 4 1 6 2 22 0 20 1 4 2 18 0 0 1 2 2 18 0 16 1 0 2 15 4 29 3 13 5 31 4 29 3 15 5 11 4 25 3 9 5 27 4 25 3 11 5 7 1 21 0 5 2 23 1 21 0 7 2 3 1 17 0 1 2 19 1 17 0 3 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-9" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-9-positions">
|
||||
<float_array count="84" id="Plane-tex-mesh-9-positions-array">0 -10 0 0 -8 -2 0 -10 -2 0 -8 0 -2 -12 0 -2 -10 -2 -2 -12 -2 -2 -10 0 -2 -14 -4 -2 -12 -8 -2 -14 -8 -2 -12 -4 -4 -10 0 -4 -8 -2 -4 -10 -2 -4 -8 0 2 -10 0 2 -8 -2 2 -10 -2 2 -8 0 0 -12 0 0 -12 -2 0 -14 -4 0 -12 -8 0 -14 -8 0 -12 -4 -2 -8 -2 -2 -8 0</float_array>
|
||||
<technique_common>
|
||||
<accessor count="28" source="#Plane-tex-mesh-9-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-9-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-9-uvs-array">0.11118968 0.8332155 0.22206509 0.8332155 0.11118968 0.66690236</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-9-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-9-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-9-positions"/>
|
||||
</vertices>
|
||||
<triangles count="48" material="Plane-tex-mesh-9-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-9-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-9-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 4 0 5 1 6 2 4 0 7 1 5 2 8 0 9 1 10 2 8 0 11 1 9 2 12 0 13 1 14 2 12 0 15 1 13 2 17 1 16 0 18 2 19 1 16 0 17 2 2 1 20 0 21 2 0 1 20 0 2 2 23 1 22 0 24 2 25 1 22 0 23 2 26 1 7 0 5 2 27 1 7 0 26 2 9 1 24 0 10 2 23 1 24 0 9 2 1 1 18 0 2 2 17 1 18 0 1 2 5 1 21 0 6 2 2 1 21 0 5 2 13 1 5 0 14 2 26 1 5 0 13 2 22 0 11 1 8 2 22 0 25 1 11 2 16 0 3 1 0 2 16 0 19 1 3 2 20 0 7 1 4 2 20 0 0 1 7 2 7 0 15 1 12 2 7 0 27 1 15 2 18 0 0 1 2 2 18 0 16 1 0 2 5 0 12 1 14 2 5 0 7 1 12 2 21 0 4 1 6 2 21 0 20 1 4 2 24 0 8 1 10 2 24 0 22 1 8 2 3 1 17 0 1 2 19 1 17 0 3 2 15 1 26 0 13 2 27 1 26 0 15 2 7 1 2 0 5 2 0 1 2 0 7 2 11 1 23 0 9 2 25 1 23 0 11 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-10" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-10-positions">
|
||||
<float_array count="66" id="Plane-tex-mesh-10-positions-array">-2 4 8 -2 6 6 -2 4 6 -2 6 8 -2 8 8 -2 10 6 -2 8 6 -2 10 8 -2 2 6 -2 4 4 -2 2 4 0 4 8 0 6 6 0 4 6 0 6 8 0 8 8 0 10 6 0 8 6 0 10 8 0 2 6 0 4 4 0 2 4</float_array>
|
||||
<technique_common>
|
||||
<accessor count="22" source="#Plane-tex-mesh-10-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-10-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-10-uvs-array">0.77785635 0.8332155 0.8887318 0.8332155 0.77785635 0.66690236</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-10-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-10-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-10-positions"/>
|
||||
</vertices>
|
||||
<triangles count="36" material="Plane-tex-mesh-10-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-10-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-10-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 4 0 5 1 6 2 4 0 7 1 5 2 8 0 9 1 10 2 8 0 2 1 9 2 12 1 11 0 13 2 14 1 11 0 12 2 16 1 15 0 17 2 18 1 15 0 16 2 20 1 19 0 21 2 13 1 19 0 20 2 9 1 21 0 10 2 20 1 21 0 9 2 1 1 13 0 2 2 12 1 13 0 1 2 5 1 17 0 6 2 16 1 17 0 5 2 19 0 2 1 8 2 19 0 13 1 2 2 11 0 3 1 0 2 11 0 14 1 3 2 15 0 7 1 4 2 15 0 18 1 7 2 21 0 8 1 10 2 21 0 19 1 8 2 13 0 0 1 2 2 13 0 11 1 0 2 17 0 4 1 6 2 17 0 15 1 4 2 2 1 20 0 9 2 13 1 20 0 2 2 3 1 12 0 1 2 14 1 12 0 3 2 7 1 16 0 5 2 18 1 16 0 7 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-11" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-11-positions">
|
||||
<float_array count="72" id="Plane-tex-mesh-11-positions-array">-2 2 0 -2 4 -2 -2 2 -2 -2 4 0 -4 -8 -2 -4 -6 -6 -4 -8 -6 -4 -6 -2 -4 4 -2 -4 6 -8 -4 4 -8 -4 6 -2 2 -8 -2 2 -6 -6 2 -8 -6 2 -6 -2 2 4 -2 2 6 -8 2 4 -8 2 6 -2 0 2 0 0 4 -2 0 2 -2 0 4 0</float_array>
|
||||
<technique_common>
|
||||
<accessor count="24" source="#Plane-tex-mesh-11-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-11-uvs">
|
||||
<float_array count="6" id="Plane-tex-mesh-11-uvs-array">0.77785635 0.8332155 0.8887318 0.8332155 0.77785635 0.66690236</float_array>
|
||||
<technique_common>
|
||||
<accessor count="3" source="#Plane-tex-mesh-11-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-11-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-11-positions"/>
|
||||
</vertices>
|
||||
<triangles count="40" material="Plane-tex-mesh-11-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-11-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-11-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 4 0 5 1 6 2 4 0 7 1 5 2 8 0 9 1 10 2 8 0 11 1 9 2 13 1 12 0 14 2 15 1 12 0 13 2 17 1 16 0 18 2 19 1 16 0 17 2 21 1 20 0 22 2 23 1 20 0 21 2 9 1 18 0 10 2 17 1 18 0 9 2 5 1 14 0 6 2 13 1 14 0 5 2 1 1 22 0 2 2 21 1 22 0 1 2 12 0 7 1 4 2 12 0 15 1 7 2 21 0 16 1 19 2 11 0 21 1 19 2 1 0 21 1 11 2 1 0 11 1 8 2 20 0 3 1 0 2 20 0 23 1 3 2 22 0 0 1 2 2 22 0 20 1 0 2 18 0 21 1 10 2 21 0 1 1 10 2 18 0 16 1 21 2 1 0 8 1 10 2 14 0 4 1 6 2 14 0 12 1 4 2 3 1 21 0 1 2 23 1 21 0 3 2 11 1 17 0 9 2 19 1 17 0 11 2 7 1 13 0 5 2 15 1 13 0 7 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
<geometry id="Plane-tex-mesh-12" name="Plane-tex">
|
||||
<mesh>
|
||||
<source id="Plane-tex-mesh-12-positions">
|
||||
<float_array count="126" id="Plane-tex-mesh-12-positions-array">0 -4 -12 0 -2 -14 0 -4 -14 0 -2 -12 0 0 -14 0 2 -16 0 0 -16 0 2 -14 2 -2 -14 2 0 -16 2 -2 -16 2 0 -14 -4 -4 -12 -4 -2 -14 -4 -4 -14 -4 -2 -12 -4 0 -14 -4 2 -16 -4 0 -16 -4 2 -14 -6 -2 -14 -6 0 -16 -6 -2 -16 -6 0 -14 2 -4 -12 2 -4 -14 2 -2 -12 2 2 -16 2 2 -14 4 -2 -14 4 0 -16 4 -2 -16 4 0 -14 -2 -4 -12 -2 -2 -14 -2 -4 -14 -2 -2 -12 -2 0 -14 -2 2 -16 -2 0 -16 -2 2 -14 -4 -2 -16</float_array>
|
||||
<technique_common>
|
||||
<accessor count="42" source="#Plane-tex-mesh-12-positions-array" stride="3">
|
||||
<param name="X" type="float"/>
|
||||
<param name="Y" type="float"/>
|
||||
<param name="Z" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<source id="Plane-tex-mesh-12-uvs">
|
||||
<float_array count="12" id="Plane-tex-mesh-12-uvs-array">0.11118968 0.8332155 0.22206509 0.8332155 0.11118968 0.66690236 0.444523 0.8332155 0.5553984 0.8332155 0.444523 0.66690236</float_array>
|
||||
<technique_common>
|
||||
<accessor count="6" source="#Plane-tex-mesh-12-uvs-array" stride="2">
|
||||
<param name="S" type="float"/>
|
||||
<param name="T" type="float"/>
|
||||
</accessor>
|
||||
</technique_common>
|
||||
</source>
|
||||
<vertices id="Plane-tex-mesh-12-vertices">
|
||||
<input semantic="POSITION" source="#Plane-tex-mesh-12-positions"/>
|
||||
</vertices>
|
||||
<triangles count="72" material="Plane-tex-mesh-12-lambert0-material">
|
||||
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-12-vertices"/>
|
||||
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-12-uvs"/>
|
||||
<p>0 0 1 1 2 2 0 0 3 1 1 2 4 3 5 4 6 5 4 3 7 4 5 5 8 3 9 4 10 5 8 3 11 4 9 5 12 0 13 1 14 2 12 0 15 1 13 2 16 3 17 4 18 5 16 3 19 4 17 5 20 3 21 4 22 5 20 3 23 4 21 5 8 1 24 0 25 2 26 1 24 0 8 2 27 4 11 3 9 5 28 4 11 3 27 5 30 4 29 3 31 5 32 4 29 3 30 5 34 1 33 0 35 2 36 1 33 0 34 2 38 4 37 3 39 5 40 4 37 3 38 5 18 4 13 3 41 5 16 4 13 3 18 5 9 4 31 3 10 5 30 4 31 3 9 5 5 4 9 3 6 5 27 4 9 3 5 5 17 4 39 3 18 5 38 4 39 3 17 5 21 4 41 3 22 5 18 4 41 3 21 5 1 1 25 0 2 2 8 1 25 0 1 2 13 1 35 0 14 2 34 1 35 0 13 2 29 3 11 4 8 5 29 3 32 4 11 5 11 3 7 4 4 5 11 3 28 4 7 5 37 3 19 4 16 5 37 3 40 4 19 5 13 3 23 4 20 5 13 3 16 4 23 5 24 0 3 1 0 2 24 0 26 1 3 2 33 0 15 1 12 2 33 0 36 1 15 2 31 3 8 4 10 5 31 3 29 4 8 5 41 3 20 4 22 5 41 3 13 4 20 5 9 3 4 4 6 5 9 3 11 4 4 5 39 3 16 4 18 5 39 3 37 4 16 5 25 0 0 1 2 2 25 0 24 1 0 2 35 0 12 1 14 2 35 0 33 1 12 2 11 4 30 3 9 5 32 4 30 3 11 5 23 4 18 3 21 5 16 4 18 3 23 5 7 4 27 3 5 5 28 4 27 3 7 5 19 4 38 3 17 5 40 4 38 3 19 5 3 1 8 0 1 2 26 1 8 0 3 2 15 1 34 0 13 2 36 1 34 0 15 2</p>
|
||||
</triangles>
|
||||
</mesh>
|
||||
</geometry>
|
||||
</library_geometries>
|
||||
<library_visual_scenes>
|
||||
<visual_scene id="Scene" name="Scene">
|
||||
<node id="petz_cock.layer" name="petz_cock.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_cock.layer" url="#Plane-tex-mesh-0">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_cock.layer.001" name="petz_cock.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_cock.layer.001" url="#Plane-tex-mesh-1">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_cock.layer.002" name="petz_cock.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_cock.layer.002" url="#Plane-tex-mesh-2">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_cock.layer.003" name="petz_cock.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_cock.layer.003" url="#Plane-tex-mesh-3">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_cock.layer.004" name="petz_cock.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_cock.layer.004" url="#Plane-tex-mesh-4">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_cock.layer.005" name="petz_cock.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_cock.layer.005" url="#Plane-tex-mesh-5">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_cock.layer.006" name="petz_cock.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_cock.layer.006" url="#Plane-tex-mesh-6">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_cock.layer.007" name="petz_cock.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_cock.layer.007" url="#Plane-tex-mesh-7">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_cock.layer.008" name="petz_cock.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_cock.layer.008" url="#Plane-tex-mesh-8">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_cock.layer.009" name="petz_cock.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_cock.layer.009" url="#Plane-tex-mesh-9">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_cock.layer.010" name="petz_cock.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_cock.layer.010" url="#Plane-tex-mesh-10">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_cock.layer.011" name="petz_cock.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_cock.layer.011" url="#Plane-tex-mesh-11">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
<node id="petz_cock.layer.012" name="petz_cock.Layer" type="NODE">
|
||||
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||
<instance_geometry name="Layer" sid="petz_cock.layer.012" url="#Plane-tex-mesh-12">
|
||||
<bind_material>
|
||||
<technique_common>
|
||||
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||
</instance_material>
|
||||
</technique_common>
|
||||
</bind_material>
|
||||
</instance_geometry>
|
||||
</node>
|
||||
</visual_scene>
|
||||
</library_visual_scenes>
|
||||
<scene>
|
||||
<instance_visual_scene url="#Scene"/>
|
||||
</scene>
|
||||
</COLLADA>
|
|
@ -1,7 +1,7 @@
|
|||
# WARNING: Do NOT change the Petz Mod preferences here
|
||||
# Do create a 'user.conf' with your favourite preferences instead of.
|
||||
|
||||
petz_list = kitty,puppy,ducky,lamb,lion,calf,panda,grizzly,pony,parrot,chicken,piggy,wolf,elephant,elephant_female,pigeon,moth,camel,clownfish,bat,silkworm,chimp,hamster,dolphin,tropicalfish,beaver,turtle,frog,toucan,bee,queen_bee,mr_pumpkin,foxy,penguin,polar_bear,santa_killer,werewolf,tarantula,butterfly,rat,goat,squirrel,leopard,snow_leopard,ant,warrior_ant,queen_ant
|
||||
petz_list = kitty,puppy,ducky,lamb,lion,calf,panda,grizzly,pony,parrot,chicken,piggy,wolf,elephant,elephant_female,pigeon,moth,camel,clownfish,bat,silkworm,chimp,hamster,dolphin,tropicalfish,beaver,turtle,frog,toucan,bee,queen_bee,mr_pumpkin,foxy,penguin,polar_bear,santa_killer,werewolf,tarantula,butterfly,rat,goat,squirrel,leopard,snow_leopard,ant,warrior_ant,queen_ant,rooster,hen
|
||||
|
||||
##Tamagochi Mode (Take care of your pet: fed it...)
|
||||
tamagochi_mode = true
|
||||
|
@ -50,6 +50,8 @@ spawn_peaceful_monsters_ratio = 0.7
|
|||
bee_disable_spawn = true
|
||||
ant_disable_spawn = true
|
||||
warrior_ant_disable_spawn = true
|
||||
rooster_disable_spawn = true
|
||||
chicken_disable_spawn = true
|
||||
|
||||
## The interval is avg spawn attempt interval (seconds) for every player
|
||||
spawn_interval = 30
|
||||
|
@ -119,11 +121,17 @@ lay_antegg_timing = 1200
|
|||
max_laid_anteggs = 500
|
||||
ant_population = 5
|
||||
|
||||
##Children search for their parents
|
||||
#Only for chicks
|
||||
parent_search = true
|
||||
|
||||
##Lay Eggs
|
||||
#Default = 1200= 1 egg by day
|
||||
lay_egg_timing = 1200
|
||||
#Max eggs to hatch by animal
|
||||
max_laid_eggs = 10
|
||||
#Time an egg to hatch
|
||||
hatch_egg_timing = 500
|
||||
|
||||
##Misc Random Sound for Petz
|
||||
#Default = 50
|
||||
|
@ -152,7 +160,7 @@ max_honey_behive = 10
|
|||
max_bees_behive = 3
|
||||
#bees_outing_rate=1 means that a bee inmediatelly go out the behive for pollen
|
||||
bee_outing_ratio = 20
|
||||
#The time between a Beehive is created by a player and a worker bee is automatically created
|
||||
#The time between a Beehive is created by a pger and a worker bee is automatically created
|
||||
worker_bee_delay = 300
|
||||
#behive_spawn_chance = 0.6
|
||||
#max_behives_in_area = 3
|
||||
|
@ -291,6 +299,21 @@ chicken_spawn_nodes = default:dirt_with_grass
|
|||
chicken_spawn_biome = default
|
||||
chicken_predators = petz:foxy
|
||||
|
||||
##Hen Specific
|
||||
hen_follow = farming:seed_wheat
|
||||
hen_spawn_chance = 0.6
|
||||
hen_spawn_nodes = default:dirt_with_grass
|
||||
hen_spawn_biome = default
|
||||
hen_predators = petz:foxy
|
||||
|
||||
##Rooster Specific
|
||||
rooster_follow = farming:seed_wheat
|
||||
rooster_spawn_chance = 0.6
|
||||
rooster_spawn_nodes = default:dirt_with_grass
|
||||
rooster_spawn_biome = default
|
||||
rooster_predators = petz:foxy
|
||||
rooster_preys = petz:rooster
|
||||
|
||||
#Piggy Specific
|
||||
piggy_follow = farming:wheat
|
||||
piggy_spawn_chance = 0.6
|
||||
|
|
|
@ -3,87 +3,143 @@
|
|||
--
|
||||
local S = ...
|
||||
|
||||
local pet_name = "chicken"
|
||||
local scale_model = 2.1
|
||||
local mesh = 'petz_chicken.b3d'
|
||||
local textures= {"petz_chicken.png", "petz_chicken2.png", "petz_chicken3.png"}
|
||||
local p1 = {x= -0.0625, y = -0.5, z = -0.125}
|
||||
local p2 = {x= 0.125, y = -0.125, z = 0.1875}
|
||||
local collisionbox, collisionbox_baby = petz.get_collisionbox(p1, p2, scale_model, nil)
|
||||
for i=1, 3 do
|
||||
local pet_name
|
||||
local mesh
|
||||
local scale_model
|
||||
local description
|
||||
local textures
|
||||
local p1
|
||||
local p2
|
||||
local lay_eggs
|
||||
local parents
|
||||
local aggressive
|
||||
if i == 1 then
|
||||
pet_name = "hen"
|
||||
description = "Hen"
|
||||
lay_eggs = true
|
||||
mesh = 'petz_hen.b3d'
|
||||
backface_culling = false
|
||||
scale_model = 2.1
|
||||
textures= {"petz_hen.png", "petz_hen2.png", "petz_hen3.png"}
|
||||
p1 = {x= -0.0625, y = -0.5, z = -0.125}
|
||||
p2 = {x= 0.125, y = -0.125, z = 0.1875}
|
||||
sounds = {
|
||||
misc = {"petz_hen_cluck", "petz_hen_cluck_2", "petz_hen_cluck_3"},
|
||||
}
|
||||
parents = nil
|
||||
aggressive = false
|
||||
elseif i == 2 then
|
||||
pet_name = "rooster"
|
||||
description = "Rooster"
|
||||
lay_eggs = false
|
||||
mesh = 'petz_rooster.b3d'
|
||||
backface_culling = true
|
||||
scale_model = 1.4
|
||||
textures= {"petz_rooster.png"}
|
||||
p1 = {x= -0.1875, y = -0.5, z = -0.25}
|
||||
p2 = {x= 0.125, y = 0.125, z = 0.25}
|
||||
sounds = {
|
||||
misc = {"petz_rooster_crow", "petz_rooster_chirp"},
|
||||
}
|
||||
parents = nil
|
||||
aggressive = true
|
||||
else
|
||||
pet_name = "chicken"
|
||||
description = "Chicken"
|
||||
lay_eggs = false
|
||||
mesh = 'petz_chicken.b3d'
|
||||
backface_culling = false
|
||||
scale_model = 1.0
|
||||
textures= {"petz_chicken.png"}
|
||||
p1 = {x= -0.125, y = -0.5, z = -0.1875}
|
||||
p2 = {x= 0.0625, y = 0, z = 0.0625}
|
||||
sounds = {
|
||||
misc = {"petz_chicken_chirp", "petz_chicken_chirp_2", "petz_chicken_chirp_3"},
|
||||
}
|
||||
parents = {"petz:hen", "petz:rooster"}
|
||||
aggressive = false
|
||||
end
|
||||
local collisionbox, collisionbox_baby = petz.get_collisionbox(p1, p2, scale_model, nil)
|
||||
|
||||
minetest.register_entity("petz:"..pet_name,{
|
||||
--Petz specifics
|
||||
type = "chicken",
|
||||
init_tamagochi_timer = false,
|
||||
is_pet = true,
|
||||
has_affinity = false,
|
||||
is_wild = false,
|
||||
give_orders = false,
|
||||
feathered = true,
|
||||
can_be_brushed = false,
|
||||
capture_item = "net",
|
||||
lay_eggs = true,
|
||||
lay_eggs_in_nest = true,
|
||||
type_of_egg = "item",
|
||||
follow = petz.settings.chicken_follow,
|
||||
drops = {
|
||||
{name = "petz:raw_chicken", chance = 3, min = 1, max = 1,},
|
||||
{name = "petz:bone", chance = 6, min = 1, max = 1,},
|
||||
},
|
||||
rotate = petz.settings.rotate,
|
||||
physical = true,
|
||||
stepheight = 0.1, --EVIL!
|
||||
collide_with_objects = true,
|
||||
collisionbox = collisionbox,
|
||||
visual = petz.settings.visual,
|
||||
mesh = mesh,
|
||||
textures = textures,
|
||||
visual_size = {x=petz.settings.visual_size.x*scale_model, y=petz.settings.visual_size.y*scale_model},
|
||||
static_save = true,
|
||||
get_staticdata = mobkit.statfunc,
|
||||
-- api props
|
||||
springiness= 0,
|
||||
buoyancy = 0.5, -- portion of hitbox submerged
|
||||
max_speed = 2,
|
||||
jump_height = 1.5,
|
||||
view_range = 10,
|
||||
lung_capacity = 10, -- seconds
|
||||
max_hp = 8,
|
||||
|
||||
attack={range=0.5, damage_groups={fleshy=3}},
|
||||
animation = {
|
||||
walk={range={x=1, y=12}, speed=25, loop=true},
|
||||
run={range={x=13, y=25}, speed=25, loop=true},
|
||||
stand={
|
||||
{range={x=26, y=46}, speed=5, loop=true},
|
||||
{range={x=47, y=59}, speed=5, loop=true},
|
||||
{range={x=60, y=70}, speed=5, loop=true},
|
||||
{range={x=71, y=91}, speed=5, loop=true},
|
||||
minetest.register_entity("petz:"..pet_name,{
|
||||
--Petz specifics
|
||||
type = pet_name,
|
||||
init_tamagochi_timer = false,
|
||||
is_pet = true,
|
||||
has_affinity = false,
|
||||
is_wild = false,
|
||||
is_baby = is_baby,
|
||||
parents = parents,
|
||||
aggressive = aggressive,
|
||||
backface_culling = backface_culling,
|
||||
give_orders = false,
|
||||
feathered = true,
|
||||
can_be_brushed = false,
|
||||
capture_item = "net",
|
||||
lay_eggs = lay_eggs,
|
||||
lay_eggs_in_nest = true,
|
||||
type_of_egg = "item",
|
||||
follow = petz.settings.hen_follow,
|
||||
drops = {
|
||||
{name = "petz:raw_chicken", chance = 3, min = 1, max = 1,},
|
||||
{name = "petz:bone", chance = 6, min = 1, max = 1,},
|
||||
},
|
||||
},
|
||||
sounds = {
|
||||
misc = {"petz_chicken_cluck", "petz_chicken_cluck_2", "petz_chicken_cluck_3"},
|
||||
},
|
||||
rotate = petz.settings.rotate,
|
||||
physical = true,
|
||||
stepheight = 0.1, --EVIL!
|
||||
collide_with_objects = true,
|
||||
collisionbox = collisionbox,
|
||||
visual = petz.settings.visual,
|
||||
mesh = mesh,
|
||||
textures = textures,
|
||||
visual_size = {x=petz.settings.visual_size.x*scale_model, y=petz.settings.visual_size.y*scale_model},
|
||||
static_save = true,
|
||||
get_staticdata = mobkit.statfunc,
|
||||
-- api props
|
||||
springiness= 0,
|
||||
buoyancy = 0.5, -- portion of hitbox submerged
|
||||
max_speed = 2,
|
||||
jump_height = 1.5,
|
||||
view_range = 10,
|
||||
lung_capacity = 10, -- seconds
|
||||
max_hp = 8,
|
||||
|
||||
logic = petz.herbivore_brain,
|
||||
attack={range=0.5, damage_groups={fleshy=3}},
|
||||
animation = {
|
||||
walk={range={x=1, y=12}, speed=25, loop=true},
|
||||
run={range={x=13, y=25}, speed=25, loop=true},
|
||||
stand={
|
||||
{range={x=26, y=46}, speed=5, loop=true},
|
||||
{range={x=47, y=59}, speed=5, loop=true},
|
||||
{range={x=60, y=70}, speed=5, loop=true},
|
||||
{range={x=71, y=91}, speed=5, loop=true},
|
||||
},
|
||||
},
|
||||
sounds = sounds,
|
||||
|
||||
on_activate = function(self, staticdata, dtime_s) --on_activate, required
|
||||
mobkit.actfunc(self, staticdata, dtime_s)
|
||||
petz.set_initial_properties(self, staticdata, dtime_s)
|
||||
end,
|
||||
logic = petz.herbivore_brain,
|
||||
|
||||
on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir)
|
||||
petz.on_punch(self, puncher, time_from_last_punch, tool_capabilities, dir)
|
||||
end,
|
||||
on_activate = function(self, staticdata, dtime_s) --on_activate, required
|
||||
mobkit.actfunc(self, staticdata, dtime_s)
|
||||
petz.set_initial_properties(self, staticdata, dtime_s)
|
||||
end,
|
||||
|
||||
on_rightclick = function(self, clicker)
|
||||
petz.on_rightclick(self, clicker)
|
||||
end,
|
||||
on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir)
|
||||
petz.on_punch(self, puncher, time_from_last_punch, tool_capabilities, dir)
|
||||
end,
|
||||
|
||||
on_step = function(self, dtime)
|
||||
mobkit.stepfunc(self, dtime) -- required
|
||||
petz.on_step(self, dtime)
|
||||
end,
|
||||
})
|
||||
on_rightclick = function(self, clicker)
|
||||
petz.on_rightclick(self, clicker)
|
||||
end,
|
||||
|
||||
on_step = function(self, dtime)
|
||||
mobkit.stepfunc(self, dtime) -- required
|
||||
petz.on_step(self, dtime)
|
||||
end,
|
||||
})
|
||||
|
||||
petz:register_egg("petz:"..pet_name, S(description), "petz_spawnegg_"..pet_name..".png", false)
|
||||
|
||||
end
|
||||
|
||||
petz:register_egg("petz:chicken", S("Chicken"), "petz_spawnegg_chicken.png", true)
|
||||
|
|
|
@ -152,6 +152,12 @@ local settings_def = {
|
|||
type = "boolean",
|
||||
default = false,
|
||||
},
|
||||
--Parent Search
|
||||
{
|
||||
name = "parent_search",
|
||||
type = "boolean",
|
||||
default = true,
|
||||
},
|
||||
--Lifetime
|
||||
{
|
||||
name = "lifetime",
|
||||
|
@ -184,6 +190,11 @@ local settings_def = {
|
|||
type = "number",
|
||||
default = 10,
|
||||
},
|
||||
{
|
||||
name = "hatch_egg_timing",
|
||||
type = "number",
|
||||
default = 500,
|
||||
},
|
||||
--Misc Random Sound Chance
|
||||
{
|
||||
name = "misc_sound_chance",
|
||||
|
@ -463,7 +474,7 @@ for i = 1, #petz.settings["petz_list"] do --load the settings
|
|||
petz.settings[petz_type.."_spawn_biome"] = user:get(petz_type.."_spawn_biome") or settings:get(petz_type.."_spawn_biome") or "default"
|
||||
petz.settings[petz_type.."_spawn_herd"] = tonumber(user:get(petz_type.."_spawn_herd") or settings:get(petz_type.."_spawn_herd")) or 1
|
||||
petz.settings[petz_type.."_seasonal"] = user:get(petz_type.."_seasonal") or settings:get(petz_type.."_seasonal") or ""
|
||||
petz.settings[petz_type.."_follow"] = user:get(petz_type.."_follow") or settings:get(petz_type.."_follow") or ""
|
||||
petz.settings[petz_type.."_follow"] = user:get(petz_type.."_follow") or settings:get(petz_type.."_follow") or nil
|
||||
petz.settings[petz_type.."_breed"] = user:get(petz_type.."_breed") or settings:get(petz_type.."_breed") or ""
|
||||
petz.settings[petz_type.."_predators"] = user:get(petz_type.."_predators") or settings:get(petz_type.."_predators") or ""
|
||||
petz.settings[petz_type.."_preys"] = user:get(petz_type.."_preys") or settings:get(petz_type.."_preys") or ""
|
||||
|
|
|
@ -110,17 +110,17 @@ Author: dobroide
|
|||
https://freesound.org/people/dobroide/sounds/18229/
|
||||
License: This work is licensed under the Attribution License.
|
||||
--------------------------------------------
|
||||
filename: petz_chicken_cluck.ogg
|
||||
filename: petz_hen_cluck.ogg
|
||||
Author: JarredGibb
|
||||
https://freesound.org/people/JarredGibb/sounds/233093/
|
||||
License: This work is licensed under the Creative Commons 0 License.
|
||||
--------------------------------------------
|
||||
filename: petz_chicken_cluck_2.ogg & petz_chicken_cluck_3.ogg
|
||||
filename: petz_hen_cluck_2.ogg & petz_chicken_cluck_3.ogg
|
||||
Author: www.bonson.ca
|
||||
https://freesound.org/people/www.bonson.ca/sounds/24967/
|
||||
License: This work is licensed under the Attribution License.
|
||||
--------------------------------------------
|
||||
filename: petz_chicken_moaning.ogg
|
||||
filename: petz_hen_moaning.ogg
|
||||
Author: Rudmer_Rotteveel
|
||||
https://freesound.org/people/Rudmer_Rotteveel/sounds/316920/
|
||||
License: This work is licensed under the Creative Commons 0 License.
|
||||
|
@ -384,3 +384,25 @@ filename: petz_leopard_attack.ogg
|
|||
Author: Darsycho
|
||||
https://freesound.org/people/Darsycho/sounds/442114/
|
||||
License: This work is licensed under the Creative Commons 0 License.
|
||||
--------------------------------------------
|
||||
filename: petz_rooster_crow.ogg
|
||||
Author: InspectorJ
|
||||
https://freesound.org/people/InspectorJ/sounds/439472/
|
||||
License: This work is licensed under the Attribution License.
|
||||
--------------------------------------------
|
||||
filename: petz_rooster_chirp.ogg
|
||||
Author: Setuniman
|
||||
https://freesound.org/people/Setuniman/sounds/134049/
|
||||
License: This work is licensed under the Attribution License.
|
||||
--------------------------------------------
|
||||
filename: petz_rooster_moaning.ogg
|
||||
Author: ra_gun
|
||||
https://freesound.org/people/ra_gun/sounds/81270/
|
||||
License: This work is licensed under the Creative Commons 0 License.
|
||||
--------------------------------------------
|
||||
filename: petz_chicken_chirp.ogg & filename: petz_chicken_moaning.ogg
|
||||
& petz_chicken_chirp_2.ogg & petz_chicken_moaning.ogg
|
||||
Author: AGFX
|
||||
https://freesound.org/people/AGFX/sounds/43380/
|
||||
License: This work is licensed under the Creative Commons 0 License.
|
||||
--------------------------------------------
|
||||
|
|
Before Width: | Height: | Size: 618 B After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 650 B |
Before Width: | Height: | Size: 671 B |
After Width: | Height: | Size: 400 B |
After Width: | Height: | Size: 478 B |
After Width: | Height: | Size: 512 B |
Before Width: | Height: | Size: 805 B |
After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 245 B After Width: | Height: | Size: 551 B |
After Width: | Height: | Size: 245 B |
After Width: | Height: | Size: 928 B |
|
@ -170,7 +170,7 @@ minetest.register_entity("water_life:coralfish_tamed",{
|
|||
swarm = {},
|
||||
base = nil,
|
||||
head = 65535,
|
||||
owner = "",
|
||||
owner = "",
|
||||
drops = {},
|
||||
-- {name = "default:diamond", chance = 20, min = 1, max = 1,},
|
||||
-- {name = "water_life:meat_raw", chance = 2, min = 1, max = 1,},
|
||||
|
|
|
@ -0,0 +1,107 @@
|
|||
|
||||
local abs = math.abs
|
||||
local pi = math.pi
|
||||
local floor = math.floor
|
||||
local ceil = math.ceil
|
||||
local sqrt = math.sqrt
|
||||
local max = math.max
|
||||
local min = math.min
|
||||
local pow = math.pow
|
||||
local sign = math.sign
|
||||
local time = os.clock
|
||||
local rad = math.rad
|
||||
local random = water_life.random
|
||||
local deg=math.deg
|
||||
local tan = math.tan
|
||||
local cos = math.cos
|
||||
local atan=math.atan
|
||||
|
||||
|
||||
function water_life.init_bio(self)
|
||||
mobkit.remember(self,"wl_hunger",100)
|
||||
mobkit.remember(self,"wl_exhaust",100)
|
||||
mobkit.remember(self,"wl_horny",100)
|
||||
mobkit.remember(self,"wl_pregnant",-1)
|
||||
mobkit.remember(self,"wl_head",random(65535))
|
||||
mobkit.remember(self,"wl_headpos", nil)
|
||||
mobkit.remember(self,"wl_boss", 0)
|
||||
end
|
||||
|
||||
|
||||
function water_life.is_boss(self,change)
|
||||
if not self then return 0 end
|
||||
if not change then return mobkit.recall(self,"wl_boss") or 0 end
|
||||
mobkit.remember(self,"wl_boss", change)
|
||||
end
|
||||
|
||||
|
||||
function water_life.headpos(self,change)
|
||||
if not self then return nil end
|
||||
if not change then
|
||||
local strg = mobkit.recall(self,"wl_headpos")
|
||||
if strg then
|
||||
return minetest.deserialize(strg)
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
mobkit.remember(self,"wl_headpos", minetest.serialize(change))
|
||||
end
|
||||
|
||||
|
||||
function water_life.head(self)
|
||||
if not self then return 0 end
|
||||
local boss = mobkit.recall(self,"wl_head")
|
||||
if boss then
|
||||
return boss
|
||||
else
|
||||
boss = random(65535)
|
||||
mobkit.remember(self,"wl_head",boss)
|
||||
return boss
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function water_life.hunger(self,change)
|
||||
if not self then return 0 end
|
||||
if not change then change = 0 end
|
||||
local hunger = mobkit.recall(self,"wl_hunger") or 100
|
||||
hunger = hunger + change
|
||||
if hunger < 0 then hunger = 0 end
|
||||
if hunger > 100 then hunger = 100 end
|
||||
mobkit.remember(self,"wl_hunger", hunger)
|
||||
return hunger
|
||||
end
|
||||
|
||||
|
||||
function water_life.exhaust(self,change)
|
||||
if not self then return 0 end
|
||||
if not change then change = 0 end
|
||||
local exhaust = mobkit.recall(self,"wl_exhaust") or 100
|
||||
exhaust = exhaust + change
|
||||
if exhaust < 0 then exhaust = 0 end
|
||||
if exhaust > 100 then exhaust = 100 end
|
||||
mobkit.remember(self,"wl_exhaust", exhaust)
|
||||
return exhaust
|
||||
end
|
||||
|
||||
|
||||
function water_life.horny(self,change)
|
||||
if not self then return 0 end
|
||||
if not change then change = 0 end
|
||||
local horny = mobkit.recall(self,"wl_horny") or 100
|
||||
horny = horny + change
|
||||
if horny < 0 then horny = 0 end
|
||||
if horny > 100 then horny = 100 end
|
||||
mobkit.remember(self,"wl_horny", horny)
|
||||
return horny
|
||||
end
|
||||
|
||||
|
||||
function water_life.pregnant(self,change)
|
||||
if not self then return -1 end
|
||||
if not change then return mobkit.recall(self,"wl_pregnant") or -1 end
|
||||
|
||||
mobkit.remember(self,"wl_pregnant", change)
|
||||
end
|
|
@ -0,0 +1,81 @@
|
|||
|
||||
water_life.playerhud = {}
|
||||
water_life.playerhud.poison = {}
|
||||
water_life.playerhud.repellant = {}
|
||||
|
||||
|
||||
|
||||
water_life.hud_poison = {
|
||||
|
||||
hud_elem_type = "image",
|
||||
|
||||
position = {x=0.5, y=0.8},
|
||||
-- Left corner position of element
|
||||
|
||||
name = "water_life_poison",
|
||||
|
||||
scale = {x = 0.1, y = 0.1},
|
||||
|
||||
text = "water_life_emptyhud.png",
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
water_life.hud_repellant = {
|
||||
hud_elem_type = "image",
|
||||
|
||||
position = {x=0.55, y=0.8},
|
||||
-- Left corner position of element
|
||||
|
||||
name = "water_life_repellant",
|
||||
|
||||
scale = {x = 0.1, y = 0.1},
|
||||
|
||||
text = "water_life_emptyhud.png",
|
||||
}
|
||||
|
||||
|
||||
function water_life.change_hud(player,selection,switch)
|
||||
local value = ""
|
||||
if not player then return end
|
||||
if not selection then selection = "poison" end
|
||||
if not switch then switch = 1 end
|
||||
|
||||
|
||||
local name = player:get_player_name()
|
||||
|
||||
if selection == "poison" then
|
||||
if switch == 1 then value = "water_life_poison.png" else value = "water_life_emptyhud.png" end
|
||||
player:hud_change(water_life.playerhud.poison[name], "text", value)
|
||||
end
|
||||
|
||||
if selection == "repellant" then
|
||||
if switch == 1 then value = "water_life_repellanthud.png" else value = "water_life_emptyhud.png" end
|
||||
player:hud_change(water_life.playerhud.repellant[name], "text", value)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
if not player then return end
|
||||
|
||||
local meta=player:get_meta()
|
||||
meta:set_int("repellant",0)
|
||||
local name = player:get_player_name()
|
||||
|
||||
water_life.playerhud.poison[name] = player:hud_add(water_life.hud_poison)
|
||||
water_life.playerhud.repellant[name] = player:hud_add(water_life.hud_repellant)
|
||||
|
||||
if meta:get_int("snakepoison") > 0 then
|
||||
minetest.after(5, function(player)
|
||||
water_life.change_hud(player,"poison")
|
||||
end, player)
|
||||
end
|
||||
|
||||
end)
|
||||
|
||||
|
|
@ -48,11 +48,11 @@ local function spawnstep(dtime)
|
|||
if hunger_ng_infos.effects.healing then
|
||||
poison_value = ((waterinterval/hunger_ng_interoper.settings.timers.heal)*hunger_ng_interoper.effects.heal.amount) + 0.1 --+ poison_value -- if you want decrease healt even with healing
|
||||
end
|
||||
minetest.log("Poison: "..dump(poison_value))
|
||||
--minetest.log("Poison: "..dump(poison_value))
|
||||
|
||||
local score = plyr:get_hp()-poison_value
|
||||
--if score < 0 then score = 0 end
|
||||
minetest.log("Health: "..dump(score))
|
||||
--minetest.log("Health: "..dump(score))
|
||||
plyr:set_hp(score)
|
||||
end
|
||||
|
||||
|
|
|
@ -0,0 +1,381 @@
|
|||
local timer = 0
|
||||
local landtimer = 0
|
||||
local pi = math.pi
|
||||
local random = water_life.random
|
||||
local landinterval = 60 -- check every 60 seconds for spawnpos on land
|
||||
local waterinterval = 20 -- check every 20 seconds for spawnpos in water
|
||||
|
||||
|
||||
local function getcount(name)
|
||||
if not name then
|
||||
return 0
|
||||
else
|
||||
return name
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local function spawnstep(dtime)
|
||||
|
||||
timer = timer + dtime
|
||||
landtimer = landtimer + dtime
|
||||
|
||||
if timer > waterinterval then
|
||||
|
||||
for _,plyr in ipairs(minetest.get_connected_players()) do
|
||||
|
||||
local toomuch = false
|
||||
|
||||
if plyr and plyr:is_player() and plyr:get_pos().y > -50 and plyr:get_pos().y < 150 then -- each player gets a spawn chance every 10s on average
|
||||
|
||||
local pos = plyr:get_pos()
|
||||
local yaw = plyr:get_look_horizontal()
|
||||
local animal = water_life.count_objects(pos)
|
||||
local meta = plyr:get_meta()
|
||||
|
||||
|
||||
if meta:get_int("snakepoison") > 0 then
|
||||
local score = plyr:get_hp()
|
||||
plyr:set_hp(score-1)
|
||||
end
|
||||
|
||||
if meta:get_int("repellant") > 0 then
|
||||
if math.floor(os.clock()) - meta:get_int("repellant") > water_life.repeltime then
|
||||
water_life.change_hud(plyr,"repellant",0)
|
||||
meta:set_int("repellant",0)
|
||||
end
|
||||
end
|
||||
|
||||
if animal.all > water_life.maxmobs then toomuch = true end
|
||||
|
||||
-- find a pos randomly in look direction of player
|
||||
local radius = (water_life.abr * 12) -- 75% from 16 = 12 nodes
|
||||
radius = random(7,radius) -- not nearer than 7 nodes in front of player
|
||||
local angel = math.rad(random(75)) -- look for random angel 0 - 75 degrees
|
||||
if water_life.leftorright() then yaw = yaw + angel else yaw = yaw - angel end -- add or substract to/from yaw
|
||||
|
||||
local pos2 = mobkit.pos_translate2d(pos,yaw,radius) -- calculate position
|
||||
local depth, stype, surface = water_life.water_depth(pos2,25) -- get surface pos and water depth
|
||||
local bdata = water_life_get_biome_data(pos2) -- get biome data at spawn position
|
||||
local ground = {}
|
||||
local dalam = depth
|
||||
local landpos = nil
|
||||
local geckopos = nil
|
||||
local moskitopos = nil
|
||||
|
||||
-- no need of so many postions on land
|
||||
if landtimer > landinterval then
|
||||
landpos = water_life.find_node_under_air(pos2)
|
||||
geckopos = water_life.find_node_under_air(pos2,5,{"group:tree","group:leaves","default:junglegrass"})
|
||||
moskitopos = water_life.find_node_under_air(pos2,5,{"default:river_water_source","water_life:muddy_river_water_source","group:flora","default:dirt_with_rainforest_litter"})
|
||||
end
|
||||
|
||||
|
||||
if moskitopos and not water_life.dangerous then
|
||||
local mlevel = minetest.get_node_light(moskitopos)
|
||||
local ptime = water_life.get_game_time()
|
||||
local mdata = water_life_get_biome_data(moskitopos)
|
||||
--minetest.chat_send_all("MOSKITO: "..dump(moskitopos).." : "..dump(mdata.temp).." : "..dump(ptime).." : "..dump(mlevel))
|
||||
|
||||
if ((ptime and ptime > 2) or mlevel < 8) and mdata.temp > 16 then --from 3pm to 5am or in shadows all day long
|
||||
|
||||
minetest.set_node(moskitopos, {name = "water_life:moskito"})
|
||||
minetest.get_node_timer(moskitopos):start(random(15,45))
|
||||
local pmeta = minetest.get_meta(moskitopos)
|
||||
pmeta:set_int("mlife",math.floor(os.clock()))
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
--some spawn on land, too
|
||||
|
||||
if landpos then
|
||||
local landdata = water_life_get_biome_data(landpos)
|
||||
|
||||
|
||||
if not water_life.dangerous then
|
||||
-- the snake
|
||||
local mobname = 'water_life:snake'
|
||||
local faktor = (100 - getcount(animal[mobname]) * 50)
|
||||
if random(100) < faktor then
|
||||
local fits = minetest.is_protected(landpos,mobname)
|
||||
--minetest.chat_send_all(dump(fits))
|
||||
|
||||
if (string.match(landdata.name,"desert") or string.match(landdata.name,"savanna"))
|
||||
and not fits and landdata.temp > 15 then
|
||||
|
||||
local obj=minetest.add_entity(landpos,mobname) -- ok spawn it already damnit
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
--the beaver
|
||||
local mobname = 'water_life:beaver'
|
||||
local faktor = (100 - getcount(animal[mobname]) * 25)
|
||||
if random(100) < faktor then
|
||||
|
||||
if string.match(landdata.name,"coniferous") and landdata.temp > -5 and landdata.temp < 20 then
|
||||
|
||||
local obj=minetest.add_entity(landpos,mobname) -- ok spawn it already damnit
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if geckopos then
|
||||
local landdata = water_life_get_biome_data(geckopos)
|
||||
|
||||
local mobname = 'water_life:gecko'
|
||||
local faktor = (100 - getcount(animal[mobname]) * 50)
|
||||
if random(100) < faktor then
|
||||
|
||||
|
||||
if (string.match(landdata.name,"rainforest") or string.match(landdata.name,"savanna"))
|
||||
and landdata.temp > 20 then
|
||||
|
||||
local obj=minetest.add_entity(geckopos,mobname) -- ok spawn it already damnit
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
--water spawn
|
||||
|
||||
if depth and depth > 0 then
|
||||
if water_life.radar_debug then
|
||||
water_life.temp_show(surface,9,5)
|
||||
minetest.chat_send_all(">>> Depth ="..dump(depth).." <<< "..dump(stype))
|
||||
minetest.chat_send_all(dump(bdata.name))
|
||||
end
|
||||
pos2 = surface
|
||||
|
||||
end
|
||||
|
||||
local liquidflag = nil
|
||||
|
||||
if stype == "default:water_source" then
|
||||
liquidflag = "sea"
|
||||
|
||||
elseif stype == "default:river_water_source" then
|
||||
liquidflag = "river"
|
||||
|
||||
elseif stype == "water_life:muddy_river_water_source" then
|
||||
liquidflag = "muddy"
|
||||
|
||||
end
|
||||
|
||||
if liquidflag and not toomuch and surface then
|
||||
ground = mobkit.pos_shift(surface,{y=(dalam*-1)})
|
||||
|
||||
|
||||
if not water_life.dangerous then
|
||||
--minetest.chat_send_all(dump(minetest.pos_to_string(surface)).." "..dump(minetest.pos_to_string(ground)))
|
||||
local mobname = 'water_life:croc'
|
||||
local faktor = 100 - getcount(animal[mobname]) * 33
|
||||
if random(100) < faktor then
|
||||
local fits = false
|
||||
if string.match(bdata.name,"rainforest") or string.match(bdata.name,"savanna") then fits = true end
|
||||
|
||||
if depth < 4 and fits then --shark min water depth
|
||||
local obj=minetest.add_entity(surface,mobname) -- ok spawn it already damnit
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
--minetest.chat_send_all(dump(minetest.pos_to_string(surface)).." "..dump(minetest.pos_to_string(ground)))
|
||||
|
||||
|
||||
local mobname = 'water_life:snake'
|
||||
local faktor = (100 - getcount(animal[mobname]) * 50) +25
|
||||
if random(100) < faktor then
|
||||
local fits = false
|
||||
if string.match(bdata.name,"desert") or string.match(bdata.name,"savanna") then fits = true end
|
||||
|
||||
if depth < 3 and fits then --snake max water depth
|
||||
local obj=minetest.add_entity(surface,mobname) -- ok spawn it already damnit
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
--minetest.chat_send_all(dump(minetest.pos_to_string(surface)).." "..dump(minetest.pos_to_string(ground)))
|
||||
|
||||
local mobname = 'water_life:shark'
|
||||
if water_life.shark_spawn_rate >= random(1000) then
|
||||
|
||||
local bcheck = water_life.count_objects(pos2,12)
|
||||
if getcount(animal[mobname]) < water_life.maxsharks and liquidflag == "sea" and not bcheck["water_life:shark_buoy"]
|
||||
and not animal["water_life:croc"] then
|
||||
|
||||
if depth > 4 then --shark min water depth
|
||||
local obj=minetest.add_entity(mobkit.pos_shift(ground,{y=2}),mobname) -- spawn it 2 nodes above sea ground
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
local mobname = "water_life:gull"
|
||||
local faktor = 100 - getcount(animal[mobname]) * 20
|
||||
if random(100) < faktor and liquidflag == "sea" then
|
||||
if depth > 4 then
|
||||
local spawn = mobkit.pos_shift(surface,{y=12})
|
||||
--spawn.y = spawn.y + 12
|
||||
local obj=minetest.add_entity(spawn,mobname) -- ok spawn it already damnit
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--minetest.chat_send_all(dump(minetest.pos_to_string(surface)).." "..dump(minetest.pos_to_string(ground)))
|
||||
mobname = "water_life:urchin"
|
||||
if water_life.urchin_spawn_rate >= random(1000) then
|
||||
|
||||
local upos1 = mobkit.pos_shift(ground,{x=-5,y=-2,z=-5})
|
||||
local upos2 = mobkit.pos_shift(ground,{x=5,y=2,z=5})
|
||||
local coraltable = minetest.find_nodes_in_area(upos1, upos2, water_life.urchinspawn)
|
||||
--local nearlife = water_life.count_objects(ground,5,"water_life:urchin")
|
||||
if coraltable and #coraltable > 0 and getcount(animal[mobname]) < 15 and liquidflag == "sea" then
|
||||
local coralpos = coraltable[random(#coraltable)]
|
||||
coralpos.y = coralpos.y +1
|
||||
local node = minetest.get_node(coralpos)
|
||||
|
||||
if node.name == "default:water_source" then
|
||||
local obj= water_life.set_urchin(coralpos) --minetest.add_entity(coralpos,mobname)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--minetest.chat_send_all(dump(minetest.pos_to_string(surface)).." "..dump(minetest.pos_to_string(ground)))
|
||||
mobname = "water_life:clams"
|
||||
if water_life.clams_spawn_rate >= random(1000) then
|
||||
local clpos1 = mobkit.pos_shift(ground,{x=-8, y=-2, z=8})
|
||||
local clpos2 = mobkit.pos_shift(ground,{x=8, y=2, z=8})
|
||||
local coraltable = minetest.find_nodes_in_area(clpos1, clpos2, water_life.clams_spawn)
|
||||
----minetest.chat_send_all("seagrass ="..dump(#coraltable))
|
||||
local nearlife = water_life.count_objects(ground,8,"water_life:clams")
|
||||
if coraltable and #coraltable > 0 and getcount(animal[mobname]) < 10 and liquidflag == "sea" then
|
||||
local coralpos = mobkit.pos_shift(coraltable[random(#coraltable)],{y=1})
|
||||
|
||||
local node = minetest.get_node(coralpos)
|
||||
if node.name == "default:water_source" then
|
||||
local obj= water_life.set_urchin(coralpos,"water_life:clams")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--minetest.chat_send_all(dump(minetest.pos_to_string(surface)).." "..dump(minetest.pos_to_string(ground)))
|
||||
mobname = "water_life:jellyfish"
|
||||
|
||||
|
||||
local faktor = 100 - getcount(animal[mobname]) * 20
|
||||
if random(100) < faktor and liquidflag == "sea" and depth > 2 then
|
||||
local obj=minetest.add_entity(mobkit.pos_shift(ground,{y=2}),mobname)
|
||||
end
|
||||
|
||||
|
||||
mobname = "water_life:coralfish"
|
||||
|
||||
--minetest.chat_send_all(dump(minetest.pos_to_string(surface)).." "..dump(minetest.pos_to_string(ground)))
|
||||
|
||||
local cfpos1 = mobkit.pos_shift(ground,{x=-5,y=-2,z=-5})
|
||||
local cfpos2 = mobkit.pos_shift(ground,{x=5,y=2,z=5})
|
||||
local coraltable = minetest.find_nodes_in_area(cfpos1,cfpos2,water_life.urchinspawn)
|
||||
--local nearlife = water_life.count_objects(ground,nil,mobname)
|
||||
faktor = 100 - getcount(animal[mobname]) * 6.66
|
||||
if random(100) < faktor and liquidflag == "sea" and #coraltable > 1 then
|
||||
local cfish = coraltable[random(#coraltable)]
|
||||
cfish.y = cfish.y +1
|
||||
local maxfish = random(3,7)
|
||||
for i = 1,maxfish,1 do
|
||||
local obj=minetest.add_entity(cfish,mobname)
|
||||
if obj then
|
||||
local entity = obj:get_luaentity()
|
||||
entity.base = cfish
|
||||
entity.head = random(65535)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--minetest.chat_send_all(dump(minetest.pos_to_string(surface)).." "..dump(minetest.pos_to_string(ground)))
|
||||
mobname = "water_life:clownfish"
|
||||
|
||||
faktor = 100 - getcount(animal[mobname]) * 50
|
||||
if random(100) < faktor and liquidflag == "sea" and #coraltable > 1 then
|
||||
local cfish = coraltable[random(#coraltable)]
|
||||
cfish.y = cfish.y +1
|
||||
local obj=minetest.add_entity(cfish,mobname)
|
||||
if obj then
|
||||
local entity = obj:get_luaentity()
|
||||
entity.base = cfish
|
||||
end
|
||||
end
|
||||
|
||||
--minetest.chat_send_all(dump(minetest.pos_to_string(surface)).." "..dump(minetest.pos_to_string(ground)))
|
||||
mobname = 'water_life:fish'
|
||||
--local nearlife = water_life.count_objects(pos2,24,"water_life:piranha")
|
||||
if water_life.fish_spawn_rate >= random(1000) and ((animal.all < (water_life.maxmobs-5)) or getcount(animal[mobname]) < 5) and (liquidflag == "river" or liquidflag == "muddy") then
|
||||
|
||||
local table = minetest.get_biome_data(pos)
|
||||
|
||||
if not water_life.dangerous and table and water_life.piranha_biomes[minetest.get_biome_name(table.biome)] then
|
||||
mobname = "water_life:piranha"
|
||||
end
|
||||
|
||||
if depth > 2 then -- min water depth for piranha and riverfish
|
||||
if mobname == "water_life:fish" then
|
||||
local obj=minetest.add_entity(pos2,mobname) -- ok spawn it already damnit
|
||||
else
|
||||
if getcount(animal[mobname]) < 10 then
|
||||
for i = 1,3,1 do
|
||||
local obj=minetest.add_entity(pos2,mobname) -- ok spawn it already damnit
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
--minetest.chat_send_all(dump(minetest.pos_to_string(surface)).." "..dump(minetest.pos_to_string(ground)))
|
||||
|
||||
mobname = 'water_life:whale'
|
||||
if water_life.whale_spawn_rate >= random(1000) and getcount(animal[mobname]) < (water_life.maxwhales) and liquidflag == "sea" then
|
||||
|
||||
|
||||
if depth > 8 then -- min water depth for whales
|
||||
|
||||
local gotwhale = true
|
||||
local whpos = mobkit.pos_shift(surface,{y=-3})
|
||||
for i = 0,3,1 do
|
||||
local whpos2 = mobkit.pos_translate2d(whpos,math.rad(i*90),30)
|
||||
local under = water_life.find_collision(whpos,whpos2, false)
|
||||
----minetest.chat_send_all(dump(under))
|
||||
if under and under < 25 then
|
||||
gotwhale = false
|
||||
break
|
||||
end
|
||||
end
|
||||
if gotwhale then local obj=minetest.add_entity(surface,mobname) end -- ok spawn it already damnit
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
timer = 0
|
||||
if landtimer > landinterval then landtimer = 0 end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
minetest.register_globalstep(spawnstep)
|
||||
|
|
@ -4,7 +4,7 @@ Animates the character. Resembles [`playeranim`](https://github.com/minetest-mod
|
|||
|
||||
## About
|
||||
|
||||
Depends on [`modlib`](https://github.com/appgurueu/modlib) and [`cmdlib`](https://github.com/appgurueu/cmdlib). Code written by Lars Mueller aka LMD or appguru(eu) and licensed under the MIT license. Media (player model) was created by [MTG contributors](https://github.com/minetest/minetest_game/blob/master/mods/player_api/README.txt) (MirceaKitsune, stujones11 and An0n3m0us) and is licensed under the CC BY-SA 3.0 license, as must be its derivatives (`skinsdb` and `3d_armor` variants).
|
||||
Depends on [`modlib`](https://github.com/appgurueu/modlib). Code written by Lars Mueller aka LMD or appguru(eu) and licensed under the MIT license. Media (player model) was created by [MTG contributors](https://github.com/minetest/minetest_game/blob/master/mods/player_api/README.txt) (MirceaKitsune, stujones11 and An0n3m0us) and is licensed under the CC BY-SA 3.0 license, as must be its derivatives (`skinsdb` and `3d_armor` variants).
|
||||
|
||||
## Screenshot
|
||||
|
||||
|
@ -17,7 +17,7 @@ Depends on [`modlib`](https://github.com/appgurueu/modlib) and [`cmdlib`](https:
|
|||
* [Minetest Forum](https://forum.minetest.net/viewtopic.php?f=9&t=25385) - (more organized) discussion
|
||||
* [ContentDB](https://content.minetest.net/packages/LMD/character_anim) - releases (cloning from GitHub is recommended)
|
||||
|
||||
# Features
|
||||
## Features
|
||||
|
||||
* Animates head, right arm & body
|
||||
* Advantages over `playeranim`:
|
||||
|
@ -28,7 +28,7 @@ Depends on [`modlib`](https://github.com/appgurueu/modlib) and [`cmdlib`](https:
|
|||
* Head angles are clamped, head can tilt sideways
|
||||
* Animates right arm & body as well
|
||||
|
||||
# Instructions
|
||||
## Instructions
|
||||
|
||||
0. If you want to use a custom model, install [`binarystream`](https://luarocks.org/modules/Tarik02/binarystream) from LuaRocks:
|
||||
1. `sudo luarocks install binarystream` on many UNIX-systems
|
||||
|
|
|
@ -115,8 +115,8 @@ end)
|
|||
-- https://github.com/minetest/minetest/issues/6909
|
||||
local builtin_item = minetest.registered_entities["__builtin:item"]
|
||||
local item = {
|
||||
on_step = function(self, dtime, moveresult)
|
||||
builtin_item.on_step(self, dtime, moveresult)
|
||||
on_step = function(self, dtime, ...)
|
||||
builtin_item.on_step(self, dtime, ...)
|
||||
|
||||
self.shining_timer = (self.shining_timer or 0) + dtime
|
||||
if self.shining_timer >= update_interval then
|
||||
|
|