您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
64 行
2.1 KiB
64 行
2.1 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using Unity.Entities;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
using UnityEngine.Serialization;
|
|
|
|
namespace UnityEngine.Perception.GroundTruth
|
|
{
|
|
/// <summary>
|
|
/// Defines a set of labels associated with the object and its descendants. A Labeling component will override any Labeling components on the object's ancestors.
|
|
/// </summary>
|
|
public class Labeling : MonoBehaviour
|
|
{
|
|
/// <summary>
|
|
/// The label names to associate with the GameObject. Modifications to this list after the Update() step of the frame the object is created in are
|
|
/// not guaranteed to be reflected by labelers.
|
|
/// </summary>
|
|
[FormerlySerializedAs("classes")]
|
|
public List<string> labels = new List<string>();
|
|
|
|
/// <summary>
|
|
/// The unique id of this labeling component instance
|
|
/// </summary>
|
|
public uint instanceId { get; private set; }
|
|
|
|
Entity m_Entity;
|
|
|
|
internal void SetInstanceId(uint instanceId)
|
|
{
|
|
this.instanceId = instanceId;
|
|
}
|
|
void Awake()
|
|
{
|
|
m_Entity = World.DefaultGameObjectInjectionWorld.EntityManager.CreateEntity();
|
|
World.DefaultGameObjectInjectionWorld.EntityManager.AddComponentObject(m_Entity, this);
|
|
}
|
|
|
|
void OnDestroy()
|
|
{
|
|
if (World.DefaultGameObjectInjectionWorld != null)
|
|
World.DefaultGameObjectInjectionWorld.EntityManager.DestroyEntity(m_Entity);
|
|
}
|
|
|
|
void Reset()
|
|
{
|
|
labels.Clear();
|
|
labels.Add(gameObject.name);
|
|
#if UNITY_EDITOR
|
|
EditorUtility.SetDirty(gameObject);
|
|
#endif
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Refresh ground truth generation for the labeling of the attached GameObject. This is necessary when the
|
|
/// list of labels changes or when renderers or materials change on objects in the hierarchy.
|
|
/// </summary>
|
|
public void RefreshLabeling()
|
|
{
|
|
World.DefaultGameObjectInjectionWorld.GetOrCreateSystem<GroundTruthLabelSetupSystem>().RefreshLabeling(m_Entity);
|
|
}
|
|
}
|
|
}
|