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>(); }
protected override void OnLoad() { base.OnLoad(); pl = MMW.FindGameComponent <PointLight>(); }
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); }