예제 #1
0
    public void Sort_renderer(GameObject object_to_sort, HexagonCell _target_location)
    {
        Anima2D.SpriteMeshInstance Sprite_Mesh = object_to_sort.GetComponent <Anima2D.SpriteMeshInstance>();
        if (Sprite_Mesh != null)
        {
            Sprite_Mesh.sortingOrder = Sprite_Mesh.GetComponent <Mesh_Layer>()._ordered_layer
                                       + ((_target_location.coords.X_coord + _target_location.coords.Y_coord) * Static_Variable_Container.max_sprite_sort);
        }

        SpriteRenderer sprite_rend = object_to_sort.GetComponent <SpriteRenderer>();

        if (sprite_rend != null)
        {
            sprite_rend.sortingOrder = sprite_rend.GetComponent <Mesh_Layer>()._ordered_layer
                                       + ((_target_location.coords.X_coord + _target_location.coords.Y_coord) * Static_Variable_Container.max_sprite_sort);
        }

        Canvas canvas_rend = object_to_sort.GetComponent <Canvas>();

        if (canvas_rend != null)
        {
            canvas_rend.sortingOrder = canvas_rend.GetComponent <Mesh_Layer>()._ordered_layer
                                       + ((_target_location.coords.X_coord + _target_location.coords.Y_coord) * Static_Variable_Container.max_sprite_sort);
        }
    }
    protected void Start()
    {
        propertyBlock = new MaterialPropertyBlock();
        if (transform.Find("Sprite") != null)
        {
            if (transform.Find("Sprite").transform.Find("Body") != null)
            {
                spriteMeshInstance = transform.Find("Sprite").transform.Find("Body").GetComponent <Anima2D.SpriteMeshInstance>();
                Material mat = Instantiate(spriteMeshInstance.GetComponent <Anima2D.SpriteMeshInstance>().sharedMaterial);
                //skinnedMeshRenderer.material = mat;
                spriteMeshInstance.GetComponent <Anima2D.SpriteMeshInstance>().sharedMaterial = mat;
            }
            liquidSprite = transform.Find("Sprite").transform.Find("Liquid").GetComponent <SpriteRenderer>();
        }

        if (liquidSprite != null)
        {
            liquidSprite.color = phColorDictionary[Mathf.FloorToInt(phValue + 0.1f)];
        }
        else
        {
            PhTransitionMechanic = false;
        }

        //Checking for the sprite mesh renderer
        if (spriteMeshInstance != null)
        {
            spriteMeshInstance.GetComponent <Renderer>().GetPropertyBlock(propertyBlock);
            propertyBlock.SetColor("_Color", initialCharacterColor);
            spriteMeshInstance.GetComponent <Renderer>().SetPropertyBlock(propertyBlock);

            if (PhTransitionMechanic && revealpH)
            {
                Debug.Log("Changed color");
                spriteMeshInstance.sharedMaterial.SetColor("_LiquidColor", phColorDictionary[Mathf.FloorToInt(phValue + 0.1f)]);
            }
        }
    }
        void DoSetSkinnedRenderer()
        {
            SpriteMesh spriteMesh = mSpriteMeshInstance.spriteMesh;

            if (spriteMesh)
            {
                MeshFilter   meshFilter   = mSpriteMeshInstance.GetComponent <MeshFilter>();
                MeshRenderer meshRenderer = mSpriteMeshInstance.GetComponent <MeshRenderer>();
                Material     material     = null;
                if (meshFilter)
                {
                    DestroyImmediate(meshFilter);
                }
                if (meshRenderer)
                {
                    material = meshRenderer.sharedMaterial;
                    DestroyImmediate(meshRenderer);
                }

                string path = AssetDatabase.GetAssetPath(spriteMesh);

                if (!material)
                {
                    material = AssetDatabase.LoadAssetAtPath(path, typeof(Material)) as Material;
                }

                Mesh mesh = AssetDatabase.LoadAssetAtPath(path, typeof(Mesh)) as Mesh;

                SkinnedMeshRenderer skinnedMeshRenderer = mSpriteMeshInstance.GetComponent <SkinnedMeshRenderer>();

                if (!skinnedMeshRenderer)
                {
                    skinnedMeshRenderer = mSpriteMeshInstance.gameObject.AddComponent <SkinnedMeshRenderer>();
                }

                if (skinnedMeshRenderer)
                {
                    skinnedMeshRenderer.sharedMesh     = mesh;
                    skinnedMeshRenderer.sharedMaterial = material;

                    skinnedMeshRenderer.bones = mSpriteMeshInstance.bones.ConvertAll(bone => bone.transform).ToArray();

                    if (mSpriteMeshInstance.bones.Count > 0)
                    {
                        skinnedMeshRenderer.rootBone = mSpriteMeshInstance.bones[0].transform;
                    }
                }
            }

            mSpriteMeshInstance.UpdateRenderer();
        }