コード例 #1
0
        protected UnityAvatarData toAvatar(GameObject gameObject, UnityScene unityScene)
        {
            var avatarData = unityScene.getAvatarData(unityScene);

            Renderer[] renderers = gameObject.GetComponentsInChildren <Renderer>();

            List <UnityMeshData> list = null;

            foreach (var renderer in renderers)
            {
                var meshdata = toMeshData(renderer, unityScene);
                if (null != meshdata)
                {
                    if (false == avatarData.mesh.ContainsKey(meshdata.node))
                    {
                        list = new List <UnityMeshData>();
                        avatarData.mesh.Add(meshdata.node, list);
                    }
                    else
                    {
                        list = avatarData.mesh[meshdata.node];
                    }
                    list.Add(meshdata);
                }
            }

            return(avatarData);
        }
コード例 #2
0
        protected UnityNodeData toNodes(GameObject obj, UnityScene unityScene, string modelPath)
        {
            UnityNodeData nodeData = Export.GameObjectToUnityNodeData(obj);

            Transform transform = obj.transform;

            for (int i = 0; i < transform.childCount; i++)
            {
                var child      = transform.GetChild(i);
                var gameObject = child.gameObject;


                // var path = AssetDatabase.GetAssetPath(PrefabUtility.GetCorrespondingObjectFromSource(child.gameObject));

                if (null == gameObject.GetComponent <Animation>())
                {
                    var childNodeData = toNodes(child.gameObject, unityScene, modelPath);
                    if (null != childNodeData)
                    {
                        nodeData.children.Add(childNodeData);
                        childNodeData.parent = nodeData;
                    }
                }
                else
                {
                    //todo Child Mesh
                }
            }


            return(nodeData);
        }
コード例 #3
0
ファイル: MeshInterface.cs プロジェクト: melongroup/U3DExport
    public UnityAvatarData getAvatarData(UnityScene unityScene, string refName = null)
    {
        UnityAvatarRenderer renderer = getAvatarRenderer();
        UnityAvatarData     avatar   = null;

        if (null == refName)
        {
            refName = renderer.avatar;
        }

        if (null == refName)
        {
            return(null);
        }

        if (unityScene.avatarObj.ContainsKey(refName))
        {
            avatar = unityScene.avatarObj[refName];
        }
        else
        {
            avatar = new UnityAvatarData();
            unityScene.avatarObj.Add(refName, avatar);
        }

        renderer.avatar = refName;

        return(avatar);
    }
コード例 #4
0
ファイル: Presenter.cs プロジェクト: chav0/HoleBallGame
        public Presenter(GameSettings gameSettings, Resources resources, Screens screens, Camera camera)
        {
            var unityScene = new UnityScene(resources);

            _model = new ClientModel(gameSettings, unityScene, resources);
            _view  = new ClientView(resources, _model, unityScene, screens, camera);
        }
コード例 #5
0
ファイル: SpecialFeed.cs プロジェクト: Dariusz-L/Snake2D
 /// <summary>
 /// Check if lifetime expired. If yes then dispatch an event.
 /// </summary>
 private void CheckIfExpired()
 {
     if (_expireStopwatch.Elapsed.Seconds >= LIFE_TIME_SECONDS)
     {
         UnityScene.GetController <EventController>().Dispatch <SpecialFeedExpiredEvent>(new EventArgs());
     }
 }
コード例 #6
0
        public static void ExportUnitScene(UnityScene unitScene)
        {
            //write avatar
            //step1 write mesh
            foreach (var item in unitScene.avatarObj)
            {
                var   avatar = item.Value;
                TFile file   = new TFile(Export.config.outdir).ResolvePath(avatar.refName + ".km");
                file.WriteAMF(avatar);
            }

            //write animation

            foreach (var item in unitScene.animationDataObj)
            {
                var   path = item.Key.Replace("assets/", "");
                var   clip = item.Value;
                TFile file = new TFile(Export.config.outdir).ResolvePath(path);
                file.WriteAMF(clip);
            }


            foreach (var item in unitScene.materialObj)
            {
                string key = item.Key;

                string value = TFile.Join(Export.config.outdir, item.Value);

                var file = TFile.AppliationRoot.ResolvePath(key);
                file.CopyTo(value);
            }
        }
