示例#1
0
        protected override object WriteToImpl(object obj)
        {
            ClearReferencesCache();

            Scene scene = (Scene)obj;

            if (Descriptors == null && Data == null)
            {
                DestroyGameObjects(scene);
                return(obj);
            }

            if (Descriptors == null && Data != null || Data != null && Descriptors == null)
            {
                throw new ArgumentException("data is corrupted", "scene");
            }

            if (Descriptors.Length == 0)
            {
                DestroyGameObjects(scene);
                return(obj);
            }

            if (Identifiers == null || Identifiers.Length != Data.Length)
            {
                throw new ArgumentException("data is corrupted", "scene");
            }

            DestroyGameObjects(scene);
            Dictionary <int, UnityObject> idToUnityObj = new Dictionary <int, UnityObject>();

            for (int i = 0; i < Descriptors.Length; ++i)
            {
                PersistentDescriptor descriptor = Descriptors[i];
                if (descriptor != null)
                {
                    CreateGameObjectWithComponents(m_typeMap, descriptor, idToUnityObj, null);
                }
            }


            UnityObject[] assetInstances = null;
            if (AssetIdentifiers != null)
            {
                IUnityObjectFactory factory = IOC.Resolve <IUnityObjectFactory>();
                assetInstances = new UnityObject[AssetIdentifiers.Length];
                for (int i = 0; i < AssetIdentifiers.Length; ++i)
                {
                    PersistentObject asset = Assets[i];

                    Type uoType = m_typeMap.ToUnityType(asset.GetType());
                    if (uoType != null)
                    {
                        if (factory.CanCreateInstance(uoType, asset))
                        {
                            UnityObject assetInstance = factory.CreateInstance(uoType, asset);
                            if (assetInstance != null)
                            {
                                assetInstances[i] = assetInstance;
                                idToUnityObj.Add(AssetIdentifiers[i], assetInstance);
                            }
                        }
                        else
                        {
                            Debug.LogWarning("Unable to create object of type " + uoType.ToString());
                        }
                    }
                    else
                    {
                        Debug.LogWarning("Unable to resolve unity type for " + asset.GetType().FullName);
                    }
                }
            }

            m_assetDB.RegisterSceneObjects(idToUnityObj);

            if (assetInstances != null)
            {
                for (int i = 0; i < AssetIdentifiers.Length; ++i)
                {
                    UnityObject assetInstance = assetInstances[i];
                    if (assetInstance != null)
                    {
                        PersistentObject asset = Assets[i];
                        asset.WriteTo(assetInstance);
                    }
                }
            }

            RestoreDataAndResolveDependencies();
            m_assetDB.UnregisterSceneObjects();

            ClearReferencesCache();

            return(scene);
        }
示例#2
0
 protected PersistentSurrogate()
 {
     m_assetDB = IOC.Resolve <IAssetDB>();
 }
示例#3
0
        private void Start()
        {
            BaseGizmoInput input = GetComponent <BaseGizmoInput>();

            if (input == null || input.Gizmo != this)
            {
                input       = gameObject.AddComponent <BaseGizmoInput>();
                input.Gizmo = this;
            }

            if (SceneCamera == null)
            {
                SceneCamera = Window.Camera;
            }

            if (SceneCamera == null)
            {
                SceneCamera = Camera.main;
            }

            if (Target == null)
            {
                Target = transform;
            }

            if (EnableUndo)
            {
                if (!RuntimeUndoInput.IsInitialized)
                {
                    GameObject runtimeUndo = new GameObject();
                    runtimeUndo.name = "RuntimeUndo";
                    runtimeUndo.AddComponent <RuntimeUndoInput>();
                }
            }

            IRTEGraphicsLayer graphicsLayer = Window.IOCContainer.Resolve <IRTEGraphicsLayer>();

            if (graphicsLayer != null)
            {
                m_rteCamera = graphicsLayer.Camera;
            }

            if (m_rteCamera == null && SceneCamera != null)
            {
                IRTEGraphics graphics = IOC.Resolve <IRTEGraphics>();
                if (graphics != null)
                {
                    m_rteCamera = graphics.GetOrCreateCamera(SceneCamera, CameraEvent.AfterImageEffectsOpaque);
                }

                if (m_rteCamera == null)
                {
                    m_rteCamera       = SceneCamera.gameObject.AddComponent <RTECamera>();
                    m_rteCamera.Event = CameraEvent.AfterImageEffectsOpaque;
                }
            }

            if (m_rteCamera != null)
            {
                m_prevPosition = transform.position;
                m_prevRotation = transform.rotation;
                m_prevScale    = transform.localScale;

                m_prevCamPosition  = m_rteCamera.Camera.transform.position;
                m_prevCamRotation  = m_rteCamera.Camera.transform.rotation;
                m_prevOrthographic = m_rteCamera.Camera.orthographic;

                m_rteCamera.CommandBufferRefresh += OnCommandBufferRefresh;
                m_rteCamera.RefreshCommandBuffer();
            }

            StartOverride();
        }
        private void Awake()
        {
            m_editor = IOC.Resolve <IRTE>();

            UnityEditorToolsListener.ToolChanged += OnUnityEditorToolChanged;
        }
