protected virtual void Update()
        {
            cooldown -= Time.deltaTime;

            if (cooldown <= 0.0f)
            {
                cooldown = Delay;

                var angle = Random.Range(0.0f, 360.0f);

                D2dStamp.All(Paint, transform.position, Size, angle, Shape, Color, Layers);
            }
        }
        protected virtual void Start()
        {
            if (Stamp == true)
            {
                var stampPosition = transform.position;
                var stampAngle    = StampRandomDirection == true?Random.Range(-180.0f, 180.0f) : 0.0f;

                D2dStamp.All(StampPaint, stampPosition, StampSize, stampAngle, StampShape, StampColor, Mask);
            }

            if (Raycast == true && RaycastCount > 0)
            {
                StartCoroutine(DelayForce());
            }
        }
        protected virtual void Update()
        {
            // Main camera exists?
            var mainCamera = Camera.main;

            if (mainCamera != null)
            {
                // World position of the mouse
                var position = D2dHelper.ScreenToWorldPosition(Input.mousePosition, Intercept, mainCamera);

                // Begin dragging
                if (Input.GetKey(Requires) == true && down == false)
                {
                    down = true;
                }

                // End dragging
                if (Input.GetKey(Requires) == false && down == true)
                {
                    down = false;

                    // Stamp everything at this point?
                    if (Hit == HitType.All)
                    {
                        D2dStamp.All(Paint, position, Size, Angle, Shape, Color, Layers);
                    }

                    // Stamp the first thing at this point?
                    if (Hit == HitType.First)
                    {
                        var destructible = default(D2dDestructible);

                        if (D2dDestructible.TrySampleThrough(position, ref destructible) == true)
                        {
                            destructible.Paint(Paint, D2dStamp.CalculateMatrix(position, Size, Angle), Shape, Color);
                        }
                    }
                }

                // Update indicator?
                if (down == true && IndicatorPrefab != null)
                {
                    if (indicatorInstance == null)
                    {
                        indicatorInstance = Instantiate(IndicatorPrefab);

                        indicatorScale = indicatorInstance.transform.localScale;

                        indicatorInstance.SetActive(true);
                    }

                    indicatorInstance.transform.position = position;

                    indicatorInstance.transform.localScale = Vector3.Scale(indicatorScale, new Vector3(Size.x, Size.y, 1.0f));
                }
                // Destroy indicator?
                else if (indicatorInstance != null)
                {
                    Destroy(indicatorInstance.gameObject);
                }
            }
        }
Beispiel #4
0
        protected virtual void Update()
        {
            // Update input
            inputManager.Update(Requires);

            // Make sure the camera exists
            var camera = D2dHelper.GetCamera(null);

            if (camera != null)
            {
                // Loop through all non-gui fingers
                foreach (var finger in inputManager.Fingers)
                {
                    if (finger.StartedOverGui == false)
                    {
                        // Grab extra finger data and position
                        var link     = D2dInputManager.Link.FindOrCreate(ref links, finger);
                        var position = D2dHelper.ScreenToWorldPosition(finger.PositionA, Intercept, camera);

                        // Create indiactor?
                        if (finger.Down == true && IndicatorPrefab != null)
                        {
                            link.Visual = Instantiate(IndicatorPrefab);
                            link.Scale  = link.Visual.transform.localScale;

                            link.Visual.SetActive(true);
                        }

                        // Update indicator?
                        if (finger.Set == true && link.Visual != null)
                        {
                            link.Visual.transform.position = position;

                            link.Visual.transform.localScale = Vector3.Scale(link.Scale, new Vector3(Size.x, Size.y, 1.0f));
                        }

                        // Clear indicator then stamp?
                        if (finger.Up == true)
                        {
                            // Stamp everything at this point?
                            if (Hit == HitType.All)
                            {
                                D2dStamp.All(Paint, position, Size, Angle, Shape, Color, Layers);
                            }

                            // Stamp the first thing at this point?
                            if (Hit == HitType.First)
                            {
                                var destructible = default(D2dDestructible);

                                if (D2dDestructible.TrySampleThrough(position, ref destructible) == true)
                                {
                                    destructible.Paint(Paint, D2dStamp.CalculateMatrix(position, Size, Angle), Shape, Color);
                                }
                            }

                            // Destroy indicator
                            link.Clear();
                        }
                    }
                }
            }
        }
 public void GenerateStamp(Vector2 worldPosition)
 {
     D2dStamp.All(D2dDestructible.PaintType.Cut, worldPosition, Size, Angle, Shape, Color, Layers);
 }