omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    Welcome!

    This is the community forum for my apps Pythonista and Editorial.

    For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.


    Beta Status Update

    Pythonista
    32
    124
    161165
    Loading More Posts
    • 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.
    • MartinPacker
      MartinPacker last edited by

      By the way if I have zero scripts is there any reason not to try the beta? I assume any I do create while using the beta might need rescuing by cut and paste (or whatever).

      1 Reply Last reply Reply Quote 0
      • omz
        omz last edited by

        @polymerchm Are you running Pythonista on an iPhone? The Watch folder is not created on iPad because the watch can't be paired with that anyway.

        1 Reply Last reply Reply Quote 0
        • polymerchm
          polymerchm last edited by

          Gotcha. Haven't installed it on my iPhone yet. So far all else is good on this build. Thanks.

          1 Reply Last reply Reply Quote 0
          • misha_turnbull
            misha_turnbull last edited by

            @omz, @Gcarver, I've managed to make the did_begin_contact work correctly by changing touch_began to this:

            def touch_began(self, node, touch):
                new = particle_tpl.__copy__()
                new.physics_body = new.physics_body.__copy__()
                new.lighting_bit_mask = 1
                new.position = touch.location
                new.physics_body.velocity = randvec(MAXSPD)
                new.color = (random.random(), random.random(), random.random())
                new.lifespan = self.maxlife + random.randint(MINLIFED, MAXLIFED)
                self.add_child(new)
            

            However, although this makes did_begin_contact work correctly, none of the particles are actually appearing. It seems that they have an alpha value of 0, however I know that this isn't true. The node count in the bottom corner tells me that they exist, but they just don't show up. I have tried changing the background color, but it made no difference.

            1 Reply Last reply Reply Quote 0
            • JonB
              JonB last edited by

              Misha, your posted code works fine for me, are you sure you didn't make other changes?
              Maybe try restarting pythonista?

              If you also set
              new.shadow_cast_bit_mask=1, then the shadows show up too.

              Shadows on top of textures seem to be stuck as white, If I add a texture background.. Also, light falloff doesn't seem to affect shadows, which is strange

              1 Reply Last reply Reply Quote 0
              • polymerchm
                polymerchm last edited by

                @OMZ Sorry to report the autocomplete bug is stll there. Seems to happen write after typing the "." after an instance of a class. Highly unreproducible.

                1 Reply Last reply Reply Quote 0
                • omz
                  omz last edited by

                  @polymerchm What kind of device are you using?

                  1 Reply Last reply Reply Quote 0
                  • polymerchm
                    polymerchm last edited by

                    Ipad 2air with external Bluetooth keyboard

                    1 Reply Last reply Reply Quote 0
                    • Gcarver166
                      Gcarver166 last edited by

                      Misha, try setting new.alpha = 1

                      1 Reply Last reply Reply Quote 0
                      • misha_turnbull
                        misha_turnbull last edited by

                        @JonB here is the code I'm using now, have restarted Pythonista many times and can't think of any other changes I've made other than removing light.alpha = 1:

                        # coding: utf-8
                        
                        import sk
                        import random
                        
                        MAXSPD = 700
                        MAXLIFE = 10
                        TEXTURE = 'shp:Circle'
                        MINLIFED = -120
                        MAXLIFED = 120
                        SCALE = 2
                        
                        decayrate = 0.005
                        collider_f = 0.3
                        
                        def randvec(maxspd):
                            return (random.randint(-maxspd, maxspd), random.randint(-maxspd, maxspd))
                        
                        particle_tpl = sk.SpriteNode(sk.Texture(TEXTURE))
                        particle_tpl.name = 'particle'
                        particle_tpl.color_blend_factor = 1
                        particle_tpl.age = 0
                        particle_tpl.lighting_bit_mask = 1
                        particle_tpl.x_scale = SCALE
                        particle_tpl.y_scale = SCALE
                        particle_tpl.alpha = 1
                        particle_tpl.shadow_cast_bit_mask = 1
                        physics = sk.PhysicsBody.circle(particle_tpl.size.x/2 * collider_f)
                        physics.restitution = 1.2
                        physics.affected_by_gravity = False
                        physics.allows_rotation = True
                        physics.mass = 0.3
                        physics.pinned = False
                        physics.angular_velocity = 0
                        physics.category_bit_mask = 1
                        physics.contact_test_bit_mask = 1
                        particle_tpl.physics_body = physics
                        
                        class Game (sk.Scene):
                            def __init__(self):
                                sk.Scene.__init__(self)
                                self.name = 'scene'
                                self.img = sk.Texture(TEXTURE)
                                self.maxspd = MAXSPD
                                self.handles_node_touches = False
                                self.maxlife = MAXLIFE * 60  # convert to frames
                                self.background_color = (0, 0, 0)
                                self.lighting_bit_mask = 1
                                
                                # init walls
                                walls = sk.Node()
                                walls.position = (0, 0)
                                physics = sk.PhysicsBody.edge_loop_rect(0, 0, 1024, 768)
                                physics.dynamic = False
                                physics.restitution = 1.1
                                walls.physics_body = physics
                                self.add_child(walls)
                                
                                # lighting
                                light = sk.LightNode()
                                light.position = (10, 758)
                                light.shadow_color = (1, 0, 0)
                                light.ambient_color = (0, 0, 1)
                                light.light_color = (0, 1, 0)
                                light.enabled = True
                                light.category_bit_mask = 1
                                light.falloff = 1
                                light.name = 'light'
                                self.add_child(light)
                            
                            def update(self):
                                for p in self['particle']:
                                    p.age += 1
                                    if p.age >= p.lifespan:
                                        # if exceeded life, reduce alpha by 1
                                        p.alpha -= decayrate
                                        if p.alpha <= 0:
                                            p.run_action(sk.Action.call(p.remove_from_parent))
                            
                            def touch_began(self, node, touch):
                                self.selected = None
                                new = particle_tpl.__copy__()
                                new.physics_body = new.physics_body.__copy__()
                                new.lighting_bit_mask = 1
                                new.position = touch.location
                                new.physics_body.velocity = randvec(MAXSPD)
                                new.color = (random.random(), random.random(), random.random())
                                new.lifespan = self.maxlife + random.randint(MINLIFED, MAXLIFED)
                                new.alpha = 1
                                self.add_child(new)
                            
                            def touch_moved(self, node, touch):
                                self.touch_began(node, touch)
                            
                            def did_begin_contact(self, collison):
                                if collison.body_a.node.name == 'particle' and collison.body_b.node.name == 'particle':
                                    collison.body_a.node.color = (random.random(), random.random(), random.random())
                                    collison.body_b.node.color = (random.random(), random.random(), random.random())
                        
                        def main():
                            game = Game()
                            scene_view = sk.View(game)
                            scene_view.shows_fps = True
                            scene_view.shows_node_count = True
                            scene_view.present()
                            return game
                        
                        if __name__ == '__main__':
                            g = main()
                        

                        However, it still just gives me a black screen. As before, when I touch the screen the node count goes up but I cannot see anything.

                        1 Reply Last reply Reply Quote 0
                        • JonB
                          JonB last edited by

                          I can see the balls appear just fine with your code on ios 8.2 on ipad2. For the platformer game I had a similar problem which was solved by rotating the display. You might try running it, then rotating the device so that it tries to resize.

                          1 Reply Last reply Reply Quote 0
                          • ccc
                            ccc last edited by

                            The code above works for me.

                            1 Reply Last reply Reply Quote 0
                            • dgelessus
                              dgelessus last edited by

                              Not sure if this is a bug or an odd feature, but Pythonista strips all whitespace (including trailing newlines) from the end of a file when it is saved. This only becomes apparent when closing the editor tab for that file or restarting the app. If this is intentional, it would be nice if this were optional.

                              1 Reply Last reply Reply Quote 0
                              • ccc
                                ccc last edited by

                                In the beta release ui.View().present(orientations=['landsacpe']) is not forcing the view to display in landscape mode. It is just me or are others seeing the same behavior?

                                1 Reply Last reply Reply Quote 0
                                • Helgi
                                  Helgi last edited by

                                  Can somebody among the beta users tell me whether the extensions can be made to handle files (e.g., Mail attachments) in a way that was possible with Open In?

                                  The scenario I used in the days of Open In was this: I have an email attachment of specific type (e.g., .txt), I open it in Pythonista, the Open In handler then performs some automated actions (in my case, uploads it via SCP and then runs several commands on the remote server). Can this be done with the extensions now? Should I wait for the new release or try and find other ways to do this?

                                  1 Reply Last reply Reply Quote 0
                                  • JonB
                                    JonB last edited by

                                    That's exactly what the extensions let you do.

                                    1 Reply Last reply Reply Quote 0
                                    • Webmaster4o
                                      Webmaster4o last edited by

                                      How can I sign up for the test flight beta? I want to try it, looks AMAZING.

                                      1 Reply Last reply Reply Quote 0
                                      • userista
                                        userista last edited by

                                        Modules that are in site-packages are not importable when in the app extension. Is this expected behavior?

                                        1 Reply Last reply Reply Quote 0
                                        • JonB
                                          JonB last edited by

                                          The extension runs in its own sandbox.. As I recall there was an extensions site packages? You have to separately install packages to both locations.

                                          1 Reply Last reply Reply Quote 0
                                          • First post
                                            Last post
                                          Powered by NodeBB Forums | Contributors