Exemple #1
0
        private GameObject CreatePmdObject(string filename)
        {
            var results = pmdImporter.Import(filename, ImportType.Full);

            foreach (var tex in results[0].Textures)
            {
                tex.Load();
            }
            foreach (var mesh in results[0].Meshes)
            {
                mesh.Load();
            }
            foreach (var mat in results[0].Materials)
            {
                mat.Shader = MMW.GetAsset <Shader>("Physical");
                mat.AddParam("roughness", "Roughness", 0.7f);
                mat.AddParam("metallic", "Metallic", 0.0f);
            }

            var obj = new GameObject(results[0].Name, Matrix4.Identity, "pmd");

            for (var i = 0; i < results[0].Meshes.Length; i++)
            {
                var mr = obj.AddComponent <MeshRenderer>();
                mr.Mesh = results[0].Meshes[i];
                for (var m = 0; m < mr.Mesh.SubMeshCount; m++)
                {
                    var matIndex = mr.Mesh.GetMaterialIndex(m);
                    mr.SetMaterial(matIndex, results[0].Materials[matIndex], true);
                }
            }

            return(obj);
        }
Exemple #2
0
        private GameObject CreateMqoObject(string filename)
        {
            var results = mqoImporter.Import(filename, ImportType.Full);

            foreach (var tex in results[0].Textures)
            {
                tex.Load();
            }
            foreach (var mesh in results[0].Meshes)
            {
                mesh.Load();
            }
            foreach (var mat in results[0].Materials)
            {
                mat.Shader = MMW.GetAsset <Shader>("Toon Shadow");
            }

            var obj = new GameObject(results[0].Name, Matrix4.Identity, "mqo");

            for (var i = 0; i < results[0].Meshes.Length; i++)
            {
                var mr = obj.AddComponent <MeshRenderer>();
                mr.Mesh = results[0].Meshes[i];
                for (var m = 0; m < mr.Mesh.SubMeshCount; m++)
                {
                    var matIndex = mr.Mesh.GetMaterialIndex(m);
                    mr.SetMaterial(matIndex, results[0].Materials[matIndex], true);
                }
            }

            return(obj);
        }
        public void Load(Mesh mesh, Material[] mats, string shader = "Physical")
        {
            if (!mesh.Loaded)
            {
                mesh.Load();
            }

            sh = MMW.GetAsset <Shader>(shader);
            foreach (var mat in mats)
            {
                mat.Shader = sh;
            }

            go = new GameObject();

            //  mesh renderer
            MeshRenderer      = go.AddComponent <MeshRenderer>();
            MeshRenderer.Mesh = mesh;
            for (var m = 0; m < MeshRenderer.Mesh.SubMeshCount; m++)
            {
                var matIndex = MeshRenderer.Mesh.GetMaterialIndex(m);
                MeshRenderer.SetMaterial(matIndex, mats[matIndex], true);
            }

            light              = new GameObject();
            DirLight           = light.AddComponent <DirectionalLight>();
            DirLight.Intensity = 4.0f;
            DirLight.Direction = Vector3.UnitZ;
        }
Exemple #4
0
        protected override void Update(double deltaTime)
        {
            base.Update(deltaTime);

            if (Input.IsKeyDown(OpenTK.Input.Key.F))
            {
                amb -= (float)deltaTime * 0.5f;
            }
            if (Input.IsKeyDown(OpenTK.Input.Key.G))
            {
                amb += (float)deltaTime * 0.5f;
            }
            if (Input.IsKeyDown(OpenTK.Input.Key.H))
            {
                ibl -= (float)deltaTime;
            }
            if (Input.IsKeyDown(OpenTK.Input.Key.J))
            {
                ibl += (float)deltaTime;
            }
            if (Input.IsKeyDown(OpenTK.Input.Key.K))
            {
                intensity -= (float)deltaTime;
            }
            if (Input.IsKeyDown(OpenTK.Input.Key.L))
            {
                intensity += (float)deltaTime;
            }

            MMW.GlobalAmbient = new OpenTK.Graphics.Color4(amb, amb, amb, 1.0f);
            MMW.IBLIntensity  = ibl;
            MMW.FindGameComponent <PointLight>().Intensity = intensity;
        }
Exemple #5
0
        protected override void OnRenderFrame(FrameEventArgs e)
        {
            base.OnRenderFrame(e);

            MMW.Draw(e.Time);
            SwapBuffers();
        }
