Пример #1
0
        public void GivenEarthsGravityField()
        {
            _gravityField = new GravityField(
                                new Vector3(0, 0, -9.81)
                                    .SI().Metre / SI.Second.Squared);

            _pointMass.ForceAnchor.Connect(_gravityField);
        }
Пример #2
0
 public void ClearField(GravityField g)
 {
     Fields.Remove(g);
     //if(Field == g)
     //{
     //	Field = null;
     //}
 }
Пример #3
0
 //public GravityField Field;
 public void SetField(GravityField g)
 {
     if (!Fields.Contains(g))
     {
         Fields.Add(g);
     }
     //if(Field == null || Field.PowerAtDist(trans.position) < g.PowerAtDist(trans.position))
     //{
     //	Field = g;
     //}
 }
Пример #4
0
    public void Detonate()
    {
        Destroy(bomb);
        GameObject   gravityField = Instantiate(fieldPrefab, bomb.transform.position, new Quaternion());
        GravityField field        = gravityField.GetComponent <GravityField>();

        field.skill       = this;
        field.enemy       = skillManager.enemy;
        field.fieldForce  = fieldForce;
        field.fieldSize   = fieldSize;
        field.fieldDamage = fieldDPS;
        Destroy(gravityField, fieldDuration);
    }
Пример #5
0
    public void UpdateIndicator(GravityIndicator indicator, GravityField field)
    {
        Vector2 indicatorGravity = field.GetGravityAtPosition(indicator.transform.position);

        indicator.GravityForce = indicatorGravity;
        float angle = Vector2.SignedAngle(indicator.transform.right, indicatorGravity);

        indicator.transform.Rotate(0.0f, 0.0f, angle);

        float strengthT   = Mathf.InverseLerp(minFieldStrength, maxFieldStrength, indicatorGravity.magnitude);
        float arrowLength = Mathf.Lerp(minArrowLength, maxArrowLength, strengthT);

        indicator.SetArrowLength(arrowLength);
    }
Пример #6
0
    public void HandleGravityFieldUpdated(object sender, EventArgs args)
    {
        GravityField field = sender as GravityField;

        if (field == null)
        {
            return;
        }

        foreach (GravityIndicator indicator in indicators)
        {
            UpdateIndicator(indicator, field);
        }
    }
Пример #7
0
 public override void Initialize(PlayerManager playerManager, CharacterDto character = null)
 {
     // Arena character
     if (character == null)
     {
         InitializeSpeed();
     }
     // RLR Character
     else
     {
         Character = character;
         InitializeFromDto();
         Ability1 = new GravityField(this, playerManager);
         Ability2 = new Freeze(this, playerManager);
     }
 }
Пример #8
0
    /*
     * Create the gravity sectors with just positions for now.
     */
    void Start()
    {
        instance = this;

        // amount of sectors to place along each axis
        int numX = Mathf.CeilToInt((boundsEnd.x - boundsStart.x) / sectorSize);
        int numY = Mathf.CeilToInt((boundsEnd.y - boundsStart.y) / sectorSize);
        int numZ = Mathf.CeilToInt((boundsEnd.z - boundsStart.z) / sectorSize);

        gravitySectors = new GravitySector[numX, numY, numZ];

        CreateMinDistProbes();
        minDistThresh = minSectorDistThreshold * sectorSize;

        sectorDiagDist1 = Vector3.Distance(Vector3.zero,
                                           new Vector3(0f, sectorSize, sectorSize));
        sectorDiagDist2 = Vector3.Distance(Vector3.zero,
                                           new Vector3(sectorSize, sectorSize, sectorSize));

        for (int x = 0; x < numX; x++)
        {
            for (int y = 0; y < numY; y++)
            {
                for (int z = 0; z < numZ; z++)
                {
                    Vector3 sectorPosition = new Vector3(
                        boundsStart.x + (x * sectorSize) + sectorSize / 2,
                        boundsStart.y + (y * sectorSize) + sectorSize / 2,
                        boundsStart.z + (z * sectorSize) + sectorSize / 2
                        );
                    gravitySectors[x, y, z] = new GravitySector(sectorPosition);

                    // debug delete later
                    //GameObject temp = GameObject.CreatePrimitive(PrimitiveType.Sphere);
                    //temp.transform.position = sectorPosition;
                    //temp.GetComponent<Collider>().enabled = false;
                }
            }
        }

        fieldCenter = new Vector3((boundsEnd.x - boundsStart.x) / 2,
                                  (boundsEnd.y - boundsStart.y) / 2,
                                  (boundsEnd.z - boundsStart.z) / 2);

        CreateGravityField();
    }
