curveEditor.scss 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613
  1. #animation-curve-editor {
  2. font-family: acumin-pro-condensed;
  3. .icon {
  4. width: 40px;
  5. height: 40px;
  6. &.babylon-logo {
  7. background-image: url('./assets/babylonLogo.svg');
  8. background-repeat: no-repeat;
  9. background-color: transparent;
  10. background-size: contain;
  11. }
  12. &.close {
  13. background-image: url('./assets/closeWindowIcon.svg');
  14. background-repeat: no-repeat;
  15. background-color: transparent;
  16. background-size: contain;
  17. color: white;
  18. cursor: pointer;
  19. }
  20. &.auto-tangent {
  21. background-image: url('./assets/autoTangentIcon.svg');
  22. background-repeat: no-repeat;
  23. background-color: transparent;
  24. background-size: contain;
  25. color: white;
  26. cursor: pointer;
  27. }
  28. &.break-tangent {
  29. background-image: url('./assets/breakTangentIcon.svg');
  30. background-repeat: no-repeat;
  31. background-color: transparent;
  32. background-size: contain;
  33. color: white;
  34. cursor: pointer;
  35. }
  36. &.flat-tangent {
  37. background-image: url('./assets/flatTangentIcon.svg');
  38. background-repeat: no-repeat;
  39. background-color: transparent;
  40. background-size: contain;
  41. color: white;
  42. cursor: pointer;
  43. }
  44. &.frame {
  45. background-image: url('./assets/frameIcon.svg');
  46. background-repeat: no-repeat;
  47. background-color: transparent;
  48. background-size: contain;
  49. color: white;
  50. cursor: pointer;
  51. }
  52. &.linear-tangent {
  53. background-image: url('./assets/linearTangentIcon.svg');
  54. background-repeat: no-repeat;
  55. background-color: transparent;
  56. background-size: contain;
  57. color: white;
  58. cursor: pointer;
  59. }
  60. &.unify-tangent {
  61. background-image: url('./assets/unifyTangentIcon.svg');
  62. background-repeat: no-repeat;
  63. background-color: transparent;
  64. background-size: contain;
  65. color: white;
  66. cursor: pointer;
  67. }
  68. &.add-animation {
  69. background-image: url('./assets/addAnimationIcon.svg');
  70. background-repeat: no-repeat;
  71. background-color: transparent;
  72. background-size: contain;
  73. color: white;
  74. cursor: pointer;
  75. }
  76. &.animation-bullet {
  77. background-image: url('./assets/animationBulletIcon.svg');
  78. background-repeat: no-repeat;
  79. background-color: transparent;
  80. background-size: contain;
  81. color: white;
  82. }
  83. &.animation-delete {
  84. background-image: url('./assets/animationDeleteIcon.svg');
  85. background-repeat: no-repeat;
  86. background-color: transparent;
  87. background-size: contain;
  88. color: white;
  89. }
  90. &.animation-end {
  91. background-image: url('./assets/animationEndIcon.svg');
  92. background-repeat: no-repeat;
  93. background-color: transparent;
  94. background-size: contain;
  95. color: white;
  96. }
  97. &.animation-lastkey {
  98. background-image: url('./assets/animationLastKeyIcon.svg');
  99. background-repeat: no-repeat;
  100. background-color: transparent;
  101. background-size: contain;
  102. &:hover{
  103. background-image: url('./assets/animationLastKeyHoverIcon.svg');
  104. }
  105. }
  106. &.animation-nextkey {
  107. background-image: url('./assets/animationNextKeyIcon.svg');
  108. background-repeat: no-repeat;
  109. background-color: transparent;
  110. background-size: contain;
  111. &:hover{
  112. background-image: url('./assets/animationNextKeyHoverIcon.svg');
  113. }
  114. }
  115. &.animation-options {
  116. background-image: url('./assets/animationOptionsIcon.svg');
  117. background-repeat: no-repeat;
  118. background-color: transparent;
  119. background-size: contain;
  120. color: white;
  121. }
  122. &.animation-playfwd {
  123. background-image: url('./assets/animationPlayFwdIcon.svg');
  124. background-repeat: no-repeat;
  125. background-color: transparent;
  126. background-size: contain;
  127. color: white;
  128. }
  129. &.animation-playrev {
  130. background-image: url('./assets/animationPlayRevIcon.svg');
  131. background-repeat: no-repeat;
  132. background-color: transparent;
  133. background-size: contain;
  134. color: white;
  135. }
  136. &.animation-start {
  137. background-image: url('./assets/animationStartIcon.svg');
  138. background-repeat: no-repeat;
  139. background-color: transparent;
  140. background-size: contain;
  141. color: white;
  142. }
  143. &.animation-stop {
  144. background-image: url('./assets/animationStopIcon.svg');
  145. background-repeat: no-repeat;
  146. background-color: transparent;
  147. background-size: contain;
  148. color: white;
  149. }
  150. &.animation-triangle {
  151. background-image: url('./assets/animationTriangleIcon.svg');
  152. background-repeat: no-repeat;
  153. background-color: transparent;
  154. background-size: contain;
  155. color: white;
  156. }
  157. &.key-active {
  158. background-image: url('./assets/keyActiveIcon.svg');
  159. background-repeat: no-repeat;
  160. background-color: transparent;
  161. background-size: contain;
  162. color: white;
  163. }
  164. &.key-inactive {
  165. background-image: url('./assets/keyInactiveIcon.svg');
  166. background-repeat: no-repeat;
  167. background-color: transparent;
  168. background-size: contain;
  169. color: white;
  170. }
  171. &.key-selected {
  172. background-image: url('./assets/keySelectedIcon.svg');
  173. background-repeat: no-repeat;
  174. background-color: transparent;
  175. background-size: contain;
  176. color: white;
  177. }
  178. &.loop-active {
  179. background-image: url('./assets/loopActiveIcon.svg');
  180. background-repeat: no-repeat;
  181. background-color: transparent;
  182. background-size: contain;
  183. color: white;
  184. }
  185. &.loop-inactive {
  186. background-image: url('./assets/loopInactiveIcon.svg');
  187. background-repeat: no-repeat;
  188. background-color: transparent;
  189. background-size: contain;
  190. color: white;
  191. }
  192. &.move {
  193. background-image: url('./assets/moveIcon.svg');
  194. background-repeat: no-repeat;
  195. background-color: transparent;
  196. background-size: contain;
  197. color: white;
  198. }
  199. &.new-key {
  200. background-image: url('./assets/newKeyIcon.svg');
  201. background-repeat: no-repeat;
  202. background-color: transparent;
  203. background-size: contain;
  204. color: white;
  205. }
  206. &.scale {
  207. background-image: url('./assets/scaleIcon.svg');
  208. background-repeat: no-repeat;
  209. background-color: transparent;
  210. background-size: contain;
  211. color: white;
  212. }
  213. &.scrollbar-handle {
  214. background-image: url('./assets/scrollbarHandleIcon.svg');
  215. background-repeat: no-repeat;
  216. background-color: transparent;
  217. background-size: contain;
  218. color: white;
  219. }
  220. }
  221. .notification-area{
  222. position: absolute;
  223. width: auto;
  224. left: 0.53em;
  225. bottom: 60px;
  226. background-color: rgb(199, 50, 40);
  227. padding: 16px;
  228. border-radius: 5px;
  229. color: white;
  230. right: 2em;
  231. z-index: 10;
  232. button{
  233. position: absolute;
  234. top: 3px;
  235. right: 10px;
  236. padding: 0;
  237. cursor: pointer;
  238. background: transparent;
  239. border: 0;
  240. -webkit-appearance: none;
  241. color: #000;
  242. text-shadow: 0 1px 0 #fff;
  243. opacity: .4;
  244. font-size: 1.8em;
  245. }
  246. }
  247. .header{
  248. display: flex;
  249. padding: 9px;
  250. background: #333333;
  251. color: white;
  252. height: 1.3em;
  253. justify-content: space-between;
  254. align-items: center;
  255. padding-left: 12px;
  256. padding-right: 12px;
  257. .title{ text-transform: uppercase; }
  258. .close {
  259. grid-column: 2;
  260. display: grid;
  261. align-items: center;
  262. justify-items: center;
  263. cursor: pointer;
  264. }
  265. }
  266. .actions-wrapper {
  267. display: flex;
  268. flex-direction: row;
  269. justify-content: flex-start;
  270. align-items: center;
  271. background: #333333;
  272. .close {
  273. position: absolute;
  274. right: 1px;
  275. }
  276. .title-container {
  277. display: flex;
  278. justify-content: stretch;
  279. align-items: center;
  280. color: white;
  281. width: 220px;
  282. .title {
  283. font-size: 15pt;
  284. }
  285. }
  286. .buttons-container{
  287. display: flex;
  288. }
  289. .action-input{
  290. display: flex;
  291. justify-content: center;
  292. flex-direction: row;
  293. align-items: center;
  294. margin-right: 8px;
  295. input {
  296. width: 75px;
  297. height: 24px;
  298. color: white;
  299. font-size: 12px;
  300. background: none;
  301. border: none;
  302. background-color: black;
  303. padding: 6px;
  304. }
  305. }
  306. }
  307. .content{
  308. display: flex;
  309. align-items: flex-start;
  310. justify-content: flex-start;
  311. flex-direction: column;
  312. .row {
  313. display: flex;
  314. align-items: stretch;
  315. justify-content: flex-start;
  316. flex-direction: row;
  317. width: 100vw;
  318. height: 84vh;
  319. .timeline{
  320. width: 100vw;
  321. background: #333333;
  322. display: flex;
  323. align-items: center;
  324. justify-content: stretch;
  325. height: 2.5rem;
  326. .display-line {
  327. width: 80vw;
  328. height: 2em;
  329. overflow: hidden;
  330. overflow-x: scroll;
  331. scrollbar-color: cornflowerblue slategrey;
  332. scrollbar-width: thin;
  333. margin-right: 1.3em;
  334. padding-left: 1em;
  335. padding-right: 1em;
  336. &::-webkit-scrollbar{
  337. height: 0.4em;
  338. }
  339. &::-webkit-scrollbar-track {
  340. box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
  341. }
  342. &::-webkit-scrollbar-thumb {
  343. background-color: cornflowerblue;
  344. outline: 1px solid slategrey;
  345. }
  346. }
  347. .controls {
  348. display: flex;
  349. justify-content: center;
  350. align-items: center;
  351. width: 15em;
  352. .input-frame input {
  353. width: 3em;
  354. }
  355. .button {
  356. margin-left: 0.5em;
  357. margin-right: 0.5em;
  358. }
  359. }
  360. }
  361. }
  362. .animation-list{
  363. padding: 1.5rem;
  364. background: #333333;
  365. color: white;
  366. ul {
  367. list-style:none;
  368. padding-left: 0px;
  369. li.property {
  370. &:before {
  371. content: '';
  372. background: none;
  373. }
  374. }
  375. li {
  376. p {
  377. font-weight: bolder;
  378. font-variant: all-small-caps;
  379. display: inline;
  380. }
  381. cursor: pointer;
  382. &:before {
  383. content: '';
  384. display: inline-block;
  385. height: 0.7em;
  386. width: 0.7em;
  387. background-size: contain;
  388. background-repeat: no-repeat;
  389. margin-right:0.5em;
  390. background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" data-prefix="far" data-icon="circle" class="svg-inline--fa fa-circle fa-w-16" role="img" viewBox="0 0 512 512"><path fill="currentColor" d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z"/></svg>');
  391. }
  392. }
  393. }
  394. li.active {
  395. cursor: pointer;
  396. &:before{
  397. background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="check-circle" class="svg-inline--fa fa-check-circle fa-w-16" role="img" viewBox="0 0 512 512"><path fill="currentColor" d="M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"/></svg>');
  398. }
  399. }
  400. .object-tree{
  401. background-color:#111111;
  402. padding: 10px;
  403. margin-top: 19px;
  404. height: 11em;
  405. overflow: scroll;
  406. overflow-x: hidden;
  407. }
  408. .label-input{
  409. display: grid;
  410. height: 54px;
  411. place-items: center stretch;
  412. color:white;
  413. }
  414. }
  415. .sample-chart{
  416. .linear {
  417. .draggable {
  418. cursor: move;
  419. }
  420. }
  421. }
  422. .graph-chart{
  423. flex: 1 1 0%;
  424. overflow-x: scroll;
  425. padding-left: 32px;
  426. overflow-y: scroll;
  427. scroll-behavior: smooth;
  428. background-color: #111111;
  429. height: 100%;
  430. .linear{
  431. overflow: visible;
  432. border: 1px solid lightgrey;
  433. height: 100%;
  434. svg {
  435. overflow: visible;
  436. }
  437. &:focus {
  438. outline-color: transparent;
  439. }
  440. line {
  441. stroke: #cecece;
  442. stroke-width: 0.2;
  443. }
  444. text {
  445. fill: #cecece;
  446. }
  447. .control-point {
  448. display: none;
  449. }
  450. .control-point.active {
  451. display: inline;
  452. }
  453. }
  454. .playhead-wrapper {
  455. position: relative;
  456. left: -13px;
  457. }
  458. .playhead {
  459. width: fit-content;
  460. background-color: #ffc60e;
  461. color: black;
  462. text-align: center;
  463. min-width: 2em;
  464. justify-content: center;
  465. display: flex;
  466. padding: 0.1em;
  467. font-size: 0.75em;
  468. }
  469. .playhead-triangle {
  470. background-color: transparent;
  471. width: 0px;
  472. height: 0px;
  473. border-left: 13.5px solid transparent;
  474. border-right: 13.5px solid transparent;
  475. border-top: 12px solid #ffc60e;
  476. }
  477. .playhead-line {
  478. width: 2px;
  479. height: calc(90vh - 100px);
  480. background-color: rgb(255, 198, 14);
  481. position: absolute;
  482. margin-left: 12.5px;
  483. }
  484. }
  485. }
  486. .buttonLine {
  487. height: 30px;
  488. display: grid;
  489. align-items: center;
  490. justify-items: stretch;
  491. input[type="file"] {
  492. display: none;
  493. }
  494. .file-upload {
  495. background: #222222;
  496. border: 1px solid rgb(51, 122, 183);
  497. margin: 5px 10px 5px 10px;
  498. color:white;
  499. padding: 4px 5px;
  500. opacity: 0.9;
  501. cursor: pointer;
  502. text-align: center;
  503. }
  504. .file-upload:hover {
  505. opacity: 1.0;
  506. }
  507. .file-upload:active {
  508. transform: scale(0.98);
  509. transform-origin: 0.5 0.5;
  510. }
  511. button {
  512. background: #222222;
  513. border: 1px solid rgb(51, 122, 183);
  514. margin: 5px 10px 5px 10px;
  515. color:white;
  516. padding: 4px 5px;
  517. opacity: 0.9;
  518. cursor: pointer;
  519. }
  520. button:hover {
  521. opacity: 1.0;
  522. }
  523. button:active {
  524. background: #282828;
  525. }
  526. button:focus {
  527. border: 1px solid rgb(51, 122, 183);
  528. outline: 0px;
  529. }
  530. }
  531. }