示例#5
0
文件: HeNanK3Job.cs 项目: PenAndy/SCC
 /// <summary>
 ///     构造函数
 /// </summary>
 public HeNanK3Job()
 {
     log      = new LogHelper();
     services = IOC.Resolve <IOpen3Code>();
     email    = IOC.Resolve <IEmail>();
 }
 protected virtual void Awake()
 {
     Subscribe();
     m_voidComponentEditor = gameObject.AddComponent <VoidComponentEditor>();
     m_editorsMap          = IOC.Resolve <IEditorsMap>();
 }
 private void Start()
 {
     m_projectManager = Dependencies.ProjectManager;
     m_editor         = IOC.Resolve <IRTE>();
 }
示例#8
0
        public override void ReadFrom(object obj)
        {
            base.ReadFrom(obj);
            if (obj == null)
            {
                return;
            }

            Material o = (Material)obj;

            if (o.HasProperty("_MainTex"))
            {
                mainTextureOffset = o.mainTextureOffset;
                mainTextureScale  = o.mainTextureScale;
            }

            if (o.shader == null)
            {
                shader       = m_assetDB.NullID;
                m_shaderName = null;
                return;
            }

            shader       = m_assetDB.ToID(o.shader);
            m_shaderName = o.shader.name;

            RuntimeShaderInfo  shaderInfo = null;
            IRuntimeShaderUtil shaderUtil = IOC.Resolve <IRuntimeShaderUtil>();

            if (shaderUtil != null)
            {
                shaderInfo = shaderUtil.GetShaderInfo(o.shader);
            }
            if (shaderInfo == null)
            {
                return;
            }

            m_propertyNames  = new string[shaderInfo.PropertyCount];
            m_propertyTypes  = new RTShaderPropertyType[shaderInfo.PropertyCount];
            m_propertyValues = new PrimitiveContract[shaderInfo.PropertyCount];

            for (int i = 0; i < shaderInfo.PropertyCount; ++i)
            {
                string name = shaderInfo.PropertyNames[i];
                RTShaderPropertyType type = shaderInfo.PropertyTypes[i];
                m_propertyNames[i] = name;
                m_propertyTypes[i] = type;
                switch (type)
                {
                case RTShaderPropertyType.Color:
                    m_propertyValues[i] = PrimitiveContract.Create((PersistentColor)o.GetColor(name));
                    break;

                case RTShaderPropertyType.Float:
                    m_propertyValues[i] = PrimitiveContract.Create(o.GetFloat(name));
                    break;

                case RTShaderPropertyType.Range:
                    m_propertyValues[i] = PrimitiveContract.Create(o.GetFloat(name));
                    break;

                case RTShaderPropertyType.TexEnv:
                    Texture2D texture = (Texture2D)o.GetTexture(name);
                    if (texture == null)
                    {
                        m_propertyValues[i] = PrimitiveContract.Create(m_assetDB.NullID);
                    }
                    else
                    {
                        m_propertyValues[i] = PrimitiveContract.Create(m_assetDB.ToID(texture));
                    }
                    break;

                case RTShaderPropertyType.Vector:
                    m_propertyValues[i] = PrimitiveContract.Create((PersistentVector4)o.GetVector(name));
                    break;

                case RTShaderPropertyType.Unknown:
                    m_propertyValues[i] = null;
                    break;
                }
            }

            m_keywords = o.shaderKeywords;
        }
 protected override void OnEditorCreated(object obj)
 {
     OverrideDefaultLayout();
     m_wm = IOC.Resolve <IWindowManager>();
 }
