void HandleCSComponentLoad(CSComponentLoadEvent e) { var scriptMap = e.scriptMap; // Get the NativeInstance as an IntPtr, otherwise we would be wrapping as a CSComponent IntPtr csnative = scriptMap.GetVoidPtr("NativeInstance"); IntPtr fieldValues = IntPtr.Zero; if (scriptMap.Contains("FieldValues")) { fieldValues = scriptMap.GetVoidPtr("FieldValues"); } CSComponentInfo csinfo; if (!CSComponentCore.componentCache.TryGetValue(e.ClassName, out csinfo)) { return; } NativeCore.NativeContructorOverride = csnative; var component = (CSComponent)Activator.CreateInstance(csinfo.Type); NativeCore.VerifyNativeContructorOverrideConsumed(); if (fieldValues != IntPtr.Zero) { csinfo.ApplyFieldValues(component, fieldValues); } AddCSComponent(component); }
void HandleComponentLoad(uint eventType, ScriptVariantMap eventData) { var assemblyPath = eventData["AssemblyPath"]; var className = eventData["ClassName"]; IntPtr csnative = eventData.GetVoidPtr("NativeInstance"); IntPtr fieldValues = IntPtr.Zero; if (eventData.Contains("FieldValues")) { fieldValues = eventData.GetVoidPtr("FieldValues"); } Dictionary <string, CSComponentInfo> assemblyTypes = null; if (!componentCache.TryGetValue(assemblyPath, out assemblyTypes)) { return; } CSComponentInfo csinfo; if (!assemblyTypes.TryGetValue(className, out csinfo)) { return; } NativeCore.NativeContructorOverride = csnative; var component = (CSComponent)Activator.CreateInstance(csinfo.Type); NativeCore.VerifyNativeContructorOverrideConsumed(); if (fieldValues != IntPtr.Zero) { csinfo.ApplyFieldValues(component, fieldValues); } csinfo.RegisterInstance(component); }