Skip to content

Instantly share code, notes, and snippets.

View erodozer's full-sized avatar
🚧
I may be slow to respond between 8am-8pm EST M-F

Nicholas Hydock / ero erodozer

🚧
I may be slow to respond between 8am-8pm EST M-F
View GitHub Profile
@erodozer
erodozer / spoutfeed.gd
Created September 26, 2023 07:32
Godot Spout2 example
# requires https://github.com/you-win/spout-gd
extends TextureRect
@export var receiver_name: String = "" : set = update_receiver_name
@export var sender_name: String = "GodotSprout" : set = update_sender_name
var spout: Spout
# receiving image buffer
@erodozer
erodozer / godot-pkg.sh
Last active October 11, 2023 02:14
Godot github package dependency helper script
#!/usr/bin/env bash
# godot-package helper
# @author Erodozer <[email protected]>
#
# Simple Bach Script that fetches and merges standard godot addon repositories from github
# to your project. You can use this instead of Godot's Asset Library if you wish to
# include dependencies in your projects while developing, but not include them in your git.
#
# Run this from the root directory of your project
@erodozer
erodozer / godot-instant-fb.html
Last active December 24, 2021 07:05
Godot Instant Games on Facebook
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<meta name='viewport' content='width=device-width, user-scalable=no' />
<title>fb-instant-godot</title>
</head>
<body>
<canvas id='canvas'></canvas>
<script src="https://connect.facebook.net/en_US/fbinstant.7.0.js"></script>
@erodozer
erodozer / godot-rxjs.js
Created June 17, 2020 21:37
Convenient wrapper for Godot ECMAScript to support Rxjs flows
import { fromEventPattern } from 'rxjs';
module.exports = {
fromEvent(instance, target, signal) {
return fromEventPattern(
handler => {
target.connect(signal, instance, handler);
},
handler => {
target.disconnect(signal, instance, handler);
@erodozer
erodozer / async-emitter.js
Last active September 11, 2019 15:42
Promisify EventEmitter. For awaiting one time events, such as being notified if something is ready
/**
* Create a one-time use Promise invoked by an event emitter
* Allows for awaiting an event
*/
const asyncEvent = (eventEmitter, eventName) =>
new Promise(resolve => {
const resolveFn = (...args) => {
// remove the listener so the promise is never resolved multiple times
eventEmitter.removeListener(eventName, resolveFn);
resolve(args);
extends Node
onready var player = get_tree().get_nodes_in_group("player")[0]
func estimate_damage(attacker: Combatant, opponent: Combatant, limb: Limb) -> int:
return attacker.attack(opponent, limb)
func estimate_accuracy(attacker: Combatant, opponent: Combatant, limb: Limb) -> float:
return attacker.chance(opponent, limb)
extends Node
"""
@author nhydock
Global Event Bus allows for registration and fan-out signal like
message passing between arbitrary objects. Add this as a singleton
to your project for easy usage.
In actuality is a super generic signal register.
@erodozer
erodozer / example_npc.gd
Created March 11, 2019 03:19
example_npc script
extends "res://maps/NPC.gd"
func interact():
dialog.prepare()
dialog.show()
if GameState.Flags.get('talked_to_guilford'):
dialog.line(
"""
#Guilford
Don't worry, I'll have your equipment ready for ya soon. Lemme just finish this drink.
@erodozer
erodozer / SceneManager.gd
Last active July 12, 2019 01:01
Improved SceneManager
extends Node
onready var anim = $Fader/AnimationPlayer
func change_scene(next_scene, params=[]):
"""
Changes scene with a transition.
You can hold the fade back in transition if desired until
the next scene is in a state that is considered ready
"""
@erodozer
erodozer / clamp.shader
Created September 27, 2018 01:43
Transition Clamping Shader
shader_type canvas_item;
render_mode blend_mix;
uniform float transition: hint_range(0, 1);
float val(vec3 color) {
return max(max(color.r, color.g), color.b);
}
void fragment() {