示例#10
0
 public AutoCheckHeBeiPL5Job()
 {
     log      = new LogHelper();
     services = IOC.Resolve <IDTOpenCode>();
 }
示例#11
0
 public AutoCheckGuangDong26X5Job()
 {
     log      = new LogHelper();
     services = IOC.Resolve <IDTOpenCode>();
 }
示例#12
0
 public UnityObjectFactory()
 {
     m_typeMap = IOC.Resolve <ITypeMap>();
 }
示例#13
0
 void Awake()
 {
     m_globalUI = IOC.Resolve <IGlobalUI>();
 }
示例#14
0
 /// <summary>
 /// 初始化函数
 /// </summary>
 public HeiLongJiangTC6J1Job()
 {
     log      = new LogHelper();
     services = IOC.Resolve <IDTOpenCode>();
     email    = IOC.Resolve <IEmail>();
 }
        public ProjectAsyncOperation <ProjectItem[]> DeleteAssets(ProjectItem[] projectItems, Action <ProjectItem[]> done)
        {
            ProjectAsyncOperation <ProjectItem[]> ao = new ProjectAsyncOperation <ProjectItem[]> ();

            IProject project = IOC.Resolve <IProject>();

            AssetItem[] assetItems = projectItems.OfType <AssetItem>().ToArray();
            for (int i = 0; i < assetItems.Length; ++i)
            {
                AssetItem   assetItem = assetItems[i];
                UnityObject obj       = m_project.FromID <UnityObject>(assetItem.ItemID);

                if (obj != null)
                {
                    if (obj is GameObject)
                    {
                        GameObject  go         = (GameObject)obj;
                        Component[] components = go.GetComponentsInChildren <Component>(true);
                        for (int j = 0; j < components.Length; ++j)
                        {
                            Component component = components[j];
                            Undo.Erase(component, null);
                            if (component is Transform)
                            {
                                Undo.Erase(component.gameObject, null);
                            }
                        }
                    }
                    else
                    {
                        Undo.Erase(obj, null);
                    }
                }
            }

            ProjectItem[] folders = projectItems.Where(pi => pi.IsFolder).ToArray();
            m_project.Delete(assetItems.Union(folders).ToArray(), (deleteError, deletedItems) =>
            {
                IsBusy = false;
                if (deleteError.HasError)
                {
                    m_wm.MessageBox("Unable to delete folders", deleteError.ErrorText);

                    if (done != null)
                    {
                        done(null);
                    }

                    ao.Error       = deleteError;
                    ao.IsCompleted = true;
                    return;
                }

                StartCoroutine(CoUpdateDependantAssetPreview(assetItems, () =>
                {
                    if (done != null)
                    {
                        done(projectItems);
                    }

                    ao.Error       = new Error();
                    ao.Result      = projectItems;
                    ao.IsCompleted = true;
                }));
            });

            return(ao);
        }
        private void OverrideDefaultLayout()
        {
            IWindowManager wm = IOC.Resolve <IWindowManager>();

            wm.OverrideDefaultLayout(DefaultLayout, RuntimeWindowType.Scene.ToString());
        }
        //[MenuCommand("MenuWindow/ID_RTDeformer_WM_Header_Deformer", "", true)]
        public static void OpenMeshDeformer()
        {
            IWindowManager wm = IOC.Resolve <IWindowManager>();

            wm.CreateWindow("MeshDeformer");
        }
