Skip to content

Instantly share code, notes, and snippets.

View techgeek1's full-sized avatar

Austin Rife techgeek1

  • Bay Area, CA
View GitHub Profile
@techgeek1
techgeek1 / ConcurrentQueue.cs
Last active September 10, 2015 23:47
ConcurrentQueue using locks for use in older .NET projects (like in Unity3D)
using System;
using System.Collections.Generic;
namespace KanameExtensions {
public class ConcurrentQueue<T> {
//private vars
private readonly object syncLock = new object();
private Queue<T> rqueue;
//constructors
using UnityEngine;
using UnityEngine.Networking;
using System;
using System.Collections.Generic;
namespace AlderAcres.Network {
/// <summary>
///
/// </summary>
/// <remarks>
@techgeek1
techgeek1 / CsprojPostProcessor.cs
Created March 24, 2018 18:23
Post processor for excluding shader files from the csproj unity 2018 generates
using SyntaxTree.VisualStudio.Unity.Bridge;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
using UnityEditor;
using UnityEngine;
// Post processor for excluding shader files from the csproj unity 2018 generates
[InitializeOnLoad]
public class CsprojPostProcessor : MonoBehaviour {
@techgeek1
techgeek1 / vector3.rs
Created March 28, 2018 23:38
Vector3 implementation in rust
use std::ops::*;
#[derive(Copy, Clone)]
struct Vector3 {
x: f32,
y: f32,
z: f32
}
#[allow(dead_code)]
@techgeek1
techgeek1 / .gitattributes
Created July 17, 2018 15:30
.gitattributes with LFS setup for Unity
# Audio
*.wav filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
# Models
*.obj filter=lfs diff=lfs merge=lfs -text
*.dae filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.mat filter=lfs diff=lfs merge=lfs -text
@techgeek1
techgeek1 / .gitignore
Created July 17, 2018 15:32
Custom gitignore for Unity
# =============== #
# Unity generated #
# =============== #
[Tt]emp/
[Oo]bj/
/[Bb]uild/
/[Ll]ibrary/
# ======================================== #
# Visual Studio / Android Studio generated #
@techgeek1
techgeek1 / ecs_test.rs
Created September 12, 2018 00:32
Attempt at one API for ECS system/component declaration
use std::any::TypeId;
macro_rules! depends_on {
($($type:ty),*) => {
fn dependencies(&self) -> &'static [TypeId] {
$(<$type as System>::__assert_is_system();)*
&[$(TypeId::of::<$type>()),*]
}
}
@techgeek1
techgeek1 / ecs_test_2.rs
Last active September 16, 2018 15:38
Attempt two at an ecs api. This time encoding as much data in the type system as possible via associated types
#![feature(const_fn, const_type_id)]
#[macro_use]
mod macros {
macro_rules! foreach_permutation {
($action:ident!(), $type:ident) => {
$action!($type);
};
($action:ident!(), $type_lead:ident, $($type:ident),*) => {
$action!($type_lead, $($type),*);
@techgeek1
techgeek1 / ecs_iteration_idea.rs
Created September 18, 2018 17:11
Testing ideas for iterating the intersection of entities with a specified subset of components in a system
extern crate rand; // 0.5.5
use std::default::Default;
use rand;
macro_rules! declare_components {
($($name:ident),*) => {
$(
struct $name {
pub value: i32
@techgeek1
techgeek1 / hibitset_mem_calc.rs
Created December 22, 2018 00:55
Calculator to determine the approximate memory space required for a hierarchical bitvector of a specified size
const COUNT: i32 = 500_000;
const BLOCK_SIZE: i32 = 1024;
fn main() {
let mut count = COUNT;
let mut block_count = 0;
let mut layer_count = 1;
while count > BLOCK_SIZE {
let blocks = (count as f32 / (BLOCK_SIZE as f32)).ceil() as i32;