Exemple #6
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            MMW.ClientSize = ClientSize;
            MMW.WindowSize = Size;
            var size = ClientSize;

            var pos = PointToScreen(new System.Drawing.Point(0, 0));

            MMW.X = pos.X;
            MMW.Y = pos.Y;

            if (MMW.Configuration.Antialias == MMWConfiguration.AntialiasType.SSAAHalf)
            {
                size.Width  /= 2;
                size.Height /= 2;
            }
            else if (MMW.Configuration.Antialias == MMWConfiguration.AntialiasType.SSAAx2)
            {
                size.Width  *= 2;
                size.Height *= 2;
            }
            else if (MMW.Configuration.Antialias == MMWConfiguration.AntialiasType.SSAAx4)
            {
                size.Width  *= 4;
                size.Height *= 4;
            }
            MMW.RenderResolution = size;

            MMW.Window = this;

            MMW.Init();
        }
Exemple #7
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            WindowBorder             = WindowBorder.Fixed;
            MMW.MainCamera.DebugDraw = true;

            var t = MMW.MainCamera.GameObject.Transform;

            t.Position          = new Vector3(0.0f, 2.0f, -5.0f);
            t.Rotate.X          = -0.3f;
            MMW.MainCamera.Near = 0.01f;
            MMW.MainCamera.Far  = 100.0f;

            //MMW.MainCamera.GameObject.AddComponent<Blur>(20.0f, 2);

            var importer = new MqoImporter();
            //var results = importer.Import(@"../../mqo/brick.mqo");
            var results = importer.Import(@"C:\Users\yoship\Downloads\mqo\Old_Station\Old Station\Old_station.mqo", ImportType.Full);

            foreach (var tex in results[0].Textures)
            {
                tex.Load();
            }
            foreach (var mesh in results[0].Meshes)
            {
                mesh.Load();
            }
            foreach (var mat in results[0].Materials)
            {
                mat.Shader = MMW.GetAsset <Shader>("Test");
            }

            var obj = new GameObject(results[0].Name, Matrix4.Identity, "mqo");

            for (var i = 0; i < results[0].Meshes.Length; i++)
            {
                var mr = obj.AddComponent <MeshRenderer>();
                mr.Mesh = results[0].Meshes[i];
                for (var m = 0; m < mr.Mesh.SubMeshCount; m++)
                {
                    var matIndex = mr.Mesh.GetMaterialIndex(m);
                    mr.SetMaterial(matIndex, results[0].Materials[matIndex], true);
                }
            }

            obj.AddComponent <RotateTest>();
            MMW.RegistGameObject(obj);

            var probj = new GameObject("Property Renderer")
            {
                Layer = 31
            };

            probj.AddComponent <PropertyRenderer>();
            MMW.RegistGameObject(probj);
        }
        public T SendRequest <T>(string request, params object[] args)
        {
            try
            {
                return(MMW.SendRequest <T>(this, request, args));
            }
            catch { }

            return(default(T));
        }
Exemple #9
0
 protected override void OnResize(EventArgs e)
 {
     base.OnResize(e);
     if (!ClientSize.IsEmpty)
     {
         MMW.WindowSize = Size;
         MMW.ClientSize = ClientSize;
         MMW.Resize();
     }
 }
        protected override void Update(double deltaTime)
        {
            base.Update(deltaTime);

            if (Input.IsKeyPressed(Key.F3))
            {
                Visible = !Visible;
            }

            var idx = 0;

            SetText(idx++, "FPS: " + MMW.FPS.ToString());
            SetText(idx++, "Memory Used: " + Environment.WorkingSet / 1024 / 1024 + "MB");
            SetText(idx++, "Loading State: " + load.State.ToString());
            SetText(idx++, "Dir Intenity: " + MMW.DirectionalLight.Intensity);
            SetText(idx++, "FoV: " + MMW.MainCamera.FoV);
            //SetText(idx++, load.PresetCharacters.Length + "/" + load.PresetCharacterNum);
            //SetText(idx++, load.PresetStages.Length + "/" + load.PresetStageNum);
            //SetText(idx++, load.PresetObjects.Length + "/" + load.PresetObjectNum);
            //SetText(idx++, load.FreeCharacters.Length + "/" + load.FreeCharacterNum);
            //SetText(idx++, load.FreeStages.Length + "/" + load.FreeStageNum);
            //SetText(idx++, load.FreeObjects.Length + "/" + load.FreeObjectNum);
            var objs = MMW.GetAllGameObject();

            foreach (var o in objs)
            {
                SetText(idx++, o.Name);
                if (idx >= 80)
                {
                    return;
                }
            }
            //SetText(idx++, MMW.MainCamera.GameObject.GetComponent<BokehDoF>().Focus.ToString());
            //SetText(idx++, MMW.MainCamera.GameObject.GetComponent<BokehDoF>().Bias.ToString());
            //SetText(idx++, "WindowWidth: " + MMW.ClientSize.Width);
            //SetText(idx++, "WindowWidth: " + MMW.ClientSize.Width);
            //SetText(idx++, "WindowHeight: " + MMW.ClientSize.Height);
            //SetText(idx++, "Intensity: " + MMW.DirectionalLight.Intensity);
            //SetText(idx++, "Contrast: " + cc.Contrast);
            //SetText(idx++, "Saturation: " + cc.Saturation);
            //SetText(idx++, "Brightness: " + cc.Brightness);
            //SetText(idx++, "AmbientColor: " + MMW.GlobalAmbient);

            /*
             * var objs = MMW.FindGameObjects((o) => true);
             * foreach (var obj in objs)
             * {
             *  SetText(idx++, obj.Name + ": " + obj.Transform.Position + obj.Transform.Rotate);
             * }*/
            for (var i = idx; i < 80; i++)
            {
                SetText(i, "", 0, i * 16.0f);
            }
        }
