Skip to content

Instantly share code, notes, and snippets.

@veeneck
veeneck / sunburst.swift
Created May 27, 2018 01:47
Create a Sunburst in SpriteKit
let radius: CGFloat = 150 / 2.0
let bezierPath = CGMutablePath()
let centerPoint = CGPoint(x: 0, y: 0)
var thisPoint = CGPoint(x: radius, y: 0)
bezierPath.move(to: centerPoint)
var thisAngle: CGFloat = 90
let unitCount: CGFloat = count
let spacingDegrees: CGFloat = 6.0
let sliceDegrees: CGFloat = 360.0 / unitCount - spacingDegrees
@veeneck
veeneck / comment_import.py
Created May 17, 2018 12:46
Import Wordpress comments into Hugo
import xmltodict
import time
import hashlib
import os
import cgi
"""
Desired structure based on my post URLS: /data/comments/2016-07-12-post-slug/comment-uniquehash.yml
Data in comment is structured like this:
@veeneck
veeneck / cutscene.swift
Created May 4, 2018 23:28
Example using CKCutscene
self.entity.ui?.cutscene?.addSequences(sequences: [
self.bringSpeakersIntoView(),
self.stouWarnsUnderAttack(),
self.delayForTime(time: 4),
self.barricOffersHisTroops(),
self.panCameraForFight(),
self.takeSpeakersOutOfView()
])
@veeneck
veeneck / SKTransform.swift
Created June 26, 2017 00:33
SKTransformNode
let transfomLayer = SKTransformNode()
let settings = SKSpriteNode(imageNamed:"icon_Settings")
transfomLayer.addChild(settings)
transfomLayer.setEulerAngles(vector_float3(x:120, y:0, z:0))
transfomLayer.zPosition = 10000
transfomLayer.position = CGPoint(x:500, y:500)
self.addChild(transfomLayer)
let rotate = SKAction.rotate(byAngle: 6.28, duration: 5)
settings.run(SKAction.repeatForever(rotate))
@veeneck
veeneck / 0105changeling.txt
Created May 22, 2017 17:31
0.1.05 Changelog
Leveling Up & UI
- Double confirmation UI pattern (delet save file for an example)
- Unit abilities card shows ability description, and updates unit stats in preview mode
- After battle combat shows more information (still bugs & polish needed)
- You can actually choose a new skill when a unit levels up
- Unit cards now show stars for the units level
- Navigation icons show red circle withnumber when upgrades are available
In Game
- Performance imporvement for sounds (still a major bottleneck though)
@veeneck
veeneck / navmesh.swift
Created October 12, 2016 19:49
GameplayKit Pathfinding
//
// PKNavmesh.swift
// PathKit
//
// Created by Ryan Campbell on 9/12/16.
// Copyright © 2016 Phalanx Studios. All rights reserved.
//
import SpriteKit
import GameplayKit
@veeneck
veeneck / Launch.swift
Last active July 7, 2017 13:54
Launch Trajectory in Swift and SpriteKit
/// Uses physics equations to calculate position of projectile at given time.
/// This tool is awesome to explain what's happening, and play with sample data:
/// http://hyperphysics.phy-astr.gsu.edu/hbase/traj.html#tra6
func launchAtPoint(angle:CGFloat, start:CGPoint, end:CGPoint, node:SKNode) -> SKAction {
/// Constants
let gravity : Double = 9.8
let pixelsToMeters : CGFloat = 50
/// Calculate everything we can given an angle and an end point
@veeneck
veeneck / Swift3SaveUsage.swift
Last active July 1, 2016 21:03
Example usage of saving GameData
/// User clicks on slot one, so we want to create a new save file for that slot
if GameData.sharedInstance.loadGame(saveFile: "One") {
/// An existing save file was there, progress as you need to
}
else {
/// A new save file was created, so start your game from a fresh state
}
/// User buys 100 gold
GameData.sharedInstance.bank += 100
@veeneck
veeneck / Swift3SaveClass
Created July 1, 2016 20:56
Saving an array with GameData
class Level : NSObject, NSCoding {
var highScore : Double = 0
var completed : Bool = false
var revealed : Bool = false
required init?(coder: NSCoder) {
self.highScore = coder.decodeDouble(forKey: "highScore")
@veeneck
veeneck / Swift3Save.swift
Last active March 6, 2022 13:12
Saving a SpriteKit game in Swift 3
import SpriteKit
class GameData : NSObject, NSCoding {
/// Current game slot being played "One" to "Four"
var currentSaveFile : String? = nil
/// A string to save
var variableA : String = "AString"