private void RenderEntityName(RaycastHit hit, EntityViewer target) { var nameTargetPosition = hit.collider.gameObject.transform.parent.position; EntityNameText.gameObject.transform.position = new Vector3(nameTargetPosition.x + 0.5f, nameTargetPosition.y, nameTargetPosition.z); EntityNameText.text = target.Entity.Status.name; }
private void MaybeInitLayer( int rendererLayer, EntityViewer bodyViewer, int viewId, ViewerType viewerType, int spriteOrder = 2 ) { var viewer = bodyViewer.Children.Find(it => it.ViewerType == viewerType); if (viewId != 0 && viewer == null) { var layerObject = new GameObject($"{viewerType}"); layerObject.layer = rendererLayer; layerObject.transform.SetParent(bodyViewer.transform, false); layerObject.transform.localPosition = Vector3.zero; var layerViewer = layerObject.AddComponent <EntityViewer>(); var sortingGroup = layerObject.AddComponent <SortingGroup>(); sortingGroup.sortingOrder = spriteOrder; layerViewer.Parent = bodyViewer; layerViewer.Entity = this; layerViewer.ViewerType = viewerType; bodyViewer.Children.Add(layerViewer); } else if (viewId == 0) { viewer?.gameObject.SetActive(false); } }
private void Awake() { if (_instance == null) { _instance = this; } else { Destroy(this); } }
public override void OnInspectorGUI() { base.OnInspectorGUI(); EntityViewer viewer = target as EntityViewer; if (GUILayout.Button("Update Roots")) { viewer.UpdateRoots(); } }
private void InitHead(int rendererLayer, EntityViewer bodyViewer) { var head = new GameObject("Head"); head.layer = rendererLayer; head.transform.SetParent(bodyViewer.transform, false); head.transform.localPosition = Vector3.zero; var headViewer = head.AddComponent <EntityViewer>(); var sortingGroup = head.AddComponent <SortingGroup>(); sortingGroup.sortingOrder = 1; headViewer.Parent = bodyViewer; headViewer.Entity = this; headViewer.ViewerType = ViewerType.HEAD; bodyViewer.Children.Add(headViewer); }
private void SetupViewer(EntityEquipInfo data, int rendererLayer) { var body = new GameObject("Body"); body.layer = rendererLayer; body.transform.SetParent(gameObject.transform, false); body.transform.localPosition = new Vector3(0.5f, 0.4f, 0.5f); body.AddComponent <Billboard>(); var sortingGroup = body.AddComponent <SortingGroup>(); sortingGroup.sortingOrder = 2; var bodyViewer = body.AddComponent <EntityViewer>(); bodyViewer.ViewerType = ViewerType.BODY; bodyViewer.Entity = this; bodyViewer.SpriteOffset = 0.5f; bodyViewer.HeadDirection = 0; bodyViewer.CurrentMotion = new EntityViewer.MotionRequest { Motion = SpriteMotion.Idle }; EntityViewer = bodyViewer; ShadowSize = 1f; // Add more options such as sex etc // Any other than PC has Head etc if (Type != EntityType.PC) { return; } InitHead(rendererLayer, bodyViewer); MaybeInitLayer(rendererLayer, bodyViewer, data.Weapon, ViewerType.WEAPON); MaybeInitLayer(rendererLayer, bodyViewer, data.Shield, ViewerType.SHIELD, 1); MaybeInitLayer(rendererLayer, bodyViewer, data.HeadTop, ViewerType.HEAD_TOP); MaybeInitLayer(rendererLayer, bodyViewer, data.HeadMid, ViewerType.HEAD_MID); MaybeInitLayer(rendererLayer, bodyViewer, data.HeadBottom, ViewerType.HEAD_BOTTOM); }