Пример #1
0
 public void CleanupBonus()
 {
     if (Object.op_Implicit((Object)this._hotSpot))
     {
         this._hotSpot.Kill(BaseNetworkable.DestroyMode.None);
     }
     this._hotSpot = (OreHotSpot)null;
 }
Пример #2
0
 public void CleanupBonus()
 {
     if (this._hotSpot)
     {
         this._hotSpot.Kill(BaseNetworkable.DestroyMode.None);
     }
     this._hotSpot = null;
 }
Пример #3
0
    public OreHotSpot SpawnBonusSpot(Vector3 lastDirection)
    {
        RaycastHit raycastHit;
        Vector3    vector3;

        if (base.isClient)
        {
            return(null);
        }
        if (!this.bonusPrefab.isValid)
        {
            return(null);
        }
        Vector2      vector2        = UnityEngine.Random.insideUnitCircle.normalized;
        Vector3      vector31       = Vector3.zero;
        MeshCollider stageComponent = base.GetStageComponent <MeshCollider>();
        Transform    transforms     = base.transform;
        Bounds       bound          = stageComponent.bounds;
        Vector3      vector32       = transforms.InverseTransformPoint(bound.center);

        if (lastDirection != Vector3.zero)
        {
            Vector3 vector33 = Vector3.Cross(this.lastNodeDir, Vector3.up);
            float   single   = UnityEngine.Random.Range(0.25f, 0.5f);
            float   single1  = (UnityEngine.Random.Range(0, 2) == 0 ? -1f : 1f);
            vector3 = this.lastNodeDir + ((vector33 * single) * single1);
            Vector3 vector34 = vector3.normalized;
            this.lastNodeDir = vector34;
            vector31         = base.transform.position + (base.transform.TransformDirection(vector34) * 2f);
            float single2 = UnityEngine.Random.Range(1f, 1.5f);
            vector31 = vector31 + (base.transform.up * (vector32.y + single2));
        }
        else
        {
            Vector3 vector35 = this.RandomCircle(1f, false);
            this.lastNodeDir = vector35.normalized;
            Vector3 vector36 = base.transform.TransformDirection(vector35.normalized);
            vector35 = (base.transform.position + (base.transform.up * (vector32.y + 0.5f))) + (vector36.normalized * 2.5f);
            vector31 = vector35;
        }
        this.bonusesSpawned++;
        bound   = stageComponent.bounds;
        vector3 = bound.center - vector31;
        Vector3 vector37 = vector3.normalized;

        if (!stageComponent.Raycast(new Ray(vector31, vector37), out raycastHit, 10f))
        {
            return(null);
        }
        OreHotSpot oreHotSpot = GameManager.server.CreateEntity(this.bonusPrefab.resourcePath, raycastHit.point - (vector37 * 0.025f), Quaternion.LookRotation(raycastHit.normal, Vector3.up), true) as OreHotSpot;

        oreHotSpot.Spawn();
        oreHotSpot.SendMessage("OreOwner", this);
        return(oreHotSpot);
    }
Пример #4
0
    public OreHotSpot SpawnBonusSpot(Vector3 lastDirection)
    {
        if (this.isClient)
        {
            return((OreHotSpot)null);
        }
        if (!this.bonusPrefab.isValid)
        {
            return((OreHotSpot)null);
        }
        Vector2 insideUnitCircle = Random.get_insideUnitCircle();

        ((Vector2) ref insideUnitCircle).get_normalized();
        Vector3.get_zero();
        MeshCollider stageComponent = this.GetStageComponent <MeshCollider>();
        Transform    transform      = ((Component)this).get_transform();
        Bounds       bounds         = ((Collider)stageComponent).get_bounds();
        Vector3      center         = ((Bounds) ref bounds).get_center();
        Vector3      vector3_1      = transform.InverseTransformPoint(center);
        Vector3      vector3_2;
        Vector3      vector3_3;

        if (Vector3.op_Equality(lastDirection, Vector3.get_zero()))
        {
            Vector3 vector3_4 = this.RandomCircle(1f, false);
            this.lastNodeDir = ((Vector3) ref vector3_4).get_normalized();
            Vector3 vector3_5 = ((Component)this).get_transform().TransformDirection(((Vector3) ref vector3_4).get_normalized());
            vector3_2 = Vector3.op_Addition(Vector3.op_Addition(((Component)this).get_transform().get_position(), Vector3.op_Multiply(((Component)this).get_transform().get_up(), (float)(vector3_1.y + 0.5))), Vector3.op_Multiply(((Vector3) ref vector3_5).get_normalized(), 2.5f));
        }
        else
        {
            vector3_3 = Vector3.op_Addition(this.lastNodeDir, Vector3.op_Multiply(Vector3.op_Multiply(Vector3.Cross(this.lastNodeDir, Vector3.get_up()), Random.Range(0.25f, 0.5f)), Random.Range(0, 2) == 0 ? -1f : 1f));
            Vector3 normalized = ((Vector3) ref vector3_3).get_normalized();
            this.lastNodeDir = normalized;
            Vector3 vector3_4 = Vector3.op_Addition(((Component)this).get_transform().get_position(), Vector3.op_Multiply(((Component)this).get_transform().TransformDirection(normalized), 2f));
            float   num       = Random.Range(1f, 1.5f);
            vector3_2 = Vector3.op_Addition(vector3_4, Vector3.op_Multiply(((Component)this).get_transform().get_up(), (float)vector3_1.y + num));
        }
        ++this.bonusesSpawned;
        bounds    = ((Collider)stageComponent).get_bounds();
        vector3_3 = Vector3.op_Subtraction(((Bounds) ref bounds).get_center(), vector3_2);
        Vector3    normalized1 = ((Vector3) ref vector3_3).get_normalized();
        RaycastHit raycastHit;

        if (!((Collider)stageComponent).Raycast(new Ray(vector3_2, normalized1), ref raycastHit, 10f))
        {
            return((OreHotSpot)null);
        }
        OreHotSpot entity = GameManager.server.CreateEntity(this.bonusPrefab.resourcePath, Vector3.op_Subtraction(((RaycastHit) ref raycastHit).get_point(), Vector3.op_Multiply(normalized1, 0.025f)), Quaternion.LookRotation(((RaycastHit) ref raycastHit).get_normal(), Vector3.get_up()), true) as OreHotSpot;

        entity.Spawn();
        ((Component)entity).SendMessage("OreOwner", (object)this);
        return(entity);
    }
Пример #5
0
 public override void ServerInit()
 {
     base.ServerInit();
     this._hotSpot = this.SpawnBonusSpot(Vector3.get_zero());
 }
Пример #6
0
 public void RespawnBonus()
 {
     this.CleanupBonus();
     this._hotSpot = this.SpawnBonusSpot(this.lastNodeDir);
 }