public void AddRocks(ref WorldData worldData, int seed) { List <RockData> rockData = new List <RockData>(); System.Random rng = new System.Random(seed); int size = TerrainGenerator.size; float[,] noiseMap = Procedural.NoiseMap(seed + 2, size, rockNoiseScale, AnimationCurve.Linear(0f, 0f, 1f, 1f)); for (int y = 0; y < size; y++) { for (int x = 0; x < size; x++) { Coords coords = new Coords(x, y); bool adjacentOcean = Util.AdjacentProperty(Util.CoordsToVoxels(worldData.voxelData, Util.GetAdjacent(coords, true)), "isOcean"); if (worldData.voxelData[x, y].isLand && !adjacentOcean && !worldData.voxelData[x, y].occupied && noiseMap[x, y] < rockThreshold) { RockData rock = new RockData(coords, rng.Next(0, rockObjects.Length), rng.Next(0, 360)); rockData.Add(rock); worldData.voxelData[coords.x, coords.y].occupied = true; worldData.voxelData[coords.x, coords.y].navigable = false; } } } worldData.rockData = rockData; }
public void Init(RockData aRockData, bool ignoreNewlySeen) { rockData = aRockData; mIgnoreNewlySeen = ignoreNewlySeen; if (!mRockShape) { if (mRockShapes == null) { mRockShapes = rockShapesRoot.GetComponentsInChildren <Shapes2D.Shape>(); } if (mRockShapes.Length > 0) { int rockShapeInd = Random.Range(0, mRockShapes.Length); for (int i = 0; i < mRockShapes.Length; i++) { mRockShapes[i].gameObject.SetActive(rockShapeInd == i); } mRockShape = mRockShapes[rockShapeInd]; mRockShapeImage = mRockShape.GetComponent <Image>(); } } }
void Start() { for (int i = 0; i < Rocks.Length; i++) { RockData currentRock = Rocks[i]; if (RandomSeed) { currentRock = Instantiate(Rocks[i]); currentRock.RandomiseSeed(); } RockGeneratorManager.instance.RequestRock(currentRock, new Vector3(i * 60, 0, 0), callback); } }
public static WorldObjectData GetData(string name) { WorldObjectData data = null; switch (name) { case "Person": data = new PersonData(); break; case "Castle": data = new CastleData(); break; case "Tree": data = new TreeData(); break; case "Rock": data = new RockData(); break; case "Trap": data = new TrapData(); break; case "FakeTree": data = new FakeTreeData(); break; case "Cottage": data = new CottageData(); break; case "Candle": data = new CandleData(); break; case "Water": data = new WaterData(); break; case "Bridge": data = new BridgeData(); break; default: break; } return(data); }
void Start() { rocks = new List <GameObject> (); for (int i = 0; i < Mathf.RoundToInt(NumberOfRocks / 2); i++) { for (int y = 0; y < Mathf.RoundToInt(NumberOfRocks / 2); y++) { RockData newdata = ScriptableObject.CreateInstance <RockData>(); newdata.RandomiseParameters(); RockGeneratorManager.instance.RequestRock(newdata, new Vector3(i * 10, 0, y * 10), callback); } } }
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { rockDataRef = animator.gameObject.GetComponent <RockData>(); ProjectilePrefab = rockDataRef.projectilePrefab; projectiles = new List <GameObject>(); //Vector3 curPos = new Vector3(0,baseProjectileDistance); Vector3 addition; float x; float angle; //opp/hyp = invSin, hyp = baseProjectileDistance, therefore opp = hyp * invSin for (int i = 0; i < numProjectiles; i++) { //thanks, https://answers.unity.com/questions/1068513/place-8-objects-around-a-target-gameobject.html angle = i * Mathf.PI * 2f / numProjectiles; addition = new Vector3(Mathf.Cos(angle) * baseProjectileDistance, Mathf.Sin(angle) * baseProjectileDistance); projectiles.Add(Instantiate(ProjectilePrefab, animator.gameObject.transform.position + addition, Quaternion.identity)); } smallestAngle = 2f * Mathf.PI / numProjectiles; rockDataRef.call_arc(projectiles, smallestAngle, baseProjectileDistance, animator); }
private void Awake() { rigidBody = GetComponent <Rigidbody>(); ownCollider = GetComponent <Collider>(); data = (RockData)WeaponData; }
void OnRockSelect(InfoData dat) { mRockSelect = (RockData)dat; }
IEnumerator DoRockSelect() { var rockCount = inventory.rocksCount; if (rockCount > 0) { rockSelect.Refresh(true, null); yield return(rockSelectSequence.Enter()); rockSelect.Select(); mRockSelect = null; while (!mRockSelect) { yield return(null); } yield return(rockSelectSequence.Exit()); //fail-safe if no metaOutput if (!mRockSelect.metaOutput) { Debug.LogWarning("Rock does not have a meta output: " + mRockSelect.name); StartCoroutine(DoRockSelect()); yield break; } //generate rock if (mRockSelect.count > 0) { if (!GlobalSettings.isUnlimitedResource) { mRockSelect.count--; } criteria.InvokeUpdate(mRockSelect); } if (GlobalSettings.isUnlimitedResource) { mRockSelect.metaOutput.count = GlobalSettings.unlimitedResourceRock; } else { mRockSelect.metaOutput.count++; } mRockResultList.Clear(); mRockResultList.Add(mRockSelect.metaOutput); // //animation //rock enter rockSpriteShape.spriteShape = mRockSelect.spriteShape; rockAnimator.gameObject.SetActive(true); yield return(rockAnimator.PlayWait(rockTakeEnter)); //meta morph enter metaMorphAnimator.gameObject.SetActive(true); yield return(metaMorphAnimator.PlayWait(metaMorphTakeEnter)); //rock result play M8.SoundPlaylist.instance.Play(soundMorph, false); rockResultSpriteShape.spriteShape = mRockSelect.metaOutput.spriteShape; rockResultAnimator.gameObject.SetActive(true); yield return(rockResultAnimator.PlayWait(rockResultTakeEnter)); // rockAnimator.gameObject.SetActive(false); //meta morph leave yield return(metaMorphAnimator.PlayWait(metaMorphTakeExit)); metaMorphAnimator.gameObject.SetActive(false); criteria.InvokeUpdate(mRockSelect.metaOutput); StartCoroutine(DoRockResult()); } else { //notify that rocks are needed. if (noRocksGO) { noRocksGO.SetActive(true); } //exitButton.Select(); } }
public void Initialize(RockData rockData) { this.data = rockData; UpdateDict(); }