Exemplo n.º 1
0
        public void UpdateSuraface(PartData.AttachmentSurface surfaceA, List <PlacedPart> parts)
        {
            float num = 0f;

            foreach (PlacedPart current in parts)
            {
                if (current.partData != null)
                {
                    PartData.AttachmentSurface[] attachmentSurfaces = current.partData.attachmentSurfaces;
                    for (int i = 0; i < attachmentSurfaces.Length; i++)
                    {
                        PartData.AttachmentSurface surfaceB = attachmentSurfaces[i];
                        if (current != this)
                        {
                            num += Mathf.Max(0f, PlacedPart.SurfacesConnect(this, surfaceA, current, surfaceB));
                        }
                    }
                }
            }
            bool flag = num > 0f;

            PartData.AttachmentSprite[] attachmentSprites = this.partData.attachmentSprites;
            for (int j = 0; j < attachmentSprites.Length; j++)
            {
                PartData.AttachmentSprite attachmentSprite = attachmentSprites[j];
                if (this.partData.attachmentSurfaces[attachmentSprite.surfaceId] == surfaceA)
                {
                    Utility.GetByPath(this.partIcon, attachmentSprite.path).gameObject.SetActive(flag != attachmentSprite.inverse);
                }
            }
        }
Exemplo n.º 2
0
        public void UpdateSuraface(PartData.AttachmentSurface surfaceA, List <PlacedPart> parts)
        {
            float num = 0f;

            foreach (PlacedPart placedPart in parts)
            {
                if (placedPart.partData != null)
                {
                    foreach (PartData.AttachmentSurface surfaceB in placedPart.partData.attachmentSurfaces)
                    {
                        if (placedPart != this)
                        {
                            num += Mathf.Max(0f, PlacedPart.SurfacesConnect(this, surfaceA, placedPart, surfaceB));
                        }
                    }
                }
            }
            bool flag = num > 0f;

            foreach (PartData.AttachmentSprite attachmentSprite in this.partData.attachmentSprites)
            {
                if (attachmentSprite.surfaceId != -1)
                {
                    if (this.partData.attachmentSurfaces[attachmentSprite.surfaceId] == surfaceA)
                    {
                        Utility.GetByPath(this.partIcon, attachmentSprite.path).gameObject.SetActive(flag != attachmentSprite.inverse);
                    }
                }
                else
                {
                    Utility.GetByPath(this.partIcon, attachmentSprite.path).gameObject.SetActive(attachmentSprite.inverse);
                }
            }
        }
Exemplo n.º 3
0
 public void UpdateConnected(List <PlacedPart> parts)
 {
     if (this.partIcon == null)
     {
         return;
     }
     PartData.AttachmentSurface[] attachmentSurfaces = this.partData.attachmentSurfaces;
     for (int i = 0; i < attachmentSurfaces.Length; i++)
     {
         PartData.AttachmentSurface surfaceA = attachmentSurfaces[i];
         this.UpdateSuraface(surfaceA, parts);
     }
 }
Exemplo n.º 4
0
        public static float SurfacesConnect(PlacedPart partA, PartData.AttachmentSurface surfaceA, PlacedPart partB, PartData.AttachmentSurface surfaceB)
        {
            bool flag  = Mathf.Abs((surfaceA.size * partA.orientation).x) > 0.1f;
            bool flag2 = Mathf.Abs((surfaceB.size * partB.orientation).x) > 0.1f;

            if (flag != flag2)
            {
                return(0f);
            }
            Vector2 worldPosition  = partA.GetWorldPosition(surfaceA.start);
            Vector2 worldPosition2 = partB.GetWorldPosition(surfaceB.start);

            if ((!flag) ? (Mathf.Abs(worldPosition.x - worldPosition2.x) > 0.1f) : (Mathf.Abs(worldPosition.y - worldPosition2.y) > 0.1f))
            {
                return(0f);
            }
            Vector2 worldPosition3 = partA.GetWorldPosition(surfaceA.start + surfaceA.size);
            Vector2 worldPosition4 = partB.GetWorldPosition(surfaceB.start + surfaceB.size);

            return((!flag) ? Utility.Overlap(worldPosition.y, worldPosition3.y, worldPosition2.y, worldPosition4.y) : Utility.Overlap(worldPosition.x, worldPosition3.x, worldPosition2.x, worldPosition4.x));
        }