public static BlockCluster SpawnCluster(Vector3 position) { BlockCluster blockCluster = SpawnCluster(); blockCluster.transform.position = position; return(blockCluster); }
protected void RecalculateCluster() { DbLog.Log(string.Format("Recalculate cluster"), Color.green, this); List <Block> unsortedBlocks = new List <Block>(attachedBlockList); List <List <Block> > newClusterDataList = new List <List <Block> >(); while (unsortedBlocks.Count > 0) { newClusterDataList.Add(CalculateCluster(unsortedBlocks)); } if (newClusterDataList.Count != 1) { foreach (List <Block> cluserData in newClusterDataList) { List <Vector3> blockPositions = new List <Vector3>(); foreach (Block block in cluserData) { blockPositions.Add(block.transform.position); } Vector3 clusterPosition = VectorUtils.FindCentroid(blockPositions); BlockCluster blockCluster = SpawnCluster(clusterPosition); foreach (Block block in cluserData) { RemoveBlock(block); block.RegisterBlockCluster(blockCluster); } DbLog.Log(string.Format("Create new cluster {0}", blockCluster), Color.green, this); } } }
protected virtual void Start() { if (BlockCluster == null && !isPreview) { RegisterBlockCluster(BlockCluster.SpawnCluster(transform.position)); } }
public static BlockCluster SpawnCluster() { BlockCluster blockClusterPrefab = Resources.Load <BlockCluster>("Prefabs/Construct/BlockCluster"); BlockCluster blockCluster = Instantiate(blockClusterPrefab); blockCluster.Init(); return(blockCluster); }
public virtual void RegisterBlockCluster(BlockCluster blockCluster) { if (BlockCluster == blockCluster) { return; } BlockCluster = blockCluster; BlockCluster.AddBlock(this); }
public override void Init(Attachment targetAttachment, int baseAttachmentIndex, Vector3 rotation) { RegisterAttachment(targetAttachment); SwitchPreview(false); SetPosition(targetAttachment, baseAttachmentIndex, rotation); RegisterBlockCluster(BlockCluster.SpawnCluster(transform.position)); targetAttachment.block.Attach(this); OnBlockCreated(this); }
public override void RegisterBlockCluster(BlockCluster blockCluster) { base.RegisterBlockCluster(blockCluster); AddJointComponent(connectedAttachment); }