private static List <AnimAttribute> ReadUsageAttributes(XmlNode use)
        {
            List <AnimAttribute> animAttributes = new List <AnimAttribute>();

            foreach (XmlNode attribute in use.ChildNodes)
            {
                if (attribute.Name == "attr")
                {
                    AnimAttribute aa = new AnimAttribute()
                    {
                        Name = attribute.Attributes["name"].Value
                    };

                    foreach (XmlAttribute att in attribute.Attributes)
                    {
                        if (att.Name == "startMs")
                        {
                            aa.StartMs = int.Parse(att.Value);
                        }
                        else
                        {
                            aa.Properties.Add(att.Name, att.Value);
                        }
                    }

                    animAttributes.Add(aa);
                }
            }
            return(animAttributes);
        }
Beispiel #2
0
    // Update is called once per frame
    void Update()
    {
        mFrameAttrOld = mFrameAttr;
        mAnimAttrOld  = mAnimAttr;
        if ((mCurrentAnm == null) || (mCurrentAnm.frames.Length <= 1))
        {
            return;
        }
        if (!mEnabled)
        {
            return;
        }

        float oldPtr    = mAnimPtr;
        float animSpeed = Time.deltaTime * (fps < 0.1f?0.1f:fps) * (!reverse?1.0f:-1.0f);

        mAnimPtr += animSpeed;
        if (!reverse)
        {
            mIsEndOfFrame = ((mAnimPtr + animSpeed) > (float)mCurrentAnm.frames.Length);
        }
        else
        {
            mIsEndOfFrame = ((mAnimPtr + animSpeed) < 0.0f);
        }
        if (mCurrentAnm.loop)
        {
            mAnimPtr = (mAnimPtr) % (float)mCurrentAnm.frames.Length;
            if (mAnimPtr < 0.0f)
            {
                mAnimPtr += (float)mCurrentAnm.frames.Length;
            }
        }
        else
        {
            if (!reverse)
            {
                mAnimPtr = Mathf.Min(mAnimPtr, (float)mCurrentAnm.frames.Length - ANIM_TIME_MIN);
            }
            else
            {
                mAnimPtr = Mathf.Max(0.0f, mAnimPtr);
            }
        }
        if (Mathf.FloorToInt(oldPtr) != Mathf.FloorToInt(mAnimPtr))
        {
            updateAnim();
        }
        updateMesh();
    }
Beispiel #3
0
    void Awake()
    {
        if (!this.enabled)
        {
            return;
        }

        mEnabled    = true;
        mFrameAttr  = mFrameAttrOld = null;
        mAnimAttr   = mAnimAttrOld = null;
        mCurrentAnm = null;
        mAnimPtr    = 0.0f;
        mSprRend    = GetComponent <SpriteRenderer>();
        if (playOnAwake != "")
        {
            PlayAnimation(playOnAwake);
        }
    }
Beispiel #4
0
    private void updateAnim()
    {
        int animFrame = Mathf.FloorToInt(mAnimPtr);

        if ((mCurrentAnm != null) && (animFrame < mCurrentAnm.frames.Length))
        {
            int viewFrame = mCurrentAnm.frames[animFrame];
            if (mSprRend != null)
            {
                mSprRend.sprite = frames2D[viewFrame];
            }

            // attribute取得
            mFrameAttr = null;
            if (frameAttrs != null)
            {
                for (int ii = 0; ii < frameAttrs.Length; ++ii)
                {
                    if (frameAttrs[ii].frame == viewFrame)
                    {
                        mFrameAttr = frameAttrs[ii];
                        break;
                    }
                }
            }
            mAnimAttr = null;
            if (mCurrentAnm.attrs != null)
            {
                for (int ii = 0; ii < mCurrentAnm.attrs.Length; ++ii)
                {
                    if (mCurrentAnm.attrs[ii].frame == animFrame)
                    {
                        mAnimAttr = mCurrentAnm.attrs[ii];
                        break;
                    }
                }
            }
        }
    }
Beispiel #5
0
    private void updateAnim()
    {
        int animFrame = Mathf.FloorToInt(mAnimPtr);

        if ((mCurrentAnm != null) && (animFrame < mCurrentAnm.frames.Length))
        {
            int viewFrame = mCurrentAnm.frames[animFrame];
            mUvPos = mUvOfs + getDefFrame(viewFrame);

            // attribute取得
            mFrameAttr = null;
            if (frameAttrs != null)
            {
                for (int ii = 0; ii < frameAttrs.Length; ++ii)
                {
                    if (frameAttrs[ii].frame == viewFrame)
                    {
                        mFrameAttr = frameAttrs[ii];
                        break;
                    }
                }
            }
            mAnimAttr = null;
            if (mCurrentAnm.attrs != null)
            {
                for (int ii = 0; ii < mCurrentAnm.attrs.Length; ++ii)
                {
                    if (mCurrentAnm.attrs[ii].frame == animFrame)
                    {
                        mAnimAttr = mCurrentAnm.attrs[ii];
                        break;
                    }
                }
            }
        }
    }
