public override void Hide(bool tf) { base.Hide(tf); if (emptySprite != null) { emptySprite.Hide(tf); } }
public override void Start() { if (m_started) { return; } base.Start(); // Assign our aggregate layers: aggregateLayers = new SpriteRoot[2][]; aggregateLayers[0] = filledLayers; aggregateLayers[1] = emptyLayers; // The knob will handle its own layers // Runtime init stuff: if (Application.isPlaying) { // Calculate our truncation floor and range: truncFloor = stopKnobFromEdge / width; truncRange = 1f - truncFloor * 2f; filledIndices = new int[filledLayers.Length]; emptyIndices = new int[emptyLayers.Length]; // Populate our state indices based on if we // find any valid states/animations in each // sprite layer: for (int i = 0; i < filledLayers.Length; ++i) { if (filledLayers[i] == null) { Debug.LogError("A null layer sprite was encountered on control \"" + name + "\". Please fill in the layer reference, or remove the empty element."); continue; } filledIndices[i] = filledLayers[i].GetStateIndex("filled"); if (filledIndices[i] != -1) { filledLayers[i].SetState(filledIndices[i]); } } for (int i = 0; i < emptyLayers.Length; ++i) { if (emptyLayers[i] == null) { Debug.LogError("A null layer sprite was encountered on control \"" + name + "\". Please fill in the layer reference, or remove the empty element."); continue; } emptyIndices[i] = emptyLayers[i].GetStateIndex("empty"); if (emptyIndices[i] != -1) { emptyLayers[i].SetState(emptyIndices[i]); } } // Create our knob: GameObject go = new GameObject(); go.name = name + " - Knob"; go.transform.parent = transform; go.transform.localPosition = CalcKnobStartPos(); go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.layer = gameObject.layer; knob = (UIScrollKnob)go.AddComponent(typeof(UIScrollKnob)); knob.plane = plane; knob.SetOffset(knobOffset); knob.persistent = persistent; knob.bleedCompensation = bleedCompensation; if (!managed) { if (knob.spriteMesh != null) { ((SpriteMesh)knob.spriteMesh).material = GetComponent <Renderer>().sharedMaterial; } } else { if (manager != null) { knob.Managed = managed; manager.AddSprite(knob); knob.SetDrawLayer(drawLayer + 1); // Knob should be drawn in front of the bar // Force it to update its UVs: knob.SetControlState(UIButton.CONTROL_STATE.ACTIVE); // We have to change to active so that when we set to normal, it isn't considered a redundant change and ignored. knob.SetControlState(UIButton.CONTROL_STATE.NORMAL); } else { Debug.LogError("Sprite on object \"" + name + "\" not assigned to a SpriteManager!"); } } if (pixelPerfect) { knob.pixelPerfect = true; } else { knob.SetSize(knobSize.x, knobSize.y); } knob.ignoreClipping = ignoreClipping; knob.color = color; knob.SetColliderSizeFactor(knobColliderSizeFactor); knob.SetSlider(this); knob.SetMaxScroll(width - (stopKnobFromEdge * 2f)); knob.SetInputDelegate(inputDelegate); // Setup knob's transitions: knob.transitions[0] = transitions[2]; knob.transitions[1] = transitions[3]; knob.transitions[2] = transitions[4]; // Tell the knob what it will look like: knob.layers = knobLayers; // Child the knob's layers to the knob: for (int i = 0; i < knobLayers.Length; ++i) { knobLayers[i].transform.parent = knob.transform; } knob.animations[0].SetAnim(states[2], 0); knob.animations[1].SetAnim(states[3], 1); knob.animations[2].SetAnim(states[4], 2); knob.SetupAppearance(); knob.SetCamera(renderCamera); knob.Hide(IsHidden()); knob.autoResize = autoResize; // Create our other sprite for the // empty/background portion: go = new GameObject(); go.name = name + " - Empty Bar"; go.transform.parent = transform; go.transform.localPosition = Vector3.zero; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.layer = gameObject.layer; emptySprite = (AutoSprite)go.AddComponent(typeof(AutoSprite)); emptySprite.plane = plane; emptySprite.autoResize = autoResize; emptySprite.pixelPerfect = pixelPerfect; emptySprite.persistent = persistent; emptySprite.ignoreClipping = ignoreClipping; emptySprite.bleedCompensation = bleedCompensation; if (!managed) { emptySprite.GetComponent <Renderer>().sharedMaterial = GetComponent <Renderer>().sharedMaterial; } else { if (manager != null) { emptySprite.Managed = managed; manager.AddSprite(emptySprite); emptySprite.SetDrawLayer(drawLayer); // Knob should be drawn in front of the bar } else { Debug.LogError("Sprite on object \"" + name + "\" not assigned to a SpriteManager!"); } } emptySprite.color = color; emptySprite.SetAnchor(anchor); emptySprite.Setup(width, height, m_spriteMesh.material); if (states[1].spriteFrames.Length != 0) { emptySprite.animations = new UVAnimation[1]; emptySprite.animations[0] = new UVAnimation(); emptySprite.animations[0].SetAnim(states[1], 0); emptySprite.PlayAnim(0, 0); } emptySprite.renderCamera = renderCamera; emptySprite.Hide(IsHidden()); // Add our child objects as children // of our container: if (container != null) { container.AddChild(knob.gameObject); container.AddChild(emptySprite.gameObject); } SetState(0); // Force the value to update: m_value = -1f; Value = defaultValue; } // Since hiding while managed depends on // setting our mesh extents to 0, and the // foregoing code causes us to not be set // to 0, re-hide ourselves: if (managed && m_hidden) { Hide(true); } }
public override void Start() { if (m_started) return; base.Start(); // Assign our aggregate layers: aggregateLayers = new SpriteRoot[2][]; aggregateLayers[0] = filledLayers; aggregateLayers[1] = emptyLayers; // The knob will handle its own layers // Runtime init stuff: if(Application.isPlaying) { // Calculate our truncation floor and range: truncFloor = stopKnobFromEdge / width; truncRange = 1f - truncFloor * 2f; filledIndices = new int[filledLayers.Length]; emptyIndices = new int[emptyLayers.Length]; // Populate our state indices based on if we // find any valid states/animations in each // sprite layer: for (int i = 0; i < filledLayers.Length; ++i) { if (filledLayers[i] == null) { Debug.LogError("A null layer sprite was encountered on control \"" + name + "\". Please fill in the layer reference, or remove the empty element."); continue; } filledIndices[i] = filledLayers[i].GetStateIndex("filled"); if (filledIndices[i] != -1) filledLayers[i].SetState(filledIndices[i]); } for (int i = 0; i < emptyLayers.Length; ++i) { if (emptyLayers[i] == null) { Debug.LogError("A null layer sprite was encountered on control \"" + name + "\". Please fill in the layer reference, or remove the empty element."); continue; } emptyIndices[i] = emptyLayers[i].GetStateIndex("empty"); if (emptyIndices[i] != -1) emptyLayers[i].SetState(emptyIndices[i]); } // Create our knob: GameObject go = new GameObject(); go.name = name + " - Knob"; go.transform.parent = transform; go.transform.localPosition = CalcKnobStartPos(); go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.layer = gameObject.layer; knob = (UIScrollKnob) go.AddComponent(typeof(UIScrollKnob)); knob.plane = plane; knob.SetOffset(knobOffset); knob.persistent = persistent; knob.bleedCompensation = bleedCompensation; if (!managed) { if (knob.spriteMesh != null) ((SpriteMesh)knob.spriteMesh).material = renderer.sharedMaterial; } else { if (manager != null) { knob.Managed = managed; manager.AddSprite(knob); knob.SetDrawLayer(drawLayer + 1); // Knob should be drawn in front of the bar } else Debug.LogError("Sprite on object \"" + name + "\" not assigned to a SpriteManager!"); } knob.autoResize = autoResize; if (pixelPerfect) { knob.pixelPerfect = true; } else knob.SetSize(knobSize.x, knobSize.y); knob.ignoreClipping = ignoreClipping; knob.color = color; knob.SetColliderSizeFactor(knobColliderSizeFactor); knob.SetSlider(this); knob.SetMaxScroll(width - (stopKnobFromEdge * 2f)); knob.SetInputDelegate(inputDelegate); // Setup knob's transitions: knob.transitions[0] = transitions[2]; knob.transitions[1] = transitions[3]; knob.transitions[2] = transitions[4]; // Tell the knob what it will look like: knob.layers = knobLayers; // Child the knob's layers to the knob: for (int i = 0; i < knobLayers.Length; ++i) knobLayers[i].transform.parent = knob.transform; knob.animations[0].SetAnim(states[2], 0); knob.animations[1].SetAnim(states[3], 1); knob.animations[2].SetAnim(states[4], 2); knob.SetupAppearance(); knob.SetCamera(renderCamera); knob.Hide(IsHidden()); // Create our other sprite for the // empty/background portion: go = new GameObject(); go.name = name + " - Empty Bar"; go.transform.parent = transform; go.transform.localPosition = Vector3.zero; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.layer = gameObject.layer; emptySprite = (AutoSprite) go.AddComponent(typeof(AutoSprite)); emptySprite.plane = plane; emptySprite.autoResize = autoResize; emptySprite.pixelPerfect = pixelPerfect; emptySprite.persistent = persistent; emptySprite.ignoreClipping = ignoreClipping; emptySprite.bleedCompensation = bleedCompensation; if (!managed) emptySprite.renderer.sharedMaterial = renderer.sharedMaterial; else { if (manager != null) { emptySprite.Managed = managed; manager.AddSprite(emptySprite); emptySprite.SetDrawLayer(drawLayer); // Knob should be drawn in front of the bar } else Debug.LogError("Sprite on object \"" + name + "\" not assigned to a SpriteManager!"); } emptySprite.color = color; emptySprite.SetAnchor(anchor); emptySprite.Setup(width, height, m_spriteMesh.material); if (states[1].spriteFrames.Length != 0) { emptySprite.animations = new UVAnimation[1]; emptySprite.animations[0] = new UVAnimation(); emptySprite.animations[0].SetAnim(states[1], 0); emptySprite.PlayAnim(0, 0); } emptySprite.renderCamera = renderCamera; emptySprite.Hide(IsHidden()); // Add our child objects as children // of our container: if(container != null) { container.AddChild(knob.gameObject); container.AddChild(emptySprite.gameObject); } SetState(0); // Force the value to update: m_value = -1f; Value = defaultValue; } // Since hiding while managed depends on // setting our mesh extents to 0, and the // foregoing code causes us to not be set // to 0, re-hide ourselves: if (managed && m_hidden) Hide(true); }
public override void Start() { if (m_started) return; base.Start(); // Check for any existing empty bar and destroy it: if (emptySprite != null) { Destroy(emptySprite); emptySprite = null; } // Assign our aggregate layers: aggregateLayers = new SpriteRoot[2][]; aggregateLayers[0] = filledLayers; aggregateLayers[1] = emptyLayers; // Runtime init stuff: if(Application.isPlaying) { filledIndices = new int[filledLayers.Length]; emptyIndices = new int[emptyLayers.Length]; // Populate our state indices based on if we // find any valid states/animations in each // sprite layer: for (int i = 0; i < filledLayers.Length; ++i) { if (filledLayers[i] == null) { Debug.LogError("A null layer sprite was encountered on control \"" + name + "\". Please fill in the layer reference, or remove the empty element."); continue; } filledIndices[i] = filledLayers[i].GetStateIndex("filled"); if (filledIndices[i] != -1) filledLayers[i].SetState(filledIndices[i]); } for (int i = 0; i < emptyLayers.Length; ++i) { if (emptyLayers[i] == null) { Debug.LogError("A null layer sprite was encountered on control \"" + name + "\". Please fill in the layer reference, or remove the empty element."); continue; } emptyIndices[i] = emptyLayers[i].GetStateIndex("empty"); if (emptyIndices[i] != -1) emptyLayers[i].SetState(emptyIndices[i]); } // Create our other sprite for the // empty/background portion: GameObject emptyObj = new GameObject(); emptyObj.name = name + " - Empty Bar"; emptyObj.transform.parent = transform; emptyObj.transform.localPosition = Vector3.zero; emptyObj.transform.localScale = Vector3.one; emptyObj.transform.localRotation = Quaternion.identity; emptyObj.layer = gameObject.layer; emptySprite = (AutoSprite)emptyObj.AddComponent(typeof(AutoSprite)); emptySprite.plane = plane; emptySprite.autoResize = autoResize; emptySprite.pixelPerfect = pixelPerfect; emptySprite.persistent = persistent; emptySprite.ignoreClipping = ignoreClipping; emptySprite.bleedCompensation = bleedCompensation; if (!managed) emptySprite.renderer.sharedMaterial = renderer.sharedMaterial; else { if (manager != null) { emptySprite.Managed = managed; manager.AddSprite(emptySprite); emptySprite.SetDrawLayer(drawLayer); // Knob should be drawn in front of the bar } else Debug.LogError("Sprite on object \"" + name + "\" not assigned to a SpriteManager!"); } emptySprite.color = color; emptySprite.SetAnchor(anchor); emptySprite.Setup(width, height, m_spriteMesh.material); if (states[1].spriteFrames.Length != 0) { emptySprite.animations = new UVAnimation[1]; emptySprite.animations[0] = new UVAnimation(); emptySprite.animations[0].SetAnim(states[1], 0); emptySprite.PlayAnim(0, 0); } emptySprite.renderCamera = renderCamera; emptySprite.Hide(IsHidden()); Value = m_value; if (container != null) container.AddChild(emptyObj); SetState(0); } // Since hiding while managed depends on // setting our mesh extents to 0, and the // foregoing code causes us to not be set // to 0, re-hide ourselves: if (managed && m_hidden) Hide(true); }
protected void CreateCaret() { // Create our caret and hide it by default: GameObject go = new GameObject(); go.name = name + " - caret"; go.transform.parent = transform; go.transform.localPosition = Vector3.zero; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.layer = gameObject.layer; caret = (AutoSprite)go.AddComponent(typeof(AutoSprite)); caret.plane = plane; caret.offset = caretOffset; caret.SetAnchor(caretAnchor); caret.persistent = persistent; if (!managed) { if (caret.spriteMesh != null) { ((SpriteMesh)caret.spriteMesh).material = renderer.sharedMaterial; } } else { if (manager != null) { caret.Managed = managed; manager.AddSprite(caret); caret.SetDrawLayer(drawLayer + 1); // Caret should be drawn in front of the field graphic } else { Debug.LogError("Sprite on object \"" + name + "\" not assigned to a SpriteManager!"); } } caret.autoResize = autoResize; if (pixelPerfect) { caret.pixelPerfect = pixelPerfect; } else { caret.SetSize(caretSize.x, caretSize.y); } if (states[1].spriteFrames.Length != 0) { caret.animations = new UVAnimation[1]; caret.animations[0] = new UVAnimation(); caret.animations[0].SetAnim(states[1], 0); caret.PlayAnim(0, 0); } caret.renderCamera = renderCamera; caret.SetCamera(renderCamera); caret.Hide(true); transitions[1].list[0].MainSubject = caret.gameObject; PositionCaret(); if (container != null) { container.AddSubject(caret.gameObject); } }
public string SetInputText(string inputText, ref int insertPt) { // Validate our input: if (!multiline) { int idx; // Check for Enter: if ((idx = inputText.IndexOf('\n')) != -1) { inputText = inputText.Remove(idx, 1); UIManager.instance.FocusObject = null; } if ((idx = inputText.IndexOf('\r')) != -1) { inputText = inputText.Remove(idx, 1); UIManager.instance.FocusObject = null; } } // Apply custom validation if (validationDelegate != null) { inputText = validationDelegate(this, inputText); } if (inputText.Length > maxLength && maxLength > 0) { // Set our changed delegate to null so we can // assign to our Text property without firing // it in order that the delegate gets the // correct value for maxLengthExceeded: EZValueChangedDelegate tempDel = changeDelegate; changeDelegate = null; Text = inputText.Substring(0, maxLength); insert = Mathf.Clamp(insertPt, 0, maxLength); maxLengthExceeded = true; changeDelegate = tempDel; if (changeDelegate != null) { changeDelegate(this); } if (fieldFullSound != null) { fieldFullSound.PlayOneShot(fieldFullSound.clip); } } else { Text = inputText; insert = insertPt; if (typingSoundEffect != null) { typingSoundEffect.PlayOneShot(typingSoundEffect.clip); } if (changeDelegate != null) { changeDelegate(this); } } /* * if (text.Length > 0) * { * if (caret != null) * if (caret.IsHidden()) * ShowCaret(); * } * else * HideCaret(); */ if (caret != null) { if (caret.IsHidden() && hasFocus) { caret.Hide(false); } } // It's okay, PositionCaret() checks to see // if caret is null, and it performs some // non-caret functions too: PositionCaret(); // See if enter was pressed and we didn't already handle it: if (UIManager.instance.FocusObject == null && !commitOnLostFocus) { Commit(); } return(text); }
protected void CreateCaret() { // Create our caret and hide it by default: GameObject go = new GameObject(); go.name = name + " - caret"; go.transform.parent = transform; go.transform.localPosition = Vector3.zero; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.layer = gameObject.layer; caret = (AutoSprite)go.AddComponent(typeof(AutoSprite)); caret.plane = plane; caret.offset = caretOffset; caret.SetAnchor(caretAnchor); caret.persistent = persistent; if (!managed) { if (caret.spriteMesh != null) ((SpriteMesh)caret.spriteMesh).material = renderer.sharedMaterial; } else { if (manager != null) { caret.Managed = managed; manager.AddSprite(caret); caret.SetDrawLayer(drawLayer + 1); // Caret should be drawn in front of the field graphic } else Debug.LogError("Sprite on object \"" + name + "\" not assigned to a SpriteManager!"); } caret.autoResize = autoResize; if (pixelPerfect) caret.pixelPerfect = pixelPerfect; else caret.SetSize(caretSize.x, caretSize.y); if (states[1].spriteFrames.Length != 0) { caret.animations = new UVAnimation[1]; caret.animations[0] = new UVAnimation(); caret.animations[0].SetAnim(states[1], 0); caret.PlayAnim(0, 0); } caret.renderCamera = renderCamera; caret.SetCamera(renderCamera); caret.Hide(true); transitions[1].list[0].MainSubject = caret.gameObject; PositionCaret(); if (container != null) container.AddSubject(caret.gameObject); }
public string SetInputText(string inputText, ref int insertPt) { // Validate our input: if (!multiline) { int idx; // Check for Enter: if ((idx = inputText.IndexOf('\n')) != -1) { inputText = inputText.Remove(idx, 1); UIManager.instance.FocusObject = null; } if ((idx = inputText.IndexOf('\r')) != -1) { inputText = inputText.Remove(idx, 1); UIManager.instance.FocusObject = null; } } if (inputText.Length > maxLength && maxLength > 0) { Text = inputText.Substring(0, maxLength); insert = Mathf.Clamp(insertPt, 0, maxLength); if (fieldFullSound != null) { fieldFullSound.PlayOneShot(fieldFullSound.clip); } } else { Text = inputText; insert = insertPt; if (typingSoundEffect != null) { typingSoundEffect.PlayOneShot(typingSoundEffect.clip); } if (changeDelegate != null) { changeDelegate(this); } } /* * if (text.Length > 0) * { * if (caret != null) * if (caret.IsHidden()) * ShowCaret(); * } * else * HideCaret(); */ if (caret != null) { if (caret.IsHidden() && hasFocus) { caret.Hide(false); } PositionCaret(); } // See if enter was pressed: if (UIManager.instance.FocusObject == null) { Commit(); } return(text); }
public override void Start() { if (m_started) { return; } base.Start(); // Check for any existing empty bar and destroy it: if (emptySprite != null) { Destroy(emptySprite); emptySprite = null; } // Assign our aggregate layers: aggregateLayers = new SpriteRoot[2][]; aggregateLayers[0] = filledLayers; aggregateLayers[1] = emptyLayers; // Runtime init stuff: if (Application.isPlaying) { filledIndices = new int[filledLayers.Length]; emptyIndices = new int[emptyLayers.Length]; // Populate our state indices based on if we // find any valid states/animations in each // sprite layer: for (int i = 0; i < filledLayers.Length; ++i) { if (filledLayers[i] == null) { Debug.LogError("A null layer sprite was encountered on control \"" + name + "\". Please fill in the layer reference, or remove the empty element."); continue; } filledIndices[i] = filledLayers[i].GetStateIndex("filled"); if (filledIndices[i] != -1) { filledLayers[i].SetState(filledIndices[i]); } } for (int i = 0; i < emptyLayers.Length; ++i) { if (emptyLayers[i] == null) { Debug.LogError("A null layer sprite was encountered on control \"" + name + "\". Please fill in the layer reference, or remove the empty element."); continue; } emptyIndices[i] = emptyLayers[i].GetStateIndex("empty"); if (emptyIndices[i] != -1) { emptyLayers[i].SetState(emptyIndices[i]); } } if (!disableEmptyBar) { // Create our other sprite for the // empty/background portion: GameObject emptyObj = new GameObject(); emptyObj.name = name + " - Empty Bar"; emptyObj.transform.parent = transform; emptyObj.transform.localPosition = Vector3.zero; emptyObj.transform.localScale = Vector3.one; emptyObj.transform.localRotation = Quaternion.identity; emptyObj.layer = gameObject.layer; emptySprite = (AutoSprite)emptyObj.AddComponent(typeof(AutoSprite)); emptySprite.plane = plane; emptySprite.autoResize = autoResize; emptySprite.pixelPerfect = pixelPerfect; emptySprite.persistent = persistent; emptySprite.ignoreClipping = ignoreClipping; emptySprite.bleedCompensation = bleedCompensation; if (!managed) { emptySprite.renderer.sharedMaterial = renderer.sharedMaterial; } else { if (manager != null) { emptySprite.Managed = managed; manager.AddSprite(emptySprite); emptySprite.SetDrawLayer(drawLayer); // Knob should be drawn in front of the bar } else { Debug.LogError("Sprite on object \"" + name + "\" not assigned to a SpriteManager!"); } } emptySprite.color = color; emptySprite.SetAnchor(anchor); emptySprite.Setup(width, height, m_spriteMesh.material); if (states[1].spriteFrames.Length != 0) { emptySprite.animations = new UVAnimation[1]; emptySprite.animations[0] = new UVAnimation(); emptySprite.animations[0].SetAnim(states[1], 0); emptySprite.PlayAnim(0, 0); } emptySprite.renderCamera = renderCamera; emptySprite.Hide(IsHidden()); if (container != null) { container.AddChild(emptyObj); } } Value = m_value; SetState(0); } // Since hiding while managed depends on // setting our mesh extents to 0, and the // foregoing code causes us to not be set // to 0, re-hide ourselves: if (managed && m_hidden) { Hide(true); } }
protected override void Start() { base.Start(); // Create a TextMesh object if none exists: if (spriteText == null) { Text = " "; Text = ""; } if(spriteText != null) { origTextPos = spriteText.transform.localPosition; SetMargins(margins); } // Set the insertion point to the end by default: insert = Text.Length; // Runtime init stuff: if (Application.isPlaying) { // Create a default collider if none exists: if (collider == null) AddCollider(); // Create our caret and hide it by default: GameObject go = new GameObject(); go.name = name + " - caret"; go.transform.parent = transform; go.transform.localPosition = Vector3.zero; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; go.layer = gameObject.layer; caret = (AutoSprite)go.AddComponent(typeof(AutoSprite)); caret.plane = plane; caret.offset = caretOffset; caret.SetAnchor(caretAnchor); caret.persistent = persistent; if (!managed) { if (caret.spriteMesh != null) ((SpriteMesh)caret.spriteMesh).material = renderer.sharedMaterial; } else { if (manager != null) { caret.Managed = managed; manager.AddSprite(caret); caret.SetDrawLayer(drawLayer + 1); // Caret should be drawn in front of the field graphic } else Debug.LogError("Sprite on object \"" + name + "\" not assigned to a SpriteManager!"); } caret.autoResize = autoResize; if (pixelPerfect) caret.pixelPerfect = pixelPerfect; else caret.SetSize(caretSize.x, caretSize.y); if (states[1].spriteFrames.Length != 0) { caret.animations = new UVAnimation[1]; caret.animations[0] = new UVAnimation(); caret.animations[0].SetAnim(states[1], 0); caret.PlayAnim(0, 0); } caret.SetCamera(renderCamera); caret.Hide(true); transitions[1].list[0].MainSubject = caret.gameObject; PositionCaret(); if (container != null) container.AddChild(caret.gameObject); } cachedPos = transform.position; cachedRot = transform.rotation; cachedScale = transform.lossyScale; CalcClippingRect(); }