예제 #1
0
        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));
        }
예제 #2
0
        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);
            }
        }