Beispiel #6
0
    // Update is called once per frame
    void Update()
    {
        mFrameAttrOld = mFrameAttr;
        mAnimAttrOld  = mAnimAttr;
        if ((mCurrentAnm == null) || (mCurrentAnm.frames.Length <= 1))
        {
            return;
        }
        if (!mEnabled)
        {
            return;
        }

        float oldPtr    = mAnimPtr;
        float animSpeed = Time.deltaTime * (fps < 0.1f?0.1f:fps) * (!reverse?1.0f:-1.0f);

        mAnimPtr += animSpeed;
        if (!reverse)
        {
            mIsEndOfFrame = ((mAnimPtr + animSpeed) > (float)mCurrentAnm.frames.Length);
        }
        else
        {
            mIsEndOfFrame = ((mAnimPtr + animSpeed) < 0.0f);
        }
        if (mCurrentAnm.loop)
        {
            mAnimPtr = (mAnimPtr) % (float)mCurrentAnm.frames.Length;
            if (mAnimPtr < 0.0f)
            {
                mAnimPtr += (float)mCurrentAnm.frames.Length;
            }
        }
        else
        {
            if (!reverse)
            {
                mAnimPtr = Mathf.Min(mAnimPtr, (float)mCurrentAnm.frames.Length - ANIM_TIME_MIN);
            }
            else
            {
                mAnimPtr = Mathf.Max(0.0f, mAnimPtr);
            }
        }

        if (Mathf.FloorToInt(oldPtr) != Mathf.FloorToInt(mAnimPtr))
        {
            updateAnim();
        }

        Vector3 scl = transform.localScale;

        scl.x = Mathf.Abs(scl.x);
        scl.y = Mathf.Abs(scl.y);
        if ((flip == FLIP.LR) || (flip == FLIP.LRUD))
        {
            scl.x *= -1.0f;
        }
        if ((flip == FLIP.UD) || (flip == FLIP.LRUD))
        {
            scl.y *= -1.0f;
        }
        transform.localScale = scl;
    }
Beispiel #7
0
    void Awake()
    {
        if (!this.enabled)
        {
            return;
        }

        if (frames2D.Length > 0)
        {
            scaleAtUv = setOnGrid = true;
            frames    = new Vector2[frames2D.Length];
            for (int ii = 0; ii < frames2D.Length; ++ii)
            {
                float x = frames2D[ii].rect.x / frames2D[ii].rect.width;
                float y = (frames2D[ii].texture.height - frames2D[ii].rect.y) / frames2D[ii].rect.height - 1.0f;
                frames[ii] = new Vector2(x, y);
            }
        }

        mEnabled = true;
        mTgetMat = outMatreial != null ? outMatreial : renderer != null ? renderer.sharedMaterial : null;
        if ((mTgetMat != null) && (mTgetMat.mainTexture != null))
        {
            mTexSizeInv = new  Vector2(1.0f / (float)(mTgetMat.mainTexture.width), 1.0f / (float)(mTgetMat.mainTexture.height));
        }
        Mesh nowMesh = getMesh();

        if (nowMesh == null)
        {
            MeshFilter meshFilter = GetComponent <MeshFilter>();
            if (meshFilter == null)
            {
                meshFilter = gameObject.AddComponent <MeshFilter>();
            }
            nowMesh         = initMesh4(new Mesh());
            meshFilter.mesh = meshFilter.sharedMesh = nowMesh;
        }
        {
            Mesh sharedMesh = GetComponent <MeshFilter>().sharedMesh;
            mDefUvs  = new Vector2[sharedMesh.vertexCount];
            mDefVtcs = new Vector3[sharedMesh.vertexCount];
            for (int ii = 0; ii < sharedMesh.vertexCount; ++ii)
            {
                mDefUvs[ii]  = new Vector2(sharedMesh.uv[ii].x, sharedMesh.uv[ii].y);
                mDefVtcs[ii] = new Vector3(sharedMesh.vertices[ii].x, sharedMesh.vertices[ii].y, sharedMesh.vertices[ii].z);
            }
        }
        mFrameAttr  = mFrameAttrOld = null;
        mAnimAttr   = mAnimAttrOld = null;
        mCurrentAnm = null;
        mAnimPtr    = 0.0f;
        mUvOfs      = offset;
        mUvOfs.y   *= -1.0f;
        if (setOnGrid)
        {
            mUvOfs = Vector3.Scale(mUvOfs, mDefSize);
        }
        if (!scaleAtUv)
        {
            mUvOfs.Scale(mTexSizeInv);
        }
        if (outMatreial != null)
        {
            Vector2 sz = mDefSize;
            if (!scaleAtUv)
            {
                sz.x /= (float)(outMatreial.GetTexture("_MainTex").width);
                sz.y /= (float)(outMatreial.GetTexture("_MainTex").height);
            }
            outMatreial.SetTextureScale("_MainTex", sz);
        }
        if (playOnAwake != "")
        {
            PlayAnimation(playOnAwake);
        }
    }
