$/
artifacts/
build/
docs/
lib/
packages/
samples/
src/
tests/
using UnityEngine; | |
using System.Collections; | |
public class CameraSmooth | |
: MonoBehaviour | |
{ | |
public Camera cameraTarget; | |
public Camera cameraSelf; | |
public bool enableSmooth = true; |
using UnityEngine; | |
using System.Collections; | |
public class LinkedCamera : MonoBehaviour { | |
// What transform to chase: | |
public Transform target; | |
// Debug keyboard controls: | |
public KeyCode modifier; | |
public KeyCode incSmooth; |
using UnityEngine; | |
using System.Collections; | |
using System.Collections.Generic; | |
public class CompanionCamera : MonoBehaviour { | |
// Debug shortcut keys: | |
public KeyCode modifier; | |
public KeyCode toggleButton; | |
// If true, this will permanently disable the SteamVR companion camera. |
// | |
// MultiDirectionAdjudicatingScrollView.swift | |
// Khan Academy | |
// | |
// Created by Andy Matuschak on 12/16/14. | |
// Copyright (c) 2014 Khan Academy. All rights reserved. | |
// | |
import UIKit | |
import UIKit.UIGestureRecognizerSubclass |
In this article, I'm going to explore a way that we can create views that implement custom Core Animation property animations in a natural way.
As we know, layers in iOS come in two flavours: Backing layers and hosted layers. The only difference between them is that the view acts as the layer delegate for its backing layer, but not for any hosted sublayers.
In order to implement the UIView
transactional animation blocks, UIView
disables all animations by default and then re-enables them individually as required. It does this using the actionForLayer:forKey:
method.
Somewhat strangely, UIView
doesn't enable animations for every property that CALayer
does by default. A notable example is the layer.contents
property, which is animatable by default for a hosted layer, but cannot be animated using a UIView
animation block.
// Playground - noun: a place where people can play | |
import Cocoa | |
protocol UnitBase { | |
class var unitLabel:String { get } | |
} | |
// T: the unit | |
// U: its inverse |
typedef NS_ENUM(NSInteger, kErrorCode) { | |
kErrorCodeInternal = 431432, | |
}; | |
//! generate error and log it. | |
extern NSError *pixle_NSErrorMake(NSString *message, NSUInteger code, NSDictionary *aUserInfo, SEL selector); | |
#define AssertTrueOrReturnBlock(condition, block) do{ NSAssert((condition), @"Invalid condition not satisfying: %s", #condition);\ | |
if(!(condition)) { block(pixle_NSErrorMake([NSString stringWithFormat:@"Invalid condition not satisfying: %s", #condition], kErrorCodeInternal, nil, _cmd)); return;} }while(0) | |
CGRect CGRectIntegralScaledEx(CGRect rect, CGFloat scale) | |
{ | |
return CGRectMake(floorf(rect.origin.x * scale) / scale, floorf(rect.origin.y * scale) / scale, ceilf(rect.size.width * scale) / scale, ceilf(rect.size.height * scale) / scale); | |
} | |
CGRect CGRectIntegralScaled(CGRect rect) | |
{ | |
return CGRectIntegralScaledEx(rect, [[UIScreen mainScreen] scale]); | |
} |
Shader "Tri-Planar World" { | |
Properties { | |
_Side("Side", 2D) = "white" {} | |
_Top("Top", 2D) = "white" {} | |
_Bottom("Bottom", 2D) = "white" {} | |
_SideScale("Side Scale", Float) = 2 | |
_TopScale("Top Scale", Float) = 2 | |
_BottomScale ("Bottom Scale", Float) = 2 | |
} | |