private void OnScaleReleased(MonoBehaviour marker) { MoveableGUIObject component = marker.GetComponent <MoveableGUIObject>(); GuideObject guideObject = component.guideObject; GuideScale guideScale = component.guideScale; if (guideObject.enableScale && guideScale) { marker.transform.localPosition = CalcScaleHandleDefaultPos(guideScale); } }
private bool InstallScaleMoveMarker(GuideObject guideObject) { Transform transform = guideObject.gameObject.transform.Find("scale"); if (transform.transform.Find("X/_gripmovemarker_scale") == null) { foreach (string text in new string[] { "XYZ", "X", "Y", "Z" }) { Transform transform2 = transform.Find(text); GuideScale component = transform2.gameObject.GetComponent <GuideScale>(); if (component != null) { GameObject gameObject = GameObject.CreatePrimitive(0); gameObject.name = "_gripmovemarker_scale"; gameObject.layer = LayerMask.NameToLayer("Studio/Select"); Renderer component2 = gameObject.GetComponent <Renderer>(); Material material = new Material(MaterialHelper.GetColorZOrderShader()); material.color = new Color(0f, 1f, 1f, 0.3f); material.SetFloat("_AlphaRatio", 1.5f); material.renderQueue = 3800; component2.material = material; Renderer component3 = transform2.gameObject.GetComponent <Renderer>(); SphereCollider sphereCollider = gameObject.AddComponent <SphereCollider>(); Transform transform3 = gameObject.transform; transform3.transform.parent = transform2; transform3.transform.localPosition = CalcScaleHandleDefaultPos(component); transform3.transform.rotation = guideObject.transformTarget.rotation; transform3.transform.localScale = Vector3.one; sphereCollider.isTrigger = true; MoveableGUIObject moveableGUIObject = gameObject.AddComponent <MoveableGUIObject>(); moveableGUIObject.guideObject = guideObject; moveableGUIObject.guideScale = component; moveableGUIObject.onMoveLister.Add(new Action <MonoBehaviour>(OnScaleMove)); moveableGUIObject.onReleasedLister.Add(new Action <MonoBehaviour>(OnScaleReleased)); moveableGUIObject.visibleReference = component3; } } return(true); } return(false); }
private Vector3 CalcScaleHandleDefaultPos(GuideScale guideScale) { switch (guideScale.axis) { case GuideScale.ScaleAxis.X: return(new Vector3(0.25f, 0f, 0f)); case GuideScale.ScaleAxis.Y: return(new Vector3(0f, 0.25f, 0f)); case GuideScale.ScaleAxis.Z: return(new Vector3(0f, 0f, 0.25f)); case GuideScale.ScaleAxis.XYZ: return(new Vector3(0.25f, 0.25f, 0.25f) * 0.25f / DEFAULT_SCALE_POS_XYZ_DIST); default: return(Vector3.zero); } }
private void OnScaleMove(MonoBehaviour marker) { MoveableGUIObject component = marker.GetComponent <MoveableGUIObject>(); Transform parent = marker.transform.parent; GuideObject guideObject = component.guideObject; GuideScale guideScale = component.guideScale; if (guideObject.enableScale && component.guideScale) { float magnitude = marker.transform.localPosition.magnitude; if (magnitude > 0f) { float num = magnitude / 0.25f; Vector3 vector = component.oldScale; switch (guideScale.axis) { case GuideScale.ScaleAxis.X: vector.x *= num; break; case GuideScale.ScaleAxis.Y: vector.y *= num; break; case GuideScale.ScaleAxis.Z: vector.z *= num; break; case GuideScale.ScaleAxis.XYZ: vector *= num; break; } vector.x = Mathf.Max(vector.x, 0.01f); vector.y = Mathf.Max(vector.y, 0.01f); vector.z = Mathf.Max(vector.z, 0.01f); guideObject.changeAmount.scale = vector; } } }