// Token: 0x06003916 RID: 14614 RVA: 0x000CA524 File Offset: 0x000C8724
    public virtual void RenderDeployPreview(Vector3 point, Quaternion rot, global::TransCarrier carrier)
    {
        if (this._aimGizmo != null)
        {
            this._aimGizmo.rotation = rot;
            this._aimGizmo.position = point;
        }
        if (this._prefabRenderer == null)
        {
            T datablock = this.datablock;
            global::DeployableObject objectToPlace = datablock.ObjectToPlace;
            if (!objectToPlace)
            {
                return;
            }
            this._prefabRenderer = global::PrefabRenderer.GetOrCreateRender(objectToPlace.gameObject);
        }
        Material overrideMat = this.datablock.overrideMat;

        if (overrideMat)
        {
            global::PrefabRenderer prefabRenderer = this._prefabRenderer;
            Camera camera     = global::MountedCamera.main.camera;
            T      datablock2 = this.datablock;
            prefabRenderer.RenderOneMaterial(camera, Matrix4x4.TRS(point, rot, datablock2.ObjectToPlace.transform.localScale), this._aimGizmo.propertyBlock, overrideMat);
        }
        else
        {
            global::PrefabRenderer prefabRenderer2 = this._prefabRenderer;
            Camera camera2    = global::MountedCamera.main.camera;
            T      datablock3 = this.datablock;
            prefabRenderer2.Render(camera2, Matrix4x4.TRS(point, rot, datablock3.ObjectToPlace.transform.localScale), this._aimGizmo.propertyBlock, null);
        }
        if (this._aimGizmo != null)
        {
            bool flag = false;
            if (carrier)
            {
                Renderer renderer = carrier.renderer;
                if (renderer is MeshRenderer && renderer && renderer.enabled)
                {
                    flag = true;
                    this._aimGizmo.carrierRenderer = (MeshRenderer)renderer;
                }
            }
            if (!flag)
            {
                this._aimGizmo.carrierRenderer = null;
            }
        }
    }
Beispiel #2
0
    // Token: 0x06003BFC RID: 15356 RVA: 0x000D60EC File Offset: 0x000D42EC
    public static global::PrefabRenderer GetOrCreateRender(GameObject prefab)
    {
        if (!prefab)
        {
            return(null);
        }
        while (prefab.transform.parent)
        {
            prefab = prefab.transform.parent.gameObject;
        }
        int    instanceID = prefab.GetInstanceID();
        object @lock      = global::PrefabRenderer.Runtime.Lock;
        global::PrefabRenderer prefabRenderer;
        bool flag;

        lock (@lock)
        {
            WeakReference weakReference;
            if (global::PrefabRenderer.Runtime.Register.TryGetValue(instanceID, out weakReference))
            {
                prefabRenderer = (global::PrefabRenderer)weakReference.Target;
            }
            else
            {
                prefabRenderer = null;
            }
            flag = (prefabRenderer != null);
            if (!flag)
            {
                prefabRenderer = new global::PrefabRenderer(instanceID);
            }
        }
        if (!flag)
        {
            prefabRenderer.prefab = prefab;
            prefabRenderer.Refresh();
        }
        return(prefabRenderer);
    }