Block update on set
#1
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!
Reply
Thanks given by:
#2
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.
Reply
Thanks given by:
#3
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.
Reply
Thanks given by:
#4
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.
Reply
Thanks given by:
#5
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.
Reply
Thanks given by:




Users browsing this thread: 5 Guest(s)