コード例 #7
0
        protected UnityVertexData parserSkeleton(SkinnedMeshRenderer renderer, UnityScene scene)
        {
            var bones = renderer.bones;
            var mesh  = renderer.sharedMesh;
            var poses = mesh.bindposes;

            nameIndex = 0;

            UnityVertexData data = new UnityVertexData();

            data.vertex          = Export.boneWeightToBytes(mesh.boneWeights);
            data.data32PerVertex = 8;

            var dict = skeletonRoot2Dict(scene.getAvatarData(scene).root);

            for (int i = 0; i < bones.Length; i++)
            {
                var bone = bones[i];
                if (dict.ContainsKey(bone.name))
                {
                    var node = dict[bone.name];
                    node.inv   = Export.Matrix4x4ToBytes(poses[i]);
                    node.index = i;
                }
            }

            // getUsedSkeleton(mesh.boneWeights);

            return(data);
        }
コード例 #8
0
ファイル: Core.cs プロジェクト: vitawebsitedesign/modern-bng
        static void ApplyNewCamera(UnityScene unityScene)
        {
            var cameraWithModernSettings = new GameObject().AddComponent <Camera>().SetSettings(new ModernSettingsForUnityCamera());

            Camera.current.enabled = false;
            Camera.SetupCurrent(cameraWithModernSettings);
        }
コード例 #9
0
ファイル: Core.cs プロジェクト: vitawebsitedesign/modern-bng
 static void ApplyUnityLightingToScene(UnityScene unityScene)
 {
     GameObject.Find(unityScene.ModernSceneryObject).ForThisObjectAndItsChildren(UnityEngine.Object.Destroy);
     UnityEngine.Object.FindObjectsOfType <Light>().ForTheseObjects(UnityEngine.Object.Destroy);
     SceneManager.LoadScene(unityScene.SceneNameWithUnityLighting, LoadSceneMode.Additive);
     UnityUtil.ResetUnityLighting(unityScene.SkyMaterialObject);
 }
コード例 #10
0
ファイル: SnakeParts.cs プロジェクト: Dariusz-L/Snake2D
        /// <summary>
        /// Instantiate new part of tail and attaches it to snake tail parts.
        /// </summary>
        public void GrowSnake()
        {
            var        resourceData = UnityScene.GetResourceManager().resourceData as Snake2DResourceData;
            GameObject newSnakeTile = MonoBehaviour.Instantiate(resourceData.PREFAB_SNAKE_TILE);

            newSnakeTile.transform.position = head.transform.position;
            tailParts.Insert(0, newSnakeTile);
        }
コード例 #11
0
 public override void OnEnter()
 {
     _scene     = Context.Scene;
     _gameLogic = new GameLogic(Context.Settings, _scene);
     _world     = _gameLogic.CreateNewWorld(_worldId);
     _gameLogic.Init(_world);
     _startTime = Time.realtimeSinceStartup;
 }
コード例 #12
0
        public override object parser(GameObject _object, Component component, UnityScene element)
        {
            // base.writeData



            return(true);
        }
コード例 #13
0
ファイル: Core.cs プロジェクト: vitawebsitedesign/modern-bng
 static bool CanApplyModernGfx(UnityScene unityScene)
 {
     return(unityScene != null &&
            UnityUtil.GetSceneByName(unityScene.SceneNameWithUnityLighting) != null &&
            GameObject.Find(unityScene.SunObject) != null &&
            GameObject.Find(unityScene.ModernSceneryObject) != null &&
            GameObject.Find(unityScene.SkyMaterialObject) != null &&
            GameObject.Find(unityScene.PostProcessingObject) != null);
 }
コード例 #14
0
 public void EnterScene(string sceneId, object param)
 {
     if (null != mCurScene)
     {
         mCurScene.OnWillExited();
     }
     mNextScene = new UnityScene(sceneId);
     mNextScene.OnWillEntered();
     UnityEngine.SceneManagement.SceneManager.LoadScene(sceneId.ToString(), UnityEngine.SceneManagement.LoadSceneMode.Single);
 }
コード例 #15
0
ファイル: GameController.cs プロジェクト: Dariusz-L/Snake2D
        /// <summary>
        /// Called once after constructor
        /// </summary>
        public void OnStart()
        {
            _snakeController.OnStart();
            _cameraController.OnStart();
            foodSpawningController.OnStart();

            IEventController e = UnityScene.GetController <EventController>();

            foodSpawningController.Subscribe(e);
        }
コード例 #16
0
        public static void ExportGameObject(GameObject obj, UnityScene unitScene = null)
        {
            if (null == unitScene)
            {
                unitScene = new UnityScene();
            }

            Serialize(obj, unitScene);
            ExportUnitScene(unitScene);
        }
