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); }
// 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(); }
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); } }
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; } } } } }
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; } } } } }
// 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; }
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); } }
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; } } } } }
// 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; }
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); } }
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; } } } } }
// 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(); }
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); } }