Just getting started and looking through the code. I can't seem to find out where, if at all the OnUpdate gets called when a block is set?
I'm trying to fix the button's sound clicking on and off, and thought OnUpdate would seem to be the best place, currently it only makes a sound when turned on. Any thoughts? Am I going about this all wrong?
Thanks!
I believe you have to change things from
here. Right now it only queues a block change, but you'll have to change this to a cWorld::ScheduleTask where both the block is changed and the sound is played.
Ok, I think i can see what your saying, just not sure how to implement it. I'm new to c++. I can see I'd have to create a class, inherit from cTask and implement the Run method, but I'm not sure how I can get the coordinates and other data necessary into that task to play the sound.
Something like this:
class cScheduleBlock : public cWorld::cTask
{
public:
int m_PosX, m_PosY, m_PosZ;
cScheduleBlock(int a_PosX, int a_PosY, int a_PosZ):
m_PosX(a_PosX),
m_PosY(a_PosY),
m_PosZ(a_PosZ)
{
}
protected:
virtual void Run(cWorld & a_World) override
{
// Execute code with m_PosX, m_PosY and m_PosZ
}
};
Then you can create the cScheduleBlock using:
cScheduleBlock BlockChange = cScheduleBlock(a_BlockX, a_BlockY, a_BlockZ);
a_World->ScheduleTask(NumTicks, BlockChange);
I didn't test any of this, so there might be some syntax mistakes.
Thanks! That's a lot simpler than what I was thinking before.
I crated a "cTaskPlaySound" so that others could use the schedule to schedule sounds.
The only problem I ran into was finding a reference to cWorld. The on use button has a reference to cWorldInterface, so I pulled it from player->GetWorld, hope that's not wrong.
Again thanks for you help.