public PlanetoidModel(
            ObjectTunables settings,
            ObjectStateManager stateManager,
            PlanetoidInstaller.PlanetoidTunables tunables,
            Rigidbody2D rigidbody,
            PointEffector2D effector,
            [Inject(Id = "EffectorCollider")] CircleCollider2D effectorCollider,
            [Inject(Id = "SpriteCollider")] CircleCollider2D spriteCollider,
            [Inject(Id = "EffectorSprite")] Transform effectorTransform,
            PlanetoidFacade facade)
            : base(settings, stateManager)
        {
            Rigidbody               = rigidbody;
            GameObject              = rigidbody.gameObject;
            PointEffector           = effector;
            EffectorCollider        = effectorCollider;
            _tunables               = tunables;
            SpriteCollider          = spriteCollider;
            EffectorSpriteTransform = effectorTransform;
            Facade = facade;

            var exp = new CurveTestScript {
                direction = RandomFromDistribution.Direction_e.Left, skew = 100f
            };
            var scale = exp.GetRandomNumber(1, tunables.RadiusMax);

            SpriteCollider.transform.localScale = Vector3.one * scale;

            Rigidbody.mass = Mathf.PI * scale * scale;

            PointEffector.forceMagnitude       = -1 * _tunables.EffectorForceScale * Rigidbody.mass * Rigidbody.mass;
            EffectorCollider.radius            = scale * scale * scale * _tunables.EffectorRadiusScale;
            EffectorSpriteTransform.localScale = Vector2.one * EffectorCollider.radius * 2;

            Rigidbody.velocity = Vector2.zero;
        }
Example #2
0
 public void DespawnPlanetoid(PlanetoidFacade which)
 {
     _pool.Despawn(which);
 }