Тема: Xors3D .NET
Показать сообщение отдельно
Старый 07.07.2010, 01:50   #51
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Xors3D .NET

Приведу пример возможной реализации:
Vector3
using System;

namespace 
Xors3D.OOW
{
    public 
struct Vector3 IEquatable<Vector3>
    {
        public 
float x,y,z
        
        public 
override bool Equals(object obj)
        {
            if (
obj is Vector3)
                return 
Equals((Vector3)obj); 
            else
                return 
false;
        }
        
        public 
bool Equals(Vector3 other)
        {
            return (
this.== other.x)&&(this.== other.y)&&(this.== other.y);
        }
        
        public 
override int GetHashCode()
        {
            return 
x.GetHashCode() ^ y.GetHashCode() ^ z.GetHashCode() ;
        }
        
        public static 
bool operator ==(Vector3 leftVector3 right)
        {
            return 
left.Equals(right);
        }
        
        public static 
bool operator !=(Vector3 leftVector3 right)
        {
            return !
left.Equals(right);
        }
        
    }

Object
using System;
using System.Collections.Generic;
using X3D Xors3DDotNET.Xors3D

namespace 
Xors3D.OOW
{
    public abstract class 
Object:IDisposable
    
{
        public 
readonly int refLink;
        
        public 
Object(int objRefLink)
        {
            
refLink objRefLink;
        }
        
        
        
        public abstract 
void Dispose();
    }

Entity
using System;
using X3D Xors3DDotNET.Xors3D

namespace 
Xors3D.OOW
{
    public abstract class 
Entity:Object
    
{
        protected 
Entity(int objRefLink):base(objRefLink)
        {
        }
        
        public 
void SetPosition (float xfloat yfloat z)
        {
            
X3D.xPositionEntity(this.refLinkxyz);
        }
        
        public 
void SetPosition (Vector3 v)
        {
            
X3D.xPositionEntity(this.refLinkv.xv.yv.z);
        }
        
        public 
void SetGlobalPosition (float xfloat yfloat z)
        {
            
X3D.xPositionEntity(this.refLinkxyz1);
        }
        
        public 
void SetGlobalPosition (Vector3 v)
        {
            
X3D.xPositionEntity(this.refLinkv.xv.yv.z1);
        }
        
        
        
        public 
void SetRotation (float xfloat yfloat z)
        {
            
X3D.xPositionEntity(this.refLinkxyz);
        }
        
        public 
void SetRotation (Vector3 v)
        {
            
X3D.xRotateEntity(this.refLinkv.xv.yv.z);
        }
        
        public 
void SetGlobalRotation (float xfloat yfloat z)
        {
            
X3D.xRotateEntity(this.refLinkxyz1);
        }
        
        public 
void SetGlobalRotation (Vector3 v)
        {
            
X3D.xRotateEntity(this.refLinkv.xv.yv.z1);
        }
        
        public 
Vector3 GetPosition()
        {
            
Vector3 v = new Vector3();
            
v.X3D.xEntityX(this.refLink0);
            
v.X3D.xEntityY(this.refLink0);
            
v.X3D.xEntityZ(this.refLink0);
            return 
v;
        }
        
        public 
Vector3 GetGlobalPosition()
        {
            
Vector3 v = new Vector3();
            
v.X3D.xEntityX(this.refLink1);
            
v.X3D.xEntityY(this.refLink1);
            
v.X3D.xEntityZ(this.refLink1);
            return 
v;
        }
        
        public 
Vector3 GetRotation()
        {
            
Vector3 v = new Vector3();
            
v.X3D.xEntityPitch(this.refLink0);
            
v.X3D.xEntityYaw(this.refLink0);
            
v.X3D.xEntityRoll(this.refLink0);
            return 
v;
        }
        
        public 
Vector3 GetGlobalRotation()
        {
            
Vector3 v = new Vector3();
            
v.X3D.xEntityPitch(this.refLink1);
            
v.X3D.xEntityYaw(this.refLink1);
            
v.X3D.xEntityRoll(this.refLink1);
            return 
v;
        }
        
        public 
void SetParent (Entity parent)
        {
            if (
parent != null)
            {
                
X3D.xEntityParent(this.refLinkparent.refLink);
            }
            else
            {
                
X3D.xEntityParent(this.refLink0);
            }
        }
    }

Pivot
using System;
using X3D Xors3DDotNET.Xors3D

namespace 
Xors3D.OOW
{
    public class 
Pivot:Entity
    
{
        public 
Pivot():base(X3D.xCreatePivot())
        {
            
        }
        
        public 
Pivot(Entity parent):base(X3D.xCreatePivot(parent.refLink))
        {
            
        }
        
        public 
override void Dispose()
        {
            
X3D.xFreeEntity(this.refLink);
        }
    }

__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием