/// <summary> /// Check all components of a scene object to update all list of the scene. /// </summary> /// <param name="sceneObject">The scene object.</param> /// <param name="type">Type of change.</param> protected void CheckComponents(GameObject sceneObject, ComponentChangeType type) { for (int i = 0; i < sceneObject.Components.Count; i++) { CheckComponent(sceneObject.Components[i], type); } }
/// <summary> /// Check a component. /// </summary> /// <param name="component"></param> /// <param name="type"></param> protected void CheckComponent(Component component, ComponentChangeType type) { if (component is Renderer) { var renderable = component as Renderer; if (type == ComponentChangeType.Add) { AddRenderer(renderable); } else if (type == ComponentChangeType.Remove) { RemoveRenderer(renderable); } } else if (component is Behaviour) { var script = component as Behaviour; if (type == ComponentChangeType.Add) { AddScript(script); } else if (type == ComponentChangeType.Remove) { RemoveScript(script); } } else if (component is Collider) { var collider = component as Collider; if (type == ComponentChangeType.Add) { AddCollider(collider); } else if (type == ComponentChangeType.Remove) { RemoveCollider(collider); } } else if (component is Camera) { var camera = component as Camera; if (type == ComponentChangeType.Add && !cameras.Contains(camera)) { AddCamera(camera); } else if (type == ComponentChangeType.Remove) { RemoveCamera(camera); } } else if (component is Light) { var light = component as Light; if (type == ComponentChangeType.Add) { AddLight(light); } else if (type == ComponentChangeType.Remove) { RemoveLight(light); } } }
private void NotifyComponentChanged(Component component, string propertyName, ComponentChangeType type) { ComponentChanged?.Invoke(this, new ComponentChangedEventArgs(component, propertyName, type)); }
public ComponentChangedEventArgs(Component component, string propertyName, ComponentChangeType changeType) { Component = component; ChangeType = changeType; PropertyName = propertyName; }