> For the complete documentation index, see [llms.txt](https://kinematicsoup.gitbook.io/scene-fusion/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kinematicsoup.gitbook.io/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbaseuobjecttranslator.md).

# Class sfBaseUObjectTranslator

Namespace: [KS.SceneFusion.Client.Unity.Editor](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor.md)\
Assembly: KSUnity-Source.dll

Base class for translators that sync UObject properties using Unity's serialization system.

```csharp
public class sfBaseUObjectTranslator : sfBaseTranslator
```

#### Inheritance

object ← [sfBaseTranslator](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md) ← [sfBaseUObjectTranslator](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbaseuobjecttranslator.md)

#### Derived

[sfAssetTranslator](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfassettranslator.md), [sfComponentTranslator](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfcomponenttranslator.md), [sfGameObjectTranslator](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfgameobjecttranslator.md), [sfLightingTranslator](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sflightingtranslator.md)

#### Inherited Members

[sfBaseTranslator.Initialize()](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_initialize), [sfBaseTranslator.OnSessionConnect()](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_onsessionconnect), [sfBaseTranslator.OnSessionDisconnect()](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_onsessiondisconnect), [sfBaseTranslator.TryCreate(Object, out sfObject)](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_trycreate_unityengine_object_ks_scenefusion_clie), [sfBaseTranslator.GetUObject(sfObject, Object)](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_getuobject_ks_scenefusion_client_sfobject_unitye), [sfBaseTranslator.OnCreate(sfObject, int)](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_oncreate_ks_scenefusion_client_sfobject_system_i), [sfBaseTranslator.OnConfirmCreate(sfObject)](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_onconfirmcreate_ks_scenefusion_client_sfobject), [sfBaseTranslator.OnDelete(sfObject)](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_ondelete_ks_scenefusion_client_sfobject), [sfBaseTranslator.OnConfirmDelete(sfObject, bool)](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_onconfirmdelete_ks_scenefusion_client_sfobject_s), [sfBaseTranslator.OnConfirmSubscription(sfObject, bool)](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_onconfirmsubscription_ks_scenefusion_client_sfob), [sfBaseTranslator.OnLock(sfObject)](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_onlock_ks_scenefusion_client_sfobject), [sfBaseTranslator.OnUnlock(sfObject)](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_onunlock_ks_scenefusion_client_sfobject), [sfBaseTranslator.OnLockOwnerChange(sfObject)](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_onlockownerchange_ks_scenefusion_client_sfobject), [sfBaseTranslator.OnDirectLockChange(sfObject)](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_ondirectlockchange_ks_scenefusion_client_sfobjec), [sfBaseTranslator.OnParentChange(sfObject, int)](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_onparentchange_ks_scenefusion_client_sfobject_sy), [sfBaseTranslator.OnPropertyChange(sfBaseProperty)](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_onpropertychange_ks_scenefusion_sfbaseproperty), [sfBaseTranslator.OnRemoveField(sfDictionaryProperty, string)](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_onremovefield_ks_scenefusion_sfdictionarypropert), [sfBaseTranslator.OnListAdd(sfListProperty, int, int)](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_onlistadd_ks_scenefusion_sflistproperty_system_i), [sfBaseTranslator.OnListRemove(sfListProperty, int, int)](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_onlistremove_ks_scenefusion_sflistproperty_syste), [sfBaseTranslator.OnSPropertyChange(sfObject, SerializedProperty)](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_onspropertychange_ks_scenefusion_client_sfobject), [sfBaseTranslator.OnSelect(sfObject, Object)](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_onselect_ks_scenefusion_client_sfobject_unityeng), [sfBaseTranslator.OnDeselect(sfObject, Object)](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbasetranslator.md#ks_scenefusion_client_unity_editor_sfbasetranslator_ondeselect_ks_scenefusion_client_sfobject_unitye)

## Fields

### m\_propertyChangeHandlers <a href="#ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_m_propertychangehandlers" id="ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_m_propertychangehandlers"></a>

```csharp
protected sfTypedPropertyEventMap<sfBaseUObjectTranslator.PropertyChangeHandler> m_propertyChangeHandlers
```

#### Field Value

[sfTypedPropertyEventMap](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sftypedpropertyeventmap-1.md)<[sfBaseUObjectTranslator](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbaseuobjecttranslator.md).[PropertyChangeHandler](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbaseuobjecttranslator/ks.scenefusion.client.unity.editor.sfbaseuobjecttranslator.propertychangehandler.md)>

## Properties

### PostPropertyChange <a href="#ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_postpropertychange" id="ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_postpropertychange"></a>

Post property change event map.

```csharp
public sfTypedPropertyEventMap<sfBaseUObjectTranslator.PostPropertyChangeHandler> PostPropertyChange { get; }
```

#### Property Value

[sfTypedPropertyEventMap](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sftypedpropertyeventmap-1.md)<[sfBaseUObjectTranslator](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbaseuobjecttranslator.md).[PostPropertyChangeHandler](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbaseuobjecttranslator/ks.scenefusion.client.unity.editor.sfbaseuobjecttranslator.postpropertychangehandler.md)>

### PostUObjectChange <a href="#ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_postuobjectchange" id="ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_postuobjectchange"></a>

Post UObject change event map.

```csharp
public sfTypeEventMap<sfBaseUObjectTranslator.PostUObjectChangeHandler> PostUObjectChange { get; }
```

#### Property Value

[sfTypeEventMap](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sftypeeventmap-1.md)<[sfBaseUObjectTranslator](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbaseuobjecttranslator.md).[PostUObjectChangeHandler](/scene-fusion/api-reference/ks.scenefusion.client.unity.editor/ks.scenefusion.client.unity.editor.sfbaseuobjecttranslator/ks.scenefusion.client.unity.editor.sfbaseuobjecttranslator.postuobjectchangehandler.md)>

## Methods

### CallPostPropertyChangeHandlers(Object, sfBaseProperty, string) <a href="#ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_callpostpropertychangehandlers_unityengin" id="ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_callpostpropertychangehandlers_unityengin"></a>

Calls post property change handlers for a property and uobject.

```csharp
public void CallPostPropertyChangeHandlers(Object uobj, sfBaseProperty property, string name = null)
```

#### Parameters

`uobj` Object

uobj with the property that changed.

`property` [sfBaseProperty](/scene-fusion/api-reference/ks.scenefusion/ks.scenefusion.sfbaseproperty.md)

property that changed.

`name` string

if non-empty, the name of the sub-property that was removed from a dictionary property.

### CallPostUObjectChangeHandlers(Object) <a href="#ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_callpostuobjectchangehandlers_unityengine" id="ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_callpostuobjectchangehandlers_unityengine"></a>

Calls post UObject change handlers for a uobject.

```csharp
public void CallPostUObjectChangeHandlers(Object uobj)
```

#### Parameters

`uobj` Object

uobj with the property that changed.

### CallPropertyChangeHandlers(Object, sfBaseProperty, string) <a href="#ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_callpropertychangehandlers_unityengine_ob" id="ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_callpropertychangehandlers_unityengine_ob"></a>

Calls the property change handlers for an sfProperty.

```csharp
public bool CallPropertyChangeHandlers(Object uobj, sfBaseProperty property, string name = null)
```

#### Parameters

`uobj` Object

uobj whose property changed.

`property` [sfBaseProperty](/scene-fusion/api-reference/ks.scenefusion/ks.scenefusion.sfbaseproperty.md)

property that changed.

`name` string

#### Returns

bool

true if the change event was handled.

### CreateObject(Object, string) <a href="#ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_createobject_unityengine_object_system_st" id="ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_createobject_unityengine_object_system_st"></a>

Creates an sfObject for a UObject. Does nothing if one already exists.

```csharp
public sfObject CreateObject(Object uobj, string type)
```

#### Parameters

`uobj` Object

uobj to create sfObject for.

`type` string

type of sfObject to create.

#### Returns

[sfObject](/scene-fusion/api-reference/ks.scenefusion.client/ks.scenefusion.client.sfobject.md)

for the UObject, or null if an sfObject already existed.

### OnDeselect(sfObject, Object) <a href="#ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_ondeselect_ks_scenefusion_client_sfobject" id="ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_ondeselect_ks_scenefusion_client_sfobject"></a>

Called when a uobject is deselected. Releases the lock on the object.

```csharp
public override void OnDeselect(sfObject obj, Object uobj)
```

#### Parameters

`obj` [sfObject](/scene-fusion/api-reference/ks.scenefusion.client/ks.scenefusion.client.sfobject.md)

obj for the deselected uobject.

`uobj` Object

uobj that was deselected.

### OnListAdd(sfListProperty, int, int) <a href="#ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_onlistadd_ks_scenefusion_sflistproperty_s" id="ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_onlistadd_ks_scenefusion_sflistproperty_s"></a>

Called when one or more elements are added to a list property.

```csharp
public override void OnListAdd(sfListProperty list, int index, int count)
```

#### Parameters

`list` [sfListProperty](/scene-fusion/api-reference/ks.scenefusion/ks.scenefusion.sflistproperty.md)

list that elements were added to.

`index` int

index elements were inserted at.

`count` int

number of elements added.

### OnListRemove(sfListProperty, int, int) <a href="#ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_onlistremove_ks_scenefusion_sflistpropert" id="ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_onlistremove_ks_scenefusion_sflistpropert"></a>

Called when one or more elements are removed from a list property.

```csharp
public override void OnListRemove(sfListProperty list, int index, int count)
```

#### Parameters

`list` [sfListProperty](/scene-fusion/api-reference/ks.scenefusion/ks.scenefusion.sflistproperty.md)

list that elements were removed from.

`index` int

index elements were removed from.

`count` int

number of elements removed.

### OnPropertyChange(sfBaseProperty) <a href="#ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_onpropertychange_ks_scenefusion_sfbasepro" id="ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_onpropertychange_ks_scenefusion_sfbasepro"></a>

Called when an sfObject property changes.

```csharp
public override void OnPropertyChange(sfBaseProperty property)
```

#### Parameters

`property` [sfBaseProperty](/scene-fusion/api-reference/ks.scenefusion/ks.scenefusion.sfbaseproperty.md)

property that changed.

### OnRemoveField(sfDictionaryProperty, string) <a href="#ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_onremovefield_ks_scenefusion_sfdictionary" id="ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_onremovefield_ks_scenefusion_sfdictionary"></a>

Called when a field is removed from a dictionary property.

```csharp
public override void OnRemoveField(sfDictionaryProperty dict, string name)
```

#### Parameters

`dict` [sfDictionaryProperty](/scene-fusion/api-reference/ks.scenefusion/ks.scenefusion.sfdictionaryproperty.md)

dict the field was removed from.

`name` string

name of the removed field.

### OnReplace(sfObject, Object, Object) <a href="#ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_onreplace_ks_scenefusion_client_sfobject" id="ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_onreplace_ks_scenefusion_client_sfobject"></a>

Called when a uobject is replaced with another uobject, which happens when we change the local file id of an asset. Removes the mapping for the sfObject and old uobject and maps the sfObject to the new uobject, and updates references from the old uobject to reference the new uobject.

```csharp
public virtual void OnReplace(sfObject obj, Object oldUObj, Object newUObj)
```

#### Parameters

`obj` [sfObject](/scene-fusion/api-reference/ks.scenefusion.client/ks.scenefusion.client.sfobject.md)

obj whose uobject was replaced.

`oldUObj` Object

`newUObj` Object

### OnSelect(sfObject, Object) <a href="#ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_onselect_ks_scenefusion_client_sfobject_u" id="ks_scenefusion_client_unity_editor_sfbaseuobjecttranslator_onselect_ks_scenefusion_client_sfobject_u"></a>

Called when a uobject is selected. Sends a lock request for the object.

```csharp
public override void OnSelect(sfObject obj, Object uobj)
```

#### Parameters

`obj` [sfObject](/scene-fusion/api-reference/ks.scenefusion.client/ks.scenefusion.client.sfobject.md)

obj for the selected uobject.

`uobj` Object

uobj that was selected.
