Skip to content

Instantly share code, notes, and snippets.

@danielbierwirth
danielbierwirth / AsyncTaskRunner.cs
Last active July 1, 2024 13:39
Unity C# script to execute task asynchronously in background and process result on Unity main thread. The script can be used to run compute intensive or other operations such as HTTP stream listener in background. The UnityMainThreadDispatcher is used to move the result of async task to the main thread.
using System;
using System.Threading.Tasks;
using UnityEngine;
using PimDeWitte.UnityMainThreadDispatcher;
/// <summary>
/// A Unity C# script to execute task asynchronously and process result on Unity main thread.
/// </summary>
/// Note: This script utilizes the UnityMainThreadDispatcher
/// from https://github.com/PimDeWitte/UnityMainThreadDispatcher package
@danielbierwirth
danielbierwirth / generate_model_description.py
Created June 10, 2024 08:48
Pixyz Studio automation script to export model hierarchy and metadata as json file. Each occurrence with attached metadata will be exported as json tree. Run this script in Pixyz Studio python console
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# [USER PARAMETER] Desired file path
FILE_PATH = 'C:/output/modeldescription.json'
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
def get_metadata_dict(metadata):
metadata_dict = dict()
metadata_dict['name'] = metadata.name
metadata_dict['value'] = metadata.value
@danielbierwirth
danielbierwirth / PostProcessorFileCopy.cs
Last active March 30, 2022 07:48
#unity3d post-process class (c#) that copies a directory including content and subdirectories from source to target location as unity build post-process. place this script inside Editor folder somewhere within Assets directory
/// <summary>
/// PostProcessorFileCopy class contains functions to copy source folder and subfolders/files (recursive)
/// to build directory as post process after build. Place this class inside Editor folder.
/// </summary>
public class PostProcessorFileCopy {
[PostProcessBuild]
public static void OnPostprocessBuild(BuildTarget target, string pathToBuildfile) {
@danielbierwirth
danielbierwirth / GetComponents.cs
Last active February 23, 2019 13:34
Quickly access Child Components
using System.Collections.Generic;
namespace UnityEngine
{
public static class UnityEngineEx
{
public static T GetComponentInDirectChildren<T>(this Component parent) where T : Component
{
@danielbierwirth
danielbierwirth / addmeshcollider.cs
Last active July 18, 2017 14:56
unity function that gets all meshes of parent gameObject including it's child gameObjects and adds corresponding meshcollider to parent gameObject
/// <summary>
/// Add mesh collider to game object
/// Gets all child components, looks for meshes and assings
/// them to gameobject meshcollider
/// </summary>
/// <param name="containerModel">The gameobject</param>
private void AddMeshCollider (GameObject containerModel)
{
// Add mesh collider
MeshFilter meshFilter = containerModel.GetComponent<MeshFilter>();
@danielbierwirth
danielbierwirth / TCPTestClient.cs
Last active August 17, 2024 07:19
TCP Client-Server Connection Example | Unity | C# | Bidirectional communication sample: Client can connect to server; Client can send and receive messages: Server accepts clients; Server reads client messages; Server sends messages to client
// This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License.
// To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/
// or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using UnityEngine;
@danielbierwirth
danielbierwirth / OffscreenRendering.cs
Last active April 9, 2024 21:32
Offscreen rendering script (unity | c#) | render camera view to texture | save texture as png
using System.Collections; using System.Collections.Generic;
using System.IO; using UnityEngine;
/// <summary>
/// Attach this script to an empty gameObject. Create a secondary camera
/// gameObject for offscreen rendering (not your main camera) and connect it
/// with this script. Offscreen camera should have a texture object attached to it.
/// OffscreenCamera texture object is used for rendering (please see camera properties).
/// </summary>
public class OffscreenRendering : MonoBehaviour {
@danielbierwirth
danielbierwirth / pickingmatrixcalculation.cs
Last active June 13, 2022 00:43
OpenTK pick matrix calculation. Transforms viewmatrix according to pick location and picking region. Modified matrix can be used for object pick determination.
/// <summary>
/// OpenTK/OpenGl pick matrix calculation. Takes pick location,pick region to
// modify the current viewport matrix.
/// </summary>
/// <param name="x">The x pick location.</param>
/// <param name="y">The y pick location.</param>
/// <param name="deltax">The pick region x bounds.</param>
/// <param name="deltay">The pick region y bounds.</param>
/// <param name="viewport">The viewport matrix.</param>
public void PickMatrix(double x, double y, double deltax, double deltay, int[] viewport)