Inheritance: MonoBehaviour
Exemple #1
0
        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
        }
Exemple #2
0
 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>());
            }
        }
    }
Exemple #4
0
        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();
        }
Exemple #5
0
    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);
    }
Exemple #6
0
 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
 }
Exemple #7
0
        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;
 }
Exemple #12
0
        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
        }
Exemple #13
0
 // Use this for initialization
 void Start()
 {
     jumpPad           = new JumpPad();
     jumpPad.JumpForce = jumpForce;
 }
Exemple #14
0
 public static bool TryGetJumpPad(Collider2D collider, out JumpPad jumpPad)
 {
     return(Instance.m_JumpPadCache.TryGetValue(collider, out jumpPad));
 }