[visionegg] Re: go loops and run_forever (was sorry to bother you again...)

  • From: "Andrew Straw" <andrew.straw@xxxxxxxxxxxxxxx>
  • To: visionegg@xxxxxxxxxxxxx
  • Date: Tue, 10 Feb 2004 20:55:53 +1030 (CST)

quick note -- Those modifiers (not_during_go) must be applied when
something like transitions or every_frame is also specified:

eval_frequency = transitions | not_during_go

or

eval_frequency = every_frame | not_during_go

I will make sure the documentation for controllers covers this "bitwise
or" sufficiently and update it if it does not.

Cheers!
Andrew


> Ah ha! This works brilliantly on the test program. However, my actual
> experiment program has multiple go loops triggered by different
> keystrokes (over 20). I couldn't get the constant controller to update
> the during_go_value from a keystroke trigger (during the run forever
> loop). I couldn't get the constant controller to only set
> between_go_value and let me assign viewports from a keystroke trigger.
> Nor could I get constant controller to respond to any eval_frequency
> setting other than transitions or every frame (ie if I told it only to
> evaluate not_during_go, the whole thing stopped working and my original
> problem reoccured). I also to make a plain controller (vs constant or
> function) that evaluated not during go, and that didn't work. Sad!
>
> Should I try an Encapsulated Controller?
>
> On Sunday, Feb 1, 2004, at 02:53 US/Pacific, Andrew Straw wrote:
>
>> Hi Jordanna,
>>
>> Basically, you have to restore p.parameters.viewports to [viewporta]
>> when
>> the go loop is over.  I haven't tested this, but it would be something
>> like:
>>
>> p.add_controller( p,
>>     'viewports',
>>     ConstantController(
>>         during_go_value = [viewportb],
>>         between_go_value = [viewporta],
>>         eval_frequency = Controller.TRANSITIONS ))
>>
>> This controller sets the value of p.parameters.viewports on
>> transitions in
>> and out of go loops.  It should do exactly what you want.
>>
>>> I can't figure out how to define finite go loops inside of a run
>>> forever loop. Previously Andrew said I should only be using one
>>> presentation object, but I don't seem to be able to get it working.
>>> Here is a test program I've written (relevant bits). Does anybody have
>>> sample code I can look at?
>>>
>>> Problem: when I hit the 'a' key, the presentation changes to
>>> displaying
>>> the viewport b stimulus, but does not return to the viewport a
>>> stimulus
>>> when finished.
>>>
>>> #####################################################
>>> # design 'handling' of run forever loop
>>> #####################################################
>>>
>>> global p
>>>
>>> f=open('debug_file.txt','w')
>>> def keydown(event):
>>>     if event.key==pygame.locals.K_q:
>>>             p.parameters.enter_go_loop = 0
>>>             p.parameters.quit = True
>>>     elif event.key==pygame.locals.K_a:
>>>             p.set( go_duration=(5.0,'seconds'),
>>>                                viewports=[viewportb],
>>>                                enter_go_loop=1)
>>>
>>> handle_event_callbacks = [(pygame.locals.KEYDOWN,keydown)]
>>>
>>>
>>> ##########################################################
>>> # create presentation object for outside run forever loop
>>> ##########################################################
>>> p = Presentation(viewports=[viewporta],handle_event_callbacks =
>>> handle_event_callbacks)
>>>
>>>
>>> ###############
>>> # run it !!!  #
>>> ###############
>>>
>>> p.run_forever()
>>>
======================================
The Vision Egg mailing list
Archives: //www.freelists.org/archives/visionegg
Website: http://www.visionegg.org/mailinglist.html

Other related posts: