示例#1
0
    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;
    }
示例#2
0
    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);
        }
    }
示例#3
0
 private void Awake()
 {
     if (_instance == null)
     {
         _instance = this;
     }
     else
     {
         Destroy(this);
     }
 }
示例#4
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        EntityViewer viewer = target as EntityViewer;

        if (GUILayout.Button("Update Roots"))
        {
            viewer.UpdateRoots();
        }
    }
示例#5
0
    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);
    }
示例#6
0
    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);
    }