- initial beta version
master
Leslie Krause 2022-06-25 18:31:57 -04:00
commit 30d6700592
21 changed files with 866 additions and 0 deletions

143
README.txt Normal file
View File

@ -0,0 +1,143 @@
Pride Flags Mod v1.0
By Leslie E. Krause
Pride Flags adds a variety of eight animated flags to celebrate pride in Minetest.
The flags and poles are non-craftable and intended for placement by an administrator in a
conspicuous location, such as atop a building or along a promenade.
/giveme pride_flags:mast_lower
/giveme pride_flags:mast_upper
By default, a rainbow pride flag will appear when the upper mast is placed. Right-click
the node to select a different flag.
Repository
----------------------
Browse source code...
https://bitbucket.org/sorcerykid/pride_flags
Download archive...
https://bitbucket.org/sorcerykid/pride_flags/get/master.zip
https://bitbucket.org/sorcerykid/pride_flags/get/master.tar.gz
Compatability
----------------------
Minetest 0.4.15+ required
Installation
----------------------
1) Unzip the archive into the mods directory of your game.
2) Rename the pride_flags-master directory to "pride_flags".
Source Code License
----------------------------------------------------------
GNU Lesser General Public License v3 (LGPL-3.0)
Copyright (c) 2022, Leslie E. Krause (leslie@searstower.org)
This program is free software; you can redistribute it and/or modify it under the terms of
the GNU Lesser General Public License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Lesser General Public License for more details.
http://www.gnu.org/licenses/lgpl-2.1.html
Multimedia License (textures, sounds, and models)
----------------------------------------------------------
Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
/models/mast_lower.obj
by sorcerykid
/models/mast_upper.obj
by sorcerykid
/models/wavingflag.b3d
by sorcerykid
/textures/default_baremetal.png
by sorcerykid
/textures/prideflag_asexual.png
by sorcerykid
/textures/prideflag_bisexual.png
by sorcerykid
/textures/prideflag_rainbow.png
by sorcerykid
/textures/prideflag_gendercreative.png
by sorcerykid
/textures/prideflag_genderfluid.png
by sorcerykid
/textures/prideflag_genderqueer.png
by sorcerykid
/textures/prideflag_lesbian.png
by sorcerykid
/textures/prideflag_nonbinary.png
by sorcerykid
/textures/prideflag_pansexual.png
by sorcerykid
/textures/prideflag_polysexual.png
by sorcerykid
/textures/prideflag_transgender.png
by sorcerykid
/sounds/flagwave1.ogg
by Chelly01
obtained from https://freesound.org/people/Chelly01/sounds/541088/
modified by sorcerykid
/sounds/flagwave2.ogg
by Chelly01
obtained from https://freesound.org/people/Chelly01/sounds/541088/
modified by sorcerykid
/sounds/flagwave3.ogg
by Chelly01
obtained from https://freesound.org/people/Chelly01/sounds/541088/
modified by sorcerykid
You are free to:
Share — copy and redistribute the material in any medium or format.
Adapt — remix, transform, and build upon the material for any purpose, even commercially.
The licensor cannot revoke these freedoms as long as you follow the license terms.
Under the following terms:
Attribution — You must give appropriate credit, provide a link to the license, and
indicate if changes were made. You may do so in any reasonable manner, but not in any way
that suggests the licensor endorses you or your use.
No additional restrictions — You may not apply legal terms or technological measures that
legally restrict others from doing anything the license permits.
Notices:
You do not have to comply with the license for elements of the material in the public
domain or where your use is permitted by an applicable exception or limitation.
No warranties are given. The license may not give you all of the permissions necessary
for your intended use. For example, other rights such as publicity, privacy, or moral
rights may limit how you use the material.
For more details:
http://creativecommons.org/licenses/by-sa/3.0/

195
init.lua Normal file
View File

