Inheritance: UnityEngine.ScriptableObject
    public static void RenderMeshPreview(RoseMapObjectData mapObj, PreviewRenderUtility previewUtility, Vector2 direction)
    {
        if (mapObj == null || previewUtility == null)
        {
            return;
        }

        Bounds bounds = new Bounds();
        Matrix4x4[] mats = new Matrix4x4[mapObj.subObjects.Count];
        for (var i = 0; i < mapObj.subObjects.Count; ++i)
        {
            var subObj = mapObj.subObjects[i];

            Matrix4x4 mat = new Matrix4x4();
            mat.SetTRS(subObj.position, subObj.rotation, subObj.scale);
            if (i != 0)
                mat = mats[subObj.parent - 1] * mat;

            Utils.EncapsulateTransformedBounds(ref bounds, mat, subObj.mesh.bounds, i == 0);

            mats[i] = mat;
        }

        float magnitude = bounds.extents.magnitude;
        float num = 4f * magnitude;
        previewUtility.m_Camera.transform.position = -Vector3.forward * num;
        previewUtility.m_Camera.transform.rotation = Quaternion.identity;
        previewUtility.m_Camera.nearClipPlane = num - magnitude * 1.1f;
        previewUtility.m_Camera.farClipPlane = num + magnitude * 1.1f;
        previewUtility.m_Light[0].intensity = 1.4f;
        previewUtility.m_Light[0].transform.rotation = Quaternion.Euler(40f, 40f, 0f);
        previewUtility.m_Light[1].intensity = 1.4f;
        Color ambient = new Color(0.1f, 0.1f, 0.1f, 0f);
        RenderMeshPreviewSkipCameraAndLighting(mapObj, mats, bounds, previewUtility, null, direction);
    }
示例#2
0
    private static void RenderMeshPreviewSkipCameraAndLighting(RoseMapObjectData mapObj, Matrix4x4[] mats, Bounds bounds, PreviewRenderUtility previewUtility, MaterialPropertyBlock customProperties, Vector2 direction)
    {
        bool fog = RenderSettings.fog;

        Unsupported.SetRenderSettingsUseFogNoDirty(false);

        Quaternion quaternion = Quaternion.Euler(direction.y, 0f, 0f) * Quaternion.Euler(0f, direction.x, 0f);
        Vector3    pos        = quaternion * -bounds.center;
        Matrix4x4  rootTRS    = new Matrix4x4();

        rootTRS.SetTRS(pos, quaternion, Vector3.one);

        for (var i = 0; i < mapObj.subObjects.Count; ++i)
        {
            var subObj = mapObj.subObjects[i];
            previewUtility.DrawMesh(subObj.mesh, rootTRS * mats[i], subObj.material, 0);
        }

        previewUtility.m_Camera.Render();
        Unsupported.SetRenderSettingsUseFogNoDirty(fog);
    }
示例#3
0
    public static void RenderMeshPreview(RoseMapObjectData mapObj, PreviewRenderUtility previewUtility, Vector2 direction)
    {
        if (mapObj == null || previewUtility == null)
        {
            return;
        }

        Bounds bounds = new Bounds();

        Matrix4x4[] mats = new Matrix4x4[mapObj.subObjects.Count];
        for (var i = 0; i < mapObj.subObjects.Count; ++i)
        {
            var subObj = mapObj.subObjects[i];

            Matrix4x4 mat = new Matrix4x4();
            mat.SetTRS(subObj.position, subObj.rotation, subObj.scale);
            if (i != 0)
            {
                mat = mats[subObj.parent - 1] * mat;
            }

            Utils.EncapsulateTransformedBounds(ref bounds, mat, subObj.mesh.bounds, i == 0);

            mats[i] = mat;
        }

        float magnitude = bounds.extents.magnitude;
        float num       = 4f * magnitude;

        previewUtility.m_Camera.transform.position   = -Vector3.forward * num;
        previewUtility.m_Camera.transform.rotation   = Quaternion.identity;
        previewUtility.m_Camera.nearClipPlane        = num - magnitude * 1.1f;
        previewUtility.m_Camera.farClipPlane         = num + magnitude * 1.1f;
        previewUtility.m_Light[0].intensity          = 1.4f;
        previewUtility.m_Light[0].transform.rotation = Quaternion.Euler(40f, 40f, 0f);
        previewUtility.m_Light[1].intensity          = 1.4f;
        Color ambient = new Color(0.1f, 0.1f, 0.1f, 0f);

        RenderMeshPreviewSkipCameraAndLighting(mapObj, mats, bounds, previewUtility, null, direction);
    }
    private static void RenderMeshPreviewSkipCameraAndLighting(RoseMapObjectData mapObj, Matrix4x4[] mats, Bounds bounds, PreviewRenderUtility previewUtility, MaterialPropertyBlock customProperties, Vector2 direction)
    {
        bool fog = RenderSettings.fog;
        Unsupported.SetRenderSettingsUseFogNoDirty(false);

        Quaternion quaternion = Quaternion.Euler(direction.y, 0f, 0f) * Quaternion.Euler(0f, direction.x, 0f);
        Vector3 pos = quaternion * -bounds.center;
        Matrix4x4 rootTRS = new Matrix4x4();
        rootTRS.SetTRS(pos, quaternion, Vector3.one);

        for (var i = 0; i < mapObj.subObjects.Count; ++i)
        {
            var subObj = mapObj.subObjects[i];
            previewUtility.DrawMesh(subObj.mesh, rootTRS * mats[i], subObj.material, 0);
        }

        previewUtility.m_Camera.Render();
        Unsupported.SetRenderSettingsUseFogNoDirty(fog);
    }