Ejemplo n.º 1
0
        public override void _Ready()
        {
            var size    = GetViewportRect().Size;
            var physics = new VerletWorld();

            physics.AddBehavior(new GravityBehavior());
            AddChild(physics);

            const int separation      = 30;
            var       pointCount      = new Vector2(12, 10);
            var       totalSize       = pointCount * separation;
            var       topLeftPosition = (size / 2) - (totalSize / 2);

            new VerletCloth(
                physics,
                topLeftPosition: topLeftPosition,
                pointCount: pointCount,
                separation: separation,
                pinMode: VerletCloth.PinModeEnum.TopCorners,
                tearSensitivityFactor: 2f,
                stiffness: 1f,
                drawPoints: true,
                pointRadius: 8f
                );
        }
Ejemplo n.º 2
0
        public override void _Ready()
        {
            var size    = GetViewportRect().Size;
            var physics = new VerletWorld();

            physics.AddBehavior(new GravityBehavior());
            AddChild(physics);

            new VerletCreature(
                physics,
                centerPosition: size / 2,
                height: 200,
                gravityScale: 0.5f,
                drawSupportLinks: true
                );

            new VerletRagdoll(
                physics,
                new Vector2(size.x * 0.75f, size.y / 2),
                height: 200,
                gravityScale: 0.25f,
                tearSensitivityFactor: 4,
                pointRadius: 5f,
                drawIntermediatePoints: false,
                drawSupportLinks: true
                );
        }
Ejemplo n.º 3
0
        public override void _Ready()
        {
            var size    = GetViewportRect().Size;
            var physics = new VerletWorld();

            AddChild(physics);

            // Attractor
            var attractor = physics.CreatePoint(size / 2, radius: 24, color: Colors.LightGoldenrod, mass: 1000);

            physics.AddBehavior(new AttractionBehavior(attractor, strength: 0.01f, radius: size.x));

            // Create clusters
            var cluster1 = new VerletCluster(
                physics,
                size / 4,
                pointCount: 8,
                diameter: 50
                );
            var cluster2 = new VerletCluster(
                physics,
                size * 0.75f,
                pointCount: 8,
                diameter: 50
                );

            // Hidden link to simulate collisions
            physics.CreateLink(cluster1.Points[0], cluster2.Points[0], minimalDistance: 50, visible: false);
        }
Ejemplo n.º 4
0
        public override void _Ready()
        {
            var size    = GetViewportRect().Size;
            var physics = new VerletWorld();

            AddChild(physics);

            var attractor = physics.CreatePoint(size / 2, radius: 24, color: Colors.LightGoldenrod, mass: 1000);

            physics.AddBehavior(new AttractionBehavior(attractor, strength: 0.01f, radius: size.x));

            const int pointCount = 18;

            for (int i = 0; i < pointCount; ++i)
            {
                var pt = physics.CreatePoint(MathUtils.RandVector2(0, size.x, 0, size.y), radius: 16, mass: 10);
                physics.AddBehavior(new AttractionBehavior(pt, strength: -0.1f, radius: pt.Radius * 4));
            }
        }
Ejemplo n.º 5
0
        public override void _Ready()
        {
            var size    = GetViewportRect().Size;
            var physics = new VerletWorld();

            physics.AddBehavior(new GravityBehavior());
            AddChild(physics);

            new VerletChainBuilder(physics)
            .AddPointAtPosition(x: size.x / 2, y: 0)
            .AddPointsWithOffset(pointCount: 8, x: 10, y: 10)
            .AddPointWithOffset(x: 10, y: 10, configurator: (point) => point.Radius = 30)
            .Build(stiffness: 0.5f);
        }
Ejemplo n.º 6
0
        public override void _Ready()
        {
            var size = GetViewportRect().Size;

            var physics = new VerletWorld();

            physics.AddBehavior(new GravityBehavior());
            AddChild(physics);

            new VerletChainBuilder(physics)
            .AddPointAtPosition(new Vector2(size.x / 2, 0))
            .AddPointAtPosition((size / 2) + new Vector2(80, 0))
            .Build(restingDistance: size.y / 2, tearSensitivity: -1, stiffness: 0.5f);
        }