Merge remote-tracking branch 'minetest/master'
This commit is contained in:
commit
f9ab0977b1
@ -485,6 +485,9 @@ function core.node_dig(pos, node, digger)
|
||||
-- Wear out tool
|
||||
if not core.setting_getbool("creative_mode") then
|
||||
wielded:add_wear(dp.wear)
|
||||
if wielded:get_count() == 0 and wdef.sound and wdef.sound.breaks then
|
||||
core.sound_play(wdef.sound.breaks, {pos = pos, gain = 1.0})
|
||||
end
|
||||
end
|
||||
end
|
||||
digger:set_wielded_item(wielded)
|
||||
|
@ -3606,6 +3606,7 @@ Definition tables
|
||||
actual result to client in a short moment.
|
||||
]]
|
||||
sound = {
|
||||
breaks = "default_tool_break", -- tools only
|
||||
place = --[[<SimpleSoundSpec>]],
|
||||
},
|
||||
|
||||
@ -4151,7 +4152,8 @@ The Biome API is still in an experimental phase and subject to change.
|
||||
-- ^ collision_removal: if true then particle is removed when it collides,
|
||||
-- ^ requires collisiondetection = true to have any effect
|
||||
attached = ObjectRef,
|
||||
-- ^ attached: if defined, makes particle positions relative to this object.
|
||||
-- ^ attached: if defined, particle positions, velocities and accelerations
|
||||
-- ^ are relative to this object's position and yaw.
|
||||
vertical = false,
|
||||
-- ^ vertical: if true faces player using y axis only
|
||||
texture = "image.png",
|
||||
|
@ -64,6 +64,7 @@ public:
|
||||
virtual bool getCollisionBox(aabb3f *toset){return false;}
|
||||
virtual bool collideWithObjects(){return false;}
|
||||
virtual v3f getPosition(){return v3f(0,0,0);}
|
||||
virtual float getYaw() const {return 0;}
|
||||
virtual scene::ISceneNode *getSceneNode(){return NULL;}
|
||||
virtual scene::IMeshSceneNode *getMeshSceneNode(){return NULL;}
|
||||
virtual scene::IAnimatedMeshSceneNode *getAnimatedMeshSceneNode(){return NULL;}
|
||||
|
@ -317,7 +317,8 @@ public:
|
||||
{return &m_selection_box;}
|
||||
v3f getPosition()
|
||||
{return m_position;}
|
||||
|
||||
inline float getYaw() const
|
||||
{return 0;}
|
||||
std::string infoText()
|
||||
{return m_infotext;}
|
||||
|
||||
|
@ -143,6 +143,10 @@ public:
|
||||
aabb3f *getSelectionBox();
|
||||
|
||||
v3f getPosition();
|
||||
inline float getYaw() const
|
||||
{
|
||||
return m_yaw;
|
||||
}
|
||||
|
||||
scene::ISceneNode *getSceneNode();
|
||||
|
||||
|
@ -255,12 +255,17 @@ void ParticleSpawner::step(float dtime, ClientEnvironment* env)
|
||||
m_time += dtime;
|
||||
|
||||
bool unloaded = false;
|
||||
v3f attached_offset = v3f(0,0,0);
|
||||
bool is_attached = false;
|
||||
v3f attached_pos = v3f(0,0,0);
|
||||
float attached_yaw = 0;
|
||||
if (m_attached_id != 0) {
|
||||
if (ClientActiveObject *attached = env->getActiveObject(m_attached_id))
|
||||
attached_offset = attached->getPosition() / BS;
|
||||
else
|
||||
if (ClientActiveObject *attached = env->getActiveObject(m_attached_id)) {
|
||||
attached_pos = attached->getPosition() / BS;
|
||||
attached_yaw = attached->getYaw();
|
||||
is_attached = true;
|
||||
} else {
|
||||
unloaded = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_spawntime != 0) // Spawner exists for a predefined timespan
|
||||
@ -279,8 +284,15 @@ void ParticleSpawner::step(float dtime, ClientEnvironment* env)
|
||||
v3f pos = random_v3f(m_minpos, m_maxpos);
|
||||
v3f vel = random_v3f(m_minvel, m_maxvel);
|
||||
v3f acc = random_v3f(m_minacc, m_maxacc);
|
||||
// Make relative to offest
|
||||
pos += attached_offset;
|
||||
|
||||
if (is_attached) {
|
||||
// Apply attachment yaw and position
|
||||
pos.rotateXZBy(attached_yaw);
|
||||
pos += attached_pos;
|
||||
vel.rotateXZBy(attached_yaw);
|
||||
acc.rotateXZBy(attached_yaw);
|
||||
}
|
||||
|
||||
float exptime = rand()/(float)RAND_MAX
|
||||
*(m_maxexptime-m_minexptime)
|
||||
+m_minexptime;
|
||||
@ -323,10 +335,18 @@ void ParticleSpawner::step(float dtime, ClientEnvironment* env)
|
||||
{
|
||||
if (rand()/(float)RAND_MAX < dtime)
|
||||
{
|
||||
v3f pos = random_v3f(m_minpos, m_maxpos)
|
||||
+ attached_offset;
|
||||
v3f pos = random_v3f(m_minpos, m_maxpos);
|
||||
v3f vel = random_v3f(m_minvel, m_maxvel);
|
||||
v3f acc = random_v3f(m_minacc, m_maxacc);
|
||||
|
||||
if (is_attached) {
|
||||
// Apply attachment yaw and position
|
||||
pos.rotateXZBy(attached_yaw);
|
||||
pos += attached_pos;
|
||||
vel.rotateXZBy(attached_yaw);
|
||||
acc.rotateXZBy(attached_yaw);
|
||||
}
|
||||
|
||||
float exptime = rand()/(float)RAND_MAX
|
||||
*(m_maxexptime-m_minexptime)
|
||||
+m_minexptime;
|
||||
|
Loading…
x
Reference in New Issue
Block a user