Exemplo n.º 1
0
	void MapIconClick(mapicon_listitem_script theMapIcon)
	{
		if (itsListClickIcons.Contains(theMapIcon.itsMapIcon))
		{
			RemoveClickMarker(theMapIcon);
		}
		else
		{
			LogInfo("Click on map icon:"+theMapIcon.itsMapIcon.GetGameObjectName(),name,this);
			EventMouseMapIconClicked.Trigger(this,new KGFMarkerEventArgs(theMapIcon.itsMapIcon));
		}
	}
Exemplo n.º 2
0
	void MapIconLeave(mapicon_listitem_script theMapIcon)
	{
		if (theMapIcon != null)
		{
			LogInfo("Mouse left map icon:"+theMapIcon.itsMapIcon.GetGameObjectName(),name,this);
			
			itsMapIconHoveredCurrent = null;
			EventMouseMapIconLeft.Trigger(this,new KGFMarkerEventArgs(theMapIcon.itsMapIcon));
		}
	}
Exemplo n.º 3
0
	void MapIconEnter(mapicon_listitem_script theMapIcon)
	{
		if (itsMapIconHoveredCurrent != theMapIcon)
		{
			LogInfo("Mouse entered map icon:"+theMapIcon.itsMapIcon.GetGameObjectName(),name,this);
			
			itsMapIconHoveredCurrent = theMapIcon;
			EventMouseMapIconEntered.Trigger(this,new KGFMarkerEventArgs(theMapIcon.itsMapIcon));
		}
	}
Exemplo n.º 4
0
	/// <summary>
	/// Check if the mouse is over the are of a map icon and send the events
	/// </summary>
	void UpdateMapIconHover(out bool theClickOnIcon)
	{
		theClickOnIcon = false;
//		if (GetPanningActive())
//		{
//			if (itsMapIconHoveredCurrent != null)
//			{
//				MapIconLeave(itsMapIconHoveredCurrent);
//				itsMapIconHoveredCurrent = null;
//			}
//			return;
//		}
		
		Vector2 aMousePosition = Input.mousePosition;
		aMousePosition.y = Screen.height - aMousePosition.y;
		
		// check if mouse is in area of the map
		if (itsTargetRect.Contains(aMousePosition) && !itsMouseEnteredMap)
		{
			itsMouseEnteredMap = true;
			EventMouseMapEntered.Trigger(this);
			LogInfo("Mouse entered map",name,this);
		}
		else if (!itsTargetRect.Contains(aMousePosition) && itsMouseEnteredMap)
		{
			itsMouseEnteredMap = false;
			EventMouseMapLeft.Trigger(this);
			LogInfo("Mouse left map",name,this);
		}
		
		// cleanup old hovered item
		if (itsMapIconHoveredCurrent != null)
		{
			if (((MonoBehaviour)itsMapIconHoveredCurrent.itsMapIcon) == null)
				itsMapIconHoveredCurrent = null;
		}
		
		// check if mouse is near any map icon
		Vector3? aClickWorldPointNull = GetMouseToWorldPointOnMap();
		if (aClickWorldPointNull != null)
		{
			bool aFoundItem = false;
			
			for (int i=0;i<itsListMapIcons.Count;i++)
			{
				Vector3 aClickWorldPoint = aClickWorldPointNull.Value;
				aClickWorldPoint = ChangeVectorHeight(aClickWorldPoint,GetHeightIcons(i));
				
				mapicon_listitem_script aListItem = itsListMapIcons[i];
				float aRepSize = aListItem.GetRepresentationSize().magnitude / 2;
				if (Vector3.Distance(aListItem.itsRepresentationInstanceTransform.position,aClickWorldPoint) < aRepSize)
				{
					MapIconEnter(aListItem);
					aFoundItem = true;
					break;
				}
			}
			
			if (itsMapIconHoveredCurrent != null && Input.GetMouseButtonUp(0))
			{
				{
					theClickOnIcon = true;
					MapIconClick(itsMapIconHoveredCurrent);
				}
			}
			
			if (!aFoundItem && itsMapIconHoveredCurrent != null)
			{
				MapIconLeave(itsMapIconHoveredCurrent);
			}
		}
	}
Exemplo n.º 5
0
	/// <summary>
	/// Compares the depth of icons
	/// </summary>
	/// <param name="theMapIcon1"></param>
	/// <param name="theMapIcon2"></param>
	/// <returns></returns>
	private int CompareMapIcons(mapicon_listitem_script theMapIcon1, mapicon_listitem_script theMapIcon2)
	{
		return theMapIcon1.itsMapIcon.GetDepth().CompareTo(theMapIcon2.itsMapIcon.GetDepth());
	}
Exemplo n.º 6
0
	/// <summary>
	/// Register map icon
	/// </summary>
	/// <param name="theMapIcon"></param>
	void RegisterIcon(KGFIMapIcon theMapIcon)
	{
		// create copy of static representation
		GameObject aSpatialArrow = null;
		// create copy of representation
		GameObject aSpatialNewMapIcon = null;
		
		aSpatialNewMapIcon = theMapIcon.GetRepresentation();
		if(aSpatialNewMapIcon == null)
		{
			LogError("missing icon representation for: "+theMapIcon.GetGameObjectName(),name,this);
			return;
		}
		
		UpdateIconLayer(theMapIcon);
		
		if (theMapIcon.GetTextureArrow() != null)
		{
			aSpatialArrow = GenerateTexturePlane(theMapIcon.GetTextureArrow(),itsDataModuleMinimap.itsShaders.itsShaderMapIcon);
			aSpatialArrow.transform.parent = itsContainerIconArrows;
			aSpatialArrow.transform.localPosition = Vector3.zero;
			aSpatialArrow.transform.localScale = Vector3.one;
			aSpatialArrow.GetComponent<MeshRenderer>().material.renderQueue = 3200;
			SetLayerRecursively(aSpatialArrow.gameObject,itsLayerMinimap);
		}
		
		// reparent it
		aSpatialNewMapIcon.transform.parent = itsContainerIcons;
		aSpatialNewMapIcon.transform.position = Vector3.zero;
		SetLayerRecursively(aSpatialNewMapIcon.gameObject,itsLayerMinimap);

		// remember it
		mapicon_listitem_script aNewItem = new mapicon_listitem_script();
		aNewItem.itsModule = this;
		aNewItem.itsMapIcon = theMapIcon;
		aNewItem.itsRepresentationInstance = aSpatialNewMapIcon;
		aNewItem.itsRepresentationInstanceTransform = aSpatialNewMapIcon.transform;
		aNewItem.itsRotate = theMapIcon.GetRotate();
		
		aNewItem.itsRepresentationArrowInstance = aSpatialArrow;
		aNewItem.itsMapIconTransform = theMapIcon.GetTransform();
		aNewItem.SetVisibility(true);
		if (aSpatialArrow != null)
			aNewItem.itsRepresentationArrowInstanceTransform = aSpatialArrow.transform;
		aNewItem.itsCachedRepresentationSize = GetGameObjectSize(aSpatialNewMapIcon);
		itsListMapIcons.Add(aNewItem);
		itsListMapIcons.Sort(CompareMapIcons);
		
		aNewItem.UpdateIcon();
		UpdateIconScale();
		
		LogInfo(string.Format("Added icon of category '{0}' for '{1}'",theMapIcon.GetCategory(),theMapIcon.GetTransform().name),name,this);
	}