Пример #9
0
    public PlayerControl CreatePlayerInOrbit(GravityField f)
    {
        PlayerControl p = (PlayerControl)Instantiate(PlayerObj);

        float   dist = Random.Range(f.NearRadius * 3, f.FarRadius * 0.7F);
        Vector3 vel  = Utility.RandomVectorInclusive(1, 1, 1).normalized;
        Vector3 pos  = f.transform.position + (vel * dist);

        pos.y = 0.0F;
        p.transform.position = pos;

        Vector3 pvel = f.transform.position - p.transform.position;

        pvel.Normalize();
        Vector3 bvel = Vector3.up;


        Vector3 dotdir = Vector3.Cross(pvel, bvel).normalized;

        p.SetControlVel(dotdir, 80);
        return(p);
    }
Пример #10
0
    public void OnTriggerEnter2D(Collider2D collision)
    {
        DelayField delayField = collision.GetComponent <DelayField>();

        if (delayField)
        {
            delayFieldsImIn.Add(delayField);
        }

        GravityField gravityField = collision.GetComponent <GravityField>();

        if (gravityField)
        {
            gravityFieldsImIn.Add(gravityField);
        }

        RepulseField repulseField = collision.GetComponent <RepulseField>();

        if (repulseField)
        {
            repulseFieldsImIn.Add(repulseField);
        }
    }
Пример #11
0
    public void OnTriggerExit2D(Collider2D other)
    {
        DelayField delayField = other.GetComponent <DelayField>();

        if (delayField)
        {
            delayFieldsImIn.Remove(delayField);
        }

        GravityField gravityField = other.GetComponent <GravityField>();

        if (gravityField)
        {
            gravityFieldsImIn.Remove(gravityField);
        }

        RepulseField repulseField = other.GetComponent <RepulseField>();

        if (repulseField)
        {
            repulseFieldsImIn.Remove(repulseField);
        }
    }
Пример #12
0
    void Start()
    {
        if (rendererPlayer == null)
        {
            rendererPlayer = GameObject.Find("Default").GetComponent <Renderer>();
        }
        rbd    = GetComponent <Rigidbody>();
        Health = MaxHealth = 100;

        // Default invincibility time should be .5 second
        if (invincibilityTime == 0)
        {
            invincibilityTime = .5f;
        }

        // Instantiate GravityField
        gravityField = new GravityField(transform.position, 500, 20);

        // Subscribe to event that fires when trail is completed
        TrailController.CallOnTrailCompleted += OnTrailCompleted;

        // Show appropriate popup for the level
        switch (UnityEngine.SceneManagement.SceneManager.GetActiveScene().name)
        {
        case "Level01":
            UIBehaviour.PopupText(Vector3.zero, "Small obstacles can be easily moved by gravitational attraction, use it to move them away!\n[Touch the screen]", Color.yellow);
            break;

        case "Level02":
            UIBehaviour.PopupText(Vector3.zero, "Moving platforms cannot be attracted by gravity - dodge them!", Color.yellow);
            break;

        case "Level03":
            UIBehaviour.PopupText(Vector3.zero, "Level not implemented - loaded Level01", Color.yellow);
            break;
        }
    }
Пример #13
0
 void SpawnGravity(Vector3 center, float magnitude)
 {
     gravityField = new GravityField(center, magnitude, 20);
 }