コード例 #17
0
        // ================================ AREA PORTALS =================================

        /// <summary>
        /// Registers a new area portal to the area manager. Only the scenes of registered portals can be loaded/unloaded additively.
        /// </summary>
        public void RegisterAreaPortal(UnityScene subScene)
        {
            if (!GetIsActive || subScene == null || String.IsNullOrWhiteSpace(subScene.SceneName))
            {
                return;
            }

            subScenes.Add(subScene);
            DebugManager.LogFormat(nameof(AreaManager), nameof(RegisterAreaPortal), subScene.SceneName); //DEBUG
        }
コード例 #18
0
        /// <summary>
        /// Additively unloads a scene on the client who left the area portal.
        /// </summary>
        public void UnloadScenesAdditive(NetworkIdentity ni, UnityScene scene)
        {
            if (!GetIsActive || ni == null)
            {
                return;
            }

            NetworkServer.SendToClientOfPlayer(ni, new SceneMessage {
                sceneName = scene.SceneName, sceneOperation = SceneOperation.UnloadAdditive
            });
        }
コード例 #19
0
ファイル: ClientModel.cs プロジェクト: chav0/HoleBallGame
        public ClientModel(GameSettings gameSettings, UnityScene scene, Resources resources)
        {
            Settings  = gameSettings;
            Scene     = scene;
            Resources = resources;

            PlayerProfileStorage = new PlayerProfileStorage();
            CurrentState         = new InitModelState();
            CurrentState.Context = this;
            CurrentState.OnEnter();
        }
コード例 #20
0
ファイル: Core.cs プロジェクト: vitawebsitedesign/modern-bng
 static void ApplyModernGfx(ShipRefs ship, UnityScene unityScene)
 {
     using (var p = new TimerUtil())
     {
         ApplyUnityLightingToScene(unityScene);
         ApplyStandardShaderToScenery(unityScene);
         ApplyStandardShaderToShip(ship);
         ApplyDynamicShadows(ship);
         ApplyNewCamera(unityScene);
     }
 }
コード例 #21
0
ファイル: ClientView.cs プロジェクト: chav0/HoleBallGame
        public ClientView(Resources resources, ClientModel appModel, UnityScene scene, Screens screens, Camera camera)
        {
            Resources = resources;
            AppModel  = appModel;
            Scene     = scene;
            Camera    = camera;
            Screens   = screens;

            CurrentState         = new MainMenuViewState();
            CurrentState.Context = this;
            CurrentState.OnEnter();
        }
コード例 #22
0
ファイル: SnakeController.cs プロジェクト: Dariusz-L/Snake2D
        /// <summary>
        /// Subscribes events and init parts and moveController.
        /// </summary>
        public void OnStart()
        {
            _moveController.OnStart();
            _parts.OnStart();

            IEventController e = UnityScene.GetController <EventController>();

            _moveController.Subscribe(e);
            _snakeEatingSystem.Subscribe(e);
            _snakeGrowingSystem.Subscribe(e);
            _snakeCollisionController.Subscribe(e);
        }
コード例 #23
0
 void OnSceneLoaded(UnityEngine.SceneManagement.Scene scene, UnityEngine.SceneManagement.LoadSceneMode loadMode)
 {
     if (null != mCurScene)
     {
         mCurScene.OnExited();
     }
     if (null != mNextScene)
     {
         mNextScene.OnEntered();
     }
     mCurScene  = mNextScene;
     mNextScene = null;
 }
コード例 #24
0
ファイル: Core.cs プロジェクト: vitawebsitedesign/modern-bng
        /// <summary>
        /// Tries to apply modern Unity graphics to the current BallsiticNG track scene.
        /// </summary>
        /// <param name="ship">A BallisticNG ShipRef object</param>
        /// <param name="unityScene">An object specifying certain GameObject names in your Unity scene</param>
        /// <returns>False if the unityScene argument is invalid, otherwise true.</returns>
        public static async Task <bool> TryApplyModernGfx(ShipRefs ship, UnityScene unityScene)
        {
            if (CanApplyModernGfx(unityScene))
            {
                ApplyModernGfx(ship, unityScene);
                return(true);
            }
            else
            {
                await LogUtil.Log("Cant apply modern graphics (is your unityScene parameter correct?)");

                return(false);
            }
        }
