private void Awake() { singleton = this; while (IDs.Count <= ID) { IDs.Add(null); } IDs[ID] = this; }
private void UpdatePosition(float scaleMultiplier = 1.0f) { if (currentObject == null) { return; } if (rectTransform == null) { rectTransform = GetComponent <RectTransform> (); } if (lastTemplate == null) { return; } var renderLayer = ItemRendererLayer.Get(id); var meshFilter = currentObject.GetComponent <MeshFilter> (); var rectTransformCenter = rectTransform.position; var point = new Vector2(rectTransformCenter.x, rectTransformCenter.y); var screenRect = RectTransformUtility.PixelAdjustRect(rectTransform, null); var ray = renderLayer.layerCamera.ScreenPointToRay(point); float maxSize = Mathf.Max(meshFilter.mesh.bounds.size.x, meshFilter.mesh.bounds.size.y, meshFilter.mesh.bounds.size.z) / lastTemplate.RenderScale; float heightPerc = ((screenRect.height / Screen.height) * (Screen.height / 2560.0f)) * renderLayer.layerCamera.orthographicSize * 3.0f; float newScale = (heightPerc / maxSize) * scaleMultiplier; currentObject.transform.position = ray.GetPoint(20 - (Height * 2)); currentObject.transform.position -= meshFilter.mesh.bounds.center * newScale; currentObject.transform.localScale = new Vector3(newScale, newScale, newScale); }
private void RenderPrefab(GameObject prefab) { if (currentObject != null) { Destroy(currentObject); } var renderLayer = ItemRendererLayer.Get(id); currentObject = Instantiate(prefab, renderLayer.objectHolder.transform) as GameObject; currentObject.layer = renderLayer.gameObject.layer; var itemMesh = currentObject.GetComponent <MeshRenderer> (); itemMesh.receiveShadows = false; itemMesh.shadowCastingMode = ShadowCastingMode.Off; itemMesh.lightProbeUsage = LightProbeUsage.Off; itemMesh.allowOcclusionWhenDynamic = false; currentObject.transform.position += new Vector3(3000, 4000, 4000); UpdatePosition(); }