private SpawnCard.SpawnResult SpawnBarrel(Vector3 center, float angle, float radius = 30f) { InteractableSpawnCard spawnCard = Resources.Load <InteractableSpawnCard>("SpawnCards/InteractableSpawnCard/iscBarrel1"); spawnCard.slightlyRandomizeOrientation = false; spawnCard.skipSpawnWhenSacrificeArtifactEnabled = false; DirectorPlacementRule rule = new DirectorPlacementRule() { placementMode = DirectorPlacementRule.PlacementMode.Direct }; DirectorSpawnRequest request = new DirectorSpawnRequest(spawnCard, rule, run.runRNG); Vector3 spawnPosition = FindGroundPosition(center, angle, radius); return(spawnCard.DoSpawn(spawnPosition, Quaternion.LookRotation((center - spawnPosition).normalized), request)); }
private bool TrySpawnChest(Transform trans) { var dsr = new DirectorSpawnRequest(broochPrefab, new DirectorPlacementRule { maxDistance = 25f, minDistance = 5f, placementMode = DirectorPlacementRule.PlacementMode.Approximate, position = trans.position, preventOverhead = true }, itemRng); dsr.onSpawnedServer += Evt_BroochChestSpawnServer; var spawnobj = DirectorCore.instance.TrySpawnObject(dsr); //broochPrefab.DoSpawn(trans.position, trans.rotation, dsr); if (spawnobj == null) { if (doFallbackSpawn) { ClassicItemsPlugin._logger.LogWarning("Captain's Brooch: spawn failed, using fallback position. This may be caused by too many objects nearby/no suitable ground."); var dsrFallback = new DirectorSpawnRequest(broochPrefab, new DirectorPlacementRule { placementMode = DirectorPlacementRule.PlacementMode.Direct, position = trans.position }, itemRng); dsrFallback.onSpawnedServer += Evt_BroochChestSpawnServer; broochPrefab.DoSpawn(trans.position, trans.rotation, dsrFallback); return(true); } else { ClassicItemsPlugin._logger.LogWarning("Captain's Brooch: spawn failed, not triggering equipment. This may be caused by too many objects nearby/no suitable ground."); return(false); } } else { return(true); } }