示例#18
0
 /// <summary>
 ///     构造函数
 /// </summary>
 public YunNanKL10FJob()
 {
     log      = new LogHelper();
     services = IOC.Resolve <IOpen8Code>();
     email    = IOC.Resolve <IEmail>();
 }
        public void AddProperty(RuntimeAnimationProperty property)
        {
            if (property.ComponentTypeName == RuntimeAnimationProperty.k_SpecialAddButton)
            {
                IWindowManager wm = IOC.Resolve <IWindowManager>();
                IAnimationSelectPropertiesDialog selectPropertiesDialog = null;
                Transform dialogTransform = IOC.Resolve <IWindowManager>().CreateDialogWindow(RuntimeWindowType.SelectAnimationProperties.ToString(), "Select Properties",
                                                                                              (sender, args) => { }, (sender, args) => { }, 250, 250, 400, 400);
                selectPropertiesDialog        = IOC.Resolve <IAnimationSelectPropertiesDialog>();
                selectPropertiesDialog.View   = this;
                selectPropertiesDialog.Target = Target.gameObject;
            }
            else
            {
                if (BeforePropertiesAdded != null)
                {
                    BeforePropertiesAdded(this, EventArgs.Empty);
                }

                List <RuntimeAnimationProperty> addedProperties = new List <RuntimeAnimationProperty>();
                List <int> addedIndexes = new List <int>();

                if (m_propertiesTreeView.ItemsCount == 1)
                {
                    m_propertiesTreeView.Insert(0, m_emptyTop);
                    m_props.Insert(0, m_emptyTop);
                    addedProperties.Add(m_emptyTop);
                    addedIndexes.Add(0);
                }

                property          = new RuntimeAnimationProperty(property);
                property.Parent   = null;
                property.Children = null;
                if (!property.TryToCreateChildren())
                {
                    if (Reflection.IsPrimitive(property.Value.GetType()))
                    {
                        property.Curve = new AnimationCurve();
                    }
                }
                Clip.Add(property);

                m_propertiesTreeView.Insert(m_propertiesTreeView.ItemsCount - 1, property);

                addedProperties.Add(property);
                addedIndexes.Add(m_props.Count - 1);
                m_props.Insert(m_props.Count - 1, property);
                if (property.Children != null)
                {
                    for (int i = 0; i < property.Children.Count; i++)
                    {
                        addedProperties.Add(property.Children[i]);
                        addedIndexes.Add(m_props.Count - 1);
                        m_props.Insert(m_props.Count - 1, property.Children[i]);
                        Subscribe(property.Children[i]);
                    }
                }
                else
                {
                    Subscribe(property);
                }

                if (PropertiesAdded != null)
                {
                    PropertiesAdded(new ItemsArg {
                        Items = addedProperties.ToArray(), Rows = addedIndexes.ToArray()
                    });
                }
            }
        }
示例#20
0
 /// <summary>
 ///     构造函数
 /// </summary>
 public GuangDongSZFCJob()
 {
     log      = new LogHelper();
     services = IOC.Resolve <IDTOpenCode>();
     email    = IOC.Resolve <IEmail>();
 }
示例#21
0
 protected void Awake()
 {
     m_gameMachine = IOC.Resolve <IGameMachine>();
     m_player      = IOC.Resolve <IPlayer>();
     AwakeOverride();
 }