Exemple #11
0
        public void AddCoin(long value)
        {
            Coin += value;
            if (Coin > MaxCoin)
            {
                Coin = MaxCoin;
            }
            TotalGetCoin += value;

            MMW.BroadcastMessage("get coin", value);
        }
        public bool SendMessage(string message, params object[] args)
        {
            try
            {
                MMW.SendMessage(this, message, args);
                return(true);
            }
            catch { }

            return(false);
        }
        protected override void OnLoad()
        {
            base.OnLoad();

            for (var i = 0; i < 32; i++)
            {
                SetText(i, "", 0, i * 16.0f);
            }
            backBrush = new SolidBrush(Color.FromArgb(64, 0, 0, 0));

            mqo = MMW.FindGameObject((o => o.Tags.Contains("mqo")));
        }
Exemple #14
0
        protected override void OnLoad()
        {
            base.OnLoad();

            for (var i = 0; i < 128; i++)
            {
                 SetText(i, "", 0, i * 16.0f);
            }
            backBrush = new SolidBrush(Color.FromArgb(64, 0, 0, 0));

            cc = MMW.FindGameComponents <ColorCollecter>()[0];
        }
        protected override void OnLoad()
        {
            base.OnLoad();
            Layer = LayerUI + 2;

            for (var i = 0; i < 80; i++)
            {
                 SetText(i, "", 0, i * 16.0f);
            }
            backBrush = new SolidBrush(Color.FromArgb(64, 0, 0, 0));

            load = MMW.FindGameComponent <InitLoading>();
        }
        public static GameObject CreateStage(string path, string shader = "Deferred Physical")
        {
            var obj = importedObjects.FindValue((i) => i.Path == path);

            if (obj == null)
            {
                var imp = MMW.GetSupportedImporter(path);
                obj = imp.Import(path, Importers.ImportType.Full)[0];

                foreach (var tex in obj.Textures)
                {
                    if (tex != null)
                    {
                        tex.Load();
                    }
                }
                foreach (var mesh in obj.Meshes)
                {
                    mesh.Load();
                }

                importedObjects.Add(path, obj);
            }
            var sh = MMW.GetAsset <Shader>(shader);

            foreach (var mat in obj.Materials)
            {
                mat.Shader = sh;
            }

            var go = new GameObject(obj.Name);

            for (var i = 0; i < obj.Meshes.Length; i++)
            {
                var mr = go.AddComponent <MeshRenderer>();
                mr.ForceRendering = true;
                mr.Mesh           = obj.Meshes[i];
                for (var m = 0; m < mr.Mesh.SubMeshCount; m++)
                {
                    var matIndex = mr.Mesh.GetMaterialIndex(m);
                    mr.SetMaterial(matIndex, obj.Materials[matIndex], false);
                }
            }

            for (var i = 0; i < obj.Meshes.Length; i++)
            {
                go.AddComponent <MeshCollider>(obj.Meshes[i]);
            }

            return(go);
        }