@ -0,0 +1,195 @@
--------------------------------------------------------
-- Minetest :: Pride Flags Mod (pride_flags)
--
-- See README.txt for licensing and other information.
-- Copyright (c) 2022, Leslie E. Krause
--
-- ./games/minetest_game/mods/pride_flags/init.lua
--------------------------------------------------------
local wind_noise = PerlinNoise( 204, 1, 0, 500 )
local active_flags = { }
local pi = math.pi
local rad_180 = pi
local rad_90 = pi / 2
local flag_list = { "rainbow", "lesbian", "bisexual", "transgender", "genderqueer", "nonbinary", "pansexual", "asexual" }
minetest.register_entity( "pride_flags:wavingflag", {
initial_properties = {
physical = false,
visual = "mesh",
visual_size = { x = 8.5, y = 8.5 },
collisionbox = { -0.1, -0.85, -0.1, 0.1, 0.85, 0.1 },
backface_culling = false,
pointable = false,
mesh = "wavingflag.b3d",
textures = { "prideflag_rainbow.png" },
use_texture_alpha = false,
},
on_activate = function ( self, staticdata, dtime )
self:reset_animation( math.random( 1, 50 ) ) -- random starting frame to desynchronize multiple flags
self.object:set_armor_groups( { immortal = 1 } )
if staticdata ~= "" then
local data = minetest.deserialize( staticdata )
self.flag_idx = data.flag_idx
self.node_idx = data.node_idx
if not self.flag_idx or not self.node_idx then
self.object:remove( )
return
end
self:reset_texture( self.flag_idx )
active_flags[ self.node_idx ] = self.object
else
self.flag_idx = 1
end
end,
on_deactivate = function ( self )
if self.sound_id then
minetest.sound_stop( self.sound_id )
end
end,
on_step = function ( self, dtime )
self.anim_timer = self.anim_timer - dtime
if self.anim_timer <= 0 then
minetest.sound_stop( self.sound_id )
self:reset_animation( 1 )
end
end,
reset_animation = function ( self, start_frame )
local cur_wind = wind_noise:get2d( { x = os.time( ) % 65535, y = 0 } ) * 30 + 30
print( cur_wind )
local anim_speed
local wave_sound
if cur_wind < 10 then
anim_speed = 10 -- 2 cycle
wave_sound = "flagwave1"
elseif cur_wind < 20 then
anim_speed = 20 -- 4 cycles
wave_sound = "flagwave1"
elseif cur_wind < 40 then
anim_speed = 40 -- 8 cycles
wave_sound = "flagwave2"
else
anim_speed = 80 -- 16 cycles
wave_sound = "flagwave3"
end
if self.object then
self.object:set_animation( { x = start_frame, y = 575 }, anim_speed, 0, true )
self.sound_id = minetest.sound_play( wave_sound, { object = self.object, gain = 1.0, loop = true } )
end
self.anim_timer = ( 576 - start_frame ) / 5 -- default to 115 seconds to reset animation
end,
reset_texture = function ( self, flag_idx )
if not flag_idx then
self.flag_idx = self.flag_idx % #flag_list + 1 -- this automatically increments
else
self.flag_idx = flag_idx
end
local texture = string.format( "prideflag_%s.png", flag_list[ self.flag_idx ] )
self.object:set_properties( { textures = { texture } } )
end,
get_staticdata = function ( self )
return minetest.serialize( {
node_idx = self.node_idx,
flag_idx = self.flag_idx,
} )
end,
} )
minetest.register_node( "pride_flags:lower_mast", {
description = "Flag Pole",
drawtype = "mesh",
paramtype = "light",
mesh = "mast_lower.obj",
paramtype2 = "facedir",
groups = { cracky = 2, post = 1 },
tiles = { "default_baremetal.png", "default_baremetal.png" },
groups = { cracky = 1, level = 2 },
--sounds = default.node_sound_metal_defaults( ),
selection_box = {
type = "fixed",
fixed = { { -3/32, -1/2, -3/32, 3/32, 1/2, 3/32 } },
},
collision_box = {
type = "fixed",
fixed = { { -3/32, -1/2, -3/32, 3/32, 1/2, 3/32 } },
},
} )
minetest.register_node( "pride_flags:upper_mast", {
description = "Flag Pole",
drawtype = "mesh",
paramtype = "light",
mesh = "mast_upper.obj",
paramtype2 = "facedir",
groups = { cracky = 2 },
tiles = { "default_baremetal.png", "default_baremetal.png" },
groups = { cracky = 1, level = 2 },
--sounds = default.node_sound_metal_defaults( ),
selection_box = {
type = "fixed",
fixed = { { -3/32, -1/2, -3/32, 3/32, 27/16, 3/32 } },
},
collision_box = {
type = "fixed",
fixed = { { -3/32, -1/2, -3/32, 3/32, 27/16, 3/32 } },
},
on_rightclick = function ( pos, node, player )
local node_idx = minetest.hash_node_position( pos )
if minetest.check_player_privs( player:get_player_name( ), "server" ) then
active_flags[ node_idx ]:get_luaentity( ):reset_texture( )
end
end,
on_construct = function ( pos )
local node_idx = minetest.hash_node_position( pos )
local param2 = minetest.get_node( pos ).param2
local facedir_to_pos = {
[0] = { x = 0, y = 0.6, z = -0.1 },
[1] = { x = -0.1, y = 0.6, z = 0 },
[2] = { x = 0, y = 0.6, z = 0.1 },
[3] = { x = 0.1, y = 0.6, z = 0 },
}
local facedir_to_yaw = {
[0] = rad_90,
[1] = 0,
[2] = -rad_90,
[3] = rad_180,
}
local flag_pos = vector.add( pos, vector.multiply( facedir_to_pos[ param2 ], 1 ) )
local obj = minetest.add_entity( flag_pos, "pride_flags:wavingflag" )
obj:get_luaentity( ).node_idx = node_idx
obj:set_yaw( facedir_to_yaw[ param2 ] - rad_180 )
active_flags[ node_idx ] = obj
end,
on_destruct = function ( pos )
local node_idx = minetest.hash_node_position( pos )
if active_flags[ node_idx ] then
active_flags[ node_idx ]:remove( )
end
end,
} )

