Skip to content

Instantly share code, notes, and snippets.

⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⡛⠛⠷⣶⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⡇⠀⠀⠀⠙⠻⣷⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⠟⠀⠀⠀⠀⠀⠀⠈⣹⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀⣠⡴⠞⠉⠈⠻⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣿⡧⠤⠤⠶⠖⠋⠉⠀⠀⠀⠀⠀⢹⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⠟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣴⠞⠉⠀⠉⠙⠻⣶⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⣀⣀⣀⠀⠀⠀⠀⢀⣠⡴⠞⠉⠀⢀⣀⣀⣀⠀⠀⠘⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⣿⣆⣴⠟⠉⠉⠉⠛⢶⡖⠛⠉⠁⠀⠀⢠⡾⠋⠉⠈⠉⠻⣦⣰⣿⣀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢀⣤⣾⠟⠋⡿⠁⢀⣾⣿⣷⣄⠈⢿⡀⠀⠀⠀⢠⡟⠀⢠⣾⣿⣷⡄⠘⣿⠉⠛⢿⣦⡀⠀⠀⠀⠀⠀
// simple easy shared access to callback and current attempted profile
private static var supportsCallback:Function;
private static var checkingProfile:String;
public static function supportsProfile(nativeStage:flash.display.Stage, profile:String, callback:Function):void
{
supportsCallback = callback;
checkingProfile = profile;
if (nativeStage.stage3Ds.length > 0) {
public static function isPointInPolygon(point:Vector3D, polygon:Vector.<Vector3D>):Boolean {
var i:int, j:int, nvert:int = polygon.length;
var result:Boolean = false;
for (i = 0, j = nvert - 1; i < nvert; j = i++) {
if (((polygon[i].z) >= point.z != (polygon[j].z >= point.z)) &&
(point.x <= (polygon[j].x - polygon[i].x) * (point.z - polygon[i].z) / (polygon[j].z - polygon[i].z) + polygon[i].x))
result = !result;
}
@SirGordon
SirGordon / away3dutils.as
Last active October 6, 2015 14:33
away3d get screen coords of 3d object
private function getStagePosition(cam:Camera3D, obj:ObjectContainer3D):Vector3D {
var camT:Matrix3D = cam.viewProjection.clone();
var planT:Matrix3D = obj.sceneTransform.clone();
planT.appendTranslation(0, obj.maxY, 0);
camT.prepend(planT);
var pv:Vector3D = Utils3D.projectVector(camT, new Vector3D());
pv.x = (pv.x * stage.stageWidth / 2) + stage.stageWidth / 2;
pv.y = (pv.y * -1 * stage.stageHeight / 2) + stage.stageHeight / 2;
return pv;
}
public static function generateRandomResultBasedOnWeights(weights:Array):int {
weights.sort(Array.DESCENDING);
var sum:Number = sumArrayElements(weights);
var r:Number = Math.random() * sum;
var result:int = -1;
for (var i:uint = 0; i < weights.length; i++) {
var item:int = weights[i];
if (r < item)
return result;
@SirGordon
SirGordon / sandcastle-mobile-test
Created June 3, 2015 09:34
SandCastle mobile test
package {
import away3d.cameras.Camera3D;
import away3d.cameras.lenses.PerspectiveLens;
import away3d.containers.Scene3D;
import away3d.containers.View3D;
import away3d.core.managers.Stage3DManager;
import away3d.core.managers.Stage3DProxy;
import away3d.debug.AwayStats;
import away3d.events.Stage3DEvent;
import away3d.lights.DirectionalLight;