Exemple #17
0
        protected override void Draw(double deltaTime, Camera camera)
        {
            var wp  = GameObject.Transform.WorldPosition;
            var vp  = camera.View * camera.Projection;
            var mvp = GameObject.Transform.WorldTransform * vp;

            GL.Disable(EnableCap.DepthTest);

            var color = Color4.Gray;

            if (Bone.BoneType == "IK")
            {
                color = Color4.Red;
            }
            if (Bone.BoneType == "UnderIK")
            {
                color = Color4.Green;
            }
            if (Bone.BoneType == "IKConnect")
            {
                color = Color4.Blue;
            }
            if (Bone.BoneType != "Standard")
            {
                Drawer.DrawWireframeSphere(0.01f, mvp, color);

                if (Bone.Children != null)
                {
                    foreach (var b in Bone.Children)
                    {
                        var p   = GameObject.Transform.Position;
                        var obj = MMW.FindGameObject(o =>
                        {
                            var bvt = o.GetComponent <BoneVisibleTest>();
                            if (bvt == null)
                            {
                                return(false);
                            }
                            return(bvt.Bone == b);
                        });
                        Drawer.DrawLine(wp, obj.Transform.WorldPosition, vp, Color4.Blue);
                    }
                }
            }

            //Drawer.DrawLine(wp, wp + Bone.AxisX * 0.1f, vp, Color4.Red);
            //Drawer.DrawLine(wp, wp + Bone.AxisZ * 0.1f, vp, Color4.Blue);
            //Drawer.DrawLine(wp, wp + Bone.FixedAxis * 0.1f, vp, Color4.Purple);
            GL.Enable(EnableCap.DepthTest);
        }
Exemple #18
0
        private void CreateBoneObject(Transform parent, Bone[] children)
        {
            foreach (var c in children)
            {
                var obj = new GameObject(c.Name, Matrix4.Identity);
                //obj.Layer = GameObject.LayerUI;
                obj.Transform.Parent         = parent;
                obj.Transform.WorldTransform = Matrix4.CreateTranslation(c.Position);
                obj.AddComponent <BoneVisibleTest>(c);

                if (c.Children != null)
                {
                    CreateBoneObject(obj.Transform, c.Children);
                }

                MMW.RegistGameObject(obj);
            }
        }
Exemple #19
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            WindowBorder             = WindowBorder.Fixed;
            MMW.MainCamera.DebugDraw = true;

            var t = MMW.MainCamera.GameObject.Transform;

            t.Position = new Vector3(1.0f, 2.0f, -20.0f);

            var rand = new Random();

            for (var i = 0; i < 50; i++)
            {
                var x = rand.Next(20) - 10;
                var z = rand.Next(20) - 10;
                var y = rand.Next(3, 10);
                var b = new GameObject("Box" + i, Matrix4.CreateTranslation(x, y, z));
                b.AddComponent <BoxCollider>();
                var r = b.AddComponent <RigidBody>();
                b.AddComponent <PhysicsTest>();
                MMW.RegistGameObject(b);
            }

            {
                var plane     = new GameObject("Plane", Matrix4.CreateTranslation(new Vector3(0.0f, -2.0f, 0.0f)));
                var planeMesh = Mesh.CreateSimplePlaneMesh(30.0f, 30.0f);
                var mr        = plane.AddComponent <MeshRenderer>(planeMesh);
                var mat       = new Material("Test", MMW.GetAsset <Shader>("Test"));
                mat.AddParam("diffuse", Color4.Gray);
                mr.SetMaterial(0, mat, false);
                plane.AddComponent <PlaneCollider>(30.0f, 30.0f);
                MMW.RegistGameObject(plane);
            }

            var probj = new GameObject("Property Renderer")
            {
                Layer = 31
            };

            probj.AddComponent <PropertyRenderer>();
            MMW.RegistGameObject(probj);
        }
Exemple #20
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            WindowBorder             = WindowBorder.Fixed;
            MMW.MainCamera.DebugDraw = true;

            var t = MMW.MainCamera.GameObject.Transform;

            t.Position = new Vector3(0.0f, 1.0f, -3.0f);
            t.Rotate.X = -0.3f;

            var boxmesh = Mesh.CreateSimpleBoxMesh(new Vector3(0.5f));

            boxmesh.Colors = new Color4[]
            {
                new Color4(0, 0, 255, 255),
                new Color4(0, 255, 255, 255),
                new Color4(255, 255, 255, 255),
                new Color4(255, 0, 255, 255),
                new Color4(0, 0, 0, 255),
                new Color4(0, 255, 0, 255),
                new Color4(255, 255, 0, 255),
                new Color4(255, 0, 0, 255),
            };
            boxmesh.Load();

            var box      = new GameObject("Box");
            var renderer = box.AddComponent <MeshRenderer>(boxmesh);

            renderer.GetMaterial(0).AddParam("diffuse", Color4.White);
            box.AddComponent <RotateTest>();
            MMW.RegistGameObject(box);

            var probj = new GameObject("Property Renderer")
            {
                Layer = 31
            };

            probj.AddComponent <PropertyRenderer>();
            MMW.RegistGameObject(probj);
        }
