Example #1
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;
        }
        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>();
        }
Example #3
0
        protected override void OnLoad()
        {
            base.OnLoad();

            pl = MMW.FindGameComponent <PointLight>();
        }
Example #4
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: アイテム使用の仕方
        }
        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);
        }