Skip to content

Instantly share code, notes, and snippets.

View b-cancel's full-sized avatar

Bryan Cancel b-cancel

View GitHub Profile
@b-cancel
b-cancel / Unity3D_character_To_KeyCode.cs
Last active June 17, 2023 15:37
UNITY 3D => Unity Key Codes to Characters (for MOST keys that display a character when pressed)
//NOTE: This is only a DICTIONARY with MOST character to keycode bindings... it is NOT a working cs file
//ITS USEFUL: when you are reading in your control scheme from a file
//NOTE: some characters SHOULD map to multiple keycodes (but this is impossible)
//since this is a dictionary, only 1 character is bound to 1 keycode
//EX: * from the keyboard will be read the same as * from the keypad... because they produce the same character in a text file
Dictionary<char, KeyCode> chartoKeycode = new Dictionary<char, KeyCode>()
{
//-------------------------LOGICAL mappings-------------------------
@b-cancel
b-cancel / Unity3D_euclideanDistance.cs
Last active July 3, 2018 00:24
UNITY 3D => Calculate Euclidean Distance for N-Dimensional Space
static float euclideanDistance(float[] pointA, float[] pointB)
{
if (pointA.Length == pointB.Length)
{
float sum = 0;
for (int dim = 0; dim < pointA.Length; dim++)
sum += Mathf.Pow((pointA[dim] - pointB[dim]), 2);
return Mathf.Sqrt(sum); //distance is always positive
}
else
@b-cancel
b-cancel / index.html
Last active July 3, 2018 00:24
HTML => Basic HTML Setup File
<html>
<header><title>Setup File</title></header>
<body>
Hello world
</body>
</html>
@b-cancel
b-cancel / main.dart
Last active November 29, 2021 19:41
FLUTTER => Overriding Back Button in Flutter
import 'package:flutter/material.dart';
import 'dart:async';
void main() => runApp(new BackButtonOverrideDemoWidget());
class BackButtonOverrideDemoWidget extends StatefulWidget{
@override
_BackButtonOverrideDemoWidgetState createState() => new _BackButtonOverrideDemoWidgetState();
}
@b-cancel
b-cancel / main.dart
Last active July 8, 2018 06:50
FLUTTER => Using Widget Sizes to calculate the Sizes of other widgets Automatically Or Manually
import 'package:flutter/material.dart';
import 'dart:async';
//Desired Behavior on FIRST build (It should not take 3)
//CASE 1 (parent uses child size) : eye.width = vane.width * 10
//CASE 2 (child uses parent size) : pupil.width = iris.width / 2
//CASE 3: (child uses sibling size) : iris.width = vane.width * 5
//Desired Sizes (can be read from Render Tree in Flutter Inspector) [in original config of 4 letters]
//vane = 30
@b-cancel
b-cancel / main.dart
Last active August 15, 2018 05:11
FLUTTER => Synchronous Operations Taking Up Time In An Asynchronous Function
import 'dart:async';
import 'package:flutter/material.dart';
/*
OUTPUT (one of many) NOTE: how far behind the Loose Timer is, is not predictable either
I/flutter (11433): Timer Restarted
I/flutter (11433): Timers Started
I/flutter (11433): Loose Timer Will Take 588 solid runs of 0:00:00.017000 and an extra run of 0:00:00.004000
@b-cancel
b-cancel / EnsureVisibleWhenFocused
Last active June 28, 2019 00:49
FLUTTER => Ensures that "TextFormFields" are visible when focused in Flutter
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart';
import 'package:meta/meta.dart';
/// Note:
/// [*] some functions are async simply because that schedules them after something else that should happen first for everything to work properly
/// [*] you really should not use "ensureVisible" or "ensureErrorVisible" or "KeyboardListener" unless that field is already wrapped in "EnsureVisibleWhenFocused"
/// you will get very unusual behavior
@b-cancel
b-cancel / main.dart
Created August 15, 2018 05:11
FLUTTER => using inputFormatters for things other than inputFormatting
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() => runApp(
MaterialApp(home: new MyApp())
);
class MyApp extends StatefulWidget {
@b-cancel
b-cancel / main.dart
Created September 4, 2018 06:30
FLUTTER => password and confirm password field validation before the creation of a user. Handles all edge cases well without blocking user input at any point.
String getPasswordValidationError(bool forPassword) {
String initialPasswordString = focusNodeToValue[passwordFocusNode].value;
String confirmPasswordString = focusNodeToValue[confirmPasswordFocusNode].value;
///-----make sure this particular password is valid
if (forPassword) {
if (initialPasswordString.isNotEmpty == false)
return "Password Required";
else if (initialPasswordString.length < 6)
return "The Password Requires 6 Characters Or More";
@b-cancel
b-cancel / gattSpecs.dart
Last active April 4, 2023 18:47
Bluetooth Gatt Specification Maps For Dart
//other stuff to maybe map out
//https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers/
//https://www.bluetooth.com/specifications/assigned-numbers/16-bit-uuids-for-members/
//https://www.bluetooth.com/specifications/assigned-numbers/16-bit-uuids-for-sdos/
//https://www.bluetooth.com/specifications/assigned-numbers/service-discovery/
//https://www.bluetooth.com/specifications/assigned-numbers/health-device-profile/
//https://www.bluetooth.com/specifications/assigned-numbers/units/
//Gatt Service Hierarchy
//Device