void OnProcess(ProcessFrameEvent e) { if (!m_started) { return; } PlayerCommandsBase.GetCommandsData data = new PlayerCommandsBase.GetCommandsData(e.frame, e.status); m_playerCommands.GetCommands(data); CheckGrounded(); ProcessDirection(data.moveDir); ProcessJump(data.jumpPressed); if (data.kickPressed) { Kick(); } m_kickTimer -= Time.deltaTime; if (data.actionPressed) { Action(); } m_actionTimer -= Time.deltaTime; }
public void SetFrame(int timeline, int frame, PlayerCommandsBase.GetCommandsData commands, Vector2 pos, float rot, Vector2 velocity, float angularVelocity) { while (m_timelines.Count <= timeline) { m_timelines.Add(new TimelineData()); } var timelineData = m_timelines[timeline]; FrameData f = new FrameData(); f.commandData = commands; f.pos = pos; f.rot = rot; f.velocity = velocity; f.angularVelocity = angularVelocity; if (timelineData.frames.Count == 0) { timelineData.frames.Add(f); timelineData.firstFrame = frame; } else if (frame < timelineData.firstFrame) { for (int i = frame + 1; i < timelineData.firstFrame; i++) { timelineData.frames.Insert(0, null); } timelineData.frames.Insert(0, f); timelineData.firstFrame = frame; } else if (frame >= timelineData.firstFrame + timelineData.frames.Count) { for (int i = timelineData.firstFrame + timelineData.frames.Count + 1; i < frame - 1; i++) { timelineData.frames.Add(null); } timelineData.frames.Add(f); } else { timelineData.frames[frame - timelineData.firstFrame] = f; } }