Пример #14
0
    // void OnTriggerStay(Collider other) {
    //     if (other.tag != "gravity field") return;

    //     // If we are strong enough to pick up the other object
    //     if (GameManager.S.GetDestroyedScore() >= threshold && !beingDestroyed) {
    //         // transform.parent = other.transform;
    //         // Vector faces towards the center of the gravity field
    //         // var vec = other.transform.position - transform.position;

    //         // Normalize the magnitude b/w 0 and 1 to put on the force curve
    //         // float normDist = Mathf.Clamp01(vec.magnitude / _Collider.radius);
    //         //if (vec.magnitude > _Collider.radius) normDist = 1;

    //         // Moves based on time and not distance
    //         // transform.position = Vector3.MoveTowards(transform.position, other.transform.position, Time.deltaTime * 5);

    //         // Decrease other object's size exponentially
    //         // TODO: why does size increase?
    //         // if (vec.magnitude < 1f && vec.magnitude > 0.05f && other.transform.localScale.magnitude > 0.001f) {
    //         //     other.transform.localScale *= vec.magnitude;
    //         // }

    //         // Moved moving and shrinking into the coroutine

    //     }
    // }

    void OnTriggerEnter(Collider other)
    {
        // If we clash into another object when gravity disable or we're
        // being sucked in
        if ((suckedIn || gravityDisabled) && ((1 << other.gameObject.layer) & destroyableObjMask) != 0)
        {
            // if (audioSource != null) {
            //     SoundManager.instance.PlayDebrisHit(audioSource);
            // }
            if (GameManager.S.audioSourcesInstantiated < 10 && audioSource != null)
            {
                GameManager.S.audioSourcesInstantiated++;
                var obj = new GameObject();
                obj.AddComponent(typeof(AudioSource));
                obj.AddComponent(typeof(DestroyableObjAudio));
                obj.transform.parent   = null;
                obj.transform.position = transform.position;
                obj.GetComponent <DestroyableObjAudio>().PlayHit();
            }
        }
        // Once object gets close enough to touch frisbee, destroy it
        // if (other.tag == "Frisbee") {
        //     other.GetComponentInParent<Frisbee>().IncreaseGravityField();
        //     if (GameManager.S.GetDestroyedScore() >= threshold) StartCoroutine(DisappearEffect(0.25f));
        // }

        // Suspend enviornmental gravity when being pulled by the frisbee
        if (other.tag == "gravity field" && GameManager.S.GetCurrentTier() >= tier)
        {
            suckedIn = true;

            RaycastHit hit;
            // If there's no force field in the way
            if (!Physics.Raycast(other.transform.position, (transform.position - other.transform.position).normalized, out hit, (transform.position - other.transform.position).magnitude, LayerMask.GetMask("Force Field")))
            {
                if (rigidBodyExists)
                {
                    if (useGravity)
                    {
                        rigidbody.useGravity = false;
                    }
                    rigidbody.isKinematic = true;
                    //rigidbody.detectCollisions = false;
                }

                frisbee          = other.transform;
                originalPosition = transform.position;

                SoundManager.instance.PlayAbsorb();

                frisbee.GetComponentInParent <Frisbee>().IncreaseGravityField();
                StartCoroutine(DisappearEffect(0.5f));

                GravityField gf = other.GetComponent <GravityField>();
                if (gf.firstItemSucceed)
                {
                    return;
                }
                gf.firstItemSucceed = true;
                SoundManager.instance.PlayItemSucceed();
            }
            else
            {
                print("Obstructed by force field: " + hit.transform.name);
            }
        }

        // Play fail-to-absorb sound if we haven't already
        else if (other.tag == "gravity field" && GameManager.S.GetCurrentTier() < tier)
        {
            suckedIn = false;
            GravityField gf = other.GetComponent <GravityField>();
            if (gf.firstItemFailed)
            {
                return;
            }
            gf.firstItemFailed = true;
            SoundManager.instance.PlayItemFail();
        }
    }
