Skip to content

Instantly share code, notes, and snippets.

@AlexMerzlikin
AlexMerzlikin / CustomEcsTestsFixture.cs
Created October 22, 2023 20:55
CustomEcsTestsFixture.cs that extends ECSTestsFixture provided by Unity Technologies. It is used to provide all the functionality to run unit tests on systems in Unity ECS
using Unity.Entities;
using Unity.Entities.Tests;
namespace Roguelite.Tests.Infrastructure
{
public class CustomEcsTestsFixture : ECSTestsFixture
{
private const int EntityCount = 1000;
protected EntityManager Manager => m_Manager;
@AlexMerzlikin
AlexMerzlikin / AsyncStateMachine.cpp
Created December 15, 2022 21:51
What a simple "await Task.Delay()" is generated into using Unity IL2CPP scripting backend.
IL2CPP_EXTERN_C IL2CPP_METHOD_ATTR Task_t751C4CC3ECD055BABA8A0B6A5DFBB4283DCA8572* TestTaskMonoBehaviour_TestMethodAsync_m2608F067B822413A2380FE0CCA1A9FCB251C4454 (TestTaskMonoBehaviour_t8D0CF54D6090450EE844BEA7DA0A080B5A17A74C* __this, const RuntimeMethod* method)
{
static bool s_Il2CppMethodInitialized;
if (!s_Il2CppMethodInitialized)
{
il2cpp_codegen_initialize_runtime_metadata((uintptr_t*)&AsyncTaskMethodBuilder_Start_TisU3CTestMethodAsyncU3Ed__1_tA8A97951AA0C3E88CC6D874339C83A65065C39D0_m6D2DD2EBF8C61EB68DE2F44E96C14C78AD8BD583_RuntimeMethod_var);
il2cpp_codegen_initialize_runtime_metadata((uintptr_t*)&AsyncTaskMethodBuilder_t7A5128C134547B5918EB1AA24FE47ED4C1DF3F06_il2cpp_TypeInfo_var);
s_Il2CppMethodInitialized = true;
}
U3CTestMethodAsyncU3Ed__1_tA8A97951AA0C3E88CC6D874339C83A65065C39D0 V_0;
@AlexMerzlikin
AlexMerzlikin / UniversalRenderPipelineTemplateWithDotsInstancing.shader
Last active March 29, 2024 12:50
Template unlit URP shader that supports DOTS instancing to use as a guide to create shaders for BatchRendererGroup since BRG only works with DOTS instancing compatible shaders. Unfortunately, the official docs about it haven't helped me that much, and I thought others might face the same issues.
Shader "Universal Render Pipeline/Custom/UnlitWithDotsInstancing"
{
Properties
{
_BaseMap ("Base Texture", 2D) = "white" {}
_BaseColor ("Base Colour", Color) = (1, 1, 1, 1)
}
SubShader
{
@AlexMerzlikin
AlexMerzlikin / BatchRenderGroupBoidsRunner.cs
Last active April 6, 2022 20:44
The first unoptimized version of BatchRenderGroup Boids Renderer for the blog post @ https://gamedev.center/trying-out-new-unity-api-batchrenderergroup/
using System;
using ThousandAnt.Boids;
using Unity.Collections;
using Unity.Collections.LowLevel.Unsafe;
using Unity.Jobs;
using Unity.Mathematics;
using UnityEngine;
using UnityEngine.Rendering;
using Random = UnityEngine.Random;
using System;
using Unity.Collections;
using Unity.Collections.LowLevel.Unsafe;
using Unity.Jobs;
using Unity.Mathematics;
using UnityEngine;
using UnityEngine.Rendering;
public class SimpleBRGExample : MonoBehaviour
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using BenchmarkDotNet.Attributes;
namespace ArrayVsDictionaryLookup
{
[MemoryDiagnoser]
public class LookupBenchmarks
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
namespace UnityEngine.EventSystems
{
public class MultiTouchInputModule : TouchInputModule
{
private PinchRotateEventData _pinchRotateData;
@AlexMerzlikin
AlexMerzlikin / FastTypeComparer.cs
Created December 19, 2019 20:23
Compares types by reference before comparing them using the default type equality operator
//-----------------------------------------------------------------------
// <copyright file="FastTypeComparer.cs" company="Sirenix IVS">
// Copyright (c) 2018 Sirenix IVS
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
@AlexMerzlikin
AlexMerzlikin / Singleton.cs
Created December 18, 2019 10:52
Unity Singleton
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public abstract class Singleton<T> : MonoBehaviour where T : Component
{
#region Fields
/// <summary>
#if UNITY_EDITOR
using System;
using System.Collections.Generic;
using System.Text;
using UnityEditor;
using UnityEditor.Compilation;
using UnityEngine;
[InitializeOnLoad]
public class AsmDefDebug