public void PlanPieceRemovedFromBlueprint(PlanPiece planPiece) { ZDOID blueprintID = planPiece.GetBlueprintID(); if (blueprintID == ZDOID.None) { return; } ZDO blueprintZDO = ZDOMan.instance.GetZDO(blueprintID); if (blueprintZDO == null) { return; } ZDOIDSet planPieces = GetPlanPieces(blueprintZDO); planPieces?.Remove(planPiece.GetPlanPieceID()); if (planPieces == null || planPieces.Count() == 0) { GameObject blueprintObject = ZNetScene.instance.FindInstance(blueprintID); if (blueprintObject) { ZNetScene.instance.Destroy(blueprintObject); } } else { blueprintZDO.Set(PlanPiece.zdoBlueprintPiece, planPieces.ToZPackage().GetArray()); } }
public List <PlanPiece> FindPlanPiecesInRange() { Dictionary <PlanPiece, float> result = new Dictionary <PlanPiece, float>(); foreach (var piece in Piece.m_allPieces) { Vector3 pieceCenter = GetCenter(piece.gameObject); float distance = Vector2.Distance(new Vector2(transform.position.x, transform.position.z), new Vector2(pieceCenter.x, pieceCenter.z)); if (distance <= radiusConfig.Value) { PlanPiece planPiece = piece.GetComponent <PlanPiece>(); if (planPiece) { result.Add(planPiece, distance); } } } return(result.AsEnumerable() .OrderBy(pair => pair.Value) .Select(pair => pair.Key) .ToList()); }