public ParcelInfo(int index) { Index = index; var coord = DclMap.IndexToCoordinates(index); x = coord.x; y = coord.y; }
void UpdateBuffers() { // Ensure submesh index is in range if (instanceMesh != null) { subMeshIndex = Mathf.Clamp(subMeshIndex, 0, instanceMesh.subMeshCount - 1); } // Positions if (positionBuffer != null) { positionBuffer.Release(); } positionBuffer = new ComputeBuffer(instanceCount, 16); Vector4[] positions = new Vector4[instanceCount]; for (int i = 0; i < instanceCount; i++) { var coord = DclMap.IndexToCoordinates(i); positions[i] = new Vector4(coord.x * 10, 0, coord.y * 10, i % 17 * 10); } positionBuffer.SetData(positions); instanceMaterial.SetBuffer("positionBuffer", positionBuffer); // Scales // if (scaleBuffer != null) // scaleBuffer.Release(); // scaleBuffer = new ComputeBuffer(instanceCount, 16); // Vector4[] scales = new Vector4[instanceCount]; // for (int i = 0; i < instanceCount; i++) // { // // scales[i] = new Vector4(10, 0, 10, 5f); // } // scaleBuffer.SetData(scales); // instanceMaterial.SetBuffer("scaleBuffer", scaleBuffer); // Indirect args if (instanceMesh != null) { args[0] = (uint)instanceMesh.GetIndexCount(subMeshIndex); args[1] = (uint)instanceCount; args[2] = (uint)instanceMesh.GetIndexStart(subMeshIndex); args[3] = (uint)instanceMesh.GetBaseVertex(subMeshIndex); } else { args[0] = args[1] = args[2] = args[3] = 0; } argsBuffer.SetData(args); cachedInstanceCount = instanceCount; cachedSubMeshIndex = subMeshIndex; }
void DidParcelCubeClick(int index) { var coord = DclMap.IndexToCoordinates(index); SelectedParcel = coord; TxtCoordinates.text = string.Format("{0},{1}", coord.x, coord.y); var sb = new StringBuilder(); var parcelInfo = DclMap.ParcelInfos[index]; //Sold for (var i = 0; i < parcelInfo.SoldPublications.Count; i++) { var publication = parcelInfo.SoldPublications[i]; long timestamp; var succ = long.TryParse(publication.block_time_updated_at, out timestamp); if (succ) { var time = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)).AddMilliseconds(timestamp); sb.AppendLine(time.ToString("g")); } else { sb.AppendLine("ERROR " + timestamp); } sb.AppendFormat("{0:0} MANA\n", publication.price); sb.Append("—\n"); } //Auction { sb.AppendLine("Auction"); if (parcelInfo.Parcel == null) { sb.AppendLine("waiting..."); } else { if (parcelInfo.Parcel.auction_price == null) { sb.AppendLine("Not Owned"); } else { sb.AppendFormat("{0:0} MANA\n", parcelInfo.Parcel.auction_price); } } } sb.Append("— END —\n"); TxtDealHistory.text = sb.ToString(); }
public static IEnumerator AsyncFetchAll() { var counter = new Counter(); for (int i = 0; i <= DclMap.N; i++)//TODO:太可怕了 { var coord = DclMap.IndexToCoordinates(i); DclMap.Instance.StartCoroutine(AsyncFetch(coord.x, coord.y, counter)); } while (true) { yield return(new WaitForEndOfFrame()); if (Time.frameCount % 50 == 0) { Debug.Log("rC=" + counter.responseCount); } if (counter.responseCount >= DclMap.N) { break; } } }
void Update() { if (DclMap.HoveredParcelIndex != null) { var index = (int)DclMap.HoveredParcelIndex; HoverFrame.SetActive(true); var rectTra = HoverFrame.GetComponent <RectTransform>(); rectTra.position = Input.mousePosition + new Vector3(50, 0); var parcelInfo = DclMap.ParcelInfos[index]; var coord = DclMap.IndexToCoordinates(index); var sb = new StringBuilder(); sb.AppendFormat("{0},{1}\n", coord.x, coord.y); var open = false; if (parcelInfo != null) { if (parcelInfo.EstateInfo != null) { if (parcelInfo.EstateInfo.Estate.publication != null && parcelInfo.EstateInfo.Estate.publication.status == "open") { open = true; var price = parcelInfo.EstateInfo.Estate.publication.price; var parcelCount = parcelInfo.EstateInfo.Estate.data.parcels.Count; var unitPrice = price / parcelCount; sb.AppendFormat("{0}\n", parcelInfo.EstateInfo.Estate.data.name); sb.AppendFormat("({0}) @ {1}\n{2} MANA", parcelCount, unitPrice, price); } } else if (parcelInfo.Parcel != null) { string name; if (parcelInfo.Parcel.district_id != null) { var district = DclMap.Districts.Find(d => d.id == parcelInfo.Parcel.district_id); if (district != null) { name = district.name; } else { name = "waiting..."; } } else { name = parcelInfo.Parcel.data.name; } sb.AppendFormat("{0}\n", name); if (parcelInfo.Parcel.publication != null && parcelInfo.Parcel.publication.status == "open") { open = true; var price = parcelInfo.Parcel.publication.price; sb.AppendFormat("{0} MANA", price); } } var dealPrice = DclMap.GetLastDealPrice(index); if (dealPrice >= 0) { sb.AppendFormat("\nLast deal @ {0} MANA", dealPrice); } } TxtHover.text = sb.ToString(); } else { HoverFrame.SetActive(false); } }