Beispiel #8
0
    private void updateAnim()
    {
        int animFrame = Mathf.FloorToInt(mAnimPtr);
        if((mCurrentAnm!=null)&&(animFrame < mCurrentAnm.frames.Length)){
            int viewFrame = mCurrentAnm.frames[animFrame];
            if(mSprRend!=null){
                mSprRend.sprite = frames2D[viewFrame];
            }
            if(mCrossFadeSprRend!=null){
                float animSpeed = (1.0f+Time.deltaTime*(fps<0.1f?0.1f:fps)) * (!reverse?1.0f:-1.0f);
                float nextAnimPtr = updateAnimPtr(mAnimPtr,animSpeed);
                int animFrame0 = Mathf.FloorToInt(nextAnimPtr);
                if((mCurrentAnm!=null)&&(animFrame0 < mCurrentAnm.frames.Length)){
                    int viewFrame0 = mCurrentAnm.frames[animFrame0];
                    mCrossFadeSprRend.sprite = frames2D[viewFrame0];
                }
            }

            // attribute取得
            mFrameAttr = null;
            if(frameAttrs!=null){
                for( int ii = 0; ii < frameAttrs.Length; ++ii){
                    if(frameAttrs[ii].frame==viewFrame){
                        mFrameAttr = frameAttrs[ii];
                        break;
                    }
                }
            }
            mAnimAttr = null;
            if(mCurrentAnm.attrs != null){
                for( int ii = 0; ii < mCurrentAnm.attrs.Length; ++ii){
                    if(mCurrentAnm.attrs[ii].frame==animFrame){
                        mAnimAttr = mCurrentAnm.attrs[ii];
                        break;
                    }
                }
            }
        }
    }
Beispiel #9
0
    // Update is called once per frame
    void Update()
    {
        mFrameAttrOld = mFrameAttr;
        mAnimAttrOld = mAnimAttr;
        if((mCurrentAnm==null)||(mCurrentAnm.frames.Length<=1)) return;
        if(!mEnabled) return;

        float oldPtr = mAnimPtr;
        float animSpeed = Time.deltaTime*(fps<0.1f?0.1f:fps) * (!reverse?1.0f:-1.0f);
        mAnimPtr = updateAnimPtr(mAnimPtr,animSpeed);
        if(Mathf.FloorToInt(oldPtr) != Mathf.FloorToInt(mAnimPtr)){
            updateAnim();
        }
        if(mCrossFadeSprRend!=null){
            float fadeRate = reverse ? (1.0f-(mAnimPtr%1.0f)) : (mAnimPtr%1.0f);
            fadeRate = Mathf.Clamp((fadeRate-1.0f+crossFadeRate)/crossFadeRate,0.0f,1.0f);
            Color col = mSprRend.color;
            col = new Color(col.r,col.g,col.b, col.a*fadeRate);
            mCrossFadeSprRend.color = col;
        }

        Vector3 scl = transform.localScale;
        scl.x = Mathf.Abs(scl.x);
        scl.y = Mathf.Abs(scl.y);
        if((flip == FLIP.LR)||(flip == FLIP.LRUD)){
            scl.x *= -1.0f;
        }
        if((flip == FLIP.UD)||(flip == FLIP.LRUD)){
            scl.y *= -1.0f;
        }
        transform.localScale = scl;
    }
Beispiel #10
0
    void Awake()
    {
        if(!this.enabled) return;

        mEnabled = true;
        mFrameAttr = mFrameAttrOld = null;
        mAnimAttr = mAnimAttrOld = null;
        mCurrentAnm = null;
        mAnimPtr = 0.0f;
        mSprRend = GetComponent<SpriteRenderer>();
        if(playOnAwake!=""){
            PlayAnimation(playOnAwake);
        }
    }