Exemple #21
0
        public void AddExp(long value)
        {
            var prev = Rank;

            Exp += value;
            var up = 0;

            while (Exp >= Tables.NextRankExp(Rank))
            {
                Rank++;
                SkillPoint++;
                up++;
            }

            MMW.BroadcastMessage("add experience", value);

            if (up > 0)
            {
                MMW.BroadcastMessage("rank up", prev, Rank);
            }
        }
        public static GameObject CreateWorld(World world, string name, string shader = "Deferred Physical")
        {
            var sh = MMW.GetAsset <Shader>(shader);

            foreach (var mat in world.Materials)
            {
                mat.Shader = sh;
            }

            var go = new GameObject(name);

            go.Tags.Add("world");
            //go.Layer = GameObject.LayerAfterRender + 1;

            if (world.Meshes != null)
            {
                for (var i = 0; i < world.Meshes.Length; i++)
                {
                    var mr = go.AddComponent <MeshRenderer>();
                    mr.ForceRendering = true;
                    mr.Mesh           = world.Meshes[i];
                    for (var m = 0; m < mr.Mesh.SubMeshCount; m++)
                    {
                        var matIndex = mr.Mesh.GetMaterialIndex(m);
                        mr.SetMaterial(matIndex, world.Materials[matIndex], false);
                    }
                }
            }

            for (var i = 0; i < world.ColliderMeshes.Length; i++)
            {
                var mc = go.AddComponent <MeshCollider>(world.ColliderMeshes[i]);
                mc.CollideGroup = BulletSharp.CollisionFilterGroups.StaticFilter;
                mc.CollideMask  = BulletSharp.CollisionFilterGroups.KinematicFilter | BulletSharp.CollisionFilterGroups.CharacterFilter | BulletSharp.CollisionFilterGroups.DefaultFilter;
            }

            return(go);
        }
Exemple #23
0
        private GameObject CreatePmxObject(string filename)
        {
            var results = pmxImporter.Import(filename, ImportType.Full);

            foreach (var tex in results[0].Textures)
            {
                tex.Load();
            }
            foreach (var mesh in results[0].Meshes)
            {
                mesh.Load();
            }
            foreach (var mat in results[0].Materials)
            {
                mat.Shader = MMW.GetAsset <Shader>("Toon Shadow");
                mat.AddParam("limCoeff", "LimCoefficient", 0.0f);
                mat.SetParam("specular", Color4.Black);
            }

            var obj = new GameObject(results[0].Name, Matrix4.Identity, "pmx");

            CreateBoneObject(obj.Transform, new Bone[] { results[0].Bones[0] });

            for (var i = 0; i < results[0].Meshes.Length; i++)
            {
                var mr = obj.AddComponent <MeshRenderer>();
                mr.Mesh = results[0].Meshes[i];
                for (var m = 0; m < mr.Mesh.SubMeshCount; m++)
                {
                    var matIndex = mr.Mesh.GetMaterialIndex(m);
                    mr.SetMaterial(matIndex, results[0].Materials[matIndex], true);
                }
            }

            return(obj);
        }
 public void BroadcastMessage(string message, params object[] args)
 {
     MMW.BroadcastMessage(message, args);
 }
 public IGameObject[] FindGameObjects(Predicate <IGameObject> match)
 {
     return(MMW.FindGameObjects(match));
 }
 public IGameComponent[] FindGameComponents(Predicate <IGameComponent> match)
 {
     return(MMW.FindGameComponents((Predicate <GameComponent>)match));
 }
Exemple #27
0
        protected override void OnLoad()
        {
            base.OnLoad();

            pl = MMW.FindGameComponent <PointLight>();
        }
