Netcode Bootstrap
This commit is contained in:
+51
@@ -0,0 +1,51 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using Unity.Entities;
|
||||
using Unity.Rendering;
|
||||
using UnityEngine;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
namespace Rukhanka.Hybrid
|
||||
{
|
||||
[WorldSystemFilter(WorldSystemFilterFlags.BakingSystem)]
|
||||
[UpdateInGroup(typeof(PreBakingSystemGroup))]
|
||||
public partial class DisableEntitiesGraphicsSkinnedMeshBakerSystem: SystemBase
|
||||
{
|
||||
protected override void OnUpdate()
|
||||
{
|
||||
var varName = "_IndexToBakerInstances";
|
||||
var bakerDataUtilityType = typeof(BakerDataUtility);
|
||||
var fieldInfo = bakerDataUtilityType.GetField(varName, BindingFlags.NonPublic | BindingFlags.Static);
|
||||
if (fieldInfo == null)
|
||||
{
|
||||
throw new NullReferenceException($"Cannot find '{varName}' in {bakerDataUtilityType.Name}. Disabling Entities.Graphics skinned mesh baking is failed.");
|
||||
}
|
||||
|
||||
var typeIndexToBakerInstancesMap = fieldInfo.GetValue(null) as Dictionary<TypeIndex, BakerDataUtility.BakerData[]>;
|
||||
if (typeIndexToBakerInstancesMap == null)
|
||||
{
|
||||
throw new NullReferenceException($"Cannot cast '{varName}' to proper dictionary type. Disabling Entities.Graphics skinned mesh baking is failed.");
|
||||
}
|
||||
|
||||
var entitiesGraphicsSystemType = typeof(EntitiesGraphicsSystem);
|
||||
var skinnedMeshRendererBakerType = entitiesGraphicsSystemType.Assembly.GetType("Unity.Rendering.SkinnedMeshRendererBaker");
|
||||
var skinnedMeshRendererIndex = TypeManager.GetTypeIndex<SkinnedMeshRenderer>();
|
||||
var smrBakers = typeIndexToBakerInstancesMap[skinnedMeshRendererIndex].ToList();
|
||||
for (var i = 0; i < smrBakers.Count; i++)
|
||||
{
|
||||
var smb = smrBakers[i];
|
||||
if (smb.Baker.GetType() == skinnedMeshRendererBakerType)
|
||||
{
|
||||
smrBakers.RemoveAt(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
typeIndexToBakerInstancesMap[skinnedMeshRendererIndex] = smrBakers.ToArray();
|
||||
fieldInfo.SetValue(null, typeIndexToBakerInstancesMap);
|
||||
}
|
||||
}
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eb22abbe32349cb4fb8cd0d223f40cdf
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 298480
|
||||
packageName: Rukhanka Animation System 2
|
||||
packageVersion: 2.9.0
|
||||
assetPath: Packages/com.rukhanka.animation/Rukhanka.Hybrid/Deformation/DisableEntitiesGraphicsSkinnedMeshBakerSystem.cs
|
||||
uploadId: 897522
|
||||
Reference in New Issue
Block a user