コード例 #25
0
        public override object parser(GameObject _object, Component component, UnityScene unityScene)
        {
            UnityVertexData skeletonData = null;

            SkinnedMeshRenderer renderer = component as SkinnedMeshRenderer;

            skeletonData = parserSkeleton(renderer, unityScene);

            UnityMeshData meshData = base.parser(_object, component, unityScene) as UnityMeshData;

            meshData.skeleton = skeletonData;

            return(meshData);
        }
コード例 #26
0
        public static UnityScene ExportScene(Scene scene)
        {
            UnityScene unitScene = new UnityScene();
            var        list      = scene.GetRootGameObjects();

            foreach (var obj in list)
            {
                UnityPerfabData data = Serialize(obj, unitScene);
                if (null != data)
                {
                    unitScene.perfabDatas.Add(data);
                }
            }
            return(unitScene);
        }
コード例 #27
0
        public override object parser(GameObject _object, Component component, UnityScene unityScene)
        {
            Animator animator = component as Animator;
            string   path     = AssetDatabase.GetAssetPath(animator.avatar);

            if ("" == path)
            {
                return(null);
            }

            UnityAvatarData avataData = null;

            UnityAvatarRenderer avatar = unityScene.getAvatarRenderer();

            if (true == unityScene.avatarObj.ContainsKey(path))
            {
                avataData = unityScene.avatarObj[path];
            }
            else
            {
                avataData = unityScene.getAvatarData(unityScene, path);
                //step1 : parser Nodes
                avataData.root = toNodes(_object, unityScene, path);
                //step2 : parser meshs
                toAvatar(_object, unityScene);

                avataData.refName = getRefName(path);

                unityScene.avatarObj[path] = avataData;
            }

            avatar.avatar = avataData.refName;

            //step3 : parser animation
            if (animator.runtimeAnimatorController)
            {
                avataData.animator = avatar.animator = toAnimator(_object, animator.runtimeAnimatorController as AnimatorController, unityScene);
            }



            return(avatar);
        }
コード例 #28
0
        /// <summary>
        /// Unregisters a new area portal to the area manager. Only the scenes of registered portals can be loaded/unloaded additively.
        /// </summary>
        public void UnRegisterAreaPortal(UnityScene subScene)
        {
            if (!GetIsActive || subScene == null || String.IsNullOrWhiteSpace(subScene.SceneName))
            {
                return;
            }

            for (int i = 0; i < subScenes.Count; i++)
            {
                if (subScenes[i] == null || String.IsNullOrWhiteSpace(subScenes[i].SceneName))
                {
                    continue;
                }

                if (subScenes[i].SceneName == subScene.SceneName)
                {
                    subScenes.RemoveAt(i);
                    DebugManager.LogFormat(nameof(AreaManager), nameof(UnRegisterAreaPortal), subScene.SceneName);                     //DEBUG
                }
            }
        }
コード例 #29
0
ファイル: Export.cs プロジェクト: melongroup/U3DExport
    //===================================================================================================
    //  export material
    //===================================================================================================
    public static MaterialData ExportMaterial(Material material, UnityScene unitScene = null)
    {
        var path = AssetDatabase.GetAssetPath(material.mainTexture);
        // var dependencies=AssetDatabase.GetDependencies(path);
        // File file = new File(path);
        // File.Copy(path,outPath+"diff.png",true);

        MaterialData data = new MaterialData();

        data.depthMask       = true;
        data.passCompareMode = 0x0203; //LEQUAL
        data.srcFactor       = 0x0302; //SRC_ALPHA
        data.dstFactor       = 0x0303; //ONE_MINUS_SRC_ALPHA
        data.cull            = 0;      //NONE
        data.diffTex         = new TextureData();
        data.diffTex.mipmap  = true;
        data.diffTex.repeat  = 0x2901; //REPEAT
        data.diffTex.mag     = 0x2601; //LINEAR
        data.diffTex.mix     = 0x2702; //NEAREST_MIPMAP_LINEAR

        if ("" != path)
        {
            data.diffTex.url = path.ToLower().Replace("assets/", "");
            if (null != unitScene)
            {
                // unitScene
                if (false == unitScene.materialObj.ContainsKey(path))
                {
                    unitScene.materialObj.Add(path, data.diffTex.url);
                }
            }
        }



        return(data);
    }
コード例 #30
0
        /// <summary>
        /// Factory method. Instantiates normal food prefab.
        /// </summary>
        protected override GameObject MakeGameObject()
        {
            var resourceData = UnityScene.GetResourceManager().resourceData as Snake2DResourceData;

            return(MonoBehaviour.Instantiate(resourceData.PREFAB_NORMAL_FEED));
        }