private void SpawnNewModule() { ModuleData targetData = GetSpawnModuleData(); if (targetData.ModuleType != EModuleType.NONE) { ModuleBase newModule = ModuleManager.Instance.RequestSpawnModule(targetData, this); if (newModule == null) { Debug.LogError("Spawn New Module Error!!!"); return; } newModule.IsOnConveyor = true; Vector3 conveyorTarget = new Vector3(0.0f, 0.0f, 0.0f); switch (this.ModuleDirection) { case EModuleDirection.UP: if (ModuleManager.Instance.ModulePositionData.TryGetValue(new Vector2(this.ModuleIndex.x, this.ModuleIndex.y + 1), out conveyorTarget)) { newModule.AddConveyorTarget(new Vector3(conveyorTarget.x, MODULE_ON_CONVEYOR_HIGH, conveyorTarget.z)); } break; case EModuleDirection.DOWN: if (ModuleManager.Instance.ModulePositionData.TryGetValue(new Vector2(this.ModuleIndex.x, this.ModuleIndex.y - 1), out conveyorTarget)) { newModule.AddConveyorTarget(new Vector3(conveyorTarget.x, MODULE_ON_CONVEYOR_HIGH, conveyorTarget.z)); } break; case EModuleDirection.LEFT: if (ModuleManager.Instance.ModulePositionData.TryGetValue(new Vector2(this.ModuleIndex.x - 1, this.ModuleIndex.y), out conveyorTarget)) { newModule.AddConveyorTarget(new Vector3(conveyorTarget.x, MODULE_ON_CONVEYOR_HIGH, conveyorTarget.z)); } break; case EModuleDirection.RIGHT: if (ModuleManager.Instance.ModulePositionData.TryGetValue(new Vector2(this.ModuleIndex.x + 1, this.ModuleIndex.y), out conveyorTarget)) { newModule.AddConveyorTarget(new Vector3(conveyorTarget.x, MODULE_ON_CONVEYOR_HIGH, conveyorTarget.z)); } break; } newModule.ConveyorSpeed = this.mConveyorSpeed; } }