Exemple #28
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            var gd = new GameData()
            {
                Shader     = "Deferred Physical",
                SkinShader = "Deferred Physical Skin",
            };

            MMW.RegistAsset(gd);

            var ds = new List <UserData>();
            var hs = new List <string>();

            for (var i = 0; i < 3; i++)
            {
                var      str = "d0" + i;
                UserData d   = null;
                try
                {
                    var t = 2;
                    var x = 3;
                    var s = 0;
                    while (x > 1)
                    {
                        t *= 2;
                        x--;
                        s = t;
                    }
                    var p = "fa3daa8aa37e1461a1b5ddf959d28f3b" + str;
                    for (var c = 0; c < s; c++)
                    {
                        p = Util.ComputeHash(Encoding.UTF8.GetBytes(p), 17 + c);
                    }
                    var j = Encrypter.Decrypt(File.ReadAllText(GameData.AppDir + str), p);
                    d = Util.DeserializeJson <UserData>(j, false);
                }
                catch { }

                ds.Add(d);

                if (ds.Last() == null)
                {
                    hs.Add(null);
                }
                else
                {
                    var b = Util.SerializeBson(ds.Last());
                    hs.Add(Util.ComputeHash(b, 8));
                }
            }
            var counts = new int[3];

            for (var i = 0; i < 3; i++)
            {
                counts[i] = hs.Where(h => h == hs[i]).Count();
            }
            var idx = Array.IndexOf(counts, counts.Max());

            if (ds[idx] != null)
            {
                MMW.RegistAsset(ds[idx]);
                foreach (var ach in ds[idx].Achivements.ToArray())
                {
                    if (!ach.Verify())
                    {
                        ds[idx].Achivements.Remove(ach);
                    }
                }
            }
            else
            {
                var data = new UserData()
                {
                    UserID = Util.CreateBase58(20)
                };
                var rew = Reward.CreatePublicReward(0, 0, 0, "Beginner", "Have a nice trip!");
                data.Achivements.Add(rew.Achivement);
                MMW.RegistAsset(data);
            }

            {
                var userData = MMW.GetAsset <UserData>();
                var p        = "fa3daa8aa37e1461a1b5ddf959d28f3b";
                for (var c = 0; c < 8; c++)
                {
                    p = Util.ComputeHash(Encoding.UTF8.GetBytes(p), 17 + c);
                }

                foreach (var f in Directory.EnumerateFiles(GameData.AppDir, "*.mwr"))
                {
                    try
                    {
                        var data = File.ReadAllText(f);
                        var str  = Encrypter.Decrypt(data, p);
                        var rew  = Util.DeserializeJson <Reward>(str, false);

                        if (userData.Achivements.Exists(a => a.Name == rew.Achivement.Name))
                        {
                            continue;
                        }
                        if (!(rew.Verify() && rew.Achivement.Verify()) || rew.Achivement.PublicKey != Achivement.PublicPub)
                        {
                            continue;
                        }

                        userData.Achivements.Add(rew.Achivement);
                        userData.AddCoin(rew.Coin);
                        userData.Exp += rew.Exp;
                    }
                    catch { }
                }



                /*
                 * var r1 = Reward.CreatePublicReward(50, 0, 10, "Little Donor", "Thank you for Donation!");
                 * var r2 = Reward.CreatePublicReward(100, 0, 10, "Common Donor", "Thank you for Donation!");
                 * var r3 = Reward.CreatePublicReward(150, 0, 10, "Big Donor", "Thank you for Donation!");
                 * var r4 = Reward.CreatePublicReward(200, 0, 10, "Super Donor", "Thank you for Donation!");
                 * var r5 = Reward.CreatePublicReward(300, 0, 10, "The Walker", "Messiah of MMW");
                 *
                 * File.WriteAllText(GameData.AppDir + "Little Donor.mwr", Encrypter.Encrypt(Util.SerializeJson(r1, false), p));
                 * File.WriteAllText(GameData.AppDir + "Common Donor.mwr", Encrypter.Encrypt(Util.SerializeJson(r2, false), p));
                 * File.WriteAllText(GameData.AppDir + "Big Donor.mwr", Encrypter.Encrypt(Util.SerializeJson(r3, false), p));
                 * File.WriteAllText(GameData.AppDir + "Super Donor.mwr", Encrypter.Encrypt(Util.SerializeJson(r4, false), p));
                 * File.WriteAllText(GameData.AppDir + "The Walker.mwr", Encrypter.Encrypt(Util.SerializeJson(r5, false), p));
                 */
            }

            MMW.RegistAsset(new Sound(Resources.coin2, "WAV")
            {
                Name = "coin"
            });
            MMW.RegistAsset(new Sound(Resources.select2, "WAV")
            {
                Name = "select"
            });
            MMW.RegistAsset(new Sound(Resources.click7, "WAV")
            {
                Name = "click"
            });
            MMW.RegistAsset(new Sound(Resources.back3, "WAV")
            {
                Name = "back"
            });
            MMW.RegistAsset(new Sound(Resources.button, "WAV")
            {
                Name = "button"
            });

            var effs = MMW.MainCamera.GameObject.GetComponents <ImageEffect>();

            foreach (var eff in effs)
            {
                eff.Enabled = false;
            }

            var hw = new GameObject("Hello World");

            hw.AddComponent <HelloWorld>();
            MMW.RegistGameObject(hw);

            var load = new GameObject("Init Loading", Matrix4.Identity, "title");

            load.AddComponent <InitLoading>();
            load.Enabled = false;
            MMW.RegistGameObject(load);

            var title = new GameObject("Title", Matrix4.Identity, "title");

            MMW.RegistGameObject(title);
            title.AddComponent <BackgroundScript>();
            title.AddComponent <TitleScript>();
            title.Enabled = false;

            var loading = new GameObject("Loading");

            loading.AddComponent <LoadingScript>();
            loading.Enabled = false;
            MMW.RegistGameObject(loading);

            var probj = new GameObject("Property Renderer");

            probj.AddComponent <PropertyRenderer>();
            MMW.RegistGameObject(probj);

            var debugger = new GameObject("Debugger");

            debugger.AddComponent <Debugger>();
            MMW.RegistGameObject(debugger);

            MMW.MainCamera.GameObject.UpdateAction += (s, ev) =>
            {
                var cc = MMW.FindGameComponent <GameComponents.ImageEffects.ColorCollect>();
                cc.Contrast   = MMW.Contrast;
                cc.Saturation = MMW.Saturation;
                cc.Brightness = MMW.Brightness;
            };

            for (var i = 0; i < 200; i++)
            {
                var value = Tables.NextRankExp(i + 1);
                Debug.WriteLine(i + ": " + value);
            }


            /*
             * var g = Drawer.GetGraphics();
             * var font = new Font("Yu Gothic UI Light", 32.0f);
             * var size = g.MeasureString("0 1 2 3 4 5 6 7 8 9", font, 1024, new StringFormat() { FormatFlags = StringFormatFlags.MeasureTrailingSpaces });
             * var bm = new Bitmap((int)size.Width + 1, (int)size.Height + 1);
             * g = Graphics.FromImage(bm);
             * g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
             * g.Clear(Color.FromArgb(0));
             * g.DrawString("0 1 2 3 4 5 6 7 8 9", font, Brushes.White, 0, 0);
             * bm.Save(@"C:\Users\yoshihiro\Pictures\number.png");
             */

            // TODO: Bullet拘束機能
            // TODO: IK足修正
            // TODO: サーバー保存
            // TODO: キャラクタ作成
            // TODO: ワールド作成
            // TODO: アイテム使用の仕方
        }