Пример #15
0
    public override void OnInspectorGUI()
    {
        Styles();

        serializedObject.Update();

        var intensity    = serializedObject.FindProperty("_intensities");
        var range        = serializedObject.FindProperty("_range");
        var width        = serializedObject.FindProperty("_width");
        var lenght       = serializedObject.FindProperty("_lenght");
        var ground       = serializedObject.FindProperty("_groundHeigh");
        var distancePow  = serializedObject.FindProperty("_distancePow");
        var distanceLerp = serializedObject.FindProperty("_distanceLerper");
        var center       = serializedObject.FindProperty("_center");

        EditorGUILayout.BeginHorizontal();

        int typeIndex = serializedObject.FindProperty("type").enumValueIndex;

        if (GUILayout.Button("<", arrowStyle, GUILayout.Height(50)))
        {
            GravityField.SwitchType(ref typeIndex, -1);
        }

        EditorGUILayout.LabelField(GravityField.TypeString((GravityField.Type)typeIndex) + " Field", titleStyle, GUILayout.Height(titleHeight));

        if (GUILayout.Button(">", arrowStyle, GUILayout.Height(50)))
        {
            GravityField.SwitchType(ref typeIndex, 1);
        }

        serializedObject.FindProperty("type").enumValueIndex = typeIndex;

        EditorGUILayout.EndHorizontal();

        intensity.vector2Value  = EditorGUILayout.Vector2Field("Intensity : ", intensity.vector2Value);
        distancePow.floatValue  = EditorGUILayout.FloatField("Distance Pow : ", distancePow.floatValue);
        distanceLerp.floatValue = EditorGUILayout.FloatField("Distance Lerp Pow : ", distanceLerp.floatValue);

        center.vector3Value = EditorGUILayout.Vector3Field("Center : ", center.vector3Value);

        switch ((GravityField.Type)typeIndex)
        {
        default: break;

        case GravityField.Type.TwoSided: goto case GravityField.Type.Flat;

        case GravityField.Type.Flat:
            Vector3 size = new Vector3(width.floatValue, range.floatValue, lenght.floatValue);
            size             = EditorGUILayout.Vector3Field("Size : ", size);
            width.floatValue = size.x; range.floatValue = size.y; lenght.floatValue = size.z;
            break;

        case GravityField.Type.Spherical:
            range.floatValue  = EditorGUILayout.FloatField("Radius : ", range.floatValue);
            ground.floatValue = EditorGUILayout.FloatField("Ground Radius : ", ground.floatValue);
            break;
        }

        serializedObject.ApplyModifiedProperties();
    }
Пример #16
0
 void Start()
 {
     _field = GetComponentInChildren<GravityField>();
     _field.SetPullForce(this.pullForce);
 }
Пример #17
0
 // Use this for initialization
 void Start()
 {
     ArenaDown     = Vector3.zero;
     FloatingBody  = GetComponent <Rigidbody>();
     gravity_field = GameObject.FindGameObjectWithTag(Tags.Arena).GetComponent <GravityField>();
 }
