public override void ExecuteCommand(Command command) { var cmd = command as IMUICommand; switch (cmd.type) { case IMUICmdType.DrawText: if (ArgType <string, Vector2>(cmd)) { IMUI.DrawTextIM((string)cmd.args[0], (Vector2)cmd.args[1]); } else if (ArgType <string, Vector2, Vector2>(cmd)) { IMUI.DrawTextIM((string)cmd.args[0], (Vector2)cmd.args[1], (Vector2)cmd.args[2]); } break; default: throw null; } }
private void OnRenderObject() { var pos = rtAreaPos / UI.scaler.referenceResolution; var scl = rtAreaSize / UI.scaler.referenceResolution / SizeInt; var matrixAreaToRect = Matrix4x4.TRS(pos, Quaternion.identity, scl); var matrixRectToRef = Matrix4x4.TRS(rtPos, Quaternion.identity, rtSize / SizeInt); var matrixRulerToRef = Matrix4x4.TRS(rtPos, Quaternion.identity, rtSize / SizeInt); var a = Vector2.zero; var b = Vector2.up * SIZE.y; var f = 1f / SIZE.x; cmds = new List <Command>(); // grid for (int i = 0; i < SIZE.x; i++) { if ((i % xSpaceLineInRuler) == 0) { a.x = b.x = i; DrawLine(a, b, I.clrGrid, matrixAreaToRect); } if ((i % xSpaceTextInRuler) == 0) { a.x = i + f * 0.5f; c = matrixRectToRef.MultiplyPoint(a); c = rulerPos + c.ToLT(); var cmd = IMUI.Cmd(IMUICmdType.DrawText, i.ToString(), c, Vectors.half2d);// 画字 帧号标签 cmds.Add(cmd); } } // timeline if (frameIdx.Between(SizeInt.x)) { b.x = a.x = frameIdx; DrawLine(a, b, I.clrTimeLine, matrixAreaToRect); } }