예제 #1
0
    /// <summary>
    /// For meshes...
    /// </summary>
    /// <param name="assetLoaderContext"></param>
    public void OnModelLoaded(object sender, ImportedMeshEventArgs args)
    {
        if (args.Name != this.GetId())
        {
            return;
        }

        bool outlineWasHighlighted = outlineOnClick.Highlighted;

        if (Model != null)
        {
            outlineOnClick.UnHighlight();
            outlineOnClick.ClearRenderers();

            Model.SetActive(false);
            Destroy(Model);
        }

        Model = args.RootGameObject;

        Model.gameObject.transform.parent        = Visual.transform;
        Model.gameObject.transform.localPosition = Vector3.zero;
        Model.gameObject.transform.localRotation = Quaternion.identity;

        gameObject.GetComponent <BindParentToChild>().ChildToBind = Model;

        foreach (Renderer child in Model.GetComponentsInChildren <Renderer>(true))
        {
            child.gameObject.AddComponent <OnClickCollider>().Target = gameObject;
            child.gameObject.AddComponent <MeshCollider>();
        }

        aoRenderers.Clear();
        Colliders.Clear();
        aoRenderers.AddRange(Model.GetComponentsInChildren <Renderer>(true));
        Colliders.AddRange(Model.GetComponentsInChildren <MeshCollider>(true));
        outlineOnClick.InitRenderers(aoRenderers);
        outlineOnClick.InitMaterials();

        //transparent = false; //needs to be set before 1st call of SetVisibility after model loading
        SetVisibility(visibility, forceShaderChange: true);

        if (outlineWasHighlighted)
        {
            outlineOnClick.Highlight();
            if (SelectorMenu.Instance.ManuallySelected)
            {
                DisplayOffscreenIndicator(true);
            }
        }

        MeshImporter.Instance.OnMeshImported -= OnModelLoaded;
    }
예제 #2
0
 public void Reset()
 {
     _position        = __DefaultPosition;
     Position         = __DefaultPosition;
     PositionPrevious = __DefaultPosition;
     ImageAngle       = __DefaultImageAngle;
     ImageScale       = __DefaultImageScale;
     Speed            = 0;
     Direction        = __DefaultDirection;
     ImageIndex       = __DefaultImageIndex;
     ImageAlpha       = __DefaultImageAlpha;
     Colliders.Clear();
 }
예제 #3
0
    public void FixedUpdate()
    {
        if (this.IsDead || Global.GameOver)
        {
            Die();
            return;
        }

        Colliders.Clear();

        if ((Vector3.Distance(transform.position, TargetPos) >= 0.1) && (TargetPosDesignated))
        {
            LookAtPosition(TargetPos);
            transform.position = Vector3.MoveTowards(transform.position, TargetPos, Speed * Time.fixedDeltaTime);
            if (transform.GetComponent<CircleCollider2D>().OverlapCollider(TurretFilter, Colliders) > 0)
            {
                WeaponRange = BaseWeaponRange * 3f;
            }
            else if (transform.GetComponent<CircleCollider2D>().OverlapCollider(WallFilter, Colliders) > 0)
            {
                WeaponRange = BaseWeaponRange * 1.5f;
            }
            else
            {
                WeaponRange = BaseWeaponRange;
            }
        }
        else
        {
            if (EnemyTarget == null || Vector3.Distance(transform.position, EnemyTarget.position) > WeaponRange || !EnemyTarget.gameObject.activeSelf)
            {
                FindNewTarget("Enemy");
            }
            if (EnemyTarget != null)
            {
                LookAtPosition(EnemyTarget.position);
                FireOnTarget(EnemyFilter, true);
            }
        }

        if (MyBeamLineRenderer != null)
        {
            if (beamused)
            {
                beamused = false;
            } else
            {
                MyBeamLineRenderer.enabled = false;
                MyBeamEmitter.Stop(true);
            }
        }
        //if (EnemyTarget != null)
        //{
        //    if (Vector3.Distance(transform.position, EnemyTarget.position) <= WeaponRange)
        //    {
        //        FireOnTargetRanged();
        //        transform.eulerAngles = new Vector3(0, 0, Vector3.Angle(transform.position, EnemyTarget.position));
        //    }
        //    transform.position =  Vector3.MoveTowards(transform.position, TargetPos, Speed * Time.fixedDeltaTime);
        //    transform.eulerAngles = new Vector3(0, 0, Vector3.Angle(transform.position, TargetPos));
        //}
        //else
        //{
        //    transform.position = Vector3.MoveTowards(transform.position, TargetPos, Speed * Time.fixedDeltaTime);
        //    transform.eulerAngles = new Vector3(0, 0, Vector3.Angle(transform.position, TargetPos));
        //}
    }