Hello, I have this problem when i hit build on the android
-
Library\PackageCache\com.unity.textmeshpro@2.0.1\Scripts\Runtime\TMP_UpdateManager.cs(134,43): error CS0246: The type or namespace name ‘ScriptableRenderContext’ could not be found (are you missing a using directive or an assembly reference?)
-
C:\Program Files\Unity\Hub\Editor\2019.1.12f1\Editor\Data\Resources\PackageManager\BuiltInPackages\com.unity.timeline\Runtime\Animation\AnimationOutputWeightProcessor.cs(21,16): error CS0122: ‘AnimationMotionXToDeltaPlayable’ is inaccessible due to its protection level
3)C:\Program Files\Unity\Hub\Editor\2019.1.12f1\Editor\Data\Resources\PackageManager\BuiltInPackages\com.unity.timeline\Runtime\Events\Signals\SignalAsset.cs(11,6): error CS0122: ‘AssetFileNameExtensionAttribute’ is inaccessible due to its protection level
Help please!
Code for the first one (cs0246):
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;
#if UNITY_2019_1_OR_NEWER
using UnityEngine.Rendering;
#elif UNITY_2018_1_OR_NEWER
using UnityEngine.Experimental.Rendering;
#endif
namespace TMPro
{
public class TMP_UpdateManager
{
private static TMP_UpdateManager s_Instance;
private readonly List<TMP_Text> m_LayoutRebuildQueue = new List<TMP_Text>();
private Dictionary<int, int> m_LayoutQueueLookup = new Dictionary<int, int>();
private readonly List<TMP_Text> m_GraphicRebuildQueue = new List<TMP_Text>();
private Dictionary<int, int> m_GraphicQueueLookup = new Dictionary<int, int>();
private readonly List<TMP_Text> m_InternalUpdateQueue = new List<TMP_Text>();
private Dictionary<int, int> m_InternalUpdateLookup = new Dictionary<int, int>();
//private bool m_PerformingGraphicRebuild;
//private bool m_PerformingLayoutRebuild;
/// <summary>
/// Get a singleton instance of the registry
/// </summary>
public static TMP_UpdateManager instance
{
get
{
if (TMP_UpdateManager.s_Instance == null)
TMP_UpdateManager.s_Instance = new TMP_UpdateManager();
return TMP_UpdateManager.s_Instance;
}
}
/// <summary>
/// Register to receive rendering callbacks.
/// </summary>
protected TMP_UpdateManager()
{
Camera.onPreCull += OnCameraPreCull;
#if UNITY_2019_1_OR_NEWER
RenderPipelineManager.beginFrameRendering += OnBeginFrameRendering;
#elif UNITY_2018_1_OR_NEWER
RenderPipeline.beginFrameRendering += OnBeginFrameRendering;
#endif
}
/// <summary>
/// Function used as a replacement for LateUpdate() to handle SDF Scale updates and Legacy Animation updates.
/// </summary>
/// <param name="textObject"></param>
internal static void RegisterTextObjectForUpdate(TMP_Text textObject)
{
TMP_UpdateManager.instance.InternalRegisterTextObjectForUpdate(textObject);
}
private void InternalRegisterTextObjectForUpdate(TMP_Text textObject)
{
int id = textObject.GetInstanceID();
if (this.m_InternalUpdateLookup.ContainsKey(id))
return;
m_InternalUpdateLookup[id] = id;
this.m_InternalUpdateQueue.Add(textObject);
return;
}
/// <summary>
/// Function to register elements which require a layout rebuild.
/// </summary>
/// <param name="element"></param>
public static void RegisterTextElementForLayoutRebuild(TMP_Text element)
{
TMP_UpdateManager.instance.InternalRegisterTextElementForLayoutRebuild(element);
}
private bool InternalRegisterTextElementForLayoutRebuild(TMP_Text element)
{
int id = element.GetInstanceID();
if (this.m_LayoutQueueLookup.ContainsKey(id))
return false;
m_LayoutQueueLookup[id] = id;
this.m_LayoutRebuildQueue.Add(element);
return true;
}
/// <summary>
/// Function to register elements which require a layout rebuild.
/// </summary>
/// <param name="element"></param>
public static void RegisterTextElementForGraphicRebuild(TMP_Text element)
{
TMP_UpdateManager.instance.InternalRegisterTextElementForGraphicRebuild(element);
}
private bool InternalRegisterTextElementForGraphicRebuild(TMP_Text element)
{
int id = element.GetInstanceID();
if (this.m_GraphicQueueLookup.ContainsKey(id))
return false;
m_GraphicQueueLookup[id] = id;
this.m_GraphicRebuildQueue.Add(element);
return true;
}
/// <summary>
/// Callback which occurs just before the Scriptable Render Pipeline (SRP) begins rendering.
/// </summary>
/// <param name="cameras"></param>
#if UNITY_2019_1_OR_NEWER
public void OnBeginFrameRendering(ScriptableRenderContext renderContext, Camera[] cameras)
#elif UNITY_2018_1_OR_NEWER
void OnBeginFrameRendering(Camera[] cameras)
#endif
{
// Exclude the PreRenderCamera
#if UNITY_EDITOR
if (cameras.Length == 1 && cameras[0].cameraType == CameraType.Preview)
return;
#endif
DoRebuilds();
}
/// <summary>
/// Callback which occurs just before the cam is rendered.
/// </summary>
/// <param name="cam"></param>
void OnCameraPreCull(Camera cam)
{
// Exclude the PreRenderCamera
#if UNITY_EDITOR
if (cam.cameraType == CameraType.Preview)
return;
#endif
DoRebuilds();
}
/// <summary>
/// Process the rebuild requests in the rebuild queues.
/// </summary>
void DoRebuilds()
{
// Handle text objects the require an update either as a result of scale changes or legacy animation.
for (int i = 0; i < m_InternalUpdateQueue.Count; i++)
{
m_InternalUpdateQueue[i].InternalUpdate();
}
// Handle Layout Rebuild Phase
for (int i = 0; i < m_LayoutRebuildQueue.Count; i++)
{
m_LayoutRebuildQueue[i].Rebuild(CanvasUpdate.Prelayout);
}
if (m_LayoutRebuildQueue.Count > 0)
{
m_LayoutRebuildQueue.Clear();
m_LayoutQueueLookup.Clear();
}
// Handle Graphic Rebuild Phase
for (int i = 0; i < m_GraphicRebuildQueue.Count; i++)
{
m_GraphicRebuildQueue[i].Rebuild(CanvasUpdate.PreRender);
}
// If there are no objects in the queue, we don't need to clear the lists again.
if (m_GraphicRebuildQueue.Count > 0)
{
m_GraphicRebuildQueue.Clear();
m_GraphicQueueLookup.Clear();
}
}
internal static void UnRegisterTextObjectForUpdate(TMP_Text textObject)
{
TMP_UpdateManager.instance.InternalUnRegisterTextObjectForUpdate(textObject);
}
/// <summary>
/// Function to unregister elements which no longer require a rebuild.
/// </summary>
/// <param name="element"></param>
public static void UnRegisterTextElementForRebuild(TMP_Text element)
{
TMP_UpdateManager.instance.InternalUnRegisterTextElementForGraphicRebuild(element);
TMP_UpdateManager.instance.InternalUnRegisterTextElementForLayoutRebuild(element);
TMP_UpdateManager.instance.InternalUnRegisterTextObjectForUpdate(element);
}
private void InternalUnRegisterTextElementForGraphicRebuild(TMP_Text element)
{
int id = element.GetInstanceID();
TMP_UpdateManager.instance.m_GraphicRebuildQueue.Remove(element);
m_GraphicQueueLookup.Remove(id);
}
private void InternalUnRegisterTextElementForLayoutRebuild(TMP_Text element)
{
int id = element.GetInstanceID();
TMP_UpdateManager.instance.m_LayoutRebuildQueue.Remove(element);
m_LayoutQueueLookup.Remove(id);
}
private void InternalUnRegisterTextObjectForUpdate(TMP_Text textObject)
{
int id = textObject.GetInstanceID();
TMP_UpdateManager.instance.m_InternalUpdateQueue.Remove(textObject);
m_InternalUpdateLookup.Remove(id);
}
}
}
code for the 2: (3 is kind of the same i think)
using System.Collections.Generic;
using UnityEngine.Animations;
using UnityEngine.Playables;
namespace UnityEngine.Timeline
{
// Does a post processing of the weights on an animation track to properly normalize
// the mixer weights so that blending does not bring default poses and subtracks, layers and
// layer graphs blend correctly
class AnimationOutputWeightProcessor : ITimelineEvaluateCallback
{
struct WeightInfo
{
public Playable mixer;
public Playable parentMixer;
public int port;
public bool modulate;
}
public AnimationPlayableOutput m_Output;
public AnimationMotionXToDeltaPlayable m_MotionXPlayable;
public AnimationMixerPlayable m_PoseMixer;
public AnimationLayerMixerPlayable m_LayerMixer;
readonly List<WeightInfo> m_Mixers = new List<WeightInfo>();
public AnimationOutputWeightProcessor(AnimationPlayableOutput output)
{
m_Output = output;
output.SetWeight(0);
FindMixers();
}
static Playable FindFirstAnimationPlayable(Playable p)
{
var currentNode = p;
while (currentNode.IsValid() && currentNode.GetInputCount() > 0
&& !currentNode.IsPlayableOfType<AnimationLayerMixerPlayable>()
&& !currentNode.IsPlayableOfType<AnimationMotionXToDeltaPlayable>()
&& !currentNode.IsPlayableOfType<AnimationMixerPlayable>())
currentNode = currentNode.GetInput(0);
return currentNode;
}
void FindMixers()
{
m_Mixers.Clear();
m_PoseMixer = AnimationMixerPlayable.Null;
m_LayerMixer = AnimationLayerMixerPlayable.Null;
m_MotionXPlayable = AnimationMotionXToDeltaPlayable.Null;
var playable = m_Output.GetSourcePlayable();
var outputPort = m_Output.GetSourceOutputPort();
if (!playable.IsValid() || outputPort < 0 || outputPort >= playable.GetInputCount())
return;
var mixer = FindFirstAnimationPlayable(playable.GetInput(outputPort));
Playable motionXPlayable = mixer;
if (motionXPlayable.IsPlayableOfType<AnimationMotionXToDeltaPlayable>())
{
m_MotionXPlayable = (AnimationMotionXToDeltaPlayable)motionXPlayable;
mixer = m_MotionXPlayable.GetInput(0);
}
if (mixer.IsValid() && mixer.IsPlayableOfType<AnimationMixerPlayable>())
{
m_PoseMixer = (AnimationMixerPlayable)mixer;
Playable layerMixer = m_PoseMixer.GetInput(0);
if (layerMixer.IsValid() && layerMixer.IsPlayableOfType<AnimationLayerMixerPlayable>())
m_LayerMixer = (AnimationLayerMixerPlayable)layerMixer;
}
else if (mixer.IsValid() && mixer.IsPlayableOfType<AnimationLayerMixerPlayable>())
{
m_LayerMixer = (AnimationLayerMixerPlayable)mixer;
}
if (!m_LayerMixer.IsValid())
return;
var count = m_LayerMixer.GetInputCount();
for (var i = 0; i < count; i++)
{
FindMixers(m_LayerMixer, i, m_LayerMixer.GetInput(i));
}
}
// Recursively accumulates mixers.
void FindMixers(Playable parent, int port, Playable node)
{
if (!node.IsValid())
return;
var type = node.GetPlayableType();
if (type == typeof(AnimationMixerPlayable) || type == typeof(AnimationLayerMixerPlayable))
{
// use post fix traversal so children come before parents
int subCount = node.GetInputCount();
for (int j = 0; j < subCount; j++)
{
FindMixers(node, j, node.GetInput(j));
}
// if we encounter a layer mixer, we assume there is nesting occuring
// and we modulate the weight instead of overwriting it.
var weightInfo = new WeightInfo
{
parentMixer = parent,
mixer = node,
port = port,
modulate = (type == typeof(AnimationLayerMixerPlayable))
};
m_Mixers.Add(weightInfo);
}
else
{
var count = node.GetInputCount();
for (var i = 0; i < count; i++)
{
FindMixers(parent, port, node.GetInput(i));
}
}
}
public void Evaluate()
{
m_Output.SetWeight(1);
for (int i = 0; i < m_Mixers.Count; i++)
{
var mixInfo = m_Mixers[i];
float weight = mixInfo.modulate ? mixInfo.parentMixer.GetInputWeight(mixInfo.port) : 1.0f;
mixInfo.parentMixer.SetInputWeight(mixInfo.port, weight * WeightUtility.NormalizeMixer(mixInfo.mixer));
}
float normalizedWeight = WeightUtility.NormalizeMixer(m_LayerMixer);
var animator = m_Output.GetTarget();
if (animator == null)
return;
// AnimationMotionXToDeltaPlayable must blend with default values when previewing tracks with absolute root motion.
bool blendMotionX = !Application.isPlaying && m_MotionXPlayable.IsValid() && m_MotionXPlayable.IsAbsoluteMotion();
if (blendMotionX)
{
m_PoseMixer.SetInputWeight(0, normalizedWeight);
m_PoseMixer.SetInputWeight(1, 1.0f - normalizedWeight);
}
else
{
if (!m_PoseMixer.Equals(AnimationMixerPlayable.Null))
{
m_PoseMixer.SetInputWeight(0, 1.0f);
m_PoseMixer.SetInputWeight(1, 0.0f);
}
m_Output.SetWeight(normalizedWeight);
}
}
}
}