Main_loop question


I have used Unity and Unreal for some times, such engines have a function that updates every frame (Update() and Tick()), in the case of Panda3D there is framework.main_loop();

So, i was wondering how can I update things in P3D… any idea?

for instance in Unreal:
void AMyPlayer::Tick (){
//move something to left * deltaTime

I don’t see a way to do this in Panda (of course there must be one)

Pay attention to this code.

// This is our task - a global or static function that has to return DoneStatus.
// The task object is passed as argument, plus a void* pointer, containing custom data.
// For more advanced usage, we can subclass AsyncTask and override the do_task method.
AsyncTask::DoneStatus spinCameraTask(GenericAsyncTask *task, void *data) {
  // Calculate the new position and orientation (inefficient - change me!)
  double time = globalClock->get_real_time();
  double angledegrees = time * 6.0;
  double angleradians = angledegrees * (3.14 / 180.0);
  camera.set_hpr(angledegrees, 0, 0);

  // Tell the task manager to continue this task the next frame.
  return AsyncTask::DS_cont;

In this example.

Read this further.

1 Like

So, there is no update function… all are task based isn’t ?
I will give a read… thanks

You can answer it yourself if you find the difference between the task and the step function. However, I assume you want to render the frame?

basically, or do any per-frame task…for instance detect a button key or set a clock, print a message repeatedly on the screen if a condition comes true… etc. At least on Unreal and Unity I did these things inside an Update() or Tick() functions…

So in your opinion, the tasks are not suitable for this? I want to understand the difference between a step function and a task in your opinion.

In my opinion tasks do the job, in a different way, but do the job… I only need to get used to…