示例#22
0
        private void Awake()
        {
            m_terrainEditor = GetComponentInParent <TerrainEditor>();

            m_localization = IOC.Resolve <ILocalization>();
            m_editor       = IOC.Resolve <IRTE>();
            m_editor.Selection.SelectionChanged += OnEditorSelectionChanged;
            m_customSelection = IOC.Resolve <ICustomSelectionComponent>();

            m_terrainCutoutRenderer = IOC.Resolve <ITerrainCutoutMaskRenderer>();
            m_terrainCutoutRenderer.ObjectImageLayer = m_editor.CameraLayerSettings.ResourcePreviewLayer;

            m_source = FindObjectOfType <TerrainBrushSource>();
            if (m_source == null)
            {
                m_source = new GameObject("TerrainBrushSource").AddComponent <TerrainBrushSource>();
            }

            if (m_brushesList != null)
            {
                m_brushesList.SelectionChanged += OnBrushesSelectionChanged;
                m_brushesList.ItemDataBinding  += OnBrushesDataBinding;
                m_brushesList.CanDrag           = false;
                m_brushesList.CanEdit           = false;
                m_brushesList.CanRemove         = false;
                m_brushesList.CanReorder        = false;
                m_brushesList.CanReparent       = false;
                m_brushesList.CanSelectAll      = false;
                m_brushesList.CanUnselectAll    = false;
            }

            if (m_brushSizeEditor != null)
            {
                //BrushSize = 2.5f;
                RaiseBrushParamsChanged();

                m_brushSizeEditor.Min = 0.5f;
                m_brushSizeEditor.Max = 40;
                m_brushSizeEditor.Init(this, this, Strong.MemberInfo((TerrainBrushEditor x) => x.BrushSize), null, m_localization.GetString("ID_RTTerrain_TerrainBrushEditor_BrushSize", "Brush Size"), null, null, null, false);
            }

            if (m_opacityEditor != null)
            {
                //BrushOpacity = 100;
                RaiseBrushParamsChanged();

                m_opacityEditor.Min = 0;
                m_opacityEditor.Max = 100;
                m_opacityEditor.Init(this, this, Strong.MemberInfo((TerrainBrushEditor x) => x.BrushOpacity), null, m_localization.GetString("ID_RTTerrain_TerrainBrushEditor_BrushOpacity", "Brush Opacity"), null, null, null, false);
            }

            if (m_beginCreateButton != null)
            {
                m_beginCreateButton.onClick.AddListener(BeginCreateButtonClick);
            }

            if (m_addButton != null)
            {
                m_addButton.onClick.AddListener(OnAddButtonClick);
            }

            if (m_deleteButton != null)
            {
                m_deleteButton.onClick.AddListener(OnDeleteButtonClick);
            }
        }
 private void Awake()
 {
     m_appTheme = IOC.Resolve <IAppTheme>();
     AwakeOverride();
 }
示例#24
0
 /// <summary>
 ///     构造函数
 /// </summary>
 public BeiJingKZCJob()
 {
     log      = new LogHelper();
     services = IOC.Resolve <IOpen9Code>();
     email    = IOC.Resolve <IEmail>();
 }
        protected void OnAssetItemsLoaded(Object[] objects, ExposeToEditor dropTarget, VirtualizingTreeViewItem treeViewItem)
        {
            m_selectionComponent = Editor.GetScenePivot();

            GameObject[] createdObjects = new GameObject[objects.Length];
            for (int i = 0; i < objects.Length; ++i)
            {
                GameObject prefab           = (GameObject)objects[i];
                bool       wasPrefabEnabled = prefab.activeSelf;
                prefab.SetActive(false);
                GameObject prefabInstance = InstantiatePrefab(prefab);
                Editor.AddGameObjectToHierarchy(prefabInstance);
                prefab.SetActive(wasPrefabEnabled);

                ExposeToEditor exposeToEditor = ExposePrefabInstance(prefabInstance);
                exposeToEditor.SetName(prefab.name);

                if (dropTarget == null)
                {
                    exposeToEditor.transform.SetParent(null);
                    m_treeView.Add(exposeToEditor);
                }
                else
                {
                    if (m_lastDropAction == ItemDropAction.SetLastChild)
                    {
                        exposeToEditor.transform.SetParent(dropTarget.transform);
                        m_treeView.AddChild(dropTarget, exposeToEditor);
                        treeViewItem.CanExpand  = true;
                        treeViewItem.IsExpanded = true;
                    }
                    if (m_lastDropAction != ItemDropAction.None && m_lastDropAction != ItemDropAction.SetLastChild)
                    {
                        int index;
                        int siblingIndex;
                        if (m_lastDropAction == ItemDropAction.SetNextSibling)
                        {
                            index        = m_treeView.IndexOf(dropTarget) + 1;
                            siblingIndex = dropTarget.transform.GetSiblingIndex() + 1;
                        }
                        else
                        {
                            index        = m_treeView.IndexOf(dropTarget);
                            siblingIndex = dropTarget.transform.GetSiblingIndex();
                        }

                        exposeToEditor.transform.SetParent(dropTarget.transform.parent != null ? dropTarget.transform.parent : null);
                        exposeToEditor.transform.SetSiblingIndex(siblingIndex);

                        TreeViewItemContainerData newTreeViewItemData = (TreeViewItemContainerData)m_treeView.Insert(index, exposeToEditor);
                        VirtualizingTreeViewItem  newTreeViewItem     = m_treeView.GetTreeViewItem(exposeToEditor);
                        if (newTreeViewItem != null)
                        {
                            newTreeViewItem.Parent = treeViewItem.Parent;
                        }
                        else
                        {
                            newTreeViewItemData.Parent = treeViewItem.Parent;
                        }
                    }
                }

                OnActivatePrefabInstance(prefabInstance);
                createdObjects[i] = prefabInstance;
            }

            if (createdObjects.Length > 0)
            {
                IRuntimeEditor editor = IOC.Resolve <IRuntimeEditor>();
                editor.RegisterCreatedObjects(createdObjects, m_selectionComponent != null ? m_selectionComponent.CanSelect : true);
            }

            m_treeView.ExternalItemDrop();
            m_isSpawningPrefab = false;
        }