Пример #18
0
 void DespawnGravity()
 {
     gravityField.Stop();
     Destroy(gravityField.GravityGameObject);
     gravityField = null;
 }
            public GravityEntry(GravityForm _form, Dictionary <string, object> _jsonObject)
            {
                form       = _form;
                jsonObject = _jsonObject;
                id         = jsonObject.ContainsKey("id") && jsonObject["id"] != null?Int32.Parse(jsonObject["id"].ToString()) : -1;

                form_id = jsonObject.ContainsKey("form_id") ? jsonObject["form_id"]?.ToString() : null;

                created_by = jsonObject.ContainsKey("created_by") && jsonObject["created_by"] != null?Int32.Parse(jsonObject["created_by"].ToString()) : -1;

                date_created = jsonObject.ContainsKey("date_created") ? jsonObject["date_created"]?.ToString() : null;

                is_starred = (jsonObject.ContainsKey("is_starred") && jsonObject["is_starred"] != null ? Int32.Parse(jsonObject["is_starred"].ToString()) : 0) == 1;

                is_read = (jsonObject.ContainsKey("is_read") && jsonObject["is_read"] != null ? Int32.Parse(jsonObject["is_read"].ToString()) : 0) == 1;

                ip = jsonObject.ContainsKey("ip") ? jsonObject["ip"]?.ToString() : null;

                source_url = jsonObject.ContainsKey("source_url") ? jsonObject["source_url"]?.ToString() : null;

                post_id = jsonObject.ContainsKey("post_id") && jsonObject["post_id"] != null?Int32.Parse(jsonObject["post_id"].ToString()) : -1;

                user_agent = jsonObject.ContainsKey("user_agent") ? jsonObject["user_agent"]?.ToString() : null;

                status = jsonObject.ContainsKey("status") ? jsonObject["status"]?.ToString() : null;

                currency = jsonObject.ContainsKey("currency") ? jsonObject["currency"]?.ToString() : null;

                payment_status = jsonObject.ContainsKey("payment_status") ? jsonObject["payment_status"]?.ToString() : null;

                payment_date = jsonObject.ContainsKey("payment_date") ? jsonObject["payment_date"]?.ToString() : null;

                payment_amount = jsonObject.ContainsKey("payment_amount") && jsonObject["payment_amount"] != null?Decimal.Parse(jsonObject["payment_amount"].ToString()) : -1;

                transaction_id = jsonObject.ContainsKey("transaction_id") ? jsonObject["transaction_id"]?.ToString() : null;

                is_fulfilled = (jsonObject.ContainsKey("is_fulfilled") && jsonObject["is_fulfilled"] != null ? Int32.Parse(jsonObject["is_fulfilled"].ToString()) : 0) == 1;

                transaction_type = jsonObject.ContainsKey("transaction_type") && jsonObject["transaction_type"] != null?Int32.Parse(jsonObject["transaction_type"].ToString()) : -1;

                if (form != null)
                {
                    foreach (var field in form.fields)
                    {
                        foreach (var kvp in jsonObject)
                        {
                            if (kvp.Key == field.id || kvp.Key.StartsWith(field.id + "."))
                            {
                                string value = "";

                                var listVal = kvp.Value as IEnumerable <object>;
                                if (listVal != null)
                                {
                                    value = listVal.Select(l => (l?.ToString()) ?? "").Aggregate((a, b) => a + "," + b);
                                }
                                else
                                {
                                    value = kvp.Value?.ToString();
                                }
                                if (field.type == "list") //label.Contains("Partici") )
                                {
                                    var fluff = value;
                                    int a     = 0;
                                    a++;
                                    //kvp.Key = id 21

                                    // field.description = ""
                                    // field.id = "21"
                                    //field.inputs = null
                                    // field.label = "Course Participant Details"
                                    // field.@type = "list"
                                    // value = [{"First Name":"Blayde","Last Name":"Mager","Email":"*****@*****.**","Mobile":"1234567"}]

                                    var entryDictionaries = Newtonsoft.Json.JsonConvert.DeserializeObject <List <Dictionary <string, string> > >(value);

                                    int i = 101;
                                    foreach (var entryDictionary in entryDictionaries)
                                    {
                                        foreach (var subKVP in entryDictionary)
                                        {
                                            var subField = new GravityField()
                                            {
                                                description = "", id = i.ToString(), inputs = null, label = subKVP.Key.ToString(), type = "string"
                                            };
                                            formValues.Add(i.ToString(), new Tuple <GravityField, string, string>(subField, i.ToString(), subKVP.Value));
                                            i++;
                                        }
                                    }
                                }
                                if (formValues.ContainsKey(kvp.Key))
                                {
                                    throw new Exception(kvp.Key + " already exists");
                                }
                                else
                                {
                                    formValues.Add(kvp.Key, new Tuple <GravityField, string, string>(field, kvp.Key, value));
                                }
                            }
                        }
                    }
                }
                else
                {
                    foreach (var kvp in jsonObject)
                    {
                        string value = "";

                        var listVal = kvp.Value as IEnumerable <object>;
                        if (listVal != null)
                        {
                            value = listVal.Select(l => (l?.ToString()) ?? "").Aggregate((a, b) => a + "," + b);
                        }
                        else
                        {
                            value = kvp.Value?.ToString();
                        }

                        if (formValues.ContainsKey(kvp.Key))
                        {
                            throw new Exception(kvp.Key + " already exists");
                        }
                        else
                        {
                            formValues.Add(kvp.Key, new Tuple <GravityField, string, string>(null, kvp.Key, value));
                        }
                    }
                }
            }