public void Initialize(LCG random, InteractiveDungeonObject interactiveObjectContainer, SpawnableContainer spawnKeyframes, TrapContainer trapContainer, MapPainter mapPainter) { _timer = new Timer(); _random = random; _interactiveObjectContainer = interactiveObjectContainer; _spawnKeyframes = spawnKeyframes; _trapContainer = trapContainer; _mapPainter = mapPainter; }
public override void OnInspectorGUI() { targetContainer = (SpawnableContainer)target; targetContainer.keyframes = targetContainer.keyframes.OrderBy(x => x.keyframeIndex).ToList(); foreach (SpawnableKeyframe keyframe in targetContainer.keyframes) { foreach (SpawnableKeyframe other in targetContainer.keyframes) { other.spawnableObjects.ForEach(x => { if (x.spawnablePrefab != null) { if (!keyframe.spawnableObjects.Any(y => y.spawnablePrefab == x.spawnablePrefab)) { keyframe.spawnableObjects.Add(new Spawnable()); keyframe.spawnableObjects.Last().spawnablePrefab = x.spawnablePrefab; } } }); } } //serializedObject.Update(); EditorGUILayout.LabelField("Droppable Item data"); EditorGUILayout.PropertyField(_droppableItems, true); EditorGUILayout.Space(); DrawUILine(Color.gray); EditorGUILayout.Space(); EditorGUILayout.LabelField("Spawnable keyframe data"); EditorGUILayout.LabelField("Number of keyframes: " + _keyframes.arraySize); EditorGUILayout.Space(); EditorGUILayout.Space(); for (int i = 0; i < _keyframes.arraySize; i++) { SerializedProperty keyframe = _keyframes.GetArrayElementAtIndex(i); float height = _lineHeight; if (keyframe.isExpanded) { height += _lineHeight * 4; SerializedProperty spawnableList = keyframe.FindPropertyRelative("spawnableObjects"); height += spawnableList.arraySize * _lineHeight; } GUILayoutOption rowHeight = GUILayout.Height(height); EditorGUILayout.PropertyField(keyframe, rowHeight); if (keyframe.isExpanded) { if (GUILayout.Button("Delete keyframe")) { _keyframes.DeleteArrayElementAtIndex(i); } } EditorGUILayout.Space(); DrawUILine(Color.gray); } if (GUILayout.Button("Add keyframe")) { SpawnableContainer container = (SpawnableContainer)target; SpawnableKeyframe newKeyframe = new SpawnableKeyframe(); if (container.keyframes.Count > 0) { newKeyframe.keyframeIndex = container.keyframes.Last().keyframeIndex + 1; newKeyframe.spawnableObjects = new List <Spawnable>(); container.keyframes.Last().spawnableObjects.ForEach(x => { Spawnable newSpawnable = new Spawnable(); newSpawnable.spawnablePrefab = x.spawnablePrefab; newSpawnable.density = x.density; newKeyframe.spawnableObjects.Add(newSpawnable); }); } container.keyframes.Add(newKeyframe); } serializedObject.ApplyModifiedProperties(); }