// Magica Cloth.
// Copyright (c) MagicaSoft, 2020-2022.
// https://magicasoft.jp
using UnityEngine;
namespace MagicaCloth
{
///
/// オブジェクト生成ユーティリティ
/// 主にデバッグ用
///
public static class ObjectUtility
{
///
/// 範囲内に散らばったキューブを作成する
///
///
///
///
public static GameObject[] PlaceRandomCubes(int count, Vector3 center, float radius)
{
var cubes = new GameObject[count];
var cubeToCopy = MakeStrippedCube();
for (int i = 0; i < count; i++)
{
var cube = GameObject.Instantiate(cubeToCopy);
cube.transform.position = center + Random.insideUnitSphere * radius;
cubes[i] = cube;
}
GameObject.Destroy(cubeToCopy);
return cubes;
}
///
/// キューブを作成する
///
///
///
public static GameObject[] PlaceRandomCubes(int count)
{
return PlaceRandomCubes(count, Vector3.zero, 0.0f);
}
///
/// 影を落とさず当たり判定を取らないキューブを1つ作成する
///
///
public static GameObject MakeStrippedCube()
{
var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
//turn off shadows entirely
var renderer = cube.GetComponent();
renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
renderer.receiveShadows = false;
// disable collision
var collider = cube.GetComponent();
collider.enabled = false;
return cube;
}
public static GameObject[] PlaceRandomGameObject(int count, Vector3 center, float radius, GameObject prefab)
{
var objs = new GameObject[count];
for (int i = 0; i < count; i++)
{
var obj = GameObject.Instantiate(prefab);
obj.transform.position = center + Random.insideUnitSphere * radius;
objs[i] = obj;
}
return objs;
}
}
}