Skip to content

Instantly share code, notes, and snippets.

View rhmoller's full-sized avatar

Rene Hangstrup Møller rhmoller

View GitHub Profile
@rhmoller
rhmoller / SpriteRenderer.ts
Last active May 27, 2022 19:00
Sprite Renderer using WebGL2 Instancing
const BYTES_PER_QUAD = 16;
const BUFFER_SIZE = BYTES_PER_QUAD * 200000;
export class SpriteRenderer {
gl: WebGL2RenderingContext;
dataView: DataView;
index = 0;
constructor(canvas: HTMLCanvasElement, spriteSheet: HTMLImageElement, spriteSize = BYTES_PER_QUAD, pixelSize = 4) {
const gl = canvas.getContext("webgl2");
@rhmoller
rhmoller / image_future.rs
Last active November 22, 2022 12:58
A future for loading an Image via web-sys
use futures::task::{Context, Poll};
use std::cell::RefCell;
use std::future::Future;
use std::pin::Pin;
use std::rc::Rc;
use wasm_bindgen::prelude::*;
use wasm_bindgen::JsCast;
use web_sys::HtmlImageElement;
/// A future for loading a [HtmlImageElement](https://docs.rs/web-sys/0.3.39/web_sys/struct.HtmlImageElement.html)
@rhmoller
rhmoller / react-16.7.0-alpha.0.d.ts
Last active October 26, 2018 00:24
Module augmentation for @types/react that adds defintions of some of the new hooks in React 16.7.0-alpha.0
import React from "react";
import {Context, RefObject} from "react";
declare module "react" {
function useState<T>(initialState?: T): [T, (value: T) => void];
function useEffect(effect: () => (() => void) | void, dependencies?: Array<any>): void;
function useContext<C>(context: Context<C>): C;
function useReducer<S>(reducer: (state: S, action: any) => S, initialState?: S, initialAction?: any): [S, (args: any) => void];
function useCallback(callback: () => void, dependencies?: Array<any>): () => void;
function useMemo<R>(fn: () => R, dependencies?: Array<any>): R;
@rhmoller
rhmoller / build.gradle
Created October 20, 2014 21:32
Gradle example of fetching dependencies from GWT_TOOLS
repositories {
ivy {
url "https://google-web-toolkit.googlecode.com/svn/tools/lib"
layout "pattern", {
artifact "[artifact]-[revision].[ext]"
}
}
}
configurations {
@rhmoller
rhmoller / GwtRpcLinter.java
Last active August 29, 2015 14:07
GWT-RPC Linter that checks that serializable interfaces have implementations and serializable classes have default constructors and serializable fields. Should be invoked from a GWT Generator
public class GwtRpcLinter {
public static final String PACKAGE_PREFIX = "com.yourcompany"; // only check classes in this package
private TreeLogger logger;
private GeneratorContext context;
private List<String> errorMessages = new ArrayList<>();
public GwtRpcLinter(TreeLogger logger, GeneratorContext context) {
this.logger = logger;
this.context = context;
@rhmoller
rhmoller / NewCopyFile.java
Created July 22, 2011 09:35
Java 7: Try with Resources (ARM)
public void newStyleCopyFile(File source, File target) {
try (
FileInputStream in = new FileInputStream(source);
FileOutputStream out = new FileOutputStream(target);
) {
byte[] buffer = new byte[4096];
int read;
while ((read = in.read(buffer)) != -1) {
out.write(buffer, 0, read);
}
@rhmoller
rhmoller / DiamondOperator.java
Created July 17, 2011 11:51
Java 7: Project Coin Examples
public void createGenerics() {
List<String> list = new ArrayList<String>();
Map<String, List<String>> keyValues = new HashMap<String, List<String>>();
}
public void createWithDiamondOperator() {
List<String> list = new ArrayList<>();
Map<String, List<String>> keyValues = new HashMap<>();
}