示例#26
0
        private void CreateEditor()
        {
            DestroyEditor();

            if (Editor.Selection.activeObject == null)
            {
                return;
            }

            UnityObject[] selectedObjects = Editor.Selection.objects.Where(o => o != null).ToArray();
            if (selectedObjects.Length != 1)
            {
                return;
            }

            Type objType = selectedObjects[0].GetType();

            for (int i = 1; i < selectedObjects.Length; ++i)
            {
                if (objType != selectedObjects[i].GetType())
                {
                    return;
                }
            }

            ExposeToEditor exposeToEditor = Editor.Selection.activeGameObject != null?
                                            Editor.Selection.activeGameObject.GetComponent <ExposeToEditor>() :
                                                null;

            if (exposeToEditor != null && !exposeToEditor.CanInspect)
            {
                return;
            }

            GameObject editorPrefab;

            if (objType == typeof(Material))
            {
                Material mat = selectedObjects[0] as Material;
                if (mat.shader == null)
                {
                    return;
                }

                editorPrefab = m_editorsMap.GetMaterialEditor(mat.shader);
            }
            else
            {
                if (!m_editorsMap.IsObjectEditorEnabled(objType))
                {
                    return;
                }
                editorPrefab = m_editorsMap.GetObjectEditor(objType);
            }

            if (editorPrefab != null)
            {
                m_editor = Instantiate(editorPrefab);
                m_editor.transform.SetParent(m_panel, false);
                m_editor.transform.SetAsFirstSibling();
            }

            if (m_addComponentRoot != null && exposeToEditor)
            {
                IProject project = IOC.Resolve <IProject>();
                if (project == null || project.ToAssetItem(Editor.Selection.activeGameObject) == null)
                {
                    m_addComponentRoot.SetActive(true);
                    if (m_addComponentControl != null)
                    {
                        m_addComponentControl.ComponentSelected += OnAddComponent;
                    }
                }
            }
        }
 public PersistentRuntimePrefab()
 {
     m_typeMap = IOC.Resolve <ITypeMap>();
 }
示例#28
0
文件: GD36X7Job.cs 项目: PenAndy/SCC
 /// <summary>
 ///     构造函数
 /// </summary>
 public GD36X7Job()
 {
     log      = new LogHelper();
     services = IOC.Resolve <IDTOpenCode>();
     email    = IOC.Resolve <IEmail>();
 }
示例#29
0
 /// <summary>
 /// 构造函数
 /// </summary>
 public QXCGlossaryJob()
 {
     log      = new LogHelper();
     services = IOC.Resolve <IDTOpenCode>();
     email    = IOC.Resolve <IEmail>();
 }
示例#30
0
文件: FJ11X5Job.cs 项目: PenAndy/SCC
 /// <summary>
 ///     构造函数
 /// </summary>
 public FJ11X5Job()
 {
     log      = new LogHelper();
     services = IOC.Resolve <IOpen5Code>();
     email    = IOC.Resolve <IEmail>();
 }