///////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Private Methods private void instanceObjects(int object_id, int object_idx, HoudiniProgressBar progress_bar) { HAPI_ObjectInfo object_info = prObjects[object_idx]; HoudiniInstancer instancer = null; Transform old_instancer_transform = transform.Find(object_info.name); if (old_instancer_transform && old_instancer_transform.gameObject.GetComponent <HoudiniInstancer>()) { instancer = old_instancer_transform.gameObject.GetComponent <HoudiniInstancer>(); } else { if (gameObject.GetComponent <HoudiniInstancerManager>() == null) { gameObject.AddComponent <HoudiniInstancerManager>(); } GameObject main_object = new GameObject(object_info.name); main_object.transform.parent = transform; main_object.AddComponent <HoudiniInstancer>(); prGameObjects[object_idx] = main_object; instancer = main_object.GetComponent <HoudiniInstancer>(); HoudiniInstancerManager instancer_manager = gameObject.GetComponent <HoudiniInstancerManager>(); instancer_manager.updateInstancerData(instancer); } instancer.prAsset = this; instancer.prObjectId = object_id; instancer.instanceObjects(progress_bar); }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Private private void drawPinnedInstances() { HoudiniInstancer instancer = myAsset.gameObject.GetComponentInChildren <HoudiniInstancer>(); if (instancer == null) { return; } instancer.drawAllPins(); }
public override void OnInspectorGUI() { Object[] selection = Selection.objects; HoudiniInstancer instancer = myInstance.prInstancer; if (selection.Length > 0) { if (!HoudiniHost.prAutoPinInstances && GUILayout.Button("Pin Selection")) { foreach (Object obj in selection) { if (obj.GetType() == typeof(GameObject)) { instancer.pinObject((GameObject)obj, true); } } } if (GUILayout.Button("UnPin Selection")) { foreach (Object obj in selection) { if (obj.GetType() == typeof(GameObject)) { instancer.pinObject((GameObject)obj, false); } } } } else if (instancer) { bool is_overridden = instancer.isPointOverridden(myInstance.prInstancePointNumber); if (is_overridden && GUILayout.Button("UnPin Instance")) { instancer.pinObject(myInstance.gameObject, false); } else if (!HoudiniHost.prAutoPinInstances && GUILayout.Button("Pin Instance")) { instancer.pinObject(myInstance.gameObject, true); } } }
public void updateInstancerData( HoudiniInstancer instancer ) { bool foundInstancer = false; foreach( HoudiniInstancerPersistentData persistent_data in myInstancersPersistentData ) { if( persistent_data.instancerName == instancer.name ) { foundInstancer = true; break; } } if( !foundInstancer ) { HoudiniInstancerPersistentData instancer_data = ScriptableObject.CreateInstance< HoudiniInstancerPersistentData>(); instancer_data.instancerName = instancer.name; myInstancersPersistentData.Add( instancer_data ); } }
public void updateInstancerData(HoudiniInstancer instancer) { bool foundInstancer = false; foreach (HoudiniInstancerPersistentData persistent_data in myInstancersPersistentData) { if (persistent_data.instancerName == instancer.name) { foundInstancer = true; break; } } if (!foundInstancer) { HoudiniInstancerPersistentData instancer_data = ScriptableObject.CreateInstance <HoudiniInstancerPersistentData>(); instancer_data.instancerName = instancer.name; myInstancersPersistentData.Add(instancer_data); } }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Public public void OnSceneGUI() { HoudiniInstance instance = target as HoudiniInstance; HoudiniInstancer instancer = instance.prInstancer; if (instancer == null) { return; } bool is_overridden = instancer.isPointOverridden(instance.prInstancePointNumber); if (is_overridden) { instancer.drawPin(instance.prInstancePointNumber); } Event curr_event = Event.current; if ( curr_event.isMouse && curr_event.type == EventType.MouseDown && HoudiniHost.prAutoPinInstances) { instance.prTransformChanged = false; } else if ( curr_event.isMouse && curr_event.type == EventType.MouseUp && HoudiniHost.prAutoPinInstances && instance.prTransformChanged) { instancer.pinObject(instance.gameObject, true); instance.prTransformChanged = false; Repaint(); } }
public void reset() { myInstancePointNumber = -1; myTransformChanged = false; myInstancer = null; }