/** * Draws an icon at the point of contact on the object, if appropriate. */ public virtual void DrawGrabIcon() { if (isHeld && showIcon && Camera.main.WorldToScreenPoint(transform.position).z > 0f && icon != null) { Vector3 screenPosition = Camera.main.WorldToScreenPoint(grabPoint.position); icon.Draw(new Vector3(screenPosition.x, screenPosition.y)); } }
private void DrawIcon(Vector2 offset, CursorIconBase icon, bool isLook, bool canAnimate = true) { if (icon != null) { bool isNew = false; if (isLook && activeLookIcon != icon) { activeLookIcon = icon; isNew = true; icon.Reset(); } else if (!isLook && activeIcon != icon) { activeIcon = icon; isNew = true; icon.Reset(); } if (KickStarter.cursorManager.cursorRendering == CursorRendering.Hardware) { if (icon.isAnimated) { Texture2D animTex = icon.GetAnimatedTexture(canAnimate); if (icon.GetName() != lastCursorName) { lastCursorName = icon.GetName(); RecordCursorTexture(animTex); SetHardwareCursor(currentCursorTexture2D, icon.clickOffset); } } else if (isNew) { RecordCursorTexture(icon.texture); SetHardwareCursor(currentCursorTexture2D, icon.clickOffset); } } else { Texture tex = icon.Draw(KickStarter.playerInput.GetMousePosition() + offset, canAnimate); RecordCursorTexture(tex); } } }
private void DrawIcon(Vector2 offset, CursorIconBase icon, bool isLook) { if (icon != null) { bool isNew = false; if (isLook && activeLookIcon != icon) { activeLookIcon = icon; icon.Reset(); } else if (!isLook && activeIcon != icon) { activeIcon = icon; isNew = true; icon.Reset(); } if (KickStarter.cursorManager.cursorRendering == CursorRendering.Hardware) { if (icon.isAnimated) { Texture2D animTex = icon.GetAnimatedTexture(); if (icon.GetName() != lastCursorName) { lastCursorName = icon.GetName(); Cursor.SetCursor(animTex, icon.clickOffset, CursorMode.Auto); } } else if (isNew) { Cursor.SetCursor(icon.texture, icon.clickOffset, CursorMode.Auto); } } else { icon.Draw(KickStarter.playerInput.GetMousePosition() + offset); } } }
private void DrawIcon(Vector2 offset, CursorIconBase icon, bool isLook, bool canAnimate = true) { if (icon != null) { bool isNew = false; if (isLook && activeLookIcon != icon) { activeLookIcon = icon; isNew = true; icon.Reset (); } else if (!isLook && activeIcon != icon) { activeIcon = icon; isNew = true; icon.Reset (); } if (KickStarter.cursorManager.cursorRendering == CursorRendering.Hardware) { if (icon.isAnimated && canAnimate) { Texture2D animTex = icon.GetAnimatedTexture (); if (icon.GetName () != lastCursorName) { lastCursorName = icon.GetName (); Cursor.SetCursor (animTex, icon.clickOffset, CursorMode.Auto); } } else if (isNew) { Cursor.SetCursor (icon.texture, icon.clickOffset, CursorMode.Auto); } } else { icon.Draw (KickStarter.playerInput.GetMousePosition () + offset, canAnimate); } } }
public void DrawHotspotIcon() { if (IsOn()) { Vector3 direction = (transform.position - Camera.main.transform.position); if (Vector3.Angle(direction, Camera.main.transform.forward) > 90f) { iconAlpha = 0f; return; } if (KickStarter.settingsManager.cameraPerspective != CameraPerspective.TwoD && KickStarter.settingsManager.occludeIcons) { // Is icon occluded? Ray ray = new Ray(Camera.main.transform.position, GetIconPosition() - Camera.main.transform.position); RaycastHit hit; if (Physics.Raycast(ray, out hit, KickStarter.settingsManager.hotspotRaycastLength, 1 << LayerMask.NameToLayer(KickStarter.settingsManager.hotspotLayer))) { if (hit.collider.gameObject != this.gameObject) { iconAlpha = 0f; return; } } } if (KickStarter.playerInput.interactionMenuIsOn && KickStarter.settingsManager.hideIconUnderInteractionMenu) { iconAlpha = Mathf.Lerp(iconAlpha, 0f, Time.deltaTime * 5f); } else if (KickStarter.settingsManager.hotspotIconDisplay == HotspotIconDisplay.OnlyWhenHighlighting || KickStarter.settingsManager.hotspotIconDisplay == HotspotIconDisplay.OnlyWhenFlashing) { if (highlight) { if (KickStarter.settingsManager.hotspotIconDisplay == HotspotIconDisplay.OnlyWhenHighlighting) { iconAlpha = highlight.GetHighlightAlpha(); } else { iconAlpha = highlight.GetFlashAlpha(iconAlpha); } } else { Debug.LogWarning("Cannot display correct Hotspot Icon alpha on " + name + " because it has no associated Highlight object."); } } else if (KickStarter.settingsManager.hotspotIconDisplay == HotspotIconDisplay.Always) { iconAlpha = 1f; } else { iconAlpha = 0f; } } else { iconAlpha = 0f; return; } if (!KickStarter.mainCamera.IsPointInCamera(GetIconScreenPosition())) { return; } if (iconAlpha > 0f) { Color c = GUI.color; Color tempColor = c; c.a = iconAlpha; GUI.color = c; if (KickStarter.settingsManager.hotspotIcon == HotspotIcon.UseIcon) { CursorIconBase icon = GetMainIcon(); if (icon != null) { icon.Draw(GetIconScreenPosition()); } } else if (KickStarter.settingsManager.hotspotIconTexture != null) { GUI.DrawTexture(AdvGame.GUIBox(GetIconScreenPosition(), KickStarter.settingsManager.hotspotIconSize), KickStarter.settingsManager.hotspotIconTexture, ScaleMode.ScaleToFit, true, 0f); } GUI.color = tempColor; } }
/** * <summary>Draws an icon at the Hotspot's centre.</summary> * <param name = "inWorldSpace">If True, the icon shall be drawn as a sprite in world space, as opposed to an OnGUI graphic in screen space.</param> */ public void DrawHotspotIcon(bool inWorldSpace = false) { if (iconAlpha > 0f) { if (!KickStarter.mainCamera.IsPointInCamera(GetIconScreenPosition())) { return; } if (inWorldSpace) { if (iconRenderer == null) { GameObject iconOb = new GameObject(this.name + " - icon"); iconRenderer = iconOb.AddComponent <SpriteRenderer>(); iconOb.transform.localScale = Vector3.one * (25f * KickStarter.settingsManager.hotspotIconSize); if (GameObject.Find("_Hotspots") && GameObject.Find("_Hotspots").transform.eulerAngles == Vector3.zero) { iconOb.transform.parent = GameObject.Find("_Hotspots").transform; } } if (KickStarter.settingsManager.hotspotIcon == HotspotIcon.UseIcon) { CursorIconBase icon = GetMainIcon(); if (icon != null) { iconRenderer.sprite = icon.GetSprite(); } } else { if (iconSprite == null && KickStarter.settingsManager.hotspotIconTexture != null) { iconSprite = UnityEngine.Sprite.Create(KickStarter.settingsManager.hotspotIconTexture, new Rect(0f, 0f, KickStarter.settingsManager.hotspotIconTexture.width, KickStarter.settingsManager.hotspotIconTexture.height), new Vector2(0.5f, 0.5f)); } if (iconSprite != iconRenderer.sprite) { iconRenderer.sprite = iconSprite; } } iconRenderer.transform.position = GetIconPosition(); iconRenderer.transform.LookAt(iconRenderer.transform.position + KickStarter.mainCamera.transform.rotation * Vector3.forward, KickStarter.mainCamera.transform.rotation * Vector3.up); } else { if (iconRenderer != null) { GameObject.Destroy(iconRenderer.gameObject); iconRenderer = null; } Color c = GUI.color; Color tempColor = c; c.a = iconAlpha; GUI.color = c; if (KickStarter.settingsManager.hotspotIcon == HotspotIcon.UseIcon) { CursorIconBase icon = GetMainIcon(); if (icon != null) { icon.Draw(GetIconScreenPosition()); } } else if (KickStarter.settingsManager.hotspotIconTexture != null) { GUI.DrawTexture(AdvGame.GUIBox(GetIconScreenPosition(), KickStarter.settingsManager.hotspotIconSize), KickStarter.settingsManager.hotspotIconTexture, ScaleMode.ScaleToFit, true, 0f); } GUI.color = tempColor; } } if (inWorldSpace && iconRenderer != null) { Color tempColor = iconRenderer.color; tempColor.a = iconAlpha; iconRenderer.color = tempColor; } }