Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Search
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
hyperPad

hyperPad Forum

  1. Home
  2. Help and Support
  3. Understanding Sequence of Behaviours: In Search of Speed!

Understanding Sequence of Behaviours: In Search of Speed!

Scheduled Pinned Locked Moved Help and Support
45 Posts 5 Posters 14.7k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Aidan_FireA Aidan_Fire

    @Deeeds I got this idea from the fact that I can display it as text, modify the text etc. The formatting uses symbols to separate values. Clearly I think about arrays (at least hyperPad version of arrays?) differently to you.

    Jack de WildeJ Offline
    Jack de WildeJ Offline
    Jack de Wilde
    wrote on last edited by
    #14

    I'm guessing array values are stored in separate memory addresses in a way that they can quickly be accessed by index, but they can be converted to and from plain text json for use in non-array operations (which I think most languages do). I might be completely wrong.

    This would make accessing an array value the same as accessing a box container.

    Running a modify array behaviour replacing an existing array should then also be the same as using set input field on a box container, but appending or prepending is probably less efficient.

    I don't know how memory allocation would work for attributes, but because they can be accessed on spawned objects I expect they'd be least efficient.

    Keep in mind I have no idea what I'm talking about and might be completely wrong, perhaps arrays store a list of memory addresses instead, which means accessing two addresses per reference.

    D 1 Reply Last reply
    0
    • Jack de WildeJ Jack de Wilde

      I'm guessing array values are stored in separate memory addresses in a way that they can quickly be accessed by index, but they can be converted to and from plain text json for use in non-array operations (which I think most languages do). I might be completely wrong.

      This would make accessing an array value the same as accessing a box container.

      Running a modify array behaviour replacing an existing array should then also be the same as using set input field on a box container, but appending or prepending is probably less efficient.

      I don't know how memory allocation would work for attributes, but because they can be accessed on spawned objects I expect they'd be least efficient.

      Keep in mind I have no idea what I'm talking about and might be completely wrong, perhaps arrays store a list of memory addresses instead, which means accessing two addresses per reference.

      D Offline
      D Offline
      Deeeds
      wrote on last edited by
      #15

      @Jack8680 Can you explain what a Value container is, in words different from the docs?

      I can't figure out what these are representative of, or... well, anything about them.

      I thought I knew, then I tried a few things and couldn't work out what was going on.

      Much like my cooking.

      Jack de WildeJ 1 Reply Last reply
      0
      • D Deeeds

        @Jack8680 Can you explain what a Value container is, in words different from the docs?

        I can't figure out what these are representative of, or... well, anything about them.

        I thought I knew, then I tried a few things and couldn't work out what was going on.

        Much like my cooking.

        Jack de WildeJ Offline
        Jack de WildeJ Offline
        Jack de Wilde
        wrote on last edited by
        #16

        @Deeeds the value behaviour updates its output when it is run. You can for example get the value of the output of a while touching behaviour once, and then reference it in that state later after the output of the while touching behaviour has changed. It's basically declaring a new variable that takes the value of another variable but not as a pointer.

        D 2 Replies Last reply
        0
        • Jack de WildeJ Jack de Wilde

          @Deeeds the value behaviour updates its output when it is run. You can for example get the value of the output of a while touching behaviour once, and then reference it in that state later after the output of the while touching behaviour has changed. It's basically declaring a new variable that takes the value of another variable but not as a pointer.

          D Offline
          D Offline
          Deeeds
          wrote on last edited by
          #17

          @Jack8680 said in Understanding Sequence of Behaviours: In Search of Speed!:

          the value behaviour updates its output when it is run.

          Sorry to be pedantic: Do you mean when its branch has completed running? Like a late update or willSet in Swift?

          1 Reply Last reply
          0
          • Jack de WildeJ Jack de Wilde

            @Deeeds the value behaviour updates its output when it is run. You can for example get the value of the output of a while touching behaviour once, and then reference it in that state later after the output of the while touching behaviour has changed. It's basically declaring a new variable that takes the value of another variable but not as a pointer.

            D Offline
            D Offline
            Deeeds
            wrote on last edited by
            #18

            @Jack8680 The rest I don't understand what you're saying.

            It's making a new variable? Not overwriting it later?

            I'm more confused than before. Sorry!

            Jack de WildeJ 1 Reply Last reply
            0
            • D Deeeds

              @Jack8680 The rest I don't understand what you're saying.

              It's making a new variable? Not overwriting it later?

              I'm more confused than before. Sorry!

              Jack de WildeJ Offline
              Jack de WildeJ Offline
              Jack de Wilde
              wrote on last edited by
              #19

              @Deeeds the value behaviour is basically like saying

              Var value = input
              

              It's not a pointer, so if you reference the value elsewhere it will have the value of the input when the value behaviour is activated.

              It is different to a box container because a box container is a pointer when you drag a behaviour output in, so referencing a box container will reference the value of what is selected in the box container.

              You can't use set input field on a box container that has a behaviour output selected as its value, so there's no reason to use them this way as you can just reference the behaviour output directly.

              Using set input field on a box container that isn't a reference to another behaviour output acts the same as using a value behaviour, but it can be set from multiple places.

              D 1 Reply Last reply
              1
              • Jack de WildeJ Jack de Wilde

                @Deeeds the value behaviour is basically like saying

                Var value = input
                

                It's not a pointer, so if you reference the value elsewhere it will have the value of the input when the value behaviour is activated.

                It is different to a box container because a box container is a pointer when you drag a behaviour output in, so referencing a box container will reference the value of what is selected in the box container.

                You can't use set input field on a box container that has a behaviour output selected as its value, so there's no reason to use them this way as you can just reference the behaviour output directly.

                Using set input field on a box container that isn't a reference to another behaviour output acts the same as using a value behaviour, but it can be set from multiple places.

                D Offline
                D Offline
                Deeeds
                wrote on last edited by
                #20

                @Jack8680 said in Understanding Sequence of Behaviours: In Search of Speed!:

                It's not a pointer, so if you reference the value elsewhere it will have the value of the input when the value behaviour is activated.

                Reading this I'm doubting I understand how behaviours actually work.

                I'm missing something.

                Can you give a concrete example of where and when you'd have to use a Value container for its benefits (and ways of being) versus somewhere a Box container could only provide the desired results?

                Jack de WildeJ 1 Reply Last reply
                0
                • D Deeeds

                  @Jack8680 said in Understanding Sequence of Behaviours: In Search of Speed!:

                  It's not a pointer, so if you reference the value elsewhere it will have the value of the input when the value behaviour is activated.

                  Reading this I'm doubting I understand how behaviours actually work.

                  I'm missing something.

                  Can you give a concrete example of where and when you'd have to use a Value container for its benefits (and ways of being) versus somewhere a Box container could only provide the desired results?

                  Jack de WildeJ Offline
                  Jack de WildeJ Offline
                  Jack de Wilde
                  wrote on last edited by Jack8680
                  #21

                  @Deeeds I rarely use the value behaviour, but an example:

                  While Touching:
                      {
                      If(While Touching Y < 0):
                          {
                          Value = Value(While Touching X)
                          }
                      }
                  
                  Stopped Touching:
                      {
                      Set label to Value
                      }
                  

                  When you stop touching the object it will set a label to the last x position you touched it in where the Y position was less than zero.

                  And an example of using a box container:

                  Box container A = 0
                  Started Touching:
                      {
                      If(While Touching X < 0):
                          {
                          Set input field of Box Container A to 1
                          }
                      If(While Touching Y < 0):
                          {
                          Set input field of Box Container A to 1
                          }
                      Set label to Box Container A.
                  

                  This will set the label to 1 if X or Y is negative. Both of these can also be done using the other behaviour, so I guess there isn't a specific reason to use one over the other. There might be a use case I'm not aware of though.

                  D 1 Reply Last reply
                  1
                  • Jack de WildeJ Jack de Wilde

                    @Deeeds I rarely use the value behaviour, but an example:

                    While Touching:
                        {
                        If(While Touching Y < 0):
                            {
                            Value = Value(While Touching X)
                            }
                        }
                    
                    Stopped Touching:
                        {
                        Set label to Value
                        }
                    

                    When you stop touching the object it will set a label to the last x position you touched it in where the Y position was less than zero.

                    And an example of using a box container:

                    Box container A = 0
                    Started Touching:
                        {
                        If(While Touching X < 0):
                            {
                            Set input field of Box Container A to 1
                            }
                        If(While Touching Y < 0):
                            {
                            Set input field of Box Container A to 1
                            }
                        Set label to Box Container A.
                    

                    This will set the label to 1 if X or Y is negative. Both of these can also be done using the other behaviour, so I guess there isn't a specific reason to use one over the other. There might be a use case I'm not aware of though.

                    D Offline
                    D Offline
                    Deeeds
                    wrote on last edited by Deeeds
                    #22

                    @Jack8680 said in Understanding Sequence of Behaviours: In Search of Speed!:

                    Both of these can also be done using the other behaviour, so I guess there isn't a specific reason to use one over the other.

                    This is exactly the cognition problem I'm having.

                    Although I just accidentally dragged a different source into a box container and it took it, and left the old one there, too.

                    So maybe Box Containers are abstracted arrays posing as a variable and without the need to append, etc.

                    iTap DevelopmentI 1 Reply Last reply
                    0
                    • D Deeeds

                      @Jack8680 said in Understanding Sequence of Behaviours: In Search of Speed!:

                      Both of these can also be done using the other behaviour, so I guess there isn't a specific reason to use one over the other.

                      This is exactly the cognition problem I'm having.

                      Although I just accidentally dragged a different source into a box container and it took it, and left the old one there, too.

                      So maybe Box Containers are abstracted arrays posing as a variable and without the need to append, etc.

                      iTap DevelopmentI Offline
                      iTap DevelopmentI Offline
                      iTap Development
                      wrote on last edited by iTap Development
                      #23

                      @Deeeds you can add any number(at least I haven’t found a limit) of outputs to a box container. When any one of them is triggered the box container is set to that output. For example, say you have an add values and a subtract values outputs in the box container. A started touching behavior triggers the add values, which is adding the touchx plus 4. Then you have stopped touching trigger the subtract values, and subtract the box container value minus 3.
                      What will happen is when you touch with an x of 16, the box container will be set to 20. When you stop touching, the box container will be set to 17.

                      For an example of How I usually use box containers, say you have three ifs. If x=1 and if x=2 and if x=3.
                      Each if will trigger a “value” behavior, set to say 10, 20, and 30.
                      You put each value behavior’s output into a box container. Then you can multiply some value Y by the box container. So the value you multiply Y by will be set by the if’s.

                      Hopefully that makes some sense.

                      D 1 Reply Last reply
                      0
                      • iTap DevelopmentI iTap Development

                        @Deeeds you can add any number(at least I haven’t found a limit) of outputs to a box container. When any one of them is triggered the box container is set to that output. For example, say you have an add values and a subtract values outputs in the box container. A started touching behavior triggers the add values, which is adding the touchx plus 4. Then you have stopped touching trigger the subtract values, and subtract the box container value minus 3.
                        What will happen is when you touch with an x of 16, the box container will be set to 20. When you stop touching, the box container will be set to 17.

                        For an example of How I usually use box containers, say you have three ifs. If x=1 and if x=2 and if x=3.
                        Each if will trigger a “value” behavior, set to say 10, 20, and 30.
                        You put each value behavior’s output into a box container. Then you can multiply some value Y by the box container. So the value you multiply Y by will be set by the if’s.

                        Hopefully that makes some sense.

                        D Offline
                        D Offline
                        Deeeds
                        wrote on last edited by
                        #24

                        @iTap-Development said in Understanding Sequence of Behaviours: In Search of Speed!:

                        For an example of How I usually use box containers, say you have three ifs. If x=1 and if x=2 and if x=3.
                        Each if will trigger a “value” behavior, set to say 10, 20, and 30.
                        You put each value behavior’s output into a box container. Then you can multiply some value Y by the box container. So the value you multiply Y by will be set by the if’s.

                        In this example (and thank you for your time and consideration), aren't the Box Containers redundant/unnecessary?

                        iTap DevelopmentI 1 Reply Last reply
                        0
                        • D Deeeds

                          @iTap-Development said in Understanding Sequence of Behaviours: In Search of Speed!:

                          For an example of How I usually use box containers, say you have three ifs. If x=1 and if x=2 and if x=3.
                          Each if will trigger a “value” behavior, set to say 10, 20, and 30.
                          You put each value behavior’s output into a box container. Then you can multiply some value Y by the box container. So the value you multiply Y by will be set by the if’s.

                          In this example (and thank you for your time and consideration), aren't the Box Containers redundant/unnecessary?

                          iTap DevelopmentI Offline
                          iTap DevelopmentI Offline
                          iTap Development
                          wrote on last edited by
                          #25

                          @Deeeds how would you set it up?

                          D 1 Reply Last reply
                          0
                          • iTap DevelopmentI iTap Development

                            @Deeeds how would you set it up?

                            D Offline
                            D Offline
                            Deeeds
                            wrote on last edited by
                            #26

                            @iTap-Development Not what I'm saying.

                            In the example I've quoted, why do you need the box containers?

                            iTap DevelopmentI 1 Reply Last reply
                            0
                            • D Deeeds

                              @iTap-Development Not what I'm saying.

                              In the example I've quoted, why do you need the box containers?

                              iTap DevelopmentI Offline
                              iTap DevelopmentI Offline
                              iTap Development
                              wrote on last edited by
                              #27

                              @Deeeds well, you have to set the input for the multiply, so I guess you could use an attribute or something,but this is less behaviors.

                              D 1 Reply Last reply
                              0
                              • iTap DevelopmentI iTap Development

                                @Deeeds well, you have to set the input for the multiply, so I guess you could use an attribute or something,but this is less behaviors.

                                D Offline
                                D Offline
                                Deeeds
                                wrote on last edited by
                                #28

                                @iTap-Development Perhaps I'm reading you wrongly.

                                What I see you saying is this:

                                if x is 1, triggers a value behaviour set to 10, this needs to by multiplied by some value Y, which then needs to be multiplied by some other value... for which there's no demonstrated need for a box container, it could be literal, or a "Value Behaviour"*

                                The box container part of what you're talking about seems superfluous, at best.

                                *I think "Box Container" is a pretty bad name, but "Value Behaviour" is a special level of poor lexicon/terminology/naming.

                                iTap DevelopmentI 1 Reply Last reply
                                0
                                • D Deeeds

                                  @iTap-Development Perhaps I'm reading you wrongly.

                                  What I see you saying is this:

                                  if x is 1, triggers a value behaviour set to 10, this needs to by multiplied by some value Y, which then needs to be multiplied by some other value... for which there's no demonstrated need for a box container, it could be literal, or a "Value Behaviour"*

                                  The box container part of what you're talking about seems superfluous, at best.

                                  *I think "Box Container" is a pretty bad name, but "Value Behaviour" is a special level of poor lexicon/terminology/naming.

                                  iTap DevelopmentI Offline
                                  iTap DevelopmentI Offline
                                  iTap Development
                                  wrote on last edited by
                                  #29

                                  @Deeeds that’s not quite what I’m saying.
                                  What I’m saying is that Y is going to be multiplied by either 10, 20, or 30. Based on what x is equal to.

                                  D 2 Replies Last reply
                                  0
                                  • iTap DevelopmentI iTap Development

                                    @Deeeds that’s not quite what I’m saying.
                                    What I’m saying is that Y is going to be multiplied by either 10, 20, or 30. Based on what x is equal to.

                                    D Offline
                                    D Offline
                                    Deeeds
                                    wrote on last edited by
                                    #30

                                    @iTap-Development Yes, I got that... but where is the need for a Box Container?

                                    Note the question above that both I and @Jack8680 are struggling to answer.

                                    Let me paraphrase:

                                    Where is there a need and use for Value Behaviours where Box Containers can't do it?

                                    Where is the need for Box Containers that explains them by showing that Value Behaviours can't do it?


                                    Caveat.... I'm not looking for a single example... I'm looking for the types of examples that articulate and demonstrate their fundamental differences AND show what it is that they actually are, and how one should think of their capacity and functionality, benefits and cons.

                                    In other words, like many of my posts, I'm trying to use subterfuge to help the founders stop floundering in their complete failure to document, guide and instruct on the matters of their own engine/tool.

                                    D Michael KhalfinG 2 Replies Last reply
                                    -1
                                    • D Deeeds

                                      @iTap-Development Yes, I got that... but where is the need for a Box Container?

                                      Note the question above that both I and @Jack8680 are struggling to answer.

                                      Let me paraphrase:

                                      Where is there a need and use for Value Behaviours where Box Containers can't do it?

                                      Where is the need for Box Containers that explains them by showing that Value Behaviours can't do it?


                                      Caveat.... I'm not looking for a single example... I'm looking for the types of examples that articulate and demonstrate their fundamental differences AND show what it is that they actually are, and how one should think of their capacity and functionality, benefits and cons.

                                      In other words, like many of my posts, I'm trying to use subterfuge to help the founders stop floundering in their complete failure to document, guide and instruct on the matters of their own engine/tool.

                                      D Offline
                                      D Offline
                                      Deeeds
                                      wrote on last edited by
                                      #31

                                      @iTap-Development but... I don't mean that to sound the way it did, about needing lots of examples... just one would be enough. That was weird and wrongly worded.

                                      1 Reply Last reply
                                      0
                                      • iTap DevelopmentI iTap Development

                                        @Deeeds that’s not quite what I’m saying.
                                        What I’m saying is that Y is going to be multiplied by either 10, 20, or 30. Based on what x is equal to.

                                        D Offline
                                        D Offline
                                        Deeeds
                                        wrote on last edited by Deeeds
                                        #32

                                        @iTap-Development And... just in case you or anyone else is wondering, this is about speed.

                                        Which provides access fastest and sets fastest?

                                        I had (it seems wrongly) assumed that "Value Behaviours" were kind of like constants, which offer a lot of performance advantages in other languages/environments, not just for the compiler, but also for the OS and the hardware.

                                        It seems they're nothing like that kind of idea... and more like a function parameter without a function.

                                        iTap DevelopmentI 1 Reply Last reply
                                        0
                                        • D Deeeds

                                          @iTap-Development Yes, I got that... but where is the need for a Box Container?

                                          Note the question above that both I and @Jack8680 are struggling to answer.

                                          Let me paraphrase:

                                          Where is there a need and use for Value Behaviours where Box Containers can't do it?

                                          Where is the need for Box Containers that explains them by showing that Value Behaviours can't do it?


                                          Caveat.... I'm not looking for a single example... I'm looking for the types of examples that articulate and demonstrate their fundamental differences AND show what it is that they actually are, and how one should think of their capacity and functionality, benefits and cons.

                                          In other words, like many of my posts, I'm trying to use subterfuge to help the founders stop floundering in their complete failure to document, guide and instruct on the matters of their own engine/tool.

                                          Michael KhalfinG Offline
                                          Michael KhalfinG Offline
                                          Michael Khalfin
                                          wrote on last edited by
                                          #33

                                          @Deeeds said in Understanding Sequence of Behaviours: In Search of Speed!:

                                          In other words, like many of my posts, I'm trying to use subterfuge to help the founders stop floundering in their complete failure to document, guide and instruct on the matters of their own engine/tool.

                                          Really?

                                          D 1 Reply Last reply
                                          1

                                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                          With your input, this post could be even better 💗

                                          Register Login
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Search