5
mod.conf Normal file
View File

@ -0,0 +1,5 @@
name = pride_flags
title = Pride Flags
author = sorcerykid
license = LGPL-3.0

144
models/mast_lower.obj Normal file
View File

@ -0,0 +1,144 @@
# Made in Blockbench 4.1.4
mtllib mast_lower.mtl
o cube
v 0.09375 0.5 0.046875
v 0.09375 0.5 -0.046875
v 0.09375 -0.5 0.046875
v 0.09375 -0.5 -0.046875
v 0.046875 0.5 -0.046875
v 0.046875 0.5 0.046875
v 0.046875 -0.5 -0.046875
v 0.046875 -0.5 0.046875
vt 0 1
vt 0.25 1
vt 0.25 0
vt 0 0
vt 0.25 1
vt 0.375 1
vt 0.375 0
vt 0.25 0
vt 0.75 1
vt 1 1
vt 1 0
vt 0.75 0
vt 0.625 1
vt 0.75 1
vt 0.75 0
vt 0.625 0
vt 0.375 0.6875
vt 0.625 0.6875
vt 0.625 0.5625
vt 0.375 0.5625
vt 0.375 0.4375
vt 0.625 0.4375
vt 0.625 0.3125
vt 0.375 0.3125
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl m_0
f 4/4/1 7/3/1 5/2/1 2/1/1
f 3/8/2 4/7/2 2/6/2 1/5/2
f 8/12/3 3/11/3 1/10/3 6/9/3
f 7/16/4 8/15/4 6/14/4 5/13/4
usemtl m_1
f 6/20/5 1/19/5 2/18/5 5/17/5
f 7/24/6 4/23/6 3/22/6 8/21/6
o cube
v 0.046875 0.5 0.09375
v 0.046875 0.5 -0.09375
v 0.046875 -0.5 0.09375
v 0.046875 -0.5 -0.09375
v -0.046875 0.5 -0.09375
v -0.046875 0.5 0.09375
v -0.046875 -0.5 -0.09375
v -0.046875 -0.5 0.09375
vt 0 1
vt 0.125 1
vt 0.125 0
vt 0 0
vt 0.5625 1
vt 0.625 1
vt 0.625 0
vt 0.5625 0
vt 0.625 1
vt 1 1
vt 1 0
vt 0.625 0
vt 0.375 1
vt 0.4375 1
vt 0.4375 0
vt 0.375 0
vt 0.4375 0.25
vt 0.5625 0.25
vt 0.5625 0.1875
vt 0.4375 0.1875
vt 0.4375 0.375
vt 0.5625 0.375
vt 0.5625 0.3125
vt 0.4375 0.3125
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl m_0
f 12/28/7 15/27/7 13/26/7 10/25/7
f 11/32/8 12/31/8 10/30/8 9/29/8
f 16/36/9 11/35/9 9/34/9 14/33/9
f 15/40/10 16/39/10 14/38/10 13/37/10
usemtl m_1
f 14/44/11 9/43/11 10/42/11 13/41/11
f 15/48/12 12/47/12 11/46/12 16/45/12
o cube
v -0.046875 0.5 0.046875
v -0.046875 0.5 -0.046875
v -0.046875 -0.5 0.046875
v -0.046875 -0.5 -0.046875
v -0.09375 0.5 -0.046875
v -0.09375 0.5 0.046875
v -0.09375 -0.5 -0.046875
v -0.09375 -0.5 0.046875
vt 0 1
vt 0.25 1
vt 0.25 0
vt 0 0
vt 0.25 1
vt 0.375 1
vt 0.375 0
vt 0.25 0
vt 0.75 1
vt 1 1
vt 1 0
vt 0.75 0
vt 0.625 1
vt 0.75 1
vt 0.75 0
vt 0.625 0
vt 0.375 0.6875
vt 0.625 0.6875
vt 0.625 0.5625
vt 0.375 0.5625
vt 0.375 0.4375
vt 0.625 0.4375
vt 0.625 0.3125
vt 0.375 0.3125
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl m_0
f 20/52/13 23/51/13 21/50/13 18/49/13
f 19/56/14 20/55/14 18/54/14 17/53/14
f 24/60/15 19/59/15 17/58/15 22/57/15
f 23/64/16 24/63/16 22/62/16 21/61/16
usemtl m_1
f 22/68/17 17/67/17 18/66/17 21/65/17
f 23/72/18 20/71/18 19/70/18 24/69/18

379
models/mast_upper.obj Normal file
View File

@ -0,0 +1,379 @@
# Made in Blockbench 4.1.4
mtllib mast_upper.mtl
o cube
v 0.09375 0.5 0.046875
v 0.09375 0.5 -0.046875
v 0.09375 -0.5 0.046875
v 0.09375 -0.5 -0.046875
v 0.046875 0.5 -0.046875
v 0.046875 0.5 0.046875
v 0.046875 -0.5 -0.046875
v 0.046875 -0.5 0.046875
vt 0.0625 1
vt 0.125 1
vt 0.125 0
vt 0.0625 0
vt 0.25 1
vt 0.375 1
vt 0.375 0
vt 0.25 0
vt 0.875 1
vt 0.9375 1
vt 0.9375 0
vt 0.875 0
vt 0.625 1
vt 0.75 1
vt 0.75 0
vt 0.625 0
vt 0.375 0.6875
vt 0.4375 0.6875
vt 0.4375 0.5625
vt 0.375 0.5625
vt 0.375 0.4375
vt 0.4375 0.4375
vt 0.4375 0.3125
vt 0.375 0.3125
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl m_0
f 4/4/1 7/3/1 5/2/1 2/1/1
f 3/8/2 4/7/2 2/6/2 1/5/2
f 8/12/3 3/11/3 1/10/3 6/9/3
f 7/16/4 8/15/4 6/14/4 5/13/4
usemtl m_1
f 6/20/5 1/19/5 2/18/5 5/17/5
f 7/24/6 4/23/6 3/22/6 8/21/6
o cube
v 0.046875 0.5 0.09375
v 0.046875 0.5 -0.09375
v 0.046875 -0.5 0.09375
v 0.046875 -0.5 -0.09375
v -0.046875 0.5 -0.09375
v -0.046875 0.5 0.09375
v -0.046875 -0.5 -0.09375
v -0.046875 -0.5 0.09375
vt 0 1
vt 0.125 1
vt 0.125 0
vt 0 0
vt 0.5625 1
vt 0.625 1
vt 0.625 0
vt 0.5625 0
vt 0.875 1
vt 1 1
vt 1 0
vt 0.875 0
vt 0.375 1
vt 0.4375 1
vt 0.4375 0
vt 0.375 0
vt 0.4375 0.75
vt 0.5625 0.75
vt 0.5625 0.5
vt 0.4375 0.5
vt 0.4375 0.5
vt 0.5625 0.5
vt 0.5625 0.25
vt 0.4375 0.25
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl m_0
f 12/28/7 15/27/7 13/26/7 10/25/7
f 11/32/8 12/31/8 10/30/8 9/29/8
f 16/36/9 11/35/9 9/34/9 14/33/9
f 15/40/10 16/39/10 14/38/10 13/37/10
usemtl m_1
f 14/44/11 9/43/11 10/42/11 13/41/11
f 15/48/12 12/47/12 11/46/12 16/45/12
o cube
v -0.046875 0.5 0.046875
v -0.046875 0.5 -0.046875
v -0.046875 -0.5 0.046875
v -0.046875 -0.5 -0.046875
v -0.09375 0.5 -0.046875
v -0.09375 0.5 0.046875
v -0.09375 -0.5 -0.046875
v -0.09375 -0.5 0.046875
vt 0.0625 1
vt 0.125 1
vt 0.125 0
vt 0.0625 0
vt 0.25 1
vt 0.375 1
vt 0.375 0
vt 0.25 0
vt 0.875 1
vt 0.9375 1
vt 0.9375 0
vt 0.875 0
vt 0.625 1
vt 0.75 1
vt 0.75 0
vt 0.625 0
vt 0.5625 0.6875
vt 0.625 0.6875
vt 0.625 0.5625
vt 0.5625 0.5625
vt 0.5625 0.4375
vt 0.625 0.4375
vt 0.625 0.3125
vt 0.5625 0.3125
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl m_0
f 20/52/13 23/51/13 21/50/13 18/49/13
f 19/56/14 20/55/14 18/54/14 17/53/14
f 24/60/15 19/59/15 17/58/15 22/57/15
f 23/64/16 24/63/16 22/62/16 21/61/16
usemtl m_1
f 22/68/17 17/67/17 18/66/17 21/65/17
f 23/72/18 20/71/18 19/70/18 24/69/18
o cube
v -0.046875 1.5 0.046875
v -0.046875 1.5 -0.046875
v -0.046875 0.5 0.046875
v -0.046875 0.5 -0.046875
v -0.09375 1.5 -0.046875
v -0.09375 1.5 0.046875
v -0.09375 0.5 -0.046875
v -0.09375 0.5 0.046875
vt 0.0625 1
vt 0.125 1
vt 0.125 0
vt 0.0625 0
vt 0.25 1
vt 0.375 1
vt 0.375 0
vt 0.25 0
vt 0.875 1
vt 0.9375 1
vt 0.9375 0
vt 0.875 0
vt 0.625 1
vt 0.75 1
vt 0.75 0
vt 0.625 0
vt 0.5625 0.6875
vt 0.625 0.6875
vt 0.625 0.5625
vt 0.5625 0.5625
vt 0.5625 0.4375
vt 0.625 0.4375
vt 0.625 0.3125
vt 0.5625 0.3125
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl m_0
f 28/76/19 31/75/19 29/74/19 26/73/19
f 27/80/20 28/79/20 26/78/20 25/77/20
f 32/84/21 27/83/21 25/82/21 30/81/21
f 31/88/22 32/87/22 30/86/22 29/85/22
usemtl m_1
f 30/92/23 25/91/23 26/90/23 29/89/23
f 31/96/24 28/95/24 27/94/24 32/93/24
o cube
v 0.09375 1.5 0.046875
v 0.09375 1.5 -0.046875
v 0.09375 0.5 0.046875
v 0.09375 0.5 -0.046875
v 0.046875 1.5 -0.046875
v 0.046875 1.5 0.046875
v 0.046875 0.5 -0.046875
v 0.046875 0.5 0.046875
vt 0.0625 1
vt 0.125 1
vt 0.125 0
vt 0.0625 0
vt 0.25 1
vt 0.375 1
vt 0.375 0
vt 0.25 0
vt 0.875 1
vt 0.9375 1
vt 0.9375 0
vt 0.875 0
vt 0.625 1
vt 0.75 1
vt 0.75 0
vt 0.625 0
vt 0.375 0.6875
vt 0.4375 0.6875
vt 0.4375 0.5625
vt 0.375 0.5625
vt 0.375 0.4375
vt 0.4375 0.4375
vt 0.4375 0.3125
vt 0.375 0.3125
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl m_0
f 36/100/25 39/99/25 37/98/25 34/97/25
f 35/104/26 36/103/26 34/102/26 33/101/26
f 40/108/27 35/107/27 33/106/27 38/105/27
f 39/112/28 40/111/28 38/110/28 37/109/28
usemtl m_1
f 38/116/29 33/115/29 34/114/29 37/113/29
f 39/120/30 36/119/30 35/118/30 40/117/30
o cube
v 0.046875 1.5 0.09375
v 0.046875 1.5 -0.09375
v 0.046875 0.5 0.09375
v 0.046875 0.5 -0.09375
v -0.046875 1.5 -0.09375
v -0.046875 1.5 0.09375
v -0.046875 0.5 -0.09375
v -0.046875 0.5 0.09375
vt 0 1
vt 0.125 1
vt 0.125 0
vt 0 0
vt 0.5625 1
vt 0.625 1
vt 0.625 0
vt 0.5625 0
vt 0.875 1
vt 1 1
vt 1 0
vt 0.875 0
vt 0.375 1
vt 0.4375 1
vt 0.4375 0
vt 0.375 0
vt 0.4375 0.75
vt 0.5625 0.75
vt 0.5625 0.5
vt 0.4375 0.5
vt 0.4375 0.5
vt 0.5625 0.5
vt 0.5625 0.25
vt 0.4375 0.25
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl m_0
f 44/124/31 47/123/31 45/122/31 42/121/31
f 43/128/32 44/127/32 42/126/32 41/125/32
f 48/132/33 43/131/33 41/130/33 46/129/33
f 47/136/34 48/135/34 46/134/34 45/133/34
usemtl m_1
f 46/140/35 41/139/35 42/138/35 45/137/35
f 47/144/36 44/143/36 43/142/36 48/141/36
o cube
v 0.109375 1.625 0.109375
v 0.109375 1.625 -0.109375
v 0.109375 1.5 0.109375
v 0.109375 1.5 -0.109375
v -0.109375 1.625 -0.109375
v -0.109375 1.625 0.109375
v -0.109375 1.5 -0.109375
v -0.109375 1.5 0.109375
vt 0 0.125
vt 0.25 0.125
vt 0.25 0
vt 0 0
vt 0.5 0.125
vt 0.75 0.125
vt 0.75 0
vt 0.5 0
vt 0.75 0.125
vt 1 0.125
vt 1 0
vt 0.75 0
vt 0.25 0.125
vt 0.5 0.125
vt 0.5 0
vt 0.25 0
vt 0.3125 0.75
vt 0.5625 0.75
vt 0.5625 0.5
vt 0.3125 0.5
vt 0.4375 0.5
vt 0.6875 0.5
vt 0.6875 0.25
vt 0.4375 0.25
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl m_0
f 52/148/37 55/147/37 53/146/37 50/145/37
f 51/152/38 52/151/38 50/150/38 49/149/38
f 56/156/39 51/155/39 49/154/39 54/153/39
f 55/160/40 56/159/40 54/158/40 53/157/40
usemtl m_1
f 54/164/41 49/163/41 50/162/41 53/161/41
f 55/168/42 52/167/42 51/166/42 56/165/42
o cube
v 0.078125 1.6875 0.078125
v 0.078125 1.6875 -0.078125
v 0.078125 1.625 0.078125
v 0.078125 1.625 -0.078125
v -0.078125 1.6875 -0.078125
v -0.078125 1.6875 0.078125
v -0.078125 1.625 -0.078125
v -0.078125 1.625 0.078125
vt 0 0.0625
vt 0.1875 0.0625
vt 0.1875 0
vt 0 0
vt 0.5625 0.0625
vt 0.75 0.0625
vt 0.75 0
vt 0.5625 0
vt 0.8125 0.0625
vt 1 0.0625
vt 1 0
vt 0.8125 0
vt 0.25 0.0625
vt 0.4375 0.0625
vt 0.4375 0
vt 0.25 0
vt 0.375 0.75
vt 0.5625 0.75
vt 0.5625 0.5625
vt 0.375 0.5625
vt 0.4375 0.4375
vt 0.625 0.4375
vt 0.625 0.25
vt 0.4375 0.25
vn 0 0 -1
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0
vn 0 -1 0
usemtl m_0
f 60/172/43 63/171/43 61/170/43 58/169/43
f 59/176/44 60/175/44 58/174/44 57/173/44
f 64/180/45 59/179/45 57/178/45 62/177/45
f 63/184/46 64/183/46 62/182/46 61/181/46
usemtl m_1
f 62/188/47 57/187/47 58/186/47 61/185/47
f 63/192/48 60/191/48 59/190/48 64/189/48

BIN
models/wavingflag.b3d Normal file

Binary file not shown.

BIN
sounds/flagwave1.ogg Normal file

Binary file not shown.

BIN
sounds/flagwave2.ogg Normal file

Binary file not shown.

BIN
sounds/flagwave3.ogg Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 492 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 725 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 709 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B