Skip to content

Instantly share code, notes, and snippets.

【C#】プロパティの多いクラスのデバッグ表示でStackOverFlow

自動生成したクラスなど、プロパティが非常に多いクラスを、Watch式などでデバッグ中に表示した際に、StackOverflowが起きる事がある。
例えばこういうコード

// ShaderのSwizzle operator相当の事をしたい
public Int4 xxxx { get=>new Int4(x,x,x,x); }
public Int4 xxxy { get=>new Int4(x,x,x,y); }
public Int4 xxxz { get=>new Int4(x,x,x,z); }
public Int4 xxxw { get=>new Int4(x,x,x,w); }
public Int4 xxyx { get=>new Int4(x,x,y,x); }

【C#】Enumerableのデバッグ表示でEnumerableが解放されない問題

IEnumerableを継承したクラスを、Watch式などでデバッグ中に表示した際に、GetEnumeratorが自動で呼ばれてしまう。
例えばこういうコード

// ShaderのSwizzle operator相当の事をしたい
class A : IEnumerable {
	public IEnumerator GetEnumerator { ~~~ }
}

これを含む自作クラスをWatchすると、IEnumerable用のデバッグ表示機能により、要素羅列のために自動でGetEnumeratorが呼ばれる。

using System;
using UnityEngine;
using System.Collections.Generic;
using System.Diagnostics;
using Debug = UnityEngine.Debug;
namespace P8.Container {
@green224
green224 / FSM.cs
Last active February 10, 2020 17:14
using System;
namespace P8.StateMachine {
public static class FSM< ImplMachine, ImplState >
where ImplMachine : FSM< ImplMachine, ImplState >.Machine
where ImplState : FSM< ImplMachine, ImplState >.State
{
public abstract class Machine {
@green224
green224 / ExportSplitFBX.py
Created March 11, 2020 14:07
モデルを、NLAトラックごとに分離して出力するアドオン
"""
アニメーションをFBX出力をするアドオン。
そのままのFBX出力では、ConstraintsやDriverを複数使用した場合に
反映が1フレーム遅延した結果、正常なモーションを出力できない事がある。
このアドオンでは、モーションをそれぞれ1フレーム目の姿勢で何度か再計算してから開始する事で、
なるべくいい感じにモーションが出力されるようにする。
使い方
1.File->Export Split Anim FBX を選択する
@green224
green224 / IzUVTools.py
Created May 29, 2020 14:18
UV展開用のこまごました機能集
"""
UV展開用のこまごました機能集
ショートカットキー
i: 選択頂点を整列
"""
import bpy
import os
import subprocess
# Blender用のボーンに対するこまごました操作
import bpy
D = bpy.data
# 選択ボーンの回転順を一括変更する
bones = bpy.context.selected_pose_bones
for bone in bones:
bone.rotation_mode = 'XZY'
@green224
green224 / SwingTwistBone.py
Last active August 22, 2020 10:43
BlenderでボーンをSwing-Twist分解するリギングを行うためのアドオン
"""
振り(swing)と捻じれ(twist)にボーンを分解してリグを組むための
機能を追加するアドオン。
Swing-Twist分解は、腕や足などのボーンによく使用されるが、
デフォルトの機能のみではこれをリギングできない。
・CopyRotationでEulerXZ/Yに分解する
 → Swing-Twistではないので、角度が大きくなると破綻する
・DampedTrack & CopyRotation
 → 一見再現できているように見えるが、実行順の影響か
@green224
green224 / ExportBakedFBX.py
Created June 7, 2019 18:27
Blenderでアニメーション付きモデルをちゃんとFBX出力するアドオン
"""
アニメーションを全BakeしてFBX出力をするアドオン。
そのままのFBX出力では、スケーリングしたボーンの子ボーンを
Constraintsで回転させた場合に、正常なモーションを出力できない。
Bakeしようにも、デフォルトのBake処理は1アニメーションずつしかBakeできず、
Bake時にConstraintsを削除する必要があるため、手作業で全Bakeするのはとても大変。
このアドオンでは、それらのBake処理から出力までを一括して行う。
使い方
@green224
green224 / FixProControllerHomeBtnBlinking.md
Last active July 24, 2021 06:28
Proコンのホームボタンが光ったまま操作不能になるとき

Switch用ProコントローラをWindows PC用に使用しているのですが、 急にホームボタンが光出し、正常に操作できなくなる問題に遭遇したので 解決方法をまとめておきます。

原因

Steamをインストールしている場合にこの現象が起きる事があります。 起きないケースもあります。

この現象が発生するようになった場合、