Skip to content

Instantly share code, notes, and snippets.

View sketchpunk's full-sized avatar
🏠
Working from home

SketchPunk sketchpunk

🏠
Working from home
View GitHub Profile
@sketchpunk
sketchpunk / ActionBarAlert.java
Last active May 25, 2017 13:54
Display a Message that overlays the ActionBar in Android Activity. Set time in seconds for the message to slide away.
package com.sketchpunk;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.app.Activity;
import android.graphics.Color;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
@sketchpunk
sketchpunk / MainDBHelper
Created April 25, 2014 19:22
SqliteOpenHelper class setup using a singleton pattern with the application context. It also loads in an sql file from the assets folder when its needs to create a database. Mucher easier way to create a new db this way instead of hardcoding all the sql into string.
package com.sketchpunk;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.io.IOException;
import java.util.Scanner;
public class MainDBHelper extends SQLiteOpenHelper{
@sketchpunk
sketchpunk / PopWindowRating,java
Created July 29, 2014 19:02
Android Rating and Comment PopupWindow
package com.sketchpunk;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.PopupWindow;
import android.widget.TextView;
@sketchpunk
sketchpunk / ByteStack.java
Last active April 2, 2016 15:42
Byte array buffer with easy Read and cleanup.
package com.sketchpunk.shared;
import java.util.ArrayList;
/* TESTING CODE
byte[] bytes = "rawr~woot~amazing".getBytes();
ByteStack stack = new ByteStack(50);
stack.put(bytes);
stack.getAvailable('~');
//System.out.println(stack.getTill('~', true));
@sketchpunk
sketchpunk / EventManager.js
Created April 22, 2016 14:40
Object that handles custom events in Javascript
/*EXAMPLE CODE
var tObj = {val:"woot",func:function(){ console.log(this.val); console.log(arguments); }}
var evt = new EventManager("onprogress","oncomplete");
evt.addEventListener("onprogress",function(){ console.log(arguments); });
evt.addEventListenerDelegate("onprogress",tObj,tObj.func);
evt.dispatchEvent("onprogress",[1,3]);
*/
@sketchpunk
sketchpunk / delegate.js
Created April 22, 2016 14:43
Create a delegate function that keeps the reference of the parent object of the function.
function Delegate(obj,funcRef){
var args = null;
if(arguments.length > 2){ args = []; for(var i=2; i < arguments.length; i++) args.push(arguments[i]); }
return function(){
if(args == null) funcRef.apply(obj,arguments);
else{
var params = args.slice(); //Need to make a copy of args, When just adding to args caused a problem with bubbling events.
for(var i=0; i < arguments.length; i++) params.push(arguments[i]);
funcRef.apply(obj,params);
}//if
@sketchpunk
sketchpunk / b64_to_float32Array.js
Created September 1, 2017 03:08
Base64 String to Float32Array in Javascript, good for WebGL
var blob = window.atob("AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAA"), // Base64 string converted to a char array
fLen = blob.length / Float32Array.BYTES_PER_ELEMENT, // How many floats can be made, but be even
dView = new DataView( new ArrayBuffer(Float32Array.BYTES_PER_ELEMENT) ), // ArrayBuffer/DataView to convert 4 bytes into 1 float.
fAry = new Float32Array(fLen), // Final Output at the correct size
p = 0; // Position
for(var j=0; j < fLen; j++){
p = j * 4;
dView.setUint8(0,blob.charCodeAt(p));
dView.setUint8(1,blob.charCodeAt(p+1));
@sketchpunk
sketchpunk / Voxel Ray Cast _ Intersection
Last active December 31, 2022 17:53
Voxel Chunk Raycasting using "Fast Voxel Traversal Algorithm" in javascript
// http://www.cse.chalmers.se/edu/year/2010/course/TDA361/grid.pdf
function voxel_raycast_min(ray,chunk,aabb){
//..................................................
// Determine if the voxel chunk has an intersection.
var tBox = {};
if(!Ray.inAABB(aabb,ray,tBox)){ return null; }
//..................................................
var inPos = ray.getPos(tBox.min).nearZero(), // entry point for chunk, Clean up vals near zero.
cellSize = chunk.scale,
@sketchpunk
sketchpunk / gist:fc00b1c65b3f1d220eff2ad380b851a8
Last active February 16, 2018 18:23
Interleaved Float32Array and WebGL Buffer
//==============================================================
//Example
var vertex = [ 1, 1, 0, -1, -1, 0 ];
var somefloat = [2.0, 18.0];
var componentCnt = [3,1]; //Define the size of the vertext data for each array, for example: in vertex every 3 floats counts as one
var vertexCnt = vertex.length / 3; // How many vertices are there
var attrLocOffset = 1;
var interInfo = interleavedFloatArray( vertexCnt, [vertex,somefloat], componentCnt );
interleavedInstanceFloatBuffer(interInfo ,attrLocOffset);
@sketchpunk
sketchpunk / XhrPromise_v1.js
Last active February 24, 2020 16:58
XhrPromise = XMLHttpRequest + Promise
/*
let xhr = new XhrPromise();
xhr.get(url, "json").then( r=>console.log(r) ).catch(err=>console.log(err));
*/
class XhrPromise{
static get( url, type ){
let xhr = new XhrPromise();
return xhr.get.apply( xhr, arguments );
}