Skip to content

Instantly share code, notes, and snippets.

View ogxd's full-sized avatar
👋

Olivier Giniaux ogxd

👋
View GitHub Profile
@ogxd
ogxd / ProjectReferences.cs
Last active March 9, 2020 21:49
Easy project references for Unity, without using Resources.Load ! Faster and cleaner.
using UnityEngine;
public class ProjectReferences<T> : ScriptableObject where T : ScriptableObject
{
private static T instance;
public static T Instance {
get {
if (instance == null) {
instance = Resources.Load<T>(typeof(T).Name);
if (instance == null) {
@ogxd
ogxd / CameraImage.cs
Created June 28, 2019 18:46
Camera (webcam or phone camera) directly in a Unity UI Image
using UnityEngine;
using UnityEngine.UI;
[RequireComponent(typeof(Image))]
[RequireComponent(typeof(AspectRatioFitter))]
public class CameraImage : MonoBehaviour {
private WebCamTexture cameraTexture;
private Image image;
private AspectRatioFitter fit;
@ogxd
ogxd / MeshFromBounds.cs
Last active March 9, 2020 21:49
Create a Unity mesh from given bounds
public Mesh CreateMeshFromBounds(Vector3 center, Vector3 extends) {
var xm_ym_zm = new Vector3(center.x - extends.x, center.y - extends.y, center.z - extends.z);
var xp_ym_zm = new Vector3(center.x + extends.x, center.y - extends.y, center.z - extends.z);
var xm_yp_zm = new Vector3(center.x - extends.x, center.y + extends.y, center.z - extends.z);
var xp_yp_zm = new Vector3(center.x + extends.x, center.y + extends.y, center.z - extends.z);
var xm_ym_zp = new Vector3(center.x - extends.x, center.y - extends.y, center.z + extends.z);
var xp_ym_zp = new Vector3(center.x + extends.x, center.y - extends.y, center.z + extends.z);
var xm_yp_zp = new Vector3(center.x - extends.x, center.y + extends.y, center.z + extends.z);
var xp_yp_zp = new Vector3(center.x + extends.x, center.y + extends.y, center.z + extends.z);
// The 'unmanaged' keyword was added in C# 7.3, to allow type restriction for unmanaged types (it checks if type has references recursively)
// https://docs.microsoft.com/fr-fr/dotnet/csharp/whats-new/csharp-7-3
#define CSHARP_7_3_OR_ABOVE
// Marshal.SizeOf(Type) was changed for Marshal.SizeOf<T>() in .NET 4.5.1, and the first constructor became obsolete in NET Standard.
// https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.marshal.sizeof?view=netframework-4.5
#define NET_4_5_1_OR_ABOVE
using System;
using System.Runtime.InteropServices;
using System.Security;
@ogxd
ogxd / RealFramerate.cs
Last active March 9, 2020 21:49
A real framerate counter for Unity
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
[ExecuteInEditMode]
[RequireComponent(typeof(Camera))]
public class RealFramerate : MonoBehaviour {
public int framerate { get { return _framerate; } }
private int _framerate;