public void Register(Type type, Material material) { if (!material.enableInstancing) { Debug.LogWarning("material enableInstance == false"); return; } m_registered[type] = new Tuple <Mesh, Material>(GraphicsUtility.CreateQuad(), material); }
private void Initialize() { if (m_types != null) { Debug.LogWarning("Already initialized"); return; } m_typeToMeshAndMaterial = new Dictionary <Type, Tuple <Mesh, Material> >(); foreach (KeyValuePair <Type, Tuple <Mesh, Material> > kvp in m_registered) { if (kvp.Value != null) { m_typeToMeshAndMaterial.Add(kvp.Key, kvp.Value); } } foreach (KeyValuePair <Type, string> kvp in m_builtIn) { if (m_typeToMeshAndMaterial.ContainsKey(kvp.Key)) { continue; } Material material = Resources.Load <Material>(kvp.Value); if (material != null) { m_typeToMeshAndMaterial.Add(kvp.Key, new Tuple <Mesh, Material>(GraphicsUtility.CreateQuad(), material)); } } int index = 0; m_types = new Type[m_typeToMeshAndMaterial.Count]; foreach (Type type in m_typeToMeshAndMaterial.Keys) { m_types[index] = type; index++; } m_types = GetTypes(m_types); OnIsOpenedChanged(); m_editor.IsOpenedChanged += OnIsOpenedChanged; m_editor.BeforePlaymodeStateChange += OnBeforePlayModeStateChange; m_editor.PlaymodeStateChanged += OnPlayModeStateChanged; }
private void TryToAddColliders(ExposeToEditor obj) { if (obj == null) { return; } if (obj.Colliders == null || obj.Colliders.Length == 0) { List <Collider> colliders = new List <Collider>(); Rigidbody rigidBody = obj.BoundsObject.GetComponentInParent <Rigidbody>(); bool isRigidBody = rigidBody != null; if (obj.EffectiveBoundsType == BoundsType.Any) { if (obj.MeshFilter != null) { if (obj.AddColliders && !isRigidBody) { MeshCollider collider = obj.BoundsObject.AddComponent <MeshCollider>(); collider.convex = isRigidBody; collider.sharedMesh = obj.MeshFilter.sharedMesh; colliders.Add(collider); } } else if (obj.SkinnedMeshRenderer != null) { if (obj.AddColliders && !isRigidBody) { MeshCollider collider = obj.BoundsObject.AddComponent <MeshCollider>(); collider.convex = isRigidBody; collider.sharedMesh = obj.SkinnedMeshRenderer.sharedMesh; colliders.Add(collider); } } else if (obj.SpriteRenderer != null) { if (obj.AddColliders && !isRigidBody) { BoxCollider collider = obj.BoundsObject.AddComponent <BoxCollider>(); collider.size = obj.SpriteRenderer.sprite.bounds.size; colliders.Add(collider); } } } else if (obj.EffectiveBoundsType == BoundsType.Mesh) { if (obj.MeshFilter != null) { if (obj.AddColliders && !isRigidBody) { MeshCollider collider = obj.BoundsObject.AddComponent <MeshCollider>(); collider.convex = isRigidBody; collider.sharedMesh = obj.MeshFilter.sharedMesh; colliders.Add(collider); } } } else if (obj.EffectiveBoundsType == BoundsType.SkinnedMesh) { if (obj.SkinnedMeshRenderer != null) { if (obj.AddColliders && !isRigidBody) { MeshCollider collider = obj.BoundsObject.AddComponent <MeshCollider>(); collider.convex = isRigidBody; collider.sharedMesh = obj.SkinnedMeshRenderer.sharedMesh; colliders.Add(collider); } } } else if (obj.EffectiveBoundsType == BoundsType.Sprite) { if (obj.SpriteRenderer != null) { if (obj.AddColliders && !isRigidBody) { BoxCollider collider = obj.BoundsObject.AddComponent <BoxCollider>(); collider.size = obj.SpriteRenderer.sprite.bounds.size; colliders.Add(collider); } } } else if (obj.EffectiveBoundsType == BoundsType.Custom) { if (obj.AddColliders && !isRigidBody) { Mesh box = GraphicsUtility.CreateCube(Color.black, obj.CustomBounds.center, 1, obj.CustomBounds.extents.x * 2, obj.CustomBounds.extents.y * 2, obj.CustomBounds.extents.z * 2); MeshCollider collider = obj.BoundsObject.AddComponent <MeshCollider>(); collider.convex = isRigidBody; collider.sharedMesh = box; colliders.Add(collider); } } obj.Colliders = colliders.ToArray(); } }