Beispiel #11
0
    private void updateAnim()
    {
        int animFrame = Mathf.FloorToInt(mAnimPtr);
        if((mCurrentAnm!=null)&&(animFrame < mCurrentAnm.frames.Length)){
            int viewFrame = mCurrentAnm.frames[animFrame];
            mUvPos = mUvOfs+getDefFrame(viewFrame);

            // attribute取得
            mFrameAttr = null;
            if(frameAttrs!=null){
                for( int ii = 0; ii < frameAttrs.Length; ++ii){
                    if(frameAttrs[ii].frame==viewFrame){
                        mFrameAttr = frameAttrs[ii];
                        break;
                    }
                }
            }
            mAnimAttr = null;
            if(mCurrentAnm.attrs != null){
                for( int ii = 0; ii < mCurrentAnm.attrs.Length; ++ii){
                    if(mCurrentAnm.attrs[ii].frame==animFrame){
                        mAnimAttr = mCurrentAnm.attrs[ii];
                        break;
                    }
                }
            }
        }
    }
Beispiel #12
0
    // Update is called once per frame
    void Update()
    {
        mFrameAttrOld = mFrameAttr;
        mAnimAttrOld = mAnimAttr;
        if((mCurrentAnm==null)||(mCurrentAnm.frames.Length<=1)) return;
        if(!mEnabled) return;

        float oldPtr = mAnimPtr;
        float animSpeed = Time.deltaTime*(fps<0.1f?0.1f:fps) * (!reverse?1.0f:-1.0f);
        mAnimPtr = updateAnimPtr(mAnimPtr,animSpeed);
        if(Mathf.FloorToInt(oldPtr) != Mathf.FloorToInt(mAnimPtr)){
            updateAnim();
        }
        updateMesh();
    }
Beispiel #13
0
    void Awake()
    {
        if(!this.enabled) return;

        if(frames2D.Length>0){
            scaleAtUv = setOnGrid = true;
            frames = new Vector2[frames2D.Length];
            for(int ii = 0; ii < frames2D.Length; ++ii){
                float x = frames2D[ii].rect.x / frames2D[ii].rect.width;
                float y = (frames2D[ii].texture.height-frames2D[ii].rect.y) / frames2D[ii].rect.height -1.0f;
                frames[ii] = new Vector2(x,y);
            }
        }

        mEnabled = true;
        mTgetMat = outMatreial!=null ? outMatreial : renderer!=null ? renderer.sharedMaterial : null;
        if((mTgetMat != null)&&(mTgetMat.mainTexture!=null)){
            mTexSizeInv = new  Vector2(1.0f/(float)(mTgetMat.mainTexture.width),1.0f/(float)(mTgetMat.mainTexture.height));
        }
        Mesh nowMesh = getMesh();
        if(nowMesh==null){
            MeshFilter meshFilter = GetComponent<MeshFilter>();
            if(meshFilter==null){
                meshFilter = gameObject.AddComponent<MeshFilter>();
            }
            nowMesh = initMesh4(new Mesh());
            meshFilter.mesh = meshFilter.sharedMesh = nowMesh;
        }
        {
            Mesh sharedMesh = GetComponent<MeshFilter>().sharedMesh;
            mDefUvs = new Vector2[sharedMesh.vertexCount];
            mDefVtcs = new Vector3[sharedMesh.vertexCount];
            for(int ii = 0; ii < sharedMesh.vertexCount; ++ii){
                mDefUvs[ii] = new Vector2(sharedMesh.uv[ii].x,sharedMesh.uv[ii].y);
                mDefVtcs[ii] = new Vector3(sharedMesh.vertices[ii].x,sharedMesh.vertices[ii].y,sharedMesh.vertices[ii].z);
            }
        }
        mFrameAttr = mFrameAttrOld = null;
        mAnimAttr = mAnimAttrOld = null;
        mCurrentAnm = null;
        mAnimPtr = 0.0f;
        mUvOfs = offset;
        mUvOfs.y *= -1.0f;
        if(setOnGrid){
            mUvOfs = Vector3.Scale(mUvOfs,mDefSize );
        }
        if(!scaleAtUv){
            mUvOfs.Scale(mTexSizeInv);
        }
        if(outMatreial!=null){
            Vector2 sz = mDefSize;
            if(!scaleAtUv){
                sz.x /= (float)(outMatreial.GetTexture("_MainTex").width);
                sz.y /= (float)(outMatreial.GetTexture("_MainTex").height);
            }
            outMatreial.SetTextureScale("_MainTex",sz);
        }
        if(playOnAwake!=""){
            PlayAnimation(playOnAwake);
        }
    }