Exemple #29
0
 protected override void OnClosing(CancelEventArgs e)
 {
     MMW.GetAsset <UserData>().Save();
     base.OnClosing(e);
 }
        public static GameObject CreateItem(NwWalkerGameObject wgo, WorldObject obj, WalkerPlayer player, string name, string shader = "Deferred Physical Skin")
        {
            if (!obj.Loaded)
            {
                obj.Load();
            }

            var sh = MMW.GetAsset <Shader>(shader);

            foreach (var mat in obj.Materials)
            {
                mat.Shader = sh;
            }

            var go = new GameObject(name);

            go.Tags.Add("item");
            //go.Layer = GameObject.LayerAfterRender + 1;

            if (obj.Tags != null)
            {
                foreach (var t in obj.Tags)
                {
                    go.Tags.Add(t);
                }
            }

            //  mesh renderer
            var mr = go.AddComponent <MeshRenderer>();

            mr.Mesh  = obj.Mesh;
            mr.Bones = obj.Bones;
            for (var m = 0; m < mr.Mesh.SubMeshCount; m++)
            {
                var matIndex = mr.Mesh.GetMaterialIndex(m);
                mr.SetMaterial(matIndex, obj.Materials[matIndex], false);
            }

            // motion
            if (obj.Bones != null)
            {
                var animator = go.AddComponent <ComputeAnimator>();
                animator.Bones = mr.Bones;

                if (obj.Motions != null)
                {
                    foreach (var m in obj.Motions)
                    {
                        animator.AddMotion(m.Name, m);
                    }
                }

                var ac = go.AddComponent <AnimationController>();
                ac.Play("idle");
            }

            // morph
            if (obj.Morphs != null)
            {
                var morpher = go.AddComponent <Morpher>();

                foreach (var m in obj.Morphs)
                {
                    if (m == null)
                    {
                        continue;
                    }
                    morpher.AddMorph(m.Name, m);
                }
            }

            // physics

            /*
             * var center = Vector3.Zero;
             * if (obj.CollisionShape != null)
             * {
             *  Collider c = null;
             *  if (obj.CollisionShape is CollisionCapsule)
             *  {
             *      var s = obj.CollisionShape as CollisionCapsule;
             *      c = go.AddComponent<CapsuleCollider>(s.Radius, s.Height - s.Radius * 2.0f);
             *      if (!obj.PhysicalMaterial.IsRigidBody) c.Position.Y = s.Height * 0.5f;
             *      center = new Vector3(0.0f, s.Height * 0.5f, 0.0f);
             *  }
             *  else if (obj.CollisionShape is CollisionCylinder)
             *  {
             *      //var s = obj.CollisionShape as CollisionCylinder;
             *      //c = go.AddComponent<CylinderCollider>(s.Radius, s.Height - s.Radius * 2.0f);
             *      //c.Position.Y = s.Height * 0.5f;
             *  }
             *  else if (obj.CollisionShape is CollisionBox)
             *  {
             *      var s = obj.CollisionShape as CollisionBox;
             *      c = go.AddComponent<BoxCollider>(s.HalfExtents);
             *      if (!obj.PhysicalMaterial.IsRigidBody) c.Position.Y = s.HalfExtents.Y;
             *      center = new Vector3(0, s.HalfExtents.Y, 0);
             *  }
             *  else if (obj.CollisionShape is CollisionSphere)
             *  {
             *      var s = obj.CollisionShape as CollisionSphere;
             *      c = go.AddComponent<SphereCollider>(s.Radius);
             *      if (!obj.PhysicalMaterial.IsRigidBody) c.Position.Y = s.Radius;
             *      center = new Vector3(0, s.Radius, 0);
             *  }
             *
             *  c.CollideGroup = BulletSharp.CollisionFilterGroups.DefaultFilter;
             *  c.CollideMask = BulletSharp.CollisionFilterGroups.SensorTrigger;
             * }
             */
            /*
             * if (obj.PhysicalMaterial.IsRigidBody)
             * {
             *  var rb = go.AddComponent<RigidBody>();
             *
             *  rb.CollideGroup = BulletSharp.CollisionFilterGroups.DefaultFilter;
             *  rb.CollideMask = BulletSharp.CollisionFilterGroups.SensorTrigger;
             *  rb.Mass = obj.PhysicalMaterial.Mass;
             *  rb.Friction = obj.PhysicalMaterial.Friction;
             *  rb.RollingFriction = obj.PhysicalMaterial.RollingFriction;
             *  rb.AnisotropicFriction = obj.PhysicalMaterial.AnisotropicFriction;
             *  rb.Restitution = obj.PhysicalMaterial.Restitution;
             *  rb.LinearDamping = obj.PhysicalMaterial.LinearDamping;
             *  rb.AngulerDamping = obj.PhysicalMaterial.AngulerDamping;
             *
             *  rb.FreezePosition = obj.PhysicalMaterial.FreezePosition;
             *  rb.FreezeRotation = obj.PhysicalMaterial.FreezeRotation;
             *  rb.DisableDeactivation = obj.PhysicalMaterial.DisableDeactivation;
             *  rb.Kinematic = obj.PhysicalMaterial.Kinematic;
             *
             *  rb.CenterOfMass = center;
             *
             *  go.Transform.Position = center;
             * }
             */

            // sound
            if (obj.Sounds != null)
            {
                var sc = go.AddComponent <SoundController>();
                foreach (var s in obj.Sounds)
                {
                    sc.Sounds.Add(s.Name, s.Clone());
                }
            }

            go.AddComponent <WalkerObjectInfo>(obj);

            // scripts
            if (obj.Scripts != null)
            {
                var pl = MMW.FindGameComponent <WalkerScript>().Players.Find(p => (string)p.Properties["userID"] == player.UserID);
                var ws = pl.GetComponent <WalkerGameObjectScript>().Script;
                var wr = MMW.GetAsset <WorldResources>();
                foreach (var asm in obj.Scripts)
                {
                    var scr = WorldResources.CreateScript(asm);
                    scr.ParentScript = ws;
                    scr.ScriptHash   = wr.GetHash(asm);
                    scr.HostUserID   = wgo.UserID;
                    scr.IsHost       = MMW.GetAsset <UserData>().UserID == wgo.UserID;
                    go.AddComponent <WalkerGameObjectScript>(go, scr, null);
                }
            }

            return(go);
        }