Skip to content

Instantly share code, notes, and snippets.

View junpluse's full-sized avatar

Jun Tanaka junpluse

View GitHub Profile
@junpluse
junpluse / Designing for Google Cardboard.md
Last active August 29, 2015 14:22
Designing for Google Cardboard の日本語訳(途中)

Designing for Google Cardboard

日本語訳: 原文

新たな次元へ

VR における素晴らしいユーザーインターフェースをデザインすることは、従来の 2D 向けにデザインすることに比べて、大きく異なります。この資料におけるベストプラクティスは、Google Cardboard デザインチームによって作成された初期の VR アプリケーションやプロトタイプから得られた知見に基づいています。人体感覚・認識の基礎を身につけることは、あらゆるプラットフォームに向けて VR アプリケーションをデザインする助けとなるでしょう。

Google のデザインチームはこの領域での調査を引き続き行っており、この資料は VR デザインのための包括的なリソースとなります。インタラクティブ、バーチャル、そしてモーショングラフィックスデザイナーにとって、今はまさにエキサイティングな時代です。

@junpluse
junpluse / index.html
Last active March 29, 2016 08:45
Format multi-line text for ES5
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Multiline Text Formatter for ES5</title>
<style>
body {
margin: 24px;
font-family: sans-serif;
@junpluse
junpluse / CAEAGLLayer+Snapshot.swift
Last active August 28, 2020 06:14
Take snapshot from CAEAGLLayer
import QuartzCore
import OpenGLES
extension CAEAGLLayer {
func takeSnapshot(from renderBuffer: GLuint? = nil) -> UIImage {
var bufferWidth: GLint = 0
var bufferHeight: GLint = 0
if let buffer = renderBuffer {
glBindRenderbufferOES(GLenum(GL_RENDERBUFFER_OES), buffer)
@junpluse
junpluse / AVPlayer+Repeat.swift
Last active May 12, 2021 15:28
AVQueuePlayer.repeatMode = .All
//
// AVPlayer+Repeat.swift
//
// Created by Jun Tanaka on 4/1/16.
// Copyright © 2016 eje Inc. All rights reserved.
//
import AVFoundation
private final class RepeatManager: NSObject {
@junpluse
junpluse / CAAnimation+On.swift
Created April 21, 2016 10:12
CAAnimation.on(started:stopped:)
import QuartzCore
private extension CAAnimation {
final class Delegate: NSObject {
var startHandlers = Array<StartHandler>()
var stopHandlers = Array<StopHandler>()
override func animationDidStart(anim: CAAnimation) {
startHandlers.forEach { $0(animation: anim) }
}
@junpluse
junpluse / LayerView.swift
Last active April 27, 2016 11:27
UIView subclass for Core Animation lovers
import UIKit
final class LayerView<Layer: CALayer>: UIView {
var implicitAnimationsEnabled: Bool = false
var implicitlyAnimatableEvents: [String]? = nil
var genericLayer: Layer {
return layer as! Layer
}
@junpluse
junpluse / EventPresenter.swift
Last active November 1, 2016 09:18
Dead simple one-to-many event presentation
//
// EventPresenter.swift
//
// Created by Jun Tanaka on 2016/10/27.
// Copyright © 2016 Jun Tanaka. All rights reserved.
//
import Foundation
private struct EventObserver<Event> {
@junpluse
junpluse / CVError.swift
Created December 15, 2016 11:21
CVReturn as Swift.Error
//
// CVError.swift
//
// Created by Jun Tanaka on 2016/12/13.
// Copyright © 2016 Jun Tanaka. All rights reserved.
//
import CoreVideo
public enum CVError: Int32, Error {
import Foundation
final class Subject<Value> {
let dispatchQueue: DispatchQueue
private static func makeDefaultDispatchQueue() -> DispatchQueue {
return DispatchQueue(label: String(reflecting: self), qos: .default, attributes: .concurrent)
}
private struct Observation {
#!/usr/bin/swift
import Darwin
signal(SIGINT) { _ in
print("🆖")
}
let konami = "↑↑↓↓←→←→BA"