private void SpawnMonster(Entity e, SkillDatam datam) { if (World.EntityManager.HasComponent <CharacterRaycaster>(e) == false) { return; } int monsterID = datam.monster.Value.id; ZoxID zoxID = World.EntityManager.GetComponentData <ZoxID>(e); CharacterRaycaster caster = World.EntityManager.GetComponentData <CharacterRaycaster>(e); WorldBound worldBound = World.EntityManager.GetComponentData <WorldBound>(e); if (caster.DidCast() == 1) { ZoxID stats = World.EntityManager.GetComponentData <ZoxID>(e); //caster.triggered = 1; World.EntityManager.SetComponentData(e, caster); int clanID = stats.clanID; if (datam.Value.isSpawnHostile == 1) { clanID = Bootstrap.GenerateUniqueID(); } CharacterSpawnSystem.SpawnNPC(World.EntityManager, worldBound.world, monsterID, clanID, caster.voxelPosition, zoxID.id); /*if (datam.Value.isSpawnHostile != 1) * { * Entity npc = characterSpawnSystem.characters[spawnedID]; * ZoxID spawnedZoxID = World.EntityManager.GetComponentData<ZoxID>(npc); * spawnedZoxID.creatorID = zoxID.id; * World.EntityManager.SetComponentData(npc, spawnedZoxID); * }*/ AudioManager.instance.PlaySound(datam.audio, caster.voxelPosition); //Debug.LogError("Spawning Turret at: " + caster.voxelPosition.ToString()); } }
private void SpawnPlayerCharacter(SpawnCharacterCommand command) { Entity entity = World.EntityManager.CreateEntity(playerArchtype); int id; bool isLoadingPlayer = false; if (command.characterID != 0) { id = command.characterID; isLoadingPlayer = true; } else { id = Bootstrap.GenerateUniqueID(); } if (SetCharacter(entity, id, isLoadingPlayer, command.world, command.metaID, command.classID, command.clanID, command.position)) { SetPlayerCharacter(entity, id, command.world, command.metaID, command.position); cameraSystem.ConnectCameraToCharacter(command.camera, entity); playerSpawnSystem.SetPlayerCharacter(entity, command.playerID); if (isLoadingPlayer) { saveSystem.LoadPlayer(entity); } Entity gameEntity = command.game; var game = World.EntityManager.GetComponentData <Game>(gameEntity); game.AddPlayerCharacter(id); World.EntityManager.SetComponentData(gameEntity, game); worldSpawnSystem.OnAddedStreamer(entity, command.world); } }
public EquipLayer layer; // 0 for body, 1 for gear public void GenerateID() { if (id == 0) { id = Bootstrap.GenerateUniqueID(); } }
protected override void OnStartRunning() { Debug.Log("Not yet fixed WaveModeSystem."); wavesClanID = Bootstrap.GenerateUniqueID(); base.OnStartRunning(); BeginGameMode(); }
private void SpawnNPCCharacter(SpawnCharacterCommand command) { Entity entity = World.EntityManager.CreateEntity(npcArchtype); int id = Bootstrap.GenerateUniqueID(); SetCharacter(entity, id, false, command.world, command.metaID, command.classID, command.clanID, command.position); SetNPCCharacter(entity, id, command.metaID, command.position); }
public int SpawnCameraOnCharacter(Entity attachEntity, CameraData cameraData) { int id = Bootstrap.GenerateUniqueID(); float3 spawnPosition = World.EntityManager.GetComponentData <Translation>(attachEntity).Value; quaternion spawnRotation = World.EntityManager.GetComponentData <Rotation>(attachEntity).Value; SpawnCamera(id, spawnPosition, spawnRotation, attachEntity, cameraData); return(id); }
//static float turretScale = 0.5f; // queue public static int QueueTurret(float3 spawnPosition, int type, int summonerID) { int id = Bootstrap.GenerateUniqueID(); commandsIDs.Add(id); commandsSpawn.Add(spawnPosition); commandsType.Add(type); commandsSummonerID.Add(summonerID); return(id); }
public void GenerateIDs() { for (int i = 0; i < data.datas.Count; i++) { BoneData thisBone = data.datas[i]; thisBone.id = Bootstrap.GenerateUniqueID(); data.datas[i] = thisBone; } FixParentIDs(); }
private void AddBone(string boneName, string parentName, float3 position, float influence) { BoneData newData = new BoneData(); newData.id = Bootstrap.GenerateUniqueID(); newData.name = boneName; newData.parentName = parentName; newData.position = position; newData.influence = influence; data.datas.Add(newData); }
public Dictionary <int, CameraDatam> GetCameras() { var meta = new Dictionary <int, CameraDatam>(); foreach (CameraDatam camera in cameras) { if (camera.Value.id == 0) { camera.Value.id = Bootstrap.GenerateUniqueID(); } meta.Add(camera.Value.id, camera); } return(meta); }
public Dictionary <int, BulletDatam> GetBullets() { var meta = new Dictionary <int, BulletDatam>(); foreach (BulletDatam bullet in bullets) { if (bullet.Value.id == 0) { bullet.Value.id = Bootstrap.GenerateUniqueID(); } meta.Add(bullet.Value.id, bullet); } return(meta); }
public Dictionary <int, DialogueDatam> GetDialogues() { var meta = new Dictionary <int, DialogueDatam>(); foreach (DialogueDatam data in dialogues) { if (data.dialogueTree.id == 0) { data.dialogueTree.id = Bootstrap.GenerateUniqueID(); } meta.Add(data.dialogueTree.id, data); } return(meta); }
public int SpawnCamera(CameraData cameraData) { int id = Bootstrap.GenerateUniqueID(); float3 spawnPosition = float3.zero; quaternion spawnRotation = quaternion.identity; if (Camera.main != null) { spawnPosition = Camera.main.transform.position; spawnRotation = Camera.main.transform.rotation; } SpawnCamera(id, spawnPosition, spawnRotation, new Entity(), cameraData); return(id); }
public static int SpawnNPC(EntityManager EntityManager, Entity world, int metaID, int clanID, float3 position, int creatorID = 0) { int characterID = Bootstrap.GenerateUniqueID(); Entity e = EntityManager.CreateEntity(); EntityManager.AddComponentData(e, new SpawnCharacterCommand { world = world, metaID = metaID, position = position, clanID = clanID, characterID = characterID, creatorID = creatorID }); return(characterID); }
public Entity CreateGame(GameDatam data) { if (meta.ContainsKey(data.id) == false) { Debug.Log("Game not part of meta [" + data.name + "]"); return(new Entity()); //meta.Add(data.id, data); } Entity game = World.EntityManager.CreateEntity(); int id = Bootstrap.GenerateUniqueID(); World.EntityManager.AddComponentData(game, new Game { id = id, metaID = data.id }); games.Add(id, game); Debug.Log("Created new game [" + data.name + "] as [" + id + "]"); return(game); }
public static int[] SpawnNPCs(EntityManager EntityManager, Entity world, int metaID, int clanID, float3 position, int amount) { SpawnCharacterCommand command = new SpawnCharacterCommand { world = world, metaID = metaID, position = position, amount = amount, clanID = clanID, characterIDs = new BlitableArray <int>(amount, Allocator.Persistent) }; for (int i = 0; i < amount; i++) { command.characterIDs[i] = (Bootstrap.GenerateUniqueID()); } Entity e = EntityManager.CreateEntity(); EntityManager.AddComponentData(e, command); return(command.characterIDs.ToArray()); }
private void SpawnItem(SpawnItemCommand command) { if (meta.ContainsKey(command.data.id) == false) { Debug.LogError("Item not in meta."); return; } ItemDatam itemDatam = meta[command.data.id]; Entity entity = World.EntityManager.CreateEntity(itemArchtype); int id = Bootstrap.GenerateUniqueID(); World.EntityManager.SetComponentData(entity, new WorldItem { id = id, data = command.data, quantity = command.quantity }); World.EntityManager.SetComponentData(entity, new ItemBob { originalPosition = command.spawnPosition }); World.EntityManager.SetComponentData(entity, new Translation { Value = command.spawnPosition }); World.EntityManager.SetComponentData(entity, new NonUniformScale { Value = itemDatam.model.data.scale }); // itemDatam.Value.scale * 0.5f }); World.EntityManager.SetComponentData(entity, new Rotation { Value = Quaternion.Euler(0, UnityEngine.Random.Range(-180, 180), 0) }); RenderMesh newRenderer = new RenderMesh(); newRenderer.castShadows = UnityEngine.Rendering.ShadowCastingMode.On; newRenderer.receiveShadows = true; newRenderer.mesh = new Mesh(); //itemDatam.model.bakedMesh; newRenderer.material = Bootstrap.GetVoxelMaterial(); World.EntityManager.SetSharedComponentData(entity, newRenderer); WorldSpawnSystem.QueueUpdateModel(World.EntityManager, entity, id, itemDatam.model.data); items.Add(id, entity); }
private void AddBranchClicked(DialogueDatam dialogueDatam) { var branch = new DialogueBranch(); branch.id = Bootstrap.GenerateUniqueID(); uis.Add(LoadBlockUI(dialogueDatam, branch)); dialogueDatam.dialogueTree.AddBranch(branch); //cachedProperty.SetValue(stats); for (int i = 0; i < dialogueDatam.dialogueTree.branches.Length - 1; i++) { var linkUIs = uis[i].Query("Links"); //for (int j = 0; j < linkUIs.Count; j++) //foreach (var linkUI in linkUIs.Descendents) int linkIndex = 0; linkUIs.ForEach((linkUI) => { AddLinkChoiceUI(dialogueDatam.dialogueTree.branches[i], branch, linkUI as Foldout, linkIndex); linkIndex++; }); } EditorUtility.SetDirty(cachedObject.targetObject); }
public void GenerateID() { dialogueTree.id = Bootstrap.GenerateUniqueID(); }
public void GenerateID() { Value.id = Bootstrap.GenerateUniqueID(); }
public void GenerateID() { data.id = Bootstrap.GenerateUniqueID(); }
protected override void OnUpdate() { Entities.WithAll <Equipment>().ForEach((Entity e, ref Equipment equipment) => { if (equipment.dirty == 1) { equipment.dirty = 0; // get VoxData of the character stored in world system VoxData model = new VoxData { id = Bootstrap.GenerateUniqueID() }; // make this part of equipment //var voxes = new List<VoxData>(); //var positions = new List<int3>(); // after added them all, offset all positions by min, also get max to use as size //var operations = new List<VoxOperation>(); var bodyLayer = new VoxBuildLayer(); bodyLayer.Init(); var gearLayer = new VoxBuildLayer(); gearLayer.Init(); for (int i = 0; i < equipment.body.Length; i++) { // first find core // then for its meta // find any children of that core // then loop for them // different merge function for each axis enum + the offset of the slot var core = equipment.body[i].data; if (meta.ContainsKey(core.id)) { if (core.maleSlot.id == 0) { var coreDatam = meta[core.id]; //Debug.LogError("Adding Core"); bodyLayer.voxes.Add(coreDatam.model.data); bodyLayer.positions.Add(int3.Zero()); bodyLayer.operations.Add(VoxOperation.None); bodyLayer.parents.Add(-1); bodyLayer.bonePositions.Add(coreDatam.model.data.size / 2); bodyLayer.axes.Add((byte)SlotAxis.Center); //float3 realPosition = coreDatam.model.data.size.ToFloat3()/2f; //bodyLayer.realPositions.Add(realPosition); AddChildren(ref equipment, ref bodyLayer, ref gearLayer, //ref voxes, ref positions, ref operations, VoxOperation.None, core, i, int3.Zero()); break; } } } // combine voxes var combinedVoxes = new List <VoxData>(); combinedVoxes.AddRange(bodyLayer.voxes); combinedVoxes.AddRange(gearLayer.voxes); var combinedPositions = new List <int3>(); combinedPositions.AddRange(bodyLayer.positions); combinedPositions.AddRange(gearLayer.positions); int3 size = VoxData.GetSize(combinedVoxes, combinedPositions); int3 min; int3 max; VoxData.CalculateMinMax(combinedVoxes, combinedPositions, out min, out max); int3 addition = VoxData.CalculateAddition(min, max); bodyLayer.positions = VoxData.FixPositions(bodyLayer.positions, addition); gearLayer.positions = VoxData.FixPositions(gearLayer.positions, addition); model.Build(bodyLayer, gearLayer, size); // updates body model using this new vox data float3 bodySize = model.GetSize(); World.EntityManager.SetComponentData(e, new Body { size = bodySize }); WorldBound worldBound = World.EntityManager.GetComponentData <WorldBound>(e); worldBound.size = bodySize; World.EntityManager.SetComponentData(e, worldBound); // this can be done in equip system int id = World.EntityManager.GetComponentData <ZoxID>(e).id; //Debug.LogError("Equipment Mesh updated for: " + id); WorldSpawnSystem.QueueUpdateModel(World.EntityManager, e, id, model); if (World.EntityManager.HasComponent <Skeleton>(e)) { var skeleton = World.EntityManager.GetComponentData <Skeleton>(e); //skeleton.SetBody(model.size, bodyLayer.positions, bodyLayer.voxes); combinedPositions = VoxData.FixPositions(combinedPositions, addition); bodyLayer.bonePositions = VoxData.FixPositions(bodyLayer.bonePositions, addition); skeleton.SetBody(model.size, combinedPositions, combinedVoxes); skeleton.SetBones(World.EntityManager, e, bodyLayer.positions.ToArray(), bodyLayer.voxes.ToArray(), bodyLayer.bonePositions.ToArray(), bodyLayer.parents.ToArray(), bodyLayer.axes.ToArray()); World.EntityManager.SetComponentData(e, skeleton); } } }); }
private void SpawnBullets(int[] metaIDs, float3[] positions, quaternion[] rotations, int[] creatorIDs, int[] clanIDs)/*, float[] damages, float[] bulletSpeeds, )*/ { NativeArray <Entity> bulletEntities = new NativeArray <Entity>(positions.Length, Allocator.Temp); World.EntityManager.Instantiate(bulletPrefab, bulletEntities); // for all bullets, set custom data using indexes entity float timeBegun = UnityEngine.Time.time; for (int i = 0; i < bulletEntities.Length; i++) { int metaID = metaIDs[i]; // increase by character stats and skill level! float damage = UnityEngine.Random.Range(meta[metaID].Value.damage.x, meta[metaID].Value.damage.y); float lifetime = meta[metaID].Value.lifetime; // increase by character stats float speed = meta[metaID].Value.speed; // increase by character stats float scale = meta[metaID].Value.scale; // increase by character stats Entity bulletEntity = bulletEntities[i]; int id = Bootstrap.GenerateUniqueID(); bullets.Add(id, bulletEntity); World.EntityManager.SetComponentData(bulletEntity, new ZoxID { id = id, creatorID = creatorIDs[i], clanID = clanIDs[i] }); // stats World.EntityManager.SetComponentData(bulletEntity, new Bullet { damage = damage, timeStarted = timeBegun, lifetime = lifetime, metaID = metaID }); // Transforms World.EntityManager.SetComponentData(bulletEntity, new Translation { Value = positions[i] }); World.EntityManager.SetComponentData(bulletEntity, new Scale { Value = scale }); //new float3(0.33f, 0.33f, 0.33f) }); World.EntityManager.SetComponentData(bulletEntity, new Rotation { Value = rotations[i] }); // rendering var vox = meta[metaID].model; World.EntityManager.SetSharedComponentData(bulletEntity, new RenderMesh { material = Bootstrap.GetVoxelMaterial(), mesh = new Mesh()//meta[metaID].model.bakedMesh }); WorldSpawnSystem.QueueUpdateModel(World.EntityManager, bulletEntity, id, vox.data); // movement // divide it by mass? or just set acceleration, and mass as parameters if (World.EntityManager.HasComponent <BodyForce>(bulletEntity)) { World.EntityManager.SetComponentData(bulletEntity, new BodyForce { velocity = new float3(0, 0, speed) }); } // Add particle emitter here if (meta[metaID].Value.particlesName != "") { ParticlesManager.instance.PlayParticles( new ParticleSpawnCommand { name = meta[metaID].Value.particlesName, deathParticleName = meta[metaID].Value.deathParticlesName, deathParticleLife = meta[metaID].Value.deathParticleLife }, bulletEntity, World.EntityManager); } } bulletEntities.Dispose(); }