コード例 #1
0
ファイル: MPObject.cs プロジェクト: woshiduanli/DLLResouce
        public override void CreateGameObject(System.Action <MPObject> loadFinish)
        {
            XYCoroutineEngine.Execute(LoadRoleObject(string.Format(MapPlacementController.mapRoleObjectResLoadPathStrFormat, apprId), loadFinish));
            return;

            //this.mapGO = ModuleFactory.CreateBaseRole( sn.ToString(), this.roleCfg.roleBone );
            if (this.reference.Apprid <= 0)
            {
                base.CreateGameObject(loadFinish);
                return;
            }

            BaseObject bco = new BaseObject(ResourceManager.GetRoleConfig(this.reference.Apprid));

            //bco.UpdateEquip();
            this.mapGO = bco;
            if (this.mapGO.name != "BaseObject_NoRoleConfig")
            {
                this.mapGO.name = sn.ToString();
            }
            GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);

            cube.transform.parent           = this.mapGO.transform;
            cube.transform.localPosition    = Vector3.zero;
            cube.transform.localEulerAngles = Vector3.zero;
            cube.transform.localScale       = new Vector3(1, 2, 1);

            BoxCollider bc = this.mapGO.AddComponent(typeof(BoxCollider)) as BoxCollider;

            bc.size   = new Vector3(1, 2, 1);
            bc.center = new Vector3(0, 1, 0);

            XYClientCommon.ChangeLayer(this.mapGO, XYDefines.Layer.Player, true);
            //return this.mapGO;
        }
コード例 #2
0
    void NormalDraw()
    {
        BeforeUseGL();
        if (MapPlacementController.instance.curSelectObj != null)
        {
            Vector3 orgPos = MapPlacementController.instance.curSelectObj.position;
            GL.Color(Color.cyan);
            GL.Begin(GL.QUADS);
            for (int k = 0; k < 4; k++)
            {
                GL.Vertex(orgPos + dirForQuadsDraw_[k] * -0.2f);
            }
            GL.End();
        }
        if (this.curSelectRole != null && curSelectRole.routePointCount > 0)
        {
            DrawRolePath(this.curSelectRole);
        }
        else if (this.curSelectItem != null && curSelectItem.radius > 0)
        {
            BeforeUseGL();
            GL.Color(Color.yellow);
            GL.Begin(GL.LINES);
            GL.Vertex(curSelectItem.position);
            lastDrawAngle_ = Quaternion.Euler(0.0f, 180.0f * Time.deltaTime, 0.0f) * lastDrawAngle_;
            Vector3 destPos = XYClientCommon.AdjustToGround(curSelectItem.position + lastDrawAngle_ * curSelectItem.radius);
            GL.Vertex(destPos);

            GL.End();
        }
    }
コード例 #3
0
ファイル: MPObject.cs プロジェクト: woshiduanli/DLLResouce
 protected override void OnFixPosition(float fixX, float fixZ)
 {
     base.OnFixPosition(fixX, fixZ);
     foreach (RoutePoint rp in this.routeList_)
     {
         Vector3 newPos = rp.position;
         newPos.x += fixX;
         newPos.z += fixZ;
         XYClientCommon.AdjustToGround(ref newPos, false);
         rp.position = newPos;
     }
 }
コード例 #4
0
 private void CheackInvalidPos()
 {
     foreach (KeyValuePair <int, MPObject> pair in mapObjs_)
     {
         Vector3    postion = pair.Value.position;
         RaycastHit hit;
         if (!XYClientCommon.RaycastDown(postion, false, out hit))
         {
             Debug.Log("物体坐标非法  sn:" + pair.Key);
         }
     }
 }
コード例 #5
0
ファイル: MPObject.cs プロジェクト: woshiduanli/DLLResouce
        private void LoadRoutes(XmlElement vNode)
        {//读取路径数据
            XmlNodeList xnList = vNode.SelectNodes("Route");

            for (int i = 0; i < xnList.Count; i++)
            {
                float      stopTime = float.Parse(xnList[i].Attributes["stoptime"].Value);
                RoutePoint rp       = new RoutePoint(
                    XYClientCommon.AdjustToGround(GameUtility.StrToVector3(xnList[i].Attributes["position"].Value), false),
                    stopTime);
                this.routeList_.Add(rp);
            }
        }
コード例 #6
0
    private static void ReplaceShader(Object obj)
    {
        if (obj is GameObject)
        {
//加载GAMEOBJECT时
            XYClientCommon.ForEachChildren(
                obj as GameObject
                , OnEachGameObject
                , true
                );
        }
        else if (obj is Material)
        {
//加载MATERIAL时
            ReplaceMaterialShader(obj as Material);
        }
    }
コード例 #7
0
    private void RemoveInvalidGo()
    {
        List <int> keys = new List <int>();

        foreach (KeyValuePair <int, MPObject> pair in mapObjs_)
        {
            Vector3    postion = pair.Value.position;
            RaycastHit hit;
            if (!XYClientCommon.RaycastDown(postion, false, out hit))
            {
                keys.Add(pair.Key);
            }
        }
        foreach (int key in keys)
        {
            GameObject removeGo = mapObjs_[key].mapGO;
            mapObjs_.Remove(key);
            GameObject.DestroyImmediate(removeGo);
        }
    }
