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); } } }
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); } } }
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); } }
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)); }