private void generateJumpPads(float islandPercentage) { var allPads = new List <JumpPad>(); var nbJumpPads = (int)Math.Floor(level.Islands.Count() * islandPercentage); var rnd = new Random(0); //TODO: new random here! for (int j = 1; j < nbJumpPads; j++) { var index = rnd.Next(0, level.Islands.Count()); var isle = level.Islands.ElementAt(index); var pos = isle.SpaceAllocator.GetBuildPosition(JumpPad.GetLocalBoundingBox()); if (pos == null) { continue; } isle.SpaceAllocator.TakeBuildingSpot(pos.Value, JumpPad.GetLocalBoundingBox()); var jumpPad = objectsFactory.CreateJumpPad(isle.Node.CreateChild()).Alter(k => k.Node.Relative = Matrix.Translation((Vector3)pos)); isle.AddAddon(jumpPad); allPads.Add(jumpPad); } #region padTargetting foreach (var pad in allPads) { Vector3 padPos; Vector3 s; Quaternion r; pad.Node.Absolute.Decompose(out s, out r, out padPos); for (int i = allPads.IndexOf(pad) + 1; i < allPads.Count; i++) { Vector3 tPadPos; allPads[i].Node.Absolute.Decompose(out s, out r, out tPadPos); if (Vector3.Distance(padPos, tPadPos) <= pad.MaxJumpDistance) { pad.TargetJumpPad = allPads[i]; break; } } if (pad.TargetJumpPad != null) { continue; } for (int i = 0; i < allPads.IndexOf(pad); i++) { Vector3 tPadPos; allPads[i].Node.Absolute.Decompose(out s, out r, out tPadPos); if (Vector3.Distance(padPos, tPadPos) <= pad.MaxJumpDistance) { pad.TargetJumpPad = allPads[i]; break; } } } #endregion padTargetting }
void OnTriggerStay(Collider other) { if (other.gameObject.tag.Equals("JumpPad")) { JumpPad pad = other.gameObject.GetComponent <JumpPad>(); usePadX = pad.useX; usePadY = pad.useY; usePadZ = pad.useZ; jumpPadForce = pad.jumpVector; } }
void Update() { Debug.DrawRay(transform.position + Vector3.up, transform.TransformDirection(Vector3.down), Color.red, 3); if (Physics.Raycast(transform.position + Vector3.up, transform.TransformDirection(Vector3.down), out rayJumpPad, 2) && rayJumpPad.transform.tag == "JumpPad") { JumpPad pad = rayJumpPad.transform.GetComponent <JumpPad>(); if (pad != null && this.GetComponent <StateMachine>().forwardVelocity > 1) { pad.Launch(this.GetComponent <StateMachine>()); } } }
private void OnSceneGUI() { JumpPad jumpPad = (JumpPad)target; bool updateTrajectory = false; EditorGUI.BeginChangeCheck(); Vector3 newTargetPosition = Handles.PositionHandle(jumpPad.destination, Quaternion.identity); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(jumpPad, "Change JumpPad Target Position"); jumpPad.destination = newTargetPosition; updateTrajectory = true; } if (updateTrajectory || lastPosition != jumpPad.transform.position || lastTime != jumpPad.time) { lastPosition = jumpPad.transform.position; lastTime = jumpPad.time; trajectoryPoints = jumpPad.Trajectory().ToArray(); peak = trajectoryPoints.OrderBy(v => v.y).Last(); var velocityPick = trajectoryPoints.Skip(trajectoryPoints.Length - 3).Take(2).ToArray(); impactVelocity = (velocityPick[1] - velocityPick[0]).magnitude / Time.fixedDeltaTime; verticalImpactVelocity = Mathf.Abs((velocityPick[1].y - velocityPick[0].y) / Time.fixedDeltaTime); } Handles.DotHandleCap(0, peak, Quaternion.identity, 0.75F, EventType.Repaint); Handles.BeginGUI(); EditorGUILayout.BeginVertical(); EditorGUILayout.LabelField($"Pad: {jumpPad.transform.position}"); EditorGUILayout.LabelField($"Peak: {peak}"); EditorGUILayout.LabelField($"Target: {newTargetPosition}"); EditorGUILayout.LabelField($"Impact Velocity: {impactVelocity }"); EditorGUILayout.LabelField($"Vertical Impact Velocity: {verticalImpactVelocity }"); var impactDamage = CalculateCollisionDamage(verticalImpactVelocity); if (impactDamage > 0) { GUI.contentColor = Color.red; } EditorGUILayout.LabelField($"Impact Damage Base: {impactDamage}"); EditorGUILayout.EndVertical(); Handles.EndGUI(); }
private void Update() { float mouseInputY = Input.GetAxis("Mouse Y") * MouseSensitivity * Time.deltaTime; camRotation -= mouseInputY; camRotation = Mathf.Clamp(camRotation, -90f, 90f); CamTransform.localRotation = Quaternion.Euler(camRotation, 0f, 0f); float mouseInputX = Input.GetAxis("Mouse X") * MouseSensitivity * Time.deltaTime; transform.rotation = Quaternion.Euler(transform.eulerAngles + new Vector3(0f, mouseInputX)); if (Input.GetMouseButtonDown(0)) { if (JumpPadCount > 0) { JumpPadCount--; JumpPad newPad = Instantiate(JumpPadPrefab, transform.position, Quaternion.identity); newPad.Throw(CamTransform.forward); JumpPadCountText.text = "Jump Pads: " + JumpPadCount; } } Vector3 movement = new Vector3(); // X/Z movement float forwardMovement = Input.GetAxis("Vertical") * MoveSpeed * Time.deltaTime; float sideMovement = Input.GetAxis("Horizontal") * MoveSpeed * Time.deltaTime; movement += (transform.forward * forwardMovement) + (transform.right * sideMovement); // Y movement if (CC.isGrounded && Input.GetKeyDown(KeyCode.Space)) { verticalSpeed = JumpSpeed; } else if (CC.isGrounded) { verticalSpeed = 0f; } verticalSpeed += (Gravity * Time.deltaTime); movement += (transform.up * verticalSpeed * Time.deltaTime); CC.Move(movement); }
protected override void Gen_PerRoom() { CPRequired = false; #region JumpPad NonPlaceableObject jumppad = new JumpPad(0x4A0); //3600 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-90.0f, -40.0f, 0.0f), Speed = 8000 }.SetRarity(0.35)); //wall bounce jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(180.0f, -15.0f, 0.0f), Speed = 8000 }); //forward fast jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(180.0f, -14.00f, 0.0f), Speed = 15100 }.SetRarity(0.5)); //skip 2 phase worldObjects.Add(jumppad); #endregion }
protected override void Gen_PerRoom() { CPRequired = false; ////// JumpPads ////// #region JumpPad var jumppad = new JumpPad(0x530); //4000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 3000, Angle = new QuaternionAngle(-15, -45, 0) }); // short left jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 5300, Angle = new QuaternionAngle(3, -50, 0) }); // to right wall jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 7000, Angle = new QuaternionAngle(2, -45, 0) }.SetRarity(0.5)); // skip 1 jump jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 70000, Angle = new QuaternionAngle(-2, -45, 0) }.SetRarity(0.3)); // teleport worldObjects.Add(jumppad); jumppad = new JumpPad(0x68); //4200 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 6000, Angle = new QuaternionAngle(15, 0, 0) }); // to the 3 jump jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 5300, Angle = new QuaternionAngle(90, -70, 0) }); // to right wall jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 7000, Angle = new QuaternionAngle(2, -45, 0) }.SetRarity(0.25)); // works only with dash worldObjects.Add(jumppad); jumppad = new JumpPad(0x508); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 66000, Angle = new QuaternionAngle(-1, -20, 0) }.SetRarity(0.25)); // i believe i can fly jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 22000, Angle = new QuaternionAngle(-8, -25, 0) }.SetRarity(0.5)); // BALLS jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 6000, Angle = new QuaternionAngle(-60, -45, 0) }); // jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 12000, Angle = new QuaternionAngle(-30, -45, 0) }); // fast worldObjects.Add(jumppad); CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(-5650, 24330, -3380), new Vector3f(-3326, -22780, 420), new Vector3f(-7260, 31000, -3350), new Angle(-0.43f, 0.9f))); jumppad = new JumpPad(0x500); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 6000, Angle = new QuaternionAngle(0, -92, 0) }); // vertical jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 15000, Angle = new QuaternionAngle(0, -92, 0) }); // troll worldObjects.Add(jumppad); jumppad = new JumpPad(0x90); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 10000, Angle = new QuaternionAngle(-5, -35, 0) }); // to the next jump jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 17000, Angle = new QuaternionAngle(-3, -35, 0) }.SetRarity(0.35)); // balls jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 7000, Angle = new QuaternionAngle(-10, -85, 0) }); // upward worldObjects.Add(jumppad); CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(15930, 11630, -2340), new Vector3f(20660, 22620, 5300), new Vector3f(17570, 15760, 1200), new Angle(0.0f, 1.0f))); jumppad = new JumpPad(0x528); //6000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 11000, Angle = new QuaternionAngle(0, -45, 0) }); // to the next jump jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 18500, Angle = new QuaternionAngle(0, -25, 0) }.SetRarity(0.5)); // skip half balls jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 6000, Angle = new QuaternionAngle(0, -108, 0) }); // vertical worldObjects.Add(jumppad); jumppad = new JumpPad(0x520); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 12000, Angle = new QuaternionAngle(0, -35, 0) }.SetRarity(0.5)); // skip half balls jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 18000, Angle = new QuaternionAngle(0, -35, 0) }.SetRarity(0.5)); // almost balls jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 8500, Angle = new QuaternionAngle(0, -85, 0) }); // vertical jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 20000, Angle = new QuaternionAngle(7, -55, 0) }.SetRarity(0.25)); // skip balls worldObjects.Add(jumppad); CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(48840, 11170, 6050), new Vector3f(50875, 19764, 10680), new Vector3f(52500, 15700, 8000), new Angle(0.0f, 1.0f))); jumppad = new JumpPad(0x518); //5000 balls left jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 7000, Angle = new QuaternionAngle(0, -45, 0) }); // skip next jump jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 15000, Angle = new QuaternionAngle(28, -28, 0) }.SetRarity(0.35)); // skip 4 jumps jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 4700, Angle = new QuaternionAngle(90, -35, 0) }); // to the right jump worldObjects.Add(jumppad); jumppad = new JumpPad(0x510); //5000 balls right jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 7500, Angle = new QuaternionAngle(-45, -45, 0) }); // skip next jump jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 6666, Angle = new QuaternionAngle(-18, -35, 0) }); // skip cp jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 10750, Angle = new QuaternionAngle(5, -30, 0) }.SetRarity(0.5)); // to the right jump worldObjects.Add(jumppad); CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(86900, 10200, 8075), new Vector3f(105150, 31520, 17700), new Vector3f(86700, 15350, 9700), new Angle(0.0f, 1.0f))); jumppad = new JumpPad(0x558); //6000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 46850, Angle = new QuaternionAngle(3.19f, -25.5f, 0) }.SetRarity(0.25)); // i believe i can fly 2 jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 9200, Angle = new QuaternionAngle(3.5f, -40, 0) }); // skip platforms jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 66666, Angle = new QuaternionAngle(37, -25, 0) }); // reaction jump worldObjects.Add(jumppad); jumppad = new JumpPad(0x550); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 7000, Angle = new QuaternionAngle(119, -42, 0) }); // skip 1 jump jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 10000, Angle = new QuaternionAngle(-180, -80, 0) }); // vertical jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 66666, Angle = new QuaternionAngle(100, -25, 0) }); // reaction jump worldObjects.Add(jumppad); jumppad = new JumpPad(0x98); //6000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 5750, Angle = new QuaternionAngle(45, -45, 0) }); // skip 1 jump, short jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 100000, Angle = new QuaternionAngle(89, -23, 0) }.SetRarity(0.5)); // fast bounce jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 12500, Angle = new QuaternionAngle(15, -27, 0) }); // almost skip platforms worldObjects.Add(jumppad); jumppad = new JumpPad(0x548); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 10750, Angle = new QuaternionAngle(0, -25, 0) }); // skip half platforms jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 8000, Angle = new QuaternionAngle(0, -88, 0) }); // vertical jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 35000, Angle = new QuaternionAngle(0, -7, 0) }.SetRarity(0.5)); // straight into balls worldObjects.Add(jumppad); jumppad = new JumpPad(0x560); //5800 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 10750, Angle = new QuaternionAngle(0, -75, 0) }); // short ceiling bounce jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 80000, Angle = new QuaternionAngle(0, -25, 0) }); // bounce and fall jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 13000, Angle = new QuaternionAngle(0, -29, 0) }); // straight into balls worldObjects.Add(jumppad); jumppad = new JumpPad(0x538); //4200 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 10750, Angle = new QuaternionAngle(0, -75, 0) }); // short ceiling bounce jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 220000, Angle = new QuaternionAngle(0, -25, 0) }.SetRarity(0.35)); // reacion grapple jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 15000, Angle = new QuaternionAngle(0, -25, 0) }); // straight into balls worldObjects.Add(jumppad); #endregion }
protected override void Gen_PerRoom() { ////// Green Platforms ////// platforms.Add(new GreenPlatform(0x9E0, 0xE88)); platforms.Add(new GreenPlatform(0x9F8, 0xDB0)); platforms.Add(new GreenPlatform(0xA00, 0xD68)); platforms.Add(new GreenPlatform(0xA08, 0xD20)); platforms.Add(new GreenPlatform(0xA30, 0xBB8)); platforms.Add(new GreenPlatform(0xA20, 0xC48)); platforms.Add(new GreenPlatform(0xA18, 0xC90)); platforms.Add(new GreenPlatform(0xA28, 0xC00)); platforms.Add(new GreenPlatform(0xA10, 0xCD8)); platforms.Add(new GreenPlatform(0x9F0, 0xDF8)); platforms.Add(new GreenPlatform(0x9E8, 0xE40)); platforms.Add(new GreenPlatform(0x9D8, 0xED0)); platforms.Add(new GreenPlatform(0x9D0, 0xF18)); platforms.Add(new GreenPlatform(0x9C8, 0xF60)); platforms.Add(new GreenPlatform(0x9C0, 0xFA8)); platforms.Add(new GreenPlatform(0x9B8, 0xFF0)); platforms.Add(new GreenPlatform(0x9B0, 0x1038)); platforms.Add(new GreenPlatform(0x9A8, 0x1080)); ////// Platforms layouts ////// #region GreenPlatforms //// going around right, splitting in middle platformLayouts.Add(new SpawnData(new Vector3f(50232.93f, -10371.06f, 2988.9f), new Angle(1.00f, 0.00f))); platformLayouts.Add(new SpawnData(new Vector3f(50746.19f, -10623.07f, 3123.783f), new Angle(-0.45f, 0.89f))); platformLayouts.Add(new SpawnData(new Vector3f(51239.04f, -11337.36f, 3209.209f), new Angle(-0.72f, 0.70f))); platformLayouts.Add(new SpawnData(new Vector3f(51176.75f, -12164.8f, 3406.602f), new Angle(-0.71f, 0.71f))); platformLayouts.Add(new SpawnData(new Vector3f(51293.42f, -12759.18f, 3573.017f), new Angle(-0.48f, 0.87f))); platformLayouts.Add(new SpawnData(new Vector3f(51762.2f, -13277.17f, 3737.203f), new Angle(-0.28f, 0.96f))); platformLayouts.Add(new SpawnData(new Vector3f(52215.43f, -13650.36f, 3941.672f), new Angle(-0.65f, 0.76f))); platformLayouts.Add(new SpawnData(new Vector3f(52200.01f, -14317.66f, 4140.634f), new Angle(-0.72f, 0.70f))); platformLayouts.Add(new SpawnData(new Vector3f(52099.57f, -14987.48f, 4318.261f), new Angle(-0.76f, 0.65f))); platformLayouts.Add(new SpawnData(new Vector3f(51784.11f, -15663.53f, 4455.74f), new Angle(-0.88f, 0.48f))); platformLayouts.Add(new SpawnData(new Vector3f(51317.89f, -16294.11f, 4584.072f), new Angle(-0.89f, 0.45f))); platformLayouts.Add(new SpawnData(new Vector3f(50883.04f, -16784.74f, 4716.091f), new Angle(-0.85f, 0.52f))); platformLayouts.Add(new SpawnData(new Vector3f(50659.76f, -17336.82f, 4764.241f), new Angle(-0.76f, 0.65f))); platformLayouts.Add(new SpawnData(new Vector3f(50223.77f, -18020.39f, 4812.391f), new Angle(-0.82f, 0.57f))); platformLayouts.Add(new SpawnData(new Vector3f(50428.26f, -12785.69f, 3529.526f), new Angle(-1.00f, 0.02f))); platformLayouts.Add(new SpawnData(new Vector3f(49754.46f, -13154.93f, 3900.068f), new Angle(-0.96f, 0.28f))); platformLayouts.Add(new SpawnData(new Vector3f(49187.71f, -13739.8f, 4251.918f), new Angle(-0.91f, 0.42f))); platformLayouts.Add(new SpawnData(new Vector3f(49155.66f, -14196.82f, 4731.175f), new Angle(-0.51f, 0.86f))); //// splits at start, 2 paths around platformLayouts.Add(new SpawnData(new Vector3f(49928, -10312, 3170), new Angle(-0.26f, 0.97f))); platformLayouts.Add(new SpawnData(new Vector3f(50252, -10700, 3345), new Angle(-0.59f, 0.81f))); platformLayouts.Add(new SpawnData(new Vector3f(50486, -11389, 3660), new Angle(-0.61f, 0.79f))); platformLayouts.Add(new SpawnData(new Vector3f(50709, -12114, 3992), new Angle(-0.59f, 0.80f))); platformLayouts.Add(new SpawnData(new Vector3f(50921, -12905, 4346), new Angle(-0.62f, 0.79f))); platformLayouts.Add(new SpawnData(new Vector3f(51068, -13386, 4590), new Angle(-0.57f, 0.82f))); platformLayouts.Add(new SpawnData(new Vector3f(51005, -14147, 4745), new Angle(-0.79f, 0.62f))); platformLayouts.Add(new SpawnData(new Vector3f(50599, -14875, 4823), new Angle(-0.86f, 0.50f))); platformLayouts.Add(new SpawnData(new Vector3f(50122, -15624, 4883), new Angle(-0.89f, 0.45f))); platformLayouts.Add(new SpawnData(new Vector3f(48998, -10505, 3185), new Angle(-0.94f, 0.35f))); platformLayouts.Add(new SpawnData(new Vector3f(48649, -10795, 3203), new Angle(0.35f, 0.94f))); platformLayouts.Add(new SpawnData(new Vector3f(48388, -11375, 3390), new Angle(-0.74f, 0.67f))); platformLayouts.Add(new SpawnData(new Vector3f(48372, -12026, 3607), new Angle(-0.67f, 0.74f))); platformLayouts.Add(new SpawnData(new Vector3f(48418, -12612, 3793), new Angle(-0.68f, 0.74f))); platformLayouts.Add(new SpawnData(new Vector3f(48496, -13244, 4021), new Angle(-0.65f, 0.76f))); platformLayouts.Add(new SpawnData(new Vector3f(48564, -13815, 4264), new Angle(-0.62f, 0.78f))); platformLayouts.Add(new SpawnData(new Vector3f(48692, -14364, 4559), new Angle(-0.29f, 0.96f))); platformLayouts.Add(new SpawnData(new Vector3f(49049, -14572, 4826), new Angle(-0.25f, 0.97f))); //// stair-like on main platform platformLayouts.Add(new SpawnData(new Vector3f(49656f, -10212f, 3430f), new Angle(1.00f, 0.01f))); platformLayouts.Add(new SpawnData(new Vector3f(49294f, -10239f, 3790f), new Angle(0.68f, 0.73f))); platformLayouts.Add(new SpawnData(new Vector3f(49335f, -9567f, 3732f), new Angle(0.70f, 0.72f))); platformLayouts.Add(new SpawnData(new Vector3f(49368f, -8924f, 3829f), new Angle(0.32f, 0.95f))); platformLayouts.Add(new SpawnData(new Vector3f(49854f, -8735f, 4073f), new Angle(0.06f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(50363f, -8889f, 4317f), new Angle(-0.34f, 0.94f))); platformLayouts.Add(new SpawnData(new Vector3f(50665f, -9431f, 4532f), new Angle(-0.66f, 0.75f))); platformLayouts.Add(new SpawnData(new Vector3f(50815f, -10256f, 4561f), new Angle(-0.64f, 0.77f))); platformLayouts.Add(new SpawnData(new Vector3f(50789f, -11138f, 4572f), new Angle(-0.80f, 0.60f))); platformLayouts.Add(new SpawnData(new Vector3f(50577f, -11889f, 4677f), new Angle(-0.80f, 0.60f))); platformLayouts.Add(new SpawnData(new Vector3f(50588f, -12653f, 4775f), new Angle(-0.70f, 0.72f))); platformLayouts.Add(new SpawnData(new Vector3f(50730f, -13350f, 4952f), new Angle(-0.62f, 0.79f))); platformLayouts.Add(new SpawnData(new Vector3f(50693f, -14090f, 5075f), new Angle(-0.83f, 0.55f))); platformLayouts.Add(new SpawnData(new Vector3f(50364f, -14597f, 4911f), new Angle(-0.88f, 0.48f))); // hide rest platformLayouts.Add(new SpawnData(new Vector3f(45468f, -10094f, 4457f), new Angle(-0.03f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(45468f, -10094f, 4457f), new Angle(-0.03f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(45468f, -10094f, 4457f), new Angle(-0.03f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(45468f, -10094f, 4457f), new Angle(-0.03f, 1.00f))); //// early stairs, around left side platformLayouts.Add(new SpawnData(new Vector3f(49422f, -8528f, 3183f), new Angle(-0.71f, 0.70f))); platformLayouts.Add(new SpawnData(new Vector3f(49422f, -8894f, 3388f), new Angle(-0.70f, 0.71f))); platformLayouts.Add(new SpawnData(new Vector3f(49405f, -9388f, 3622f), new Angle(-0.71f, 0.70f))); platformLayouts.Add(new SpawnData(new Vector3f(49411f, -9903f, 3865f), new Angle(-0.70f, 0.71f))); platformLayouts.Add(new SpawnData(new Vector3f(49411f, -10469f, 4102f), new Angle(-0.71f, 0.71f))); platformLayouts.Add(new SpawnData(new Vector3f(49411f, -10982f, 4353f), new Angle(-0.71f, 0.71f))); platformLayouts.Add(new SpawnData(new Vector3f(49350f, -11762f, 4421f), new Angle(-0.71f, 0.71f))); platformLayouts.Add(new SpawnData(new Vector3f(49346f, -12423f, 4632f), new Angle(-0.71f, 0.71f))); platformLayouts.Add(new SpawnData(new Vector3f(48628f, -12405f, 4777f), new Angle(0.02f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(47640f, -12444f, 4825f), new Angle(0.00f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(47637f, -13124f, 4873f), new Angle(0.00f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(47666f, -13921f, 4921f), new Angle(0.71f, 0.70f))); platformLayouts.Add(new SpawnData(new Vector3f(47668f, -14622f, 4969f), new Angle(0.71f, 0.70f))); platformLayouts.Add(new SpawnData(new Vector3f(47692f, -15471f, 5017f), new Angle(0.71f, 0.70f))); platformLayouts.Add(new SpawnData(new Vector3f(48138f, -15964f, 5065f), new Angle(-0.36f, 0.93f))); platformLayouts.Add(new SpawnData(new Vector3f(48829f, -16554f, 4893f), new Angle(-0.34f, 0.94f))); platformLayouts.Add(new SpawnData(new Vector3f(49241f, -16973f, 4857f), new Angle(-0.39f, 0.92f))); platformLayouts.Add(new SpawnData(new Vector3f(49531f, -17340f, 4829f), new Angle(-0.60f, 0.80f))); //// Inverted spiral platformLayouts.Add(new SpawnData(new Vector3f(49701f, -11128f, 3153f), new Angle(-0.42f, 0.91f))); platformLayouts.Add(new SpawnData(new Vector3f(50386f, -11533f, 3242f), new Angle(-0.18f, 0.98f))); platformLayouts.Add(new SpawnData(new Vector3f(51231f, -11638f, 3295f), new Angle(0.09f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(51873f, -11280f, 3376f), new Angle(0.30f, 0.95f))); platformLayouts.Add(new SpawnData(new Vector3f(52293f, -10676f, 3505f), new Angle(0.56f, 0.83f))); platformLayouts.Add(new SpawnData(new Vector3f(52207f, -9967f, 3622f), new Angle(0.84f, 0.55f))); platformLayouts.Add(new SpawnData(new Vector3f(51557f, -9450f, 3694f), new Angle(0.98f, 0.21f))); platformLayouts.Add(new SpawnData(new Vector3f(50811f, -9420f, 3771f), new Angle(-0.99f, 0.13f))); platformLayouts.Add(new SpawnData(new Vector3f(50087f, -9632f, 3868f), new Angle(-0.99f, 0.17f))); platformLayouts.Add(new SpawnData(new Vector3f(49424f, -10042f, 3995f), new Angle(-0.94f, 0.33f))); platformLayouts.Add(new SpawnData(new Vector3f(48780f, -10568f, 4038f), new Angle(-0.92f, 0.39f))); platformLayouts.Add(new SpawnData(new Vector3f(48397f, -11260f, 4129f), new Angle(-0.81f, 0.59f))); platformLayouts.Add(new SpawnData(new Vector3f(48361f, -11940f, 4291f), new Angle(-0.68f, 0.73f))); platformLayouts.Add(new SpawnData(new Vector3f(48172f, -12515f, 4507f), new Angle(-0.84f, 0.54f))); platformLayouts.Add(new SpawnData(new Vector3f(47852f, -13104f, 4717f), new Angle(-0.79f, 0.62f))); platformLayouts.Add(new SpawnData(new Vector3f(48050f, -13880f, 5012f), new Angle(-0.59f, 0.80f))); platformLayouts.Add(new SpawnData(new Vector3f(48421f, -14681f, 4868f), new Angle(-0.42f, 0.91f))); platformLayouts.Add(new SpawnData(new Vector3f(49052f, -15132f, 4823f), new Angle(-0.22f, 0.97f))); //// high step stairs platformLayouts.Add(new SpawnData(new Vector3f(49863f, -10249f, 3185f), new Angle(-0.01f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(50313f, -10302f, 3641f), new Angle(-0.04f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(50613f, -10331f, 4008f), new Angle(-0.03f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(51077f, -10372f, 4508f), new Angle(0.00f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(51078f, -10772f, 4969f), new Angle(-0.71f, 0.70f))); platformLayouts.Add(new SpawnData(new Vector3f(51072f, -11467f, 4203f), new Angle(-0.69f, 0.73f))); platformLayouts.Add(new SpawnData(new Vector3f(51206f, -12384f, 4507f), new Angle(-0.74f, 0.67f))); platformLayouts.Add(new SpawnData(new Vector3f(51601f, -13060f, 4675f), new Angle(-0.49f, 0.87f))); platformLayouts.Add(new SpawnData(new Vector3f(51767f, -13788f, 4824f), new Angle(-0.79f, 0.61f))); platformLayouts.Add(new SpawnData(new Vector3f(51307f, -14580f, 4906f), new Angle(-0.90f, 0.43f))); platformLayouts.Add(new SpawnData(new Vector3f(50667f, -15140f, 4863f), new Angle(-0.95f, 0.32f))); platformLayouts.Add(new SpawnData(new Vector3f(50198f, -15678f, 4783f), new Angle(-0.88f, 0.47f))); platformLayouts.Add(new SpawnData(new Vector3f(51720f, -10804f, 5462f), new Angle(-0.01f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(51666f, -12065f, 5532f), new Angle(-0.71f, 0.70f))); platformLayouts.Add(new SpawnData(new Vector3f(51501f, -12952f, 5554f), new Angle(-0.76f, 0.65f))); platformLayouts.Add(new SpawnData(new Vector3f(51309f, -13913f, 5376f), new Angle(-0.79f, 0.62f))); // hide platformLayouts.Add(new SpawnData(new Vector3f(45468f, -10094f, 4457f), new Angle(-0.03f, 1.00f))); platformLayouts.Add(new SpawnData(new Vector3f(45468f, -10094f, 4457f), new Angle(-0.03f, 1.00f))); //// down drop platformLayouts.Add(new SpawnData(new Vector3f(49582f, -10629f, 3170f), new Angle(-0.71f, 0.71f))); platformLayouts.Add(new SpawnData(new Vector3f(49576f, -10914f, 3218f), new Angle(-0.72f, 0.69f))); platformLayouts.Add(new SpawnData(new Vector3f(49562f, -11194f, 2615f), new Angle(0.68f, 0.73f))); platformLayouts.Add(new SpawnData(new Vector3f(49589f, -11915f, 2283f), new Angle(0.72f, 0.70f))); platformLayouts.Add(new SpawnData(new Vector3f(49300f, -12588f, 2331f), new Angle(0.50f, 0.86f))); platformLayouts.Add(new SpawnData(new Vector3f(48933f, -13232f, 2380f), new Angle(0.50f, 0.86f))); platformLayouts.Add(new SpawnData(new Vector3f(48533f, -13917f, 2674f), new Angle(0.50f, 0.87f))); platformLayouts.Add(new SpawnData(new Vector3f(48192f, -14490f, 2877f), new Angle(0.49f, 0.87f))); platformLayouts.Add(new SpawnData(new Vector3f(48006f, -15053f, 3024f), new Angle(0.62f, 0.79f))); platformLayouts.Add(new SpawnData(new Vector3f(47854f, -15695f, 3302f), new Angle(0.62f, 0.78f))); platformLayouts.Add(new SpawnData(new Vector3f(47739f, -16225f, 3643f), new Angle(0.67f, 0.74f))); platformLayouts.Add(new SpawnData(new Vector3f(47716f, -16740f, 3866f), new Angle(0.69f, 0.72f))); platformLayouts.Add(new SpawnData(new Vector3f(47880f, -17336f, 4067f), new Angle(0.79f, 0.61f))); platformLayouts.Add(new SpawnData(new Vector3f(48062f, -17837f, 4349f), new Angle(0.84f, 0.55f))); platformLayouts.Add(new SpawnData(new Vector3f(48393f, -18410f, 4501f), new Angle(0.88f, 0.47f))); platformLayouts.Add(new SpawnData(new Vector3f(48788f, -18990f, 4681f), new Angle(0.90f, 0.44f))); platformLayouts.Add(new SpawnData(new Vector3f(49206f, -19520f, 4820f), new Angle(-0.46f, 0.89f))); platformLayouts.Add(new SpawnData(new Vector3f(49448f, -19729f, 4828f), new Angle(-0.58f, 0.82f))); //// left, to middle and around the right platformLayouts.Add(new SpawnData(new Vector3f(48944f, -10468f, 3179f), new Angle(-0.97f, 0.23f))); platformLayouts.Add(new SpawnData(new Vector3f(48584f, -10659f, 3344f), new Angle(-0.95f, 0.30f))); platformLayouts.Add(new SpawnData(new Vector3f(48016f, -11026f, 3478f), new Angle(-0.95f, 0.31f))); platformLayouts.Add(new SpawnData(new Vector3f(47618f, -11548f, 3628f), new Angle(-0.81f, 0.59f))); platformLayouts.Add(new SpawnData(new Vector3f(47525f, -12080f, 3718f), new Angle(0.70f, 0.71f))); platformLayouts.Add(new SpawnData(new Vector3f(48329f, -12072f, 3755f), new Angle(-1.00f, 0.00f))); platformLayouts.Add(new SpawnData(new Vector3f(49029f, -12035f, 3794f), new Angle(-1.00f, 0.00f))); platformLayouts.Add(new SpawnData(new Vector3f(49699f, -12038f, 3832f), new Angle(1.00f, 0.01f))); platformLayouts.Add(new SpawnData(new Vector3f(50417f, -12055f, 3850f), new Angle(1.00f, 0.02f))); platformLayouts.Add(new SpawnData(new Vector3f(51136f, -12137f, 3819f), new Angle(1.00f, 0.03f))); platformLayouts.Add(new SpawnData(new Vector3f(51832f, -12443f, 3965f), new Angle(0.96f, 0.29f))); platformLayouts.Add(new SpawnData(new Vector3f(52026f, -12993f, 4105f), new Angle(0.77f, 0.63f))); platformLayouts.Add(new SpawnData(new Vector3f(52078f, -13592f, 4237f), new Angle(0.70f, 0.71f))); platformLayouts.Add(new SpawnData(new Vector3f(51743f, -14260f, 4361f), new Angle(0.54f, 0.84f))); platformLayouts.Add(new SpawnData(new Vector3f(51316f, -14702f, 4477f), new Angle(0.40f, 0.92f))); platformLayouts.Add(new SpawnData(new Vector3f(50878f, -15056f, 4650f), new Angle(0.31f, 0.95f))); platformLayouts.Add(new SpawnData(new Vector3f(50412f, -15582f, 4868f), new Angle(-0.93f, 0.37f))); platformLayouts.Add(new SpawnData(new Vector3f(50042f, -15943f, 4774f), new Angle(-0.92f, 0.38f))); #endregion // Fix green platform rotations by converting it to quaternion rotation for (int i = 0; i < platformLayouts.Count; i++) { platformLayouts[i].angle = ToQuaternion(platformLayouts[i].angle); } ////// keys ////// #region Keys Rooms = new List <RoomLayout>(); RoomLayout layout; List <WorldObject> keys = new List <WorldObject>(); keys.Add(new CVKey(0xA98, 0xCF8, 0x318)); keys.Add(new CVKey(0xAB0, 0xCD8, 0x408)); keys.Add(new CVKey(0xAA8, 0xCB8, 0x510)); keys.Add(new CVKey(0xAA0, 0xCA8, 0x570)); keys.Add(new CVKey(0xA90, 0xC88, 0x5D0)); // First Room layout = new RoomLayout(keys[0]); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(45823, -37582, 8593))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(53754, -37374, 8593))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(53697, -34409, 8593))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(49089, -33463, 8593))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(47570, -39136, 8621))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(52143, -38772, 8643))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(49757, -42331, 8593))); Rooms.Add(layout); // Second Room - 2 keys layout = new RoomLayout(keys[1], keys[2]); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(47537, -34205, 11478))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(45532, -35307, 11478))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(45611, -37278, 11478))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(45647, -38806, 11337))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(45537, -40240, 11470))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(49587, -36790, 11478))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(53261, -38783, 11478))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(53310, -41370, 12917))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(53327, -37553, 12878))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(53371, -35344, 12826))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(51016, -34844, 12878))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(51075, -33337, 12878))); Rooms.Add(layout); // Third Room - architect/mara scene layout = new RoomLayout(keys[3]); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(54034, -33631, 14314), new Vector3f(45390, -36957, 14303))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(50890, -42501, 14314), new Vector3f(54199, -37696, 14303))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(45326, -37232, 14303), new Vector3f(48101, -42259, 14314))); Rooms.Add(layout); // 4'th Room, long platform layout = new RoomLayout(keys[4]); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(52483, -39739, 17498), new Vector3f(51113, -38894, 17498))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(49968, -38949, 17498), new Vector3f(45421, -39878, 17498))); Rooms.Add(layout); #endregion ////// JumpPads ////// #region JumpPad NonPlaceableObject jumppad = new JumpPad(0xB78); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(90.0f, -60.0f, 0.0f), Speed = 6000 }); //backwards 1 platfrom jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(120.0f, -60.0f, 0.0f), Speed = 8000 }.SetRarity(0.5)); //backwards 2 platform jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(0.0f, -92.0f, 0.0f), Speed = 8500 }.SetRarity(0.35)); //3 platfrom jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(0.0f, -92.0f, 0.0f), Speed = 9500 }.SetRarity(0.2)); //to the last jumppad jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(0.0f, -95.0f, 0.0f), Speed = 14000 }.SetRarity(0.2)); //to the EOL worldObjects.Add(jumppad); CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(48575, -35900, 8230), new Vector3f(50500, -34860, 9450), new Vector3f(49740, -40875, 8650), new Angle(0.71f, 0.71f))); jumppad = new JumpPad(0xB70); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(90.0f, -50.0f, 0.0f), Speed = 6000 }); //front without cp jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-11.0f, -40.0f, 0.0f), Speed = 8200 }); //3 green platforms jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-135.0f, -40.0f, 0.0f), Speed = 6500 }); //left side //jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-90.0f, -37.0f, 0.0f), Speed = 8000 }.SetRarity(0.2));//for hardcore worldObjects.Add(jumppad); CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(45000, -32900, 11000), new Vector3f(46350, -33875, 12000), new Vector3f(49655, -34680, 11550), new Angle(-0.71f, 0.71f))); CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(45000, -40780, 11130), new Vector3f(46180, -39500, 11775), new Vector3f(49655, -34680, 11550), new Angle(-0.71f, 0.71f))); CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(52345, -37325, 12145), new Vector3f(54945, -33385, 13470), new Vector3f(49655, -34680, 11550), new Angle(-0.71f, 0.71f))); jumppad = new JumpPad(0xB68); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-90.0f, -50.0f, 0.0f), Speed = 6000 }); //front without cp jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(0.0f, -90.0f, 0.0f), Speed = 10200 }.SetRarity(0.5)); // last jumppad jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(0.0f, -90.0f, 0.0f), Speed = 13200 }.SetRarity(0.25)); //to the EOL worldObjects.Add(jumppad); jumppad = new JumpPad(0xB60); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(0.0f, -90.0f, 0.0f), Speed = 6000 }); //1 up jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-125.0f, -30.0f, 0.0f), Speed = 12200 }.SetRarity(0.25)); // hard jump, easy with sideway jump jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(25.0f, -60.0f, 0.0f), Speed = 7500 }.SetRarity(0.35)); //2 up worldObjects.Add(jumppad); jumppad = new JumpPad(0xB88); //5000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(65.0f, -60.0f, 0.0f), Speed = 5500 }); //1 up jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(135.0f, -45.0f, 0.0f), Speed = 8200 }); // right side jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(25.0f, -40.0f, 0.0f), Speed = 6500 }); //left side up worldObjects.Add(jumppad); jumppad = new JumpPad(0x6a8); //3500 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-36.0f, -20.0f, 0.0f), Speed = 8500 }); //climb on other side jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-33.0f, -20.0f, 0.0f), Speed = 13200 }.SetRarity(0.35)); // bounce jump,sideways(can make to the last jumppad) worldObjects.Add(jumppad); CustomCheckPoints.Add(new CustomCP(mapType, new Vector3f(53067, -35725, 19143), new Vector3f(54065, -36610, 20550), new Vector3f(50660, -34400, 19600), new Angle(0.0f, 1.0f))); jumppad = new JumpPad(0xB80); //10000 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(0.0f, -90.0f, 0.0f), Speed = 9350 }); //short jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(0.0f, -90.0f, 0.0f), Speed = 150000 }); //teleport worldObjects.Add(jumppad); #endregion }
void Start() { // Get the teleport script from the parent parentPad = transform.GetComponentInParent <JumpPad>(); }
protected override void Gen_PerRoom() { Rooms = new List<RoomLayout>(); RoomLayout layout; ///// SECTION 1 ///// List<WorldObject> orbs = new List<WorldObject>(); orbs.Add(new CVOrb(0x120, 0x1938)); orbs.Add(new CVOrb(0x128, 0x1920)); orbs.Add(new CVOrb(0x138, 0x18f0)); orbs.Add(new CVOrb(0x130, 0x1908)); layout = new RoomLayout(orbs); // railings layout.AddSpawnPlane(new SpawnPlane(new Vector3f(102651, -25257, 298), new Vector3f(102641, -26964, 298))); // middle platform, right railing layout.AddSpawnPlane(new SpawnPlane(new Vector3f(101649, -27187, 289), new Vector3f(101651, -25313, 298))); // middle platform, left railing layout.AddSpawnPlane(new SpawnPlane(new Vector3f(103249, -27136, 298), new Vector3f(103245, -28100, 298))); // middle, right edge, corner railing layout.AddSpawnPlane(new SpawnPlane(new Vector3f(101022, -28150, 295), new Vector3f(101048, -27123, 295))); // middle, left edge, corner railing layout.AddSpawnPlane(new SpawnPlane(new Vector3f(101024, -29145, 296))); // door platform, corner railing left layout.AddSpawnPlane(new SpawnPlane(new Vector3f(103296, -29156, 280))); // door platform, corner railing, right layout.AddSpawnPlane(new SpawnPlane(new Vector3f(104737, -28165, 399))); // right platform, corner jump layout.AddSpawnPlane(new SpawnPlane(new Vector3f(104751, -27124, 457))); // right platform, corner jump 2 layout.AddSpawnPlane(new SpawnPlane(new Vector3f(99551, -27137, 433))); // left platform, corner jump 1 layout.AddSpawnPlane(new SpawnPlane(new Vector3f(99553, -28157, 408))); // left platform, corner jump 2 layout.AddSpawnPlane(new SpawnPlane(new Vector3f(103243, -23228, 298))); // behind spawn, railing right layout.AddSpawnPlane(new SpawnPlane(new Vector3f(101055, -23226, 298))); // behind spawn, railing left // Inside hallways layout.AddSpawnPlane(new SpawnPlane(new Vector3f(103969, -30261, 198))); // door platform, right layout.AddSpawnPlane(new SpawnPlane(new Vector3f(100271, -30254, 198))); // door platform, left // default platforms layout.AddSpawnPlane(new SpawnPlane(new Vector3f(101177, -27334, 198), new Vector3f(101601, -27971, 198))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(102688, -27293, 198), new Vector3f(103122, -28041, 198))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(103032, -29533, 198), new Vector3f(101283, -32102, 198)).SetMaxEnemies(2)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(101852, -29773, 198), new Vector3f(102517, -25240, 198)).SetMaxEnemies(2)); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(102209, -29355, 310))); // arc Rooms.Add(layout); ///// SECTION 2 ///// orbs = new List<WorldObject>(); orbs.Add(new CVOrb(0x168, 0x1860)); orbs.Add(new CVOrb(0x170, 0x1848)); orbs.Add(new CVOrb(0x178, 0x1830)); orbs.Add(new CVOrb(0x180, 0x1818)); orbs.Add(new CVOrb(0x188, 0x1800)); orbs.Add(new CVOrb(0x190, 0x17E8)); layout = new RoomLayout(orbs); // default platforms layout.AddSpawnPlane(new SpawnPlane(new Vector3f(102944, -45880, 648))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(101431, -42426, 648))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(104838, -43916, 648))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(104773, -45813, 648))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(102707, -47428, 1398), new Vector3f(102693, -47409, 1398))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(103029, -46097, 1398), new Vector3f(101401, -45763, 1398))); // railings layout.AddSpawnPlane(new SpawnPlane(new Vector3f(103166, -45600, 1612), new Vector3f(101448, -45596, 1572))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(103145, -45798, 1686), new Vector3f(103142, -47288, 1646))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(101566, -44100, 758), new Vector3f(102732, -44109, 758))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(103150, -43817, 758), new Vector3f(103146, -42426, 758))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(104649, -42295, 758), new Vector3f(104635, -43831, 757))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(104879, -44106, 758), new Vector3f(106369, -44109, 758))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(106419, -45598, 758), new Vector3f(104913, -45599, 758))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(104668, -45878, 757), new Vector3f(104641, -47298, 758))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(101374, -45583, 757), new Vector3f(102736, -45599, 757))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(103141, -45879, 758), new Vector3f(103142, -47345, 758))); // railing corners, hovering layout.AddSpawnPlane(new SpawnPlane(new Vector3f(103155, -44120, 871))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(104643, -44088, 924))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(104627, -45610, 858))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(103149, -45604, 1652))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(102550, -46196, 1642))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(106668, -45599, 927))); //// others layout.AddSpawnPlane(new SpawnPlane(new Vector3f(104870, -42133, 939))); // right-bot, railing between buildings layout.AddSpawnPlane(new SpawnPlane(new Vector3f(104726, -48032, 648))); // between trees // inside hallways layout.AddSpawnPlane(new SpawnPlane(new Vector3f(100616, -43116, 648))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(107224, -43101, 648))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(107059, -46584, 648))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(100693, -45905, 1398))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(100747, -46601, 648))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(102836, -48000, 1398))); Rooms.Add(layout); ///// SECTION 3 ///// orbs = new List<WorldObject>(); orbs.Add(new CVOrb(0x140, 0x18D8)); orbs.Add(new CVOrb(0x148, 0x18C0)); orbs.Add(new CVOrb(0x150, 0x18A8)); orbs.Add(new CVOrb(0x158, 0x1890)); orbs.Add(new CVOrb(0x160, 0x1878)); layout = new RoomLayout(orbs); // default layout.AddSpawnPlane(new SpawnPlane(new Vector3f(106184, -65970, -2501), new Vector3f(107959, -68040, -2501))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(109818, -68014, -2501), new Vector3f(111236, -66392, -2501))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(110215, -71496, -1901), new Vector3f(111502, -72057, -1901))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(107927, -69955, -2501), new Vector3f(106114, -70584, -2501))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(106112, -72492, -2501), new Vector3f(107912, -72994, -2501))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(104237, -73035, -2501), new Vector3f(102644, -71272, -2501))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(102571, -67943, -2501), new Vector3f(104293, -66198, -2501))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(102586, -68564, -1501), new Vector3f(103486, -68935, -1501))); // railings corners layout.AddSpawnPlane(new SpawnPlane(new Vector3f(103624, -68462, -1338))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(104448, -71025, -2223))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(105938, -72257, -2211))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(108167, -72230, -2243))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(108161, -70738, -2201))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(108130, -69738, -2307))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(105927, -69755, -2214))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(105943, -70756, -2205))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(104435, -68252, -2201))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(104444, -66024, -2266))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(105930, -68267, -2214))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(108162, -68228, -2275), new Vector3f(108145, -66148, -2265))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(109664, -66031, -2216), new Vector3f(109658, -68267, -2303))); // others layout.AddSpawnPlane(new SpawnPlane(new Vector3f(102314, -67150, -1788))); // door frame (left) layout.AddSpawnPlane(new SpawnPlane(new Vector3f(103336, -66157, -1789))); // door frame 2 (left) layout.AddSpawnPlane(new SpawnPlane(new Vector3f(103349, -70371, -1501))); // bridge (after button press) // in hallways layout.AddSpawnPlane(new SpawnPlane(new Vector3f(102253, -68760, -598))); layout.AddSpawnPlane(new SpawnPlane(new Vector3f(110841, -72220, -798))); Rooms.Add(layout); ////// JumpPads ////// #region JumpPad NonPlaceableObject jumppad = new JumpPad(0x4e8);//4500 jumppad.AddSpawnInfo(new JumpPadSpawnInfo());//default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-90.0f, -40.0f, 0.0f), Speed = 8000 });//forward high jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-90.0f, -20.0f, 0.0f), Speed = 8000 });//forward short jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-90.0f, -80.00f, 0.0f), Speed = 8100 });//3 platfrom worldObjects.Add(jumppad); jumppad = new JumpPad(0x508);//4700 jumppad.AddSpawnInfo(new JumpPadSpawnInfo());//default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-85.0f, -40.0f, 0.0f), Speed = 8000 }.SetRarity(0.35));//skip all jumppads //jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-60.0f, -73.0f, 0.0f), Speed = 12750 }.SetRarity(0.25));//oob to the exit //jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(0.0f, -90.00f, 0.0f), Speed = 100000 }.SetRarity(0.35));//troll jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-57.0f, -45.00f, 0.0f), Speed = 7200 }.SetRarity(0.5));//skip 2 jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-35.0f, -70.00f, 0.0f), Speed = 7200 });//skip 1 worldObjects.Add(jumppad); jumppad = new JumpPad(0x500);//4800 jumppad.AddSpawnInfo(new JumpPadSpawnInfo());//default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-75.0f, -60.0f, 0.0f), Speed = 5500 }.SetRarity(0.5));//skip all jumppads //jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-85.0f, -70.0f, 0.0f), Speed = 8000 }.SetRarity(0.5));//oob to the next section jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-42.5f, -40.0f, 0.0f), Speed = 5800 });//skip 1 jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-2.0f, -3.0f, 0.0f), Speed = 10800 });//fast bounce worldObjects.Add(jumppad); jumppad = new JumpPad(0x4F0);//4800 jumppad.AddSpawnInfo(new JumpPadSpawnInfo());//default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-127.0f, -60.0f, 0.0f), Speed = 6500 });//skip all jumppads //jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(0.0f, -90.00f, 0.0f), Speed = 100000 }.SetRarity(0.5));//troll //jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-75.0f, -70.0f, 0.0f), Speed = 8050 }.SetRarity(0.35));//oob to the exit worldObjects.Add(jumppad); jumppad = new JumpPad(0x4F8);//4600 jumppad.AddSpawnInfo(new JumpPadSpawnInfo());//default //jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(.0f, -90.00f, 0.0f), Speed = 10000 }.SetRarity(0.35));//troll jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-170.0f, -60.00f, 0.0f), Speed = 5000 });//high jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Angle = new QuaternionAngle(-177.0f, -23.00f, 0.0f), Speed = 12000 });//fast worldObjects.Add(jumppad); #endregion }
public JumpPadBounceEvent(JumpPad jumpPad, Rigidbody2D rigidbody) { this.jumpPad = jumpPad; this.rigidbody = rigidbody; }
protected override void Gen_PerRoom() { // section 1 - single enemy enemies.Add(new Enemy(new DeepPointer(PtrDB.DP_SurgeCV_EnemyEntity).Format(0x10))); // section 2 - double enemies enemies.Add(new Enemy(new DeepPointer(PtrDB.DP_SurgeCV_EnemyEntity).Format(0x30))); enemies.Add(new Enemy(new DeepPointer(PtrDB.DP_SurgeCV_EnemyEntity).Format(0x38))); // section 3 - triple enemies enemies.Add(new Enemy(new DeepPointer(PtrDB.DP_SurgeCV_EnemyEntity).Format(0x28))); enemies.Add(new Enemy(new DeepPointer(PtrDB.DP_SurgeCV_EnemyEntity).Format(0x20))); enemies.Add(new Enemy(new DeepPointer(PtrDB.DP_SurgeCV_EnemyEntity).Format(0x18))); //// Layouts //// // section 1 Section1Spawns.Add(new SpawnData(new Vector3f(800, 9200, 477), new Angle(0.71f, 0.71f))); // default Section1Spawns.Add(new SpawnData(new Vector3f(-2386, 6176, 536), new Angle(0.0f, 1.0f))); // exit ledge Section1Spawns.Add(new SpawnData(new Vector3f(-1714, 9701, 690), new Angle(0.71f, 0.71f))); // right rock Section1Spawns.Add(new SpawnData(new Vector3f(-2189, 9689, 1655), new Angle(0.71f, 0.71f))); // palm Section1Spawns.Add(new SpawnData(new Vector3f(-1260, 9682, 1514), new Angle(0.71f, 0.71f))); // palm 2 Section1Spawns.Add(new SpawnData(new Vector3f(-4973, 9148, 1499), new Angle(-0.71f, 0.71f))); // arc behind spawn Section1Spawns.Add(new SpawnData(new Vector3f(-4201, 11227, 2186), new Angle(1.0f, 0.0f))); // highest palm Section1Spawns.Add(new SpawnData(new Vector3f(-2203, 6098, 1910), new Angle(0.0f, 1.0f))); // palm near next phase // section 2 Section2Spawns.Add(new SpawnData(new Vector3f(-2600, 1400, 490), new Angle(0.0f, 1.0f)));//default Section2Spawns.Add(new SpawnData(new Vector3f(-1450, 400, 390), new Angle(0.0f, 1.0f))); Section2Spawns.Add(new SpawnData(new Vector3f(-2591, 1355, 498), new Angle(0.0f, 1.0f))); Section2Spawns.Add(new SpawnData(new Vector3f(-2037, 2441, 497), new Angle(0.0f, 1.0f))); Section2Spawns.Add(new SpawnData(new Vector3f(-1493, 2764, 1608), new Angle(0.0f, 1.0f))); Section2Spawns.Add(new SpawnData(new Vector3f(-2780, 2936, 498), new Angle(-0.71f, 0.71f))); Section2Spawns.Add(new SpawnData(new Vector3f(-3699, -2199, 1678), new Angle(0.0f, 1.0f))); Section2Spawns.Add(new SpawnData(new Vector3f(-4133, -1901, 1690), new Angle(0.0f, 1.0f))); Section2Spawns.Add(new SpawnData(new Vector3f(-3827, 3575, 2450), new Angle(-1.0f, 0.0f))); Section2Spawns.Add(new SpawnData(new Vector3f(-4513, 3332, 2692), new Angle(-1.0f, 0.0f))); // section 3 Section3Spawns.Add(new SpawnData(new Vector3f(-5162, -8694, 2898), new Angle(-0.89f, 0.46f))); // default Section3Spawns.Add(new SpawnData(new Vector3f(-5981, -8421, 3089), new Angle(-0.82f, 0.57f))); Section3Spawns.Add(new SpawnData(new Vector3f(-5993, -9006, 3091), new Angle(-0.82f, 0.57f))); Section3Spawns.Add(new SpawnData(new Vector3f(-2629, -10411, 3043), new Angle(0.0f, 1.0f))); Section3Spawns.Add(new SpawnData(new Vector3f(-2874, -9929, 2965), new Angle(0.0f, 1.0f))); Section3Spawns.Add(new SpawnData(new Vector3f(-2898, -10215, 2847), new Angle(0.0f, 1.0f))); Section3Spawns.Add(new SpawnData(new Vector3f(-4042, -12560, 2464), new Angle(0.0f, 1.0f))); Section3Spawns.Add(new SpawnData(new Vector3f(-3884, -12385, 2418), new Angle(0.0f, 1.0f))); Section3Spawns.Add(new SpawnData(new Vector3f(-3603, -12379, 2369), new Angle(0.0f, 1.0f))); #region JumpPad var jumppad = new JumpPad(0x1D0); //3500 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 9000, Angle = new QuaternionAngle(-93, -30, 0) }); // short jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 9300, Angle = new QuaternionAngle(-93, -38, 0) }); // long jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 7500, Angle = new QuaternionAngle(-90, -75, 0) }.SetRarity(0.35)); // oob on top worldObjects.Add(jumppad); jumppad = new JumpPad(0x1C8); //3500 jumppad.AddSpawnInfo(new JumpPadSpawnInfo()); //default jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 6000, Angle = new QuaternionAngle(-147, -45, 0) }.SetRarity(0.5)); // to the exit jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 4750, Angle = new QuaternionAngle(-120, -45, 0) }); // long jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 4230, Angle = new QuaternionAngle(-98, -60, 0) }); // next jumppad jumppad.AddSpawnInfo(new JumpPadSpawnInfo { Speed = 6600, Angle = new QuaternionAngle(0, -90, 0) }.SetRarity(0.5)); // high worldObjects.Add(jumppad); //jumppad = new JumpPad(0x148);//3500 //jumppad.AddSpawnInfo(new JumpPadSpawnInfo());//default //worldObjects.Add(jumppad); #endregion }
// Use this for initialization void Start() { jumpPad = new JumpPad(); jumpPad.JumpForce = jumpForce; }
public static bool TryGetJumpPad(Collider2D collider, out JumpPad jumpPad) { return(Instance.m_JumpPadCache.TryGetValue(collider, out jumpPad)); }