コード例 #8
0
ファイル: MPObject.cs プロジェクト: woshiduanli/DLLResouce
        public IEnumerator LoadRoleObject(string path, System.Action <MPObject> loadFinish)
        {
            TLEditorWww roleWww = TLEditorWww.Create(path);

            while (!roleWww.Finished)
            {
                yield return(null);
            }
            GameObject role = null;

            role = roleWww.GetAsset() as GameObject;
            ReplaceShader(role, string.Empty);
            if (role == null)
            {
                Debug.LogError("Error, Load role Failed: " + path);
                roleWww.Unload();
            }
            else
            {
                Role roleConfig = role.GetComponent <Role>();
                if (roleConfig == null)
                {
                    Debug.Log("Error,can't find role component");
                }
                GameObject roleGo = ModelLoader.CreateRole(roleConfig).gameObject;
                roleGo.gameObject.GetComponent <ActionPerformer>().enabled = false;
                roleGo.gameObject.GetComponent <RoleObject>().enabled      = false;
                roleWww.Unload();
                this.mapGO      = roleGo;
                this.mapGO.name = sn.ToString();
                BoxCollider bc = this.mapGO.AddComponent <BoxCollider>();
                bc.size   = new Vector3(1, 2, 1);
                bc.center = new Vector3(0, 1, 0);
                XYClientCommon.ChangeLayer(this.mapGO, XYDefines.Layer.Player, true);
                loadFinish(this);
            }
        }
コード例 #9
0
ファイル: ObjectModel.cs プロジェクト: woshiduanli/DLLResouce
    public void LoadOver() //加载结束,调用LOADOVER函数进行组装
    {
        IsLoadOver = true;
        if (!BaseObject_ || BaseObject_.Disposed || !GameObject || !GameObject.GetComponent <Renderer>())
        {
            Destroy();
            return;
        }

        if (IsDelete)
        {
            return;
        }

        GameObject.transform.parent           = BaseObject_.RoleObject.transform;
        GameObject.transform.localPosition    = Vector3.zero;
        GameObject.transform.localEulerAngles = Vector3.zero;
        GameObject.transform.localScale       = Vector3.one;

        Renderer render = GameObject.GetComponent <Renderer>();

        //if (render is SkinnedMeshRenderer && Mesh2Bone)
        //{
        //    string[] bonesPath = Mesh2Bone.BonePath;
        //    var bones = new Transform[bonesPath.Length];
        //    for (int i = 0; i < bonesPath.Length; i++)
        //    {
        //        if (string.IsNullOrEmpty(bonesPath[i]))
        //            continue;
        //        bones[i] = BaseObject_.FindBonesWithName(bonesPath[i]);
        //        if (!bones[i])
        //            Debug.Log(string.Format("Fine bone's transform failed: {0},{1}", BaseObject_.Name, bonesPath[i]));
        //    }
        //    SkinnedMeshRenderer skr = render as SkinnedMeshRenderer;
        //    skr.bones = bones;
        //    skr.rootBone = BaseObject_.FindBonesWithName(BaseObject_.BaseRoleConfig.RootBone);
        //}
        render.receiveShadows = false;
        render.castShadows    = true;
        render.enabled        = false;
        GameObject.SetActive(false);

        //特效
        if (EffectObjects_ != null)
        {
            for (int i = 0; i < ModelCfg.Effects.Length; i++)
            {
                if (EffectObjects_[i] == null)
                {
                    continue;
                }
                BaseObject_.EffectList.Add(EffectObjects_[i]);
                XYClientCommon.EnableRender(EffectObjects_[i], false, true);
                XYClientCommon.ChangeLayer(EffectObjects_[i], XYDefines.Layer.Effect, true);
                if (ModelCfg.Effects[i].BindBone == string.Empty) //因为没绑定到模型下,所以特效要乘以角色缩放
                {
                    EffectObjects_[i].transform.parent = GameObject.transform;
                    float scale = ModelCfg.Effects[i].Scale.x;
                    if (BaseObject_ != null && BaseObject_.BaseRoleConfig != null)
                    {
                        EffectObjects_[i].transform.localScale = Vector3.one * scale;
                    }
                    EffectObjects_[i].transform.localPosition    = ModelCfg.Effects[i].Position;
                    EffectObjects_[i].transform.localEulerAngles = ModelCfg.Effects[i].Rotation;
                }
                else if (!string.IsNullOrEmpty(ModelCfg.Effects[i].BindBone))
                {
                    Transform tf = BaseObject_.FindBonesWithName(ModelCfg.Effects[i].BindBone);
                    if (tf)
                    {
                        EffectObjects_[i].transform.parent = tf;
                        float scale = ModelCfg.Effects[i].Scale.x;
                        EffectObjects_[i].transform.localScale       = Vector3.one * scale;
                        EffectObjects_[i].transform.localPosition    = ModelCfg.Effects[i].Position;
                        EffectObjects_[i].transform.localEulerAngles = ModelCfg.Effects[i].Position;
                    }
                    else
                    {
                        Object.Destroy(EffectObjects_[i]);
                        Debug.Log(ModelCfg.Effects[i].BindBone + "Not Find!");
                    }
                }
                else
                {
                    Object.Destroy(EffectObjects_[i]);
                }
            }
        }

        //资源处理完毕,调用BaseObject里的资源完成加载接口
    }