bool CheckSwingDone() { List <SwordFrame> swingDesc = Swings[swingIndex]; SwordFrame lastFrame = swingDesc[swingDesc.Count - 1]; return(swingElapsedTime > lastFrame.frameTime); }
void RecordSwordFrame() { SwordFrame thisFrame = new SwordFrame(); thisFrame.hiltPos = this.hiltPos; thisFrame.tipPos = this.tipPos; thisFrame.frameTime = Time.realtimeSinceStartup; recordedFrames.Add(thisFrame); }
void DrawSwordFrame(SwordFrame f, Color[] pixels, float cityScale, float alpha) { Vector2 worldTipPos = ConvertSwordCoordsToWorldCoords(f.tipPos); Vector2 worldHiltPos = ConvertSwordCoordsToWorldCoords(f.hiltPos); Vector2Int screenTipPos = myCity.WorldToScreen(worldTipPos); Vector2Int screenHiltPos = myCity.WorldToScreen(worldHiltPos); FakeBresenham(screenTipPos, screenHiltPos, pixels, Color.white, alpha); //Bresenham(screenTipPos, screenHiltPos, pixels, Color.white, alpha); }
void InterpSwordFrames(int index0, int index1, float interpFactor) { List <SwordFrame> swingDesc = Swings[swingIndex]; SwordFrame prevFrame = swingDesc[index0]; SwordFrame nextFrame = swingDesc[index1]; Vector2 hiltDelta = nextFrame.hiltPos - prevFrame.hiltPos; this.hiltPos = prevFrame.hiltPos + hiltDelta * interpFactor; Vector2 tipDelta = nextFrame.tipPos - prevFrame.tipPos; this.tipPos = prevFrame.tipPos + tipDelta * interpFactor; }
void PurgeSwordFrames() { while (recordedFrames.Count > 0) { SwordFrame f = recordedFrames[0]; if (Time.realtimeSinceStartup - f.frameTime > SwordFade) { recordedFrames.RemoveAt(0); } else { break; } } }
void MoveSword() { List <SwordFrame> swingDesc = Swings[swingIndex]; SwordFrame f; int prevIndex = -1; for (int i = 0; i < swingDesc.Count; ++i) { f = swingDesc[i]; if (f.frameTime < swingElapsedTime) { prevIndex = i; } else { break; } } if (prevIndex == -1) { // erm? prevIndex = 0; } int nextIndex = prevIndex + 1; //Debug.Log(string.Format("swing indices {0} {1}", prevIndex, nextIndex)); if (nextIndex == swingDesc.Count) { InterpSwordFrames(prevIndex, prevIndex, 0.0f); } else { SwordFrame prevFrame = swingDesc[prevIndex]; SwordFrame nextFrame = swingDesc[nextIndex]; float deltaTimeBetweenFrames = nextFrame.frameTime - prevFrame.frameTime; float elapsedTimeSinceStartTime = swingElapsedTime - prevFrame.frameTime; float fracTime = elapsedTimeSinceStartTime / deltaTimeBetweenFrames; //Debug.Log("fracTime: " + fracTime); InterpSwordFrames(prevIndex, nextIndex, fracTime); } }
void makeSwings() { Swings = new List <List <SwordFrame> >(); List <SwordFrame> leftSwing = new List <SwordFrame>(); SwordFrame lsf0 = new SwordFrame(); lsf0.hiltPos = new Vector2(1.0f, -1.0f); lsf0.tipPos = new Vector2(2.0f, -1.5f); lsf0.frameTime = 0.0f; leftSwing.Add(lsf0); SwordFrame lsf1 = new SwordFrame(); lsf1.hiltPos = new Vector2(1.5f, 0.0f); lsf1.tipPos = new Vector2(2.5f, 0.0f); lsf1.frameTime = 0.1f; leftSwing.Add(lsf1); SwordFrame lsf2 = new SwordFrame(); lsf2.hiltPos = new Vector2(1.0f, 1.0f); lsf2.tipPos = new Vector2(2.0f, 1.5f); lsf2.frameTime = 0.2f; leftSwing.Add(lsf2); Swings.Add(leftSwing); List <SwordFrame> rightSwing = new List <SwordFrame>(); SwordFrame rsf0 = new SwordFrame(); rsf0.hiltPos = new Vector2(1.0f, 1.0f); rsf0.tipPos = new Vector2(2.0f, 1.5f); rsf0.frameTime = 0.0f; rightSwing.Add(rsf0); SwordFrame rsf1 = new SwordFrame(); rsf1.hiltPos = new Vector2(1.5f, 0.0f); rsf1.tipPos = new Vector2(2.5f, 0.0f); rsf1.frameTime = 0.1f; rightSwing.Add(rsf1); SwordFrame rsf2 = new SwordFrame(); rsf2.hiltPos = new Vector2(1.0f, -1.0f); rsf2.tipPos = new Vector2(2.0f, -1.5f); rsf2.frameTime = 0.2f; rightSwing.Add(rsf2); Swings.Add(rightSwing); List <SwordFrame> bigSwing = new List <SwordFrame>(); SwordFrame bsf0 = new SwordFrame(); bsf0.hiltPos = new Vector2(0.0f, 1.0f); bsf0.tipPos = new Vector2(0.0f, 2.0f); bsf0.frameTime = 0.0f; bigSwing.Add(bsf0); SwordFrame bsf1 = new SwordFrame(); bsf1.hiltPos = new Vector2(1.3f, 0.5f); bsf1.tipPos = new Vector2(2.5f, 1.5f); bsf1.frameTime = 0.05f; bigSwing.Add(bsf1); SwordFrame bsf2 = new SwordFrame(); bsf2.hiltPos = new Vector2(1.5f, 0.0f); bsf2.tipPos = new Vector2(2.5f, 0.0f); bsf2.frameTime = 0.1f; bigSwing.Add(bsf2); SwordFrame bsf3 = new SwordFrame(); bsf3.hiltPos = new Vector2(1.3f, -0.5f); bsf3.tipPos = new Vector2(2.5f, -1.5f); bsf3.frameTime = 0.15f; bigSwing.Add(bsf3); SwordFrame bsf4 = new SwordFrame(); bsf4.hiltPos = new Vector2(0.0f, -1.0f); bsf4.tipPos = new Vector2(0.0f, -2.0f); bsf4.frameTime = 0.2f; bigSwing.Add(bsf4); Swings.Add(bigSwing); }