public PhysicalRocket(
            StarlingGameSpriteWithRocketTextures textures_rocket,
            StarlingGameSpriteWithPhysics Context,
            bool issmoke = false,
            Image Explosion1 = null
            )
        {
            this.issmoke = issmoke;

            this.Context = Context;
            this.textures_rocket = textures_rocket;

            this.CurrentInput = new KeySample();

            visual = new Image(textures_rocket.rocket1());
            visual.AttachTo(Context.Content);


            //this.CameraRotation = Math.PI / 2;

            #region smoke_b2world




            {
                var bodyDef = new b2BodyDef();

                bodyDef.type = Box2D.Dynamics.b2Body.b2_dynamicBody;

                // stop moving if legs stop walking!
                bodyDef.linearDamping = 0;
                bodyDef.angularDamping = 6;
                //bodyDef.angle = 1.57079633;
                //bodyDef.fixedRotation = true;

                if (issmoke)
                {
                    body = Context.smoke_b2world.CreateBody(bodyDef);
                }
                else
                {
                    body = Context.damage_b2world.CreateBody(bodyDef);
                }


                var fixDef = new Box2D.Dynamics.b2FixtureDef();
                fixDef.density = 0.1;
                fixDef.friction = 0.0;
                fixDef.restitution = 0;


                fixDef.shape = new Box2D.Collision.Shapes.b2CircleShape(0.5);

                // 
                var fix = body.CreateFixture(fixDef);

                var fix_data = new Action<double>(
                    jeep_forceA =>
                    {
                        this.body.SetActive(false);
                        this.visual.visible = false;

                        // explode?
                        this.speed = 0;
                        this.CurrentInput = new KeySample();

                        Context.CreateExplosion(
                             this.body.GetPosition().x,
                              this.body.GetPosition().y
                        );


                    }
                );

                // this does NOT work!
                fix.SetUserData(fix_data);
            }


            #endregion





            Context.internalunits.Add(this);
        }