Skip to content

Instantly share code, notes, and snippets.

View PrimaryFeather's full-sized avatar

Daniel Sperl PrimaryFeather

View GitHub Profile
@PrimaryFeather
PrimaryFeather / PixelMaskDisplayObject.as
Last active June 13, 2025 09:09
New Version of "PixelMaskDisplayObject" that works with Starling 2.
package starling.extensions.pixelmask
{
import flash.display3D.Context3DBlendFactor;
import starling.core.Starling;
import starling.display.BlendMode;
import starling.display.DisplayObject;
import starling.display.DisplayObjectContainer;
import starling.display.Image;
import starling.events.Event;
@PrimaryFeather
PrimaryFeather / StyledBitmapFont.as
Last active November 21, 2017 04:34
A BitmapFont extension that allows text to be colored by encasing it in tags like {style color=#123456}this{/style}.
package starling.extensions
{
import starling.display.Image;
import starling.display.MeshBatch;
import starling.text.BitmapCharLocation;
import starling.text.BitmapFont;
import starling.text.TextFormat;
import starling.text.TextOptions;
import starling.textures.Texture;
@PrimaryFeather
PrimaryFeather / GodRayPlane.as
Last active March 27, 2025 17:06
A Starling DisplayObject that displays animated god-rays / sunbeams within a specific area.
package starling.extensions
{
import flash.display.BitmapData;
import starling.animation.IAnimatable;
import starling.display.Quad;
import starling.textures.Texture;
import starling.utils.MathUtil;
/** A quad that efficiently renders a 2D light ray effect on its surface.
@PrimaryFeather
PrimaryFeather / QuadSection.as
Last active May 8, 2018 11:10
A Starling Mesh that displays a slice of a quad (just like a pie chart, but rectangular). Useful e.g. for a circular progress indicator.
package starling.extensions
{
import flash.geom.Point;
import starling.display.Mesh;
import starling.rendering.IndexData;
import starling.rendering.VertexData;
import starling.textures.Texture;
public class QuadSection extends Mesh
@PrimaryFeather
PrimaryFeather / ZipAssetFactory.as
Last active June 11, 2018 12:47
An example of how an AssetFactory for Starling's new AssetManager can process zip files.
package starling.assets
{
import deng.fzip.FZip;
import deng.fzip.FZipEvent;
import deng.fzip.FZipFile;
import flash.events.Event;
import flash.utils.ByteArray;
@PrimaryFeather
PrimaryFeather / CachingDataLoader.as
Last active August 7, 2018 08:29
A custom DataLoader extension that makes the asset manager cache remote files locally.
package starling.extensions
{
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
import flash.utils.ByteArray;
import starling.assets.DataLoader;
@PrimaryFeather
PrimaryFeather / minify_json.rb
Last active March 16, 2018 07:30
Small Ruby script that minifies (or un-minifies) JSON files.
#!/usr/bin/env ruby
require 'json'
script_name = File.basename(__FILE__)
prettify = false
if ARGV.count < 1
puts "Minifies JSON files."
puts ""
@PrimaryFeather
PrimaryFeather / ZipLoader.as
Last active June 13, 2025 08:58
Makes Starling's AssetManager recognize and unzip zipped assets. Depends on FZip: http://codeazur.com.br/lab/fzip/
package starling.extensions
{
import deng.fzip.FZip;
import deng.fzip.FZipEvent;
import deng.fzip.FZipFile;
import flash.events.Event;
import flash.utils.ByteArray;
import starling.assets.DataLoader;
@PrimaryFeather
PrimaryFeather / CAFilter.as
Created April 27, 2018 08:45
Chromatic Aberration Filter for Starling
package starling.extensions
{
import starling.filters.FragmentFilter;
import starling.rendering.FilterEffect;
/**
* Chromatic Aberration
* USAGE:
* var filter:CAFilter = new CAFilter();
* filter.angle = 20;
@PrimaryFeather
PrimaryFeather / HelloTriangleColored.as
Created September 20, 2018 06:51
A very basic Stage3D example.
package stage3d
{
import com.adobe.utils.AGALMiniAssembler;
import flash.display.Sprite;
import flash.display3D.Context3D;
import flash.display3D.Context3DProgramType;
import flash.display3D.Context3DVertexBufferFormat;
import flash.display3D.IndexBuffer3D;
import flash.display3D.Program3D;