public static void LoadBrush() { s_tblPatterns = new Dictionary <int, BSPattern>(); SqliteDataReader reader = LocalDatabase.Instance.ReadFullTable("BlockBrush"); while (reader.Read()) { BSPattern addBrush = new BSPattern(reader); s_tblPatterns[addBrush.ID] = addBrush; } foreach (KeyValuePair <int, BSPattern> kvp in s_tblPatterns) { s_DefaultB1 = kvp.Value; break; } }
protected static Vector3 CalcSnapto(BSMath.DrawTarget target, IBSDataSource ds, BSPattern pt) { Vector3 snapto = Vector3.zero; // Update gizmo Position IntVector3 realPos = new IntVector3(Mathf.FloorToInt(target.snapto.x * ds.ScaleInverted), Mathf.FloorToInt(target.snapto.y * ds.ScaleInverted), Mathf.FloorToInt(target.snapto.z * ds.ScaleInverted)); float offset = Mathf.FloorToInt(pt.size * 0.5f) * ds.Scale; snapto = realPos.ToVector3() * ds.Scale - new Vector3(offset, offset, offset); int sign = pt.size % 2 == 0? 1 : 0; if (offset != 0) { Vector3 offset_v = Vector3.zero; if (target.rch.normal.x > 0) { offset_v.x -= (offset - ds.Scale * sign); } else if (target.rch.normal.x < 0) { offset_v.x += offset; } else { offset_v.x = 0; } if (target.rch.normal.y > 0) { offset_v.y -= (offset - ds.Scale * sign); } else if (target.rch.normal.y < 0) { offset_v.y += offset; } else { offset_v.y = 0; } if (target.rch.normal.z > 0) { offset_v.z -= (offset - ds.Scale * sign); } else if (target.rch.normal.z < 0) { offset_v.z += offset; } else { offset_v.z = 0; } snapto += offset_v; } return(snapto); }
protected override bool ExtraAdjust() { if (BSInput.s_Alt) { mode = EBSBrushMode.Subtract; gizmoCube.color = removeModeGizmoColor; } else { mode = EBSBrushMode.Add; gizmoCube.color = addModeGizmoColor; } if (!AllowRemoveVoxel && pattern.type == EBSVoxelType.Voxel && mode == EBSBrushMode.Subtract) { if (modelGizmo != null && modelGizmo.gameObject.activeSelf) { modelGizmo.gameObject.SetActive(false); } if (modelGizmo != null && !modelGizmo.gameObject.activeSelf) { gizmoCube.gameObject.SetActive(false); } ResetDrawing(); return(false); } else { if (gizmoCube != null) { if (!gizmoCube.gameObject.activeSelf) { gizmoCube.gameObject.SetActive(true); } } if (BSInput.s_MouseOnUI) { if (modelGizmo != null && modelGizmo.gameObject.activeSelf) { modelGizmo.gameObject.SetActive(false); } return(true); } else { if (modelGizmo != null && !modelGizmo.gameObject.activeSelf) { modelGizmo.gameObject.SetActive(true); } } } // Set gizmo if (pattern != m_PrevPattern) { if (modelGizmo != null) { Destroy(modelGizmo.gameObject); modelGizmo = null; } if (pattern.MeshPath != null && pattern.MeshPath != "") { modelGizmo = GameObject.Instantiate(Resources.Load(pattern.MeshPath)) as GameObject; modelGizmo.transform.parent = transform; modelGizmo.name = "Model Gizmo"; Renderer mr = modelGizmo.GetComponent <Renderer>(); mr.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; mr.receiveShadows = false; } m_PrevPattern = pattern; m_Rot = 0; } if (pattern.MeshMat != null && modelGizmo != null) { Renderer gizmo_render = modelGizmo.GetComponent <Renderer>(); if (gizmo_render != null) { gizmo_render.material = pattern.MeshMat; } } if (modelGizmo != null) { modelGizmo.transform.localScale = new Vector3(pattern.size, pattern.size, pattern.size) * dataSource.Scale; } // Ratate the gizmo ? Only block can rotate if (pattern.type == EBSVoxelType.Block) { if (Input.GetKeyDown(KeyCode.T)) { m_Rot = ++m_Rot > 3 ? 0 : m_Rot; } } if (gizmoTrigger.RayCast || forceShowRemoveColor) { if (gizmoTrigger.RayCast) { ExtraTips = PELocalization.GetString(8000686); } if (forceShowRemoveColor) { ExtraTips = PELocalization.GetString(821000001); } gizmoCube.color = removeModeGizmoColor; } else { ExtraTips = ""; } return(true); }
public static void LoadAllData() { if (s_localDatabase != null) { return; } #if UNITY_EDITOR System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); #endif s_localDatabase = LoadDb(); SkillSystem.SkData.LoadData(); Pathea.Effect.EffectData.LoadData(); Pathea.Projectile.ProjectileData.LoadData(); Pathea.RequestRelation.LoadData(); Pathea.CampData.LoadData(); Pathea.ThreatData.LoadData(); Pathea.DamageData.LoadData(); HumanSoundData.LoadData(); ItemDropData.LoadData(); PELocalization.LoadData(); NaturalResAsset.NaturalRes.LoadData(); //SkillAsset.EffCastData.LoadData(); //SkillAsset.EffSkill.LoadData(); //SkillAsset.MergeSkill.LoadData(); //AnimData.LoadData(); //AnimSoundData.LoadData(); AiAsset.AiData.LoadData(); SoundAsset.SESoundBuff.LoadData(); SoundAsset.SESoundStory.LoadData(); //CharacterData.LoadCharacterData(); StoryDoodadMap.LoadData(); StoreRepository.LoadData(); NpcMissionDataRepository.LoadData(); //PlayerAttribute.LoadData(); MissionRepository.LoadData(); TalkRespository.LoadData(); //NpcRandomRepository.LoadData(); ShopRespository.LoadData(); WareHouseManager.LoadData(); //HeroTalkRepository.LoadData(); MutiPlayRandRespository.LoadData(); PromptRepository.LoadData(); //MapIconData.LoadDate(); //MapMaskData.LoadDate(); CampPatrolData.LoadDate(); Camp.LoadData(); RepProcessor.LoadData(); CloudManager.LoadData(); //BattleUnitData.LoadData(); TutorialData.LoadData(); //RepairMachineManager.LoadData(); MapMaskData.LoadDate(); MessageData.LoadData(); //lz-2016.07.13 Add it MonsterHandbookData.LoadData(); //lz-2016.07.20 Add it StoryRepository.LoadData(); RMRepository.LoadRandMission(); MisInitRepository.LoadData(); CameraRepository.LoadCameraPlot(); AdRMRepository.LoadData(); VCConfig.InitConfig(); Cutscene.LoadData(); // BuildBrushData.LoadBrush(); BSPattern.LoadBrush(); BSVoxelMatMap.Load(); BSBlockMatMap.Load(); BlockBuilding.LoadBuilding(); LifeFormRule.LoadData(); PlantInfo.LoadData(); MetalScanData.LoadData(); BattleConstData.LoadData(); CustomCharactor.CustomMetaData.LoadData(); SkillTreeInfo.LoadData(); VArtifactUtil.LoadData(); Pathea.ActionRelationData.LoadActionRelation(); //colony CSInfoMgr.LoadData(); ProcessingObjInfo.LoadData(); CSTradeInfoData.LoadData(); CampTradeIdData.LoadData(); AbnormalTypeTreatData.LoadData(); CSMedicineSupport.LoadData(); //RandomItemMgr RandomItemDataMgr.LoadData(); FecesData.LoadData(); //randomdungeon RandomDungeonDataBase.LoadData(); AbnormalData.LoadData(); PEAbnormalNoticeData.LoadData(); RelationInfo.LoadData(); EquipSetData.LoadData(); SuitSetData.LoadData(); CheatData.LoadData(); Pathea.NpcProtoDb.Load(); Pathea.MonsterProtoDb.Load(); Pathea.MonsterRandomDb.Load(); Pathea.MonsterGroupProtoDb.Load(); Pathea.RandomNpcDb.Load(); Pathea.PlayerProtoDb.Load(); Pathea.TowerProtoDb.Load(); Pathea.DoodadProtoDb.Load(); Pathea.AttPlusNPCData.Load(); Pathea.AttPlusBuffDb.Load(); Pathea.NpcTypeDb.Load(); Pathea.NpcRandomTalkDb.Load(); Pathea.NpcThinkDb.LoadData(); Pathea.NpcEatDb.LoadData(); Pathea.NpcRobotDb.Load(); Pathea.NPCScheduleData.Load(); Pathea.NpcVoiceDb.LoadData(); InGameAidData.LoadData(); //lz-2016.08.21 add it MountsSkillDb.LoadData(); #if UNITY_EDITOR sw.Stop(); Debug.Log("Database Loaded : " + sw.ElapsedMilliseconds); sw.Reset(); #else Debug.Log("Database Loaded"); #endif }
void AddMode() { // Set gizmo if (pattern != prvePattern) { if (Gizmo != null) { Destroy(Gizmo.gameObject); Gizmo = null; } if (pattern.MeshPath != null && pattern.MeshPath != "") { Gizmo = GameObject.Instantiate(Resources.Load(pattern.MeshPath)) as GameObject; Gizmo.transform.parent = transform; } prvePattern = pattern; m_Rot = 0; } if (pattern.MeshMat != null && Gizmo != null) { Renderer gizmo_render = Gizmo.GetComponent <Renderer>(); if (gizmo_render != null) { gizmo_render.material = pattern.MeshMat; } } // Ratate the gizmo ? Only block can rotate if (pattern.type == EBSVoxelType.Block) { if (Input.GetKeyDown(KeyCode.T)) { m_Rot = ++m_Rot > 3 ? 0 : m_Rot; } } // Gizmo rotate Vector3 rot_offset = Vector3.zero; if (Gizmo != null) { Quaternion rot = Quaternion.Euler(0, 90 * m_Rot, 0); Gizmo.transform.rotation = Quaternion.Euler(0, 90 * m_Rot, 0); float half_size = pattern.size * 0.5f; rot_offset = (rot * new Vector3(-half_size, -half_size, -half_size) + new Vector3(half_size, half_size, half_size)) * dataSource.Scale; // Gizmo scale Gizmo.transform.localScale = new Vector3(pattern.size, pattern.size, pattern.size) * dataSource.Scale; } // default gizmo cube GizmoCube.m_VoxelSize = dataSource.Scale; GizmoCube.CubeSize = new IntVector3(pattern.size, pattern.size, pattern.size); Vector3 trigget_size = new Vector3(GizmoCube.CubeSize.x * dataSource.Scale, GizmoCube.CubeSize.y * dataSource.Scale, GizmoCube.CubeSize.z * dataSource.Scale); GizmoTrigger.boxCollider.size = trigget_size; GizmoTrigger.boxCollider.center = trigget_size * 0.5f; // Ray cast voxel Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (BSMath.RayCastDrawTarget(ray, dataSource, out m_Target, minvol, true, BuildingMan.Datas)) { // Show the Gizmo if (Gizmo != null) { Gizmo.SetActive(true); } GizmoCube.gameObject.SetActive(true); m_Cursor = CalcCursor(m_Target, dataSource, pattern.size); // Gizmo position FocusAjust(); m_Cursor += m_FocusOffset * dataSource.Scale; if (Gizmo != null) { Gizmo.transform.position = m_Cursor + dataSource.Offset + rot_offset; } GizmoCube.transform.position = m_Cursor + dataSource.Offset; // Bursh do if (Input.GetMouseButtonDown(0) && !GizmoTrigger.RayCast) { Do(); } } }
void SubtractMode() { m_Rot = 0; prvePattern = null; if (Gizmo != null) { Destroy(Gizmo.gameObject); Gizmo = null; } GizmoCube.gameObject.SetActive(true); GizmoCube.m_VoxelSize = dataSource.Scale; GizmoCube.CubeSize = new IntVector3(pattern.size, pattern.size, pattern.size); // Ray cast voxel Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (BSMath.RayCastDrawTarget(ray, dataSource, out m_Target, minvol, false)) { // Show the Gizmo if (Gizmo != null) { Gizmo.SetActive(true); } if (!GizmoCube.gameObject.activeSelf) { GizmoCube.gameObject.SetActive(true); } // Cursor position m_Cursor = CalcSnapto(m_Target, dataSource, pattern); // Gizmo position FocusAjust(); m_Cursor += m_FocusOffset * dataSource.Scale; if (Gizmo != null) { Gizmo.transform.position = m_Cursor + dataSource.Offset; } GizmoCube.transform.position = m_Cursor + dataSource.Offset; // Bursh do if (Input.GetMouseButtonDown(0)) { Do(); } } else { if (Gizmo != null) { Gizmo.SetActive(false); } if (GizmoCube.gameObject.activeSelf) { GizmoCube.gameObject.SetActive(false); } } }
void Update() { #if TEST_CODE UpdateTest(); #endif if (BSInput.s_Undo) { BSHistory.Undo(); } else if (BSInput.s_Redo) { BSHistory.Redo(); } // if null get the defualt pattern if (pattern == null) { pattern = BSPattern.DefaultB1; } IBSDataSource data = null; if (pattern.type == EBSVoxelType.Block) { data = Blocks; if (Block45Man.self._b45Materials.Length > MaterialType) { pattern.MeshMat = Block45Man.self._b45Materials[MaterialType]; } else { pattern.MeshMat = Block45Man.self._b45Materials[0]; } } else if (pattern.type == EBSVoxelType.Voxel) { data = Voxels; } else { data = null; } // pattern.SetMaterial(MaterialType); // int expand = Mathf.Clamp(2 + (pattern.size - 2), 2, 3); // blockIndicator.m_Expand = expand; // voxelIndicator.m_Expand = expand; if (m_ActiveBrush != null) { voxelIndicator.minVol = m_ActiveBrush.minvol; m_ActiveBrush.dataSource = data; m_ActiveBrush.pattern = pattern; m_ActiveBrush.materialType = MaterialType; if (m_ActiveBrush.pattern.type == EBSVoxelType.Block) { blockIndicator.enabled = true; voxelIndicator.enabled = false; } else if (m_ActiveBrush.pattern.type == EBSVoxelType.Voxel) { blockIndicator.enabled = false; voxelIndicator.enabled = true; } } else { blockIndicator.enabled = false; voxelIndicator.enabled = false; } }