// Update is called once per frame void Update() { RaycastHit?hitInfo; if (inWorm) { transform.localRotation = localRotationOnWormHit; hitInfo = PlanetObj.GetEpicenter(transform.position); if (hitInfo.HasValue) { if ((transform.position - PlanetObj.position).magnitude < (hitInfo.Value.point - PlanetObj.position).magnitude - transform.lossyScale.x * 20) { var v = -Time.deltaTime / 100f; if (transform.localScale.z + v <= 0.01f) { Destroy(this.gameObject); } else { transform.localScale += new Vector3(0, 0, v); } } } } else { var diff = transform.position - PlanetObj.position; GetComponent <Rigidbody>().velocity += diff.normalized * -gravityValue; if (inGround) { dieTimer -= Time.deltaTime; if (dieTimer <= 0) { Destroy(this.gameObject); } else { var mrm = transform.FindChild("default").GetComponent <MeshRenderer>().material; mrm.color = new Color(mrm.color.r, mrm.color.g, mrm.color.b, Mathf.Min(dieTimer * 3 / dieTimerMax, 1)); } } else { transform.LookAt(transform.position + GetComponent <Rigidbody>().velocity); } hitInfo = PlanetObj.GetEpicenter(transform.position); if (hitInfo.HasValue) { var epicenter = hitInfo.Value.point; if (diff.magnitude < (epicenter - PlanetObj.position).magnitude) { GetComponent <Rigidbody>().velocity = Vector3.zero; inGround = true; } } } }
void UpdateSpeed() { if (ragdoll) { ySpeed -= gravityValue; if (or.underground) { ySpeed = Mathf.Abs(ySpeed) * 0.25f; if (ySpeed < 1) { rb_e.transform.SetParent(transform); Destroy(this.gameObject); //Destroy self if we are underground after being hit } } var epicenter_e = PlanetObj.GetEpicenter(rb_e.transform.position); if (epicenter_e.HasValue && (rb_e.transform.position - PlanetObj.position).sqrMagnitude <= (epicenter_e.Value.point - PlanetObj.position).sqrMagnitude) { var proj = Vector3.Project(rb_e.velocity, or.up); var dot = Vector3.Dot(proj, or.up); //This will be positive if the projection is in the same general direction as the up vector var ySpeed_e = proj.magnitude; if (dot > 0) { } else { rb_e.velocity -= 1.25f * ySpeed_e * or.up; //Invert ySpeed of e if (ySpeed_e < 1) { rb_e.transform.SetParent(transform); Destroy(this.gameObject); } } } rb.velocity += ySpeed * or.up; rb_e.velocity += -gravityValue * or.up; } else { groundSpeed = groundSpeedNormal; var t = transform.position; var s = target ? target.transform.position : PlanetObj.player.transform.position; var d = (s - t - Vector3.Project(s - t, t - PlanetObj.position)).normalized; if (or.depth > -0.3f * transform.lossyScale.y) { ySpeed = hopSpeedY; } else { ySpeed -= gravityValue; } rb.velocity = ySpeed * or.up + new Vector3(groundSpeed * d.x, groundSpeed * d.y, groundSpeed * d.z); } //Debug.DrawRay(epicenter.Value, rb.velocity, Color.black); }
public IActionResult Index(int id) { PlanetObj planet = _getPlanetRepository.GetPlanet(id); PlanetDetailsViewModel Planet = new PlanetDetailsViewModel { Planet = planet }; return(View(Planet)); }
public void SetExplicitDateTime(DateTime explicitTime) { Debug.Log("Setting Explicit DateTime in OrreryManager"); foreach (GameObject PlanetObj in Planets) { OrbitingBodyBackgroundGameObject OBBGO = PlanetObj.GetComponent <OrbitingBodyBackgroundGameObject>(); MyContract.RequireFieldNotNull( OBBGO, "OrbitingBodyBackgroundGameObject" ); OBBGO.UseExplicitDateTime(explicitTime); } }
public PlanetObj GetPlanet(int id) { PlanetObj planet = new PlanetObj(); try { planet = _dBcontext.PlanetObjs.Where(i => i.PlanetObjId == id).FirstOrDefault(); } catch (Exception ex) { throw ex; } return(planet); }
// Use this for initialization void Start() { transform.localScale *= (Random.value * 0.5f + 0.75f); distanceDown *= transform.localScale.x; leaves = new List <Transform>(); leavesOffsetStart = new List <Vector3>(); leavesOffset = new List <Vector3>(); foreach (Transform t in transform) { if (t.name.Contains("Leaves")) { leaves.Add(t); leavesOffsetStart.Add(t.localPosition); leavesOffset.Add(Vector3.zero); } } epicenter = PlanetObj.GetEpicenter(transform.position).Value; transform.position = epicenter.point; }
public void Update() { var rb = o.GetComponent <Rigidbody>(); var diff = o.transform.position - PlanetObj.position; dCenter = diff.magnitude; up = diff.normalized; facing = rb.velocity.sqrMagnitude == 0 ? Vector3.forward : rb.velocity.normalized; forward = (facing - Vector3.Project(facing, up)).normalized; right = Vector3.Cross(up, facing); quatUp = Quaternion.LookRotation(forward, normalIsUp ? normal.Value : up); RaycastHit?hitInfo = PlanetObj.GetEpicenter(o.transform.position); if (hitInfo != null) { epicenter = hitInfo.Value.point; normal = hitInfo.Value.normal; dEpicenter = (epicenter.Value - PlanetObj.position).magnitude; } }
private Point calculateAccel(int indexOfStar) { Point acceleration = new Point(0, 0, 0); PlanetObj starTarget = planets[indexOfStar]; int count = 0; foreach (PlanetObj star in planets) { if (indexOfStar != count) { float r = (float)(Math.Pow((starTarget.x - star.x), 2) + Math.Pow((starTarget.y - star.y), 2) + Math.Pow((starTarget.z - star.z), 2)); r = (float)Math.Sqrt(r); float temp = G_CONST * star.mass / (float)Math.Pow(r, 3); acceleration.x += temp * (star.x - starTarget.x); acceleration.y += temp * (star.y - starTarget.y); acceleration.z += temp * (star.z - starTarget.z); } count += 1; } return(acceleration); }
/* * * sun = {"location":point(0,0,0), "mass":2e30, "velocity":point(0,0,0)} * mercury = {"location":point(0,5.7e10,0), "mass":3.285e23, "velocity":point(47000,0,0)} * venus = {"location":point(0,1.1e11,0), "mass":4.8e24, "velocity":point(35000,0,0)} * earth = {"location":point(0,1.5e11,0), "mass":6e24, "velocity":point(30000,0,0)} * mars = {"location":point(0,2.2e11,0), "mass":2.4e24, "velocity":point(24000,0,0)} * jupiter = {"location":point(0,7.7e11,0), "mass":1e28, "velocity":point(13000,0,0)} * saturn = {"location":point(0,1.4e12,0), "mass":5.7e26, "velocity":point(9000,0,0)} * uranus = {"location":point(0,2.8e12,0), "mass":8.7e25, "velocity":point(6835,0,0)} * neptune = {"location":point(0,4.5e12,0), "mass":1e26, "velocity":point(5477,0,0)} * pluto = {"location":point(0,3.7e12,0), "mass":1.3e22, "velocity":point(4748,0,0)} * */ // Use this for initialization void Start() { G_CONST = G_CONST * scaleFactor; int[] planetDiams = new int[] { 1391016, 4879, 12104, 12756, 6792, 142984, 120536, 51118, 49528, 2370 }; PlanetObj sun = new PlanetObj(0, 0, 0); sun.velocity = new Point(0, 0, 0); sun.mass = 2e30f * scaleFactor1; sun.color = Color.yellow; planets.Add(sun); PlanetObj mercury = new PlanetObj(0, 5.7e10f * scaleFactor, 0); mercury.velocity = new Point(47000 * scaleFactor1, 0, 0); mercury.mass = 3.285e23f * scaleFactor1; mercury.color = Color.grey; planets.Add(mercury); PlanetObj venus = new PlanetObj(0, 1.1e11f * scaleFactor, 0); venus.velocity = new Point(35000 * scaleFactor1, 0, 0); venus.mass = 4.8e24f * scaleFactor1; venus.color = Color.red; planets.Add(venus); PlanetObj earth = new PlanetObj(0, 1.5e11f * scaleFactor, 0); earth.velocity = new Point(30000 * scaleFactor1, 0, 0); earth.mass = 6e24f * scaleFactor1; earth.color = Color.green; planets.Add(earth); PlanetObj mars = new PlanetObj(0, 2.2e11f * scaleFactor, 0); mars.velocity = new Point(24000 * scaleFactor1, 0, 0); Debug.Log(mars.velocity.x); mars.mass = 2.4e24f * scaleFactor1; mars.color = Color.red; planets.Add(mars); PlanetObj jupiter = new PlanetObj(0, 7.7e11f * scaleFactor, 0); jupiter.velocity = new Point(13000 * scaleFactor1, 0, 0); jupiter.mass = 1e28f * scaleFactor1; jupiter.color = Color.yellow; planets.Add(jupiter); PlanetObj saturn = new PlanetObj(0, 1.4e12f * scaleFactor, 0); saturn.velocity = new Point(9000 * scaleFactor1, 0, 0); saturn.mass = 5.7e26f * scaleFactor1; saturn.color = Color.red; planets.Add(saturn); PlanetObj uranus = new PlanetObj(0, 2.8e12f * scaleFactor, 0); uranus.velocity = new Point(6835 * scaleFactor1, 0, 0); uranus.mass = 8.7e25f * scaleFactor1; uranus.color = Color.grey; planets.Add(uranus); PlanetObj neptune = new PlanetObj(0, 4.5e12f * scaleFactor, 0); neptune.velocity = new Point(5477 * scaleFactor1, 0, 0); neptune.mass = 1e26f * scaleFactor1; neptune.color = Color.blue; planets.Add(neptune); PlanetObj pluto = new PlanetObj(0, 3.7e12f * scaleFactor, 0); pluto.velocity = new Point(4748 * scaleFactor1, 0, 0); pluto.mass = 1.3e22f * scaleFactor1; pluto.color = Color.red; planets.Add(pluto); int count = 0; foreach (int diam in planetDiams) { float f; if (count == 0) { f = diam / 2000; } else { f = diam / 100; } PlanetObj planet = planets[count]; planet.diameter = f; planet.planetSphere = GameObject.CreatePrimitive( PrimitiveType.Sphere); planet.planetSphere.transform.position = new Vector3(planet.x, planet.y, planet.z); planet.planetSphere.transform.localScale = new Vector3(f, f, f); planet.planetSphere.GetComponent <Renderer>().material.color = planet.color; count += 1; } }
// Use this for initialization void Awake() { S = this; safeHeight = Mathf.Max(transform.localScale.x, transform.localScale.y, transform.localScale.z) / 2 + 1000000; }