Skip to content

Instantly share code, notes, and snippets.

@alexjlockwood
alexjlockwood / RingOfCircles.swift
Last active December 1, 2024 15:37
Ring of Circles animation written in SwiftUI
import SwiftUI
private let kNumDots = 16
private let kTau: CGFloat = 2 * .pi
private let kDotPeriod: CGFloat = 10
private let kWavePeriod: CGFloat = 10 / (4 * kTau)
private let kRingRadiusFactor: CGFloat = 0.35
private let kWaveRadiusFactor: CGFloat = 0.10
struct RingOfCircles: View {
@alexjlockwood
alexjlockwood / SegmentedControl.kt
Last active September 23, 2024 02:10
A simple animated segmented control component written with Jetpack Compose
package com.example.segmentedcontrol
import androidx.compose.animation.ExperimentalSharedTransitionApi
import androidx.compose.animation.animateBounds
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.IntrinsicSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.padding
// This file is automatically generated. Do not edit.
package com.lyft.android.design.coreui.compose.attributes
import com.lyft.android.design.coreui.compose.components.Icon
import com.lyft.android.design.coreui.compose.components.IconButton
import com.lyft.android.design.coreui.iconography.R
/**
* Definitions for LPL iconography.
@alexjlockwood
alexjlockwood / detach-color-styles.ts
Last active September 12, 2023 12:49
This plugin recurses every layer in every page of the current figma file, and detaches color styles that are backed by a single bound color variable.
// This plugin recurses every layer in every page of the current figma file, and detaches
// color styles that are backed by a single bound color variable.
(function main() {
recurseLayerHierarchy(figma.root, false);
figma.closePlugin();
})();
function recurseLayerHierarchy(node: BaseNode, isChildOfInstanceNode: boolean) {
if (node.type === 'INSTANCE') {
using System;
using System.Collections.Generic;
using System.Linq;
using FG.Common;
using SRF;
using UnityEngine;
namespace Levels.CrownMaze
{
// Token: 0x020004C1 RID: 1217
using System;
using System.Collections.Generic;
using System.Linq;
using FG.Common;
using Levels.ProceduralGeneration;
using MPG.Utility;
using UnityEngine;
namespace Levels.CrownMaze
{
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- This module was also published with a richer model, Gradle metadata, -->
<!-- which should be used instead. Do not delete the following line which -->
<!-- is to indicate to Gradle or any Gradle module metadata file consumer -->
<!-- that they should prefer consuming it instead. -->
<!-- do_not_remove: published-with-gradle-metadata -->
<modelVersion>4.0.0</modelVersion>
<groupId>androidx.compose.foundation</groupId>
<artifactId>foundation</artifactId>
{
"formatVersion": "1.1",
"component": {
"group": "androidx.compose.foundation",
"module": "foundation",
"version": "1.5.0-beta01",
"attributes": {
"org.gradle.status": "release"
}
},
@alexjlockwood
alexjlockwood / ClosedOpenOpenClosed.md
Last active August 16, 2022 20:45
How to Timeout Closed-Open + Open-Closed

Closed-Open + Open-Closed

Closed-Open + Open-Closed is considered the 4th hardest Roll Off variation to timeout. The first 8 laps are very easy, with 3 easy jumps to start on blue and 3 easy jumps to end on orange. However, the variation becomes very difficult to execute on laps 9-12 when the slime has reached it's maximum height.

Paths

There are 2 possible paths to take on laps 9-12 of the timeout:

Alex's Path

@alexjlockwood
alexjlockwood / 5WallerOpenClosed.md
Last active August 16, 2022 20:45
How to Timeout 5 Waller + Open-Closed

5 Waller + Open-Closed

5 Waller + Open-Closed is considered the hardest of all 20 variations to timeout due how difficult it is to execute as well as the complex pathing decisions that need to be made in order to avoid collisions with other players.

Paths

Laps 7-8

While the paths themselves are not difficult, laps 7-8 